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:
@@ -1494,9 +1494,9 @@ class SystemConfigServices extends BaseServices implements ServeConfigInterface
|
||||
])->trueValue('开启', 1)->falseValue('关闭', 0)->info($data['brokerage_user_status']['desc']),
|
||||
])->option('推荐佣金(fsgx)', [
|
||||
Build::inputNum('brokerage_cycle_count', $data['brokerage_cycle_count']['info'] ?: '佣金周期人数', (int)($data['brokerage_cycle_count']['value'] ?: 3))->min(1)->info('推荐N人为一个周期,循环计算各档佣金比例'),
|
||||
Build::input('brokerage_cycle_rates', $data['brokerage_cycle_rates']['info'] ?: '各档佣金比例(JSON)', $data['brokerage_cycle_rates']['value'] ?: '[20,30,50]')->info('JSON数组,元素为百分比整数,如[20,30,50]表示第1人20%、第2人30%、第3人50%'),
|
||||
Build::radio('brokerage_scope', $data['brokerage_scope']['info'] ?: '返佣范围', $data['brokerage_scope']['value'] ?: 'queue_only')->options([['label' => '所有商品', 'value' => 'all'], ['label' => '仅报单商品', 'value' => 'queue_only']])->info('queue_only=仅is_queue_goods=1的商品参与佣金计算'),
|
||||
Build::radio('brokerage_timing', $data['brokerage_timing']['info'] ?: '佣金发放时机', $data['brokerage_timing']['value'] ?: 'on_pay')->options([['label' => '支付即发放', 'value' => 'on_pay'], ['label' => '确认收货后发放', 'value' => 'on_confirm']])->info('on_pay=订单支付后立即发放 on_confirm=用户确认收货后发放'),
|
||||
Build::input('brokerage_cycle_rates', $data['brokerage_cycle_rates']['info'] ?: '各档佣金比例(JSON)', is_array($data['brokerage_cycle_rates']['value']) ? json_encode($data['brokerage_cycle_rates']['value']) : ($data['brokerage_cycle_rates']['value'] ?: '[20,30,50]'))->info('JSON数组,元素为百分比整数,如[20,30,50]表示第1人20%、第2人30%、第3人50%'),
|
||||
Build::radio('brokerage_scope', $data['brokerage_scope']['info'] ?: '返佣范围', is_array($data['brokerage_scope']['value']) ? ($data['brokerage_scope']['value'][0] ?? 'queue_only') : ($data['brokerage_scope']['value'] ?: 'queue_only'))->options([['label' => '所有商品', 'value' => 'all'], ['label' => '仅报单商品', 'value' => 'queue_only']])->info('queue_only=仅is_queue_goods=1的商品参与佣金计算'),
|
||||
Build::radio('brokerage_timing', $data['brokerage_timing']['info'] ?: '佣金发放时机', is_array($data['brokerage_timing']['value']) ? ($data['brokerage_timing']['value'][0] ?? 'on_pay') : ($data['brokerage_timing']['value'] ?: 'on_pay'))->options([['label' => '支付即发放', 'value' => 'on_pay'], ['label' => '确认收货后发放', 'value' => 'on_confirm']])->info('on_pay=订单支付后立即发放 on_confirm=用户确认收货后发放'),
|
||||
])
|
||||
]);
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace app\services\system\timer;
|
||||
use app\services\BaseServices;
|
||||
use crmeb\exceptions\AdminException;
|
||||
use app\dao\system\timer\SystemTimerDao;
|
||||
use app\listener\system\timer\SystemTimer as SystemTimerListener;
|
||||
use think\annotation\Inject;
|
||||
|
||||
/**
|
||||
@@ -231,6 +232,19 @@ class SystemTimerServices extends BaseServices
|
||||
return $timer->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动立即执行指定定时任务(HTTP 请求上下文,绕过 Swoole Cron 构造,用反射直接调用 implement_timer)
|
||||
* @param string $mark
|
||||
* @return void
|
||||
*/
|
||||
public function runNow(string $mark): void
|
||||
{
|
||||
$this->update(['mark' => $mark], ['last_execution_time' => time()]);
|
||||
$ref = new \ReflectionClass(SystemTimerListener::class);
|
||||
$instance = $ref->newInstanceWithoutConstructor();
|
||||
$instance->implement_timer($mark);
|
||||
}
|
||||
|
||||
/**获取下次执行时间
|
||||
* @param $type
|
||||
* @param $cycle
|
||||
|
||||
Reference in New Issue
Block a user