Browse Source

关系被拒绝或者超24小时,要退回关系卡

lizhen_gitee 1 year ago
parent
commit
6bb8ab1662
2 changed files with 49 additions and 7 deletions
  1. 7 4
      application/api/controller/Relation.php
  2. 42 3
      application/index/controller/Plantask.php

+ 7 - 4
application/api/controller/Relation.php

@@ -258,10 +258,13 @@ class Relation extends Api
             $remark2 = '已拒绝';
 
             //退回关系卡
-            $use_card = Db::name('user_decorate_relation')->where('user_id',$info['uid'])->where('is_using',1)->update(['is_using'=>0,'updatetime'=>time()]);
-            if(!$use_card){
-                Db::rollback();
-                $this->error('操作失败');
+            $use_card = Db::name('user_decorate_relation')->where('user_id',$info['uid'])->where('is_using',1)->order('id desc')->find();
+            if($use_card){
+                $rs2 = Db::name('user_decorate_relation')->where('id',$use_card['id'])->update(['is_using'=>0,'updatetime'=>time()]);
+                if($rs2 === false){
+                    Db::rollback();
+                    $this->error('操作失败');
+                }
             }
         }
 

+ 42 - 3
application/index/controller/Plantask.php

@@ -9,14 +9,53 @@ use think\Cache;
 class Plantask extends Controller
 {
     //计划任务
-    //定时清除用户关系,过期的,拒绝的
+    //定时清除用户关系,拒绝的
     public function auto_relation(){
-        //24小时未处理,过期
-        $lists = Db::name('user_relation')->where('status',0)->where('createtime','lt',time()-86400)->delete();
+
         //拒绝七天后,可再次申请
         $lists = Db::name('user_relation')->where('status',2)->where('updatetime','lt',time()-604800)->delete();
     }
 
+    //定时清除用户关系,过期的
+    public function auto_relation_guoqi(){
+        //24小时未处理,过期
+        Db::startTrans();
+
+        $lists = Db::name('user_relation')->where('status',0)->where('createtime','lt',time()-86400)->limit(10)->lock(true)->select();
+        if(empty($lists)){
+            Db::rollback();
+            echo 'empty';
+            exit;
+        }
+        dump($lists);
+
+        foreach($lists as $key => $info){
+
+            //退回关系卡
+            $use_card = Db::name('user_decorate_relation')->where('user_id',$info['uid'])->where('is_using',1)->order('id desc')->find();
+            if($use_card){
+                $rs2 = Db::name('user_decorate_relation')->where('id',$use_card['id'])->update(['is_using'=>0,'updatetime'=>time()]);
+                if($rs2 === false){
+                    Db::rollback();
+                    echo '退回关系卡失败';
+                    exit;
+                }
+            }
+        }
+
+        $ids = array_column($lists,'id');
+        $rs = Db::name('user_relation')->where('id','IN',$ids)->delete();
+        if(!$rs){
+            Db::rollback();
+            echo '清除失败';
+            exit;
+        }
+
+        Db::commit();
+        echo '完成';
+
+    }
+
     //定时跑用户活跃,改成离线
     public function auto_user_active(){
         $actitime = time() - 7200;