|
|
@@ -5,6 +5,7 @@ namespace App\Console\Commands;
|
|
|
use App\Services\Api\MemberService;
|
|
|
use App\Services\Api\OrderService;
|
|
|
use App\Services\Api\PriceService;
|
|
|
+use App\Services\Api\SettleService;
|
|
|
use App\Services\ConfigService;
|
|
|
use App\Services\RedisService;
|
|
|
use Illuminate\Console\Command;
|
|
|
@@ -253,6 +254,32 @@ class SwooleTask extends Command
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ // 订单收益补充结算
|
|
|
+ \swoole_timer_tick(20000, function ($timer) use ($serv, &$time) { // 启用定时器,每20秒执行一次
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ $orders = OrderService::make()->getSettleOrders();
|
|
|
+ if($orders){
|
|
|
+ foreach ($orders as $k => $item){
|
|
|
+ $orderNo = isset($item['order_no'])?$item['order_no'] : '';
|
|
|
+ if(!RedisService::get('caches:task:lock:order_settle_loaded_'.$orderNo)){
|
|
|
+ $taskData = [
|
|
|
+ 'taskName' => 'settleOrder',
|
|
|
+ 'name' => "订单【{$orderNo}】收益自动结算处理",
|
|
|
+ 'date' => date('Y-m-d'),
|
|
|
+ 'params'=> $item,
|
|
|
+ ];
|
|
|
+ $res = $serv->task($taskData);
|
|
|
+ RedisService::set('caches:task:lock:order_settle_loaded_'.$orderNo, true, rand(3,5));
|
|
|
+ echo "[Task settleOrder {$date}] 订单【{$orderNo}】收益自动结算处理结果:{$res}\n";
|
|
|
+ }else{
|
|
|
+ echo "[Task settleOrder {$date}] 订单【{$orderNo}】收益自动结算处理间隔时间调用\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ echo "[Task settleOrder {$date}] 暂无可结算收益的订单\n";
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
// 用户自动复购
|
|
|
\swoole_timer_tick(120000, function ($timer) use ($serv, &$time) { // 启用定时器,每2分钟执行一次
|
|
|
$date = date('Y-m-d H:i:s');
|
|
|
@@ -352,6 +379,24 @@ class SwooleTask extends Command
|
|
|
echo "[Task {$taskName} {$date}][{$task_id}] 购物订单【{$orderNo}】自动收货处理结果:{$error}\n";
|
|
|
}
|
|
|
break;
|
|
|
+ case 'settleOrder': // 补充结算订单
|
|
|
+ $orderId = isset($params['id'])? $params['id'] : 0;
|
|
|
+ $orderNo = isset($params['order_no'])? $params['order_no'] : '';
|
|
|
+ $userId = isset($params['user_id'])? $params['user_id'] : 0;
|
|
|
+ if($orderId<=0 || $userId<=0){
|
|
|
+ echo "[Task {$taskName} {$date}][{$task_id}] 该礼包订单参数错误\n";
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 调用处理
|
|
|
+ if($res = SettleService::make()->commissionSettle($orderId)){
|
|
|
+ $res = is_array($res) && $res? json_encode($res, 256) : 'success';
|
|
|
+ echo "[Task {$taskName} {$date}][{$task_id}] 礼包订单【{$orderNo}】结算处理结果:{$res}\n";
|
|
|
+ }else{
|
|
|
+ $error = SettleService::make()->getError();
|
|
|
+ $error = $error? lang($error) : 'failed';
|
|
|
+ echo "[Task {$taskName} {$date}][{$task_id}] 礼包订单【{$orderNo}】结算处理结果:{$error}\n";
|
|
|
+ }
|
|
|
+ break;
|
|
|
case 'rebuyOrder': // 自动复购
|
|
|
$userId = isset($params['id'])? $params['id'] : 0;
|
|
|
$nickname = isset($params['nickname'])? $params['nickname'] : '';
|