wesmiler hai 1 ano
pai
achega
7392c718d1

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 13 - 2
addons/dapp/dist/js/home.js


+ 11 - 12
app/Console/Commands/SwooleTask.php

@@ -172,7 +172,6 @@ class SwooleTask extends Command
 
         // 直接杀
         $stoSh = base_path().'/crontab/swooleTaskStop.sh';
-        echo $stoSh;
         if(file_exists($stoSh) && function_exists('exec')){
             exec("{$stoSh}");
         }
@@ -219,7 +218,7 @@ class SwooleTask extends Command
         }
 
         // TODO 更新SBT每日价格
-        \swoole_timer_tick(300000, function ($timer) use ($serv, &$time) { // 启用定时器,每5分钟执行一次
+        \swoole_timer_tick(5000, function ($timer) use ($serv, &$time) { // 启用定时器,每5分钟执行一次
             $date = date('Y-m-d H:i:s');
             if($time>3600 && file_exists($this->options['log_file'])){
                 $time = 0;
@@ -320,52 +319,52 @@ class SwooleTask extends Command
                 case 'UpdateSbtPrice': // 更新SBT每日价格
                     // 时间限制
                     if(date('H:i') >= '00:00' && date('H:i') <= '03:00'){
-                        echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 不在运行时间段内\n";
                         return false;
                     }
 
                     // 调用处理
                     if($res = PriceLogService::make()->updateSbtPrice()){
                         $res = is_array($res) && $res? json_encode($res, 256) : '处理成功';
-                        echo "[Task {$taskName} {$date}] 更新SBT每日价格:{$res}\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 更新SBT每日价格:{$res}\n";
                     }else{
                         $error = PriceLogService::make()->getError();
                         $error = $error? lang($error) : '处理失败';
-                        echo "[Task {$taskName} {$date}] 更新SBT每日价格:{$error}\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 更新SBT每日价格:{$error}\n";
                     }
                     break;
                 case 'PledgeRefund': // 质押订单退本,退本后自动再质押处理
                     // 时间限制
                     if(date('H:i') <= '04:00' || (date('H:i') >= '08:00' && date('H:i') <= '20:00')){
-                        echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 不在运行时间段内\n";
                         return false;
                     }
 
                     // 调用处理
                     if($res = PledgeOrderService::make()->refundAndBuy()){
                         $res = is_array($res) && $res? json_encode($res, 256) : '处理成功';
-                        echo "[Task {$taskName} {$date}] 质押订单退本和自动质押:{$res}\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 质押订单退本和自动质押:{$res}\n";
                     }else{
                         $error = PledgeOrderService::make()->getError();
                         $error = $error? lang($error) : '处理失败';
-                        echo "[Task {$taskName} {$date}] 质押订单退本和自动质押:{$error}\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 质押订单退本和自动质押:{$error}\n";
                     }
                     break;
                 case 'PledgeSettle': // 质押订单到期结算,和收益、奖励结算
                     // 时间限制
                     if(date('H:i') >= '01:00' && date('H:i') <= '02:00'){
-                        echo "[Task {$taskName} {$date}] 不在运行时间段内\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 不在运行时间段内\n";
                         return false;
                     }
 
                     // 调用处理
                     if($res = PledgeOrderService::make()->orderSettle(true)){
                         $res = is_array($res) && $res? json_encode($res, 256) : '处理成功';
-                        echo "[Task {$taskName} {$date}] 质押订单到期结算和收益、奖励结算:{$res}\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 质押订单到期结算和收益、奖励结算:{$res}\n";
                     }else{
                         $error = PledgeOrderService::make()->getError();
                         $error = $error? lang($error) : '处理失败';
-                        echo "[Task {$taskName} {$date}] 质押订单到期结算和收益、奖励结算:{$error}\n";
+                        echo "[Task {$taskName}-{$task_id} {$date}] 质押订单到期结算和收益、奖励结算:{$error}\n";
                     }
                     break;
             }
@@ -385,7 +384,7 @@ class SwooleTask extends Command
     public function onFinish(\Swoole\Server $serv, $task_id, $data)
     {
         //
-        echo "任务处理完成...\n";
+        echo "任务[{$task_id}]处理完成...\n";
     }
 
 

+ 38 - 5
app/Services/Api/PriceLogService.php

@@ -79,9 +79,19 @@ class PriceLogService extends BaseService
     public function updateSbtPrice($date = '')
     {
         $date = $date? $date : date('Y-m-d');
+
+        // 获取最后
+        $lastPriceData = $this->getLastPriceDate();
+        $lastDate = isset($lastPriceData['date'])? $lastPriceData['date'] : '';
+        if($lastPriceData && $lastDate >= $date){
+            $this->error = lang(3001,['date'=> $date]);
+            return false;
+        }
+
+        $date = $lastDate? date('Y-m-d', strtotime($lastDate) + 86400) : date('Y-m-d');
         if($this->getPriceByDate($date)){
-            $this->error = 3001;
-           return false;
+            $this->error = lang(3001,['date'=> $date]);
+            return false;
         }
 
         $price = $this->getSbtPrice();
@@ -108,10 +118,33 @@ class PriceLogService extends BaseService
             return false;
         }
 
-        // 清除旧价格
+        // 清除旧价格和价格列表数据
         RedisService::clear("caches:sbtPrice:price");
+        RedisService::clear("caches:sbtPrice:last");
+        RedisService::clear("caches:sbtPrice:counts_1");
+        RedisService::clear("caches:sbtPrice:list_1");
+
         $this->error = 3003;
-        return true;
+        return ['date'=>$date,'price'=> $newPrice];
+    }
+
+    /**
+     * 获取最近一天的价格数据
+     * @return array|false|mixed
+     */
+    public function getLastPriceDate()
+    {
+        $cacheKey = "caches:sbtPrice:last";
+        $data = RedisService::get($cacheKey);
+        if($data || RedisService::exists($cacheKey)){
+            return $data;
+        }
+
+        $data = $this->model->where(['status'=>1,'mark'=>1])->orderBy('date','desc')->first();
+        if($data){
+            RedisService::set($cacheKey, $data, 5, 10);
+        }
+        return $data;
     }
 
     /**
@@ -129,7 +162,7 @@ class PriceLogService extends BaseService
 
         $data = $this->model->where(['date'=> $date,'status'=>1,'mark'=>1])->value('id');
         if($data){
-            RedisService::set($cacheKey, $data, 1.5 * 86400);
+            RedisService::set($cacheKey, $data, 7200);
         }
         return $data;
     }

+ 3 - 2
resources/lang/zh-cn/api.php

@@ -70,8 +70,9 @@ return [
     '2208'=> '未获取到代币账户',
     '2209'=> '钱包授权失败',
 
-    '3001'=> '该日已更新价格',
-    '3002'=> '{date} 价格更新失败',
+    '3001'=> ':date SBT价格已更新',
+    '3002'=> ':date SBT价格更新失败',
+    '3003'=> ':date SBT价格更新成功,当前价格:price',