zz 4 лет назад
Родитель
Сommit
3f37074e33

+ 5 - 2
app/Http/Middleware/QuickAppGetUserFromToken.php

@@ -40,10 +40,13 @@ class QuickAppGetUserFromToken extends BaseMiddleware
         try {
             $user = $this->auth->authenticate($token);
             if ($sendOrderId) {
-                UserService::setUserSendOrder($user->id, $sendOrderId);
                 try {
-                    SendOrderService::recordUserSendOrder($user->id, $sendOrderId);
+                    $result = SendOrderService::recordUserSendOrder($user->id, $sendOrderId);
+                    if($result){
+                        UserService::setUserSendOrder($user->id, $sendOrderId);
+                    }
                 } catch (\Exception $e) {
+                    myLog('QuickAppGetUserFromToken-sendOrderId')->error($e);
                 }
             }
 

+ 2 - 1
app/Modules/SendOrder/Models/QappUserSendOrderId.php

@@ -15,6 +15,7 @@ class QappUserSendOrderId extends Model
     protected $table = 'qapp_user_send_order_id';
     protected $fillable = [
         'uid',
-        'send_order_id'
+        'send_order_id',
+        'end_time'
     ];
 }

+ 27 - 1
app/Modules/SendOrder/Services/SendOrderService.php

@@ -48,11 +48,12 @@ class SendOrderService
     }
 
     /**
+     * 废弃不用
      * 记录用户派单id
      * @param $uid
      * @param $send_order_id
      */
-    static function recordUserSendOrder($uid,$send_order_id){
+    static function recordUserSendOrder_($uid,$send_order_id){
         $info = QappUserSendOrderId::where('uid',$uid)->select('send_order_id')->orderBy('id','desc')->first();
         if($info && $info->send_order_id == $send_order_id){
             return ;
@@ -62,4 +63,29 @@ class SendOrderService
         ]);
     }
 
+    /*
+        注册派单id:第一次的环境派单id,在用户表里面,以后不再更新
+        环境派单id:
+        1)有30天保护期,保护期到期后,更新为下个环境派单id(针对uid级别的保护)
+        2)保护期间,用户点击派单,表记录还存在,只是是否生效为否
+        3)派单id生效期间,后面重复点击,是否生效为否,以第一次的点击时间为准,只是为了不再更新到期时间
+        $send_order_id = Redis::hget('book_read:' . $uid, 'send_order_id');
+        这个字段也根据保护期间逻辑来,如果保护期内,则点击新的不更新这个字段
+    */
+    static function recordUserSendOrder($uid,$send_order_id){
+        $info = QappUserSendOrderId::where('uid',$uid)
+            ->where('end_time','>',date('Y-m-d H:i:s'))
+            ->orderBy('id')->first();
+        if($info){
+            QappUserSendOrderId::create([
+                'uid'=>$uid,'send_order_id'=>$send_order_id,'end_time'=>date('Y-m-d H:i:s')
+            ]);
+            return false;
+        }
+        QappUserSendOrderId::create([
+            'uid'=>$uid,'send_order_id'=>$send_order_id,'end_time'=>date('Y-m-d H:i:s',time()+30*86400)
+        ]);
+        return true;
+    }
+
 }