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

@@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
namespace app\jobs\hjf;
use app\services\agent\AgentLevelServices;
use crmeb\basic\BaseJobs;
use crmeb\traits\QueueTrait;
/**
* 会员等级异步检查 Job改造复用版
*
* 委托给 AgentLevelServices::checkUserLevelFinish() 复用 CRMEB 分销等级升级流程。
*
* Class MemberLevelCheckJob
* @package app\jobs\hjf
*/
class MemberLevelCheckJob extends BaseJobs
{
use QueueTrait;
public function doJob(int $uid): bool
{
try {
/** @var AgentLevelServices $levelServices */
$levelServices = app()->make(AgentLevelServices::class);
$levelServices->checkUserLevelFinish($uid);
} catch (\Throwable $e) {
response_log_write([
'message' => "会员等级检查失败 uid={$uid}: " . $e->getMessage(),
'file' => $e->getFile(),
'line' => $e->getLine(),
]);
return false;
}
return true;
}
}