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,30 @@
<?php
declare(strict_types=1);
namespace app\model\hjf;
use crmeb\basic\BaseModel;
use crmeb\traits\ModelTrait;
/**
* 积分释放日志模型
* Class PointsReleaseLog
* @package app\model\hjf
*/
class PointsReleaseLog extends BaseModel
{
use ModelTrait;
protected $pk = 'id';
protected $name = 'points_release_log';
protected $autoWriteTimestamp = 'int';
protected $createTime = 'add_time';
public function setAddTimeAttr(): int
{
return time();
}
}

View File

@@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
namespace app\model\hjf;
use crmeb\basic\BaseModel;
use crmeb\traits\ModelTrait;
/**
* 公排池模型
* Class QueuePool
* @package app\model\hjf
*/
class QueuePool extends BaseModel
{
use ModelTrait;
protected $pk = 'id';
protected $name = 'queue_pool';
protected $autoWriteTimestamp = 'int';
protected $createTime = 'add_time';
public function setAddTimeAttr(): int
{
return time();
}
/**
* 状态文本
* @param int $value
* @return string
*/
public function getStatusTextAttr(mixed $value, array $data): string
{
return ($data['status'] ?? 0) === 1 ? '已退款' : '排队中';
}
}