feat(fsgx): HJF queue merge, brokerage timing, cycle commission, points release

- Add HJF jobs, services, DAOs, models, admin/API controllers, release command
- Respect brokerage_timing (on_pay vs confirm); dispatch HjfOrderPayJob for queue goods
- Queue-only cycle commission and position index fix in StoreOrderCreateServices
- UserBill income types: frozen_points_brokerage, frozen_points_release
- Timer: fsgx_release_frozen_points -> PointsReleaseServices
- Agent tasks: no_assess filtering for direct/umbrella counts
- Migrations: queue_pool, points_release_log, fsgx_v1 checklist updates
- Admin/uniapp: crontab preset, membership level, user list, finance routes, docs

Made-with: Cursor
This commit is contained in:
apple
2026-03-24 11:59:09 +08:00
parent 434aa8c69d
commit 76ccb24679
59 changed files with 2902 additions and 237 deletions

View File

@@ -29,6 +29,10 @@
>编辑</router-link
>
<Divider type="vertical" />
<a @click="handleRunNow(row)" :class="{ 'running': row._running }">
{{ row._running ? '执行中…' : '手动触发' }}
</a>
<Divider type="vertical" />
<a @click="handleDelete(row, '删除定时任务', index)">删除</a>
</template>
</Table>
@@ -46,7 +50,7 @@
</template>
<script>
import { timerIndex, showTimer } from '@/api/system';
import { timerIndex, showTimer, runTimerNow } from '@/api/system';
export default {
name: 'system_crontab',
@@ -79,7 +83,7 @@ export default {
slot: 'action',
align: 'center',
fixed: 'right',
minWidth: 100,
minWidth: 200,
},
],
tableData: [],
@@ -133,6 +137,21 @@ export default {
this.$Message.error(res.msg);
});
},
// 手动立即触发
handleRunNow(row) {
this.$set(row, '_running', true);
runTimerNow(row.id)
.then((res) => {
this.$Message.success(res.msg || '触发成功,任务已执行');
this.getList();
})
.catch((res) => {
this.$Message.error(res.msg || '触发失败');
})
.finally(() => {
this.$set(row, '_running', false);
});
},
// 是否开启
handleChange({ id, is_open }) {
showTimer(id, is_open)
@@ -152,4 +171,9 @@ export default {
};
</script>
<style lang="stylus" scoped></style>
<style lang="stylus" scoped>
.running
color #999
cursor not-allowed
pointer-events none
</style>