|
|
@@ -2,6 +2,8 @@
|
|
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
|
|
+use App\Services\Api\FinanceService;
|
|
|
+use App\Services\Api\GoodsService;
|
|
|
use App\Services\RedisService;
|
|
|
use Illuminate\Console\Command;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
@@ -231,24 +233,94 @@ class SwooleTask extends Command
|
|
|
file_put_contents($this->options['log_file'],"Task {$date}:清空日志\n");
|
|
|
}
|
|
|
|
|
|
- \swoole_timer_tick(300000, function ($timer) use ($serv, &$time) { // 启用定时器,每300秒执行一次
|
|
|
+ // TODO 更新商品数据
|
|
|
+ \swoole_timer_tick(120000, function ($timer) use ($serv, &$time) { // 启用定时器,每120秒执行一次
|
|
|
$date = date('Y-m-d H:i:s');
|
|
|
if($time>3600 && file_exists($this->options['log_file'])){
|
|
|
$time = 0;
|
|
|
file_put_contents($this->options['log_file'],"Task {$date}:清空日志\n");
|
|
|
}
|
|
|
$time++;
|
|
|
- if(!RedisService::get('caches:task:lock:music_loaded')){
|
|
|
+ if(!RedisService::get('caches:task:lock:goods_loaded')){
|
|
|
$taskData = [
|
|
|
- 'taskName' => 'bgmMusic',
|
|
|
- 'name' => "背景音乐写表处理",
|
|
|
+ 'taskName' => 'UpdateGoods',
|
|
|
+ 'name' => "更新商品数据",
|
|
|
'date' => date('Y-m-d'),
|
|
|
];
|
|
|
$res = $serv->task($taskData);
|
|
|
- RedisService::set('caches:task:lock:music_loaded', true, rand(3,5));
|
|
|
- echo "[Task bgmMusic {$date}] 背景音乐写表处理:{$res}\n";
|
|
|
+ RedisService::set('caches:task:lock:goods_loaded', true, rand(3,5));
|
|
|
+ echo "[Task UpdateGoods {$date}] 更新商品数据:{$res}\n";
|
|
|
}else{
|
|
|
- echo "[Task bgmMusic {$date}] 间隔时间调用\n";
|
|
|
+ echo "[Task UpdateGoods {$date}] 间隔时间调用\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // TODO 更新商品SKU数据
|
|
|
+ \swoole_timer_tick(120000, function ($timer) use ($serv, &$time) { // 启用定时器,每120秒执行一次
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ if($time>3600 && file_exists($this->options['log_file'])){
|
|
|
+ $time = 0;
|
|
|
+ file_put_contents($this->options['log_file'],"Task {$date}:清空日志\n");
|
|
|
+ }
|
|
|
+ $time++;
|
|
|
+ if(!RedisService::get('caches:task:lock:goods_sku_loaded')){
|
|
|
+ $taskData = [
|
|
|
+ 'taskName' => 'UpdateGoodsSku',
|
|
|
+ 'name' => "更新商品SKU数据",
|
|
|
+ 'date' => date('Y-m-d'),
|
|
|
+ ];
|
|
|
+ $res = $serv->task($taskData);
|
|
|
+ RedisService::set('caches:task:lock:goods_sku_loaded', true, rand(3,5));
|
|
|
+ echo "[Task UpdateGoodsSku {$date}] 更新商品SKU数据:{$res}\n";
|
|
|
+ }else{
|
|
|
+ echo "[Task UpdateGoodsSku {$date}] 间隔时间调用\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // TODO 发放积分
|
|
|
+ \swoole_timer_tick(1200000, function ($timer) use ($serv, &$time) { // 启用定时器,每1200秒执行一次
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ if($time>3600 && file_exists($this->options['log_file'])){
|
|
|
+ $time = 0;
|
|
|
+ file_put_contents($this->options['log_file'],"Task {$date}:清空日志\n");
|
|
|
+ }
|
|
|
+ $time++;
|
|
|
+ if(!RedisService::get('caches:task:lock:grant_score_loaded')){
|
|
|
+ $taskData = [
|
|
|
+ 'taskName' => 'GrantScore',
|
|
|
+ 'name' => "每日发放积分",
|
|
|
+ 'date' => date('Y-m-d'),
|
|
|
+ ];
|
|
|
+ $res = $serv->task($taskData);
|
|
|
+ RedisService::set('caches:task:lock:grant_score_loaded', true, rand(3,5));
|
|
|
+ echo "[Task GrantScore {$date}] 每日发放积分:{$res}\n";
|
|
|
+ }else{
|
|
|
+ echo "[Task GrantScore {$date}] 间隔时间调用\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // TODO 待返积分返还
|
|
|
+ \swoole_timer_tick(1200000, function ($timer) use ($serv, &$time) { // 启用定时器,每1200秒执行一次
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ if($time>3600 && file_exists($this->options['log_file'])){
|
|
|
+ $time = 0;
|
|
|
+ file_put_contents($this->options['log_file'],"Task {$date}:清空日志\n");
|
|
|
+ }
|
|
|
+ $time++;
|
|
|
+ if(!RedisService::get('caches:task:lock:waitt_score_loaded')){
|
|
|
+ $taskData = [
|
|
|
+ 'taskName' => 'ReturnWaitScore',
|
|
|
+ 'name' => "待返积分每日返还",
|
|
|
+ 'date' => date('Y-m-d'),
|
|
|
+ ];
|
|
|
+ $res = $serv->task($taskData);
|
|
|
+ RedisService::set('caches:task:lock:waitt_score_loaded', true, rand(3,5));
|
|
|
+ echo "[Task ReturnWaitScore {$date}] 待返积分每日返还:{$res}\n";
|
|
|
+ }else{
|
|
|
+ echo "[Task ReturnWaitScore {$date}] 间隔时间调用\n";
|
|
|
}
|
|
|
|
|
|
});
|
|
|
@@ -282,24 +354,73 @@ class SwooleTask extends Command
|
|
|
$date = date('Y-m-d H:i:s');
|
|
|
$taskName = isset($data['taskName']) ? $data['taskName'] : '';
|
|
|
switch ($taskName) {
|
|
|
- case 'OrderSettle': // 订单结算
|
|
|
+ case 'UpdateGoods': // 更新商品
|
|
|
+ // 时间限制
|
|
|
+ if(date('H:i') >= '00:00' && date('H:i') <= '03:00'){
|
|
|
+ echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用处理
|
|
|
+ if($res = GoodsService::make()->updateGoods()){
|
|
|
+ $res = is_array($res) && $res? json_encode($res, 256) : 'success';
|
|
|
+ echo "[Task {$taskName} {$date}] 商品数据获取更新结果:{$res}\n";
|
|
|
+ }else{
|
|
|
+ $error = GoodsService::make()->getError();
|
|
|
+ $error = $error? lang($error) : 'failed';
|
|
|
+ echo "[Task {$taskName} {$date}] 商品数据获取更新结果:{$error}\n";
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'UpdateGoodsSku': // 更新商品SKu数据
|
|
|
+ // 时间限制
|
|
|
+ if(date('H:i') >= '00:00' && date('H:i') <= '03:00'){
|
|
|
+ echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用处理
|
|
|
+ if($res = GoodsService::make()->updateGoodsSku()){
|
|
|
+ $res = is_array($res) && $res? json_encode($res, 256) : 'success';
|
|
|
+ echo "[Task {$taskName} {$date}] 更新商品SKu数据结果:{$res}\n";
|
|
|
+ }else{
|
|
|
+ $error = GoodsService::make()->getError();
|
|
|
+ $error = $error? lang($error) : 'failed';
|
|
|
+ echo "[Task {$taskName} {$date}] 更新商品SKu数据结果:{$error}\n";
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'GrantScore':
|
|
|
// 时间限制
|
|
|
- if(date('H:i') >= env('SETTLE_TIME','06:00')){
|
|
|
+ if(date('H:i') >= '09:00'){
|
|
|
echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 调用处理
|
|
|
- if($res = WalletService::make()->orderSettle()){
|
|
|
+ if($res = FinanceService::make()->grantScore()){
|
|
|
$res = is_array($res) && $res? json_encode($res, 256) : 'success';
|
|
|
- echo "[Task {$taskName} {$date}] 订单结算结果:{$res}\n";
|
|
|
+ echo "[Task {$taskName} {$date}] 每日发放积分结果:{$res}\n";
|
|
|
}else{
|
|
|
- $error = BonusService::make()->getError();
|
|
|
+ $error = FinanceService::make()->getError();
|
|
|
$error = $error? lang($error) : 'failed';
|
|
|
- echo "[Task {$taskName} {$date}] 订单结算结果:{$error}\n";
|
|
|
+ echo "[Task {$taskName} {$date}] 每日发放积分结果:{$error}\n";
|
|
|
}
|
|
|
break;
|
|
|
- case 'bgmMusic':
|
|
|
+ case 'ReturnWaitScore':
|
|
|
+ // 时间限制
|
|
|
+ if(date('H:i') >= '10:00'){
|
|
|
+ echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用处理
|
|
|
+ if($res = FinanceService::make()->returnWaitScore()){
|
|
|
+ $res = is_array($res) && $res? json_encode($res, 256) : 'success';
|
|
|
+ echo "[Task {$taskName} {$date}] 待返积分每日返还结果:{$res}\n";
|
|
|
+ }else{
|
|
|
+ $error = FinanceService::make()->getError();
|
|
|
+ $error = $error? lang($error) : 'failed';
|
|
|
+ echo "[Task {$taskName} {$date}] 待返积分每日返还结果:{$error}\n";
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
|