dongxiaoqin 1 år sedan
förälder
incheckning
1256a7ca98

+ 96 - 0
app/Job/AddServiceWorkJob.php

@@ -0,0 +1,96 @@
+<?php
+namespace app\job;
+
+use think\facade\Db;
+use think\queue\Job;
+use think\facade\Log;
+use app\common\enum\WorkEnum;
+use app\common\model\equity\UserEquity;
+use app\common\model\works\ServiceWork;
+use app\common\model\equity\UserEquityLog;
+use app\common\model\group_activity\GroupUserOrder;
+
+class AddServiceWorkJob
+{
+    public function fire(Job $job, $data)
+    {
+        try {
+            Log::info('执行队列任务:'.json_encode($data));
+
+            //查询拼团用户订单
+            $userOrder = GroupUserOrder::alias('a')->leftJoin('user b','a.user_id=b.id')
+                        ->where('group_order_id', $data['id'])
+                        ->where('pay_status', 1)
+                        ->where('refund_status', 0)
+                        ->field('a.*,b.mobile')
+                        ->select()
+                        ->toArray();
+            try {
+                Db::startTrans();
+                foreach ($userOrder as $k => $item) {
+                    if (empty($goods)) {
+                        $goods = UserEquity::alias('a')->leftJoin('goods b','a.goods_id=b.id')
+                            ->where('a.id', $item['user_equity_id'])
+                            ->field('b.goods_name,b.category_type,b.goods_category_ids,b.goods_category_id,b.base_service_fee')
+                            ->find();
+                    }
+                    //生成服务工单
+                    $work_data = [
+                        'work_sn' => generate_sn(ServiceWork::class, 'work_sn'),
+                        'real_name' => '',
+                        'mobile' => $item['mobile'],
+                        'address' => $item['area'].$item['address'],
+                        'province' => 0,
+                        'city' => 0,
+                        'area_name' => '',
+                        'title' => $goods['goods_name'],
+                        'category_type' => $goods['category_type'],
+                        'goods_category_ids' => $goods['goods_category_ids'],
+                        'goods_category_id' => $goods['goods_category_id'],
+                        'base_service_fee' => $goods['base_service_fee'],
+                        'service_fee' => $item['paid_amount'],
+                        'work_pay_status'=>WorkEnum::IS_PAY_STATUS,
+                        'appointment_time' => time(),
+                        'user_id'=>$item['user_id'],
+                        'lon'=>'',
+                        'lat'=>'',
+                        'property_activity_id'=>0,
+                        'user_equity_id'=>0,
+                        'third_type'=>1,
+                        'work_total'=>$item['paid_amount'],
+                        'work_amount'=>$item['paid_amount'],
+                        'work_status' => 5,
+                        'user_confirm_status' => 3,
+                        'service_status' => 1,
+                        'master_worker_id' => 7,
+                        'remark' => '拼团单:'.$item['id'],
+                        'user_equity_id' => $item['user_equity_id'],
+                        'group_order_id' => $item['id'],
+                    ];
+                    ServiceWork::create($work_data);
+    
+                    UserEquityLog::create([
+                        'user_id' => $item['user_id'],
+                        'number' => 1,
+                        'user_equity_id' => $item['user_equity_id'],
+                        'create_time' => time(),
+                    ]);
+                }
+                Db::commit();
+            } catch (\Exception $e) {
+                Db::rollback();
+                Log::error('执行队列任务失败:'.$e->getMessage());
+            }
+            // 任务执行成功,删除任务
+            $job->delete();
+        } catch (\Exception $e) {
+            // 任务执行失败,重试任务
+            if ($job->attempts() > 3) {
+                // 超过最大重试次数,删除任务
+                $job->delete();
+            } else {
+                $job->release(10); // 10 秒后重试
+            }
+        }
+    }
+}

+ 5 - 7
app/adminapi/logic/group_activity/GroupOrderLogic.php

@@ -16,8 +16,9 @@ namespace app\adminapi\logic\group_activity;
 
 
 use app\common\logic\BaseLogic;
-use app\common\model\equity\EquityConfig;
 use app\common\model\user\User;
+use app\common\command\addServiceWork;
+use app\common\model\equity\EquityConfig;
 use app\common\model\group_activity\GroupOrder;
 use app\common\model\group_activity\GroupActivity;
 use app\common\model\group_activity\GroupUserOrder;
@@ -67,12 +68,9 @@ class GroupOrderLogic extends BaseLogic
             //$detail->work_status = 1;
             //$detail->save();
             // 异步调用 changeWorkStatus 方法
-            //Queue::push(AddServiceWorkJob::class, $params);
-
-            // //执行队列任务,批量生成服务工单数据
-            $command = new addServiceWork();
-            $message = ['id' => $params['id']];
-            $command->sendMessageToQueue($message);
+            // Queue::push(\app\job\AddServiceWorkJob::class, ['id' => $params['id']]);
+            // $detail->work_status = 1;
+            // $detail->save();
         }
         return $detail->toArray();
     }

+ 3 - 4
app/api/controller/GroupActivityController.php

@@ -31,9 +31,8 @@ class GroupActivityController extends BaseApiController
      * 拼团订单详情
      */
     public function orderDetail(){
-        $sn = $this->request->param('sn');
         $order_id = $this->request->param('order_id');
-        $result = GroupActivityLogic::orderDetail($sn,$order_id,$this->request->domain());
+        $result = GroupActivityLogic::orderDetail($order_id,$this->request->domain());
         return $this->data($result);
     }
 
@@ -41,8 +40,8 @@ class GroupActivityController extends BaseApiController
      * 用户订单详情
      */
     public function userOrderDetail(){
-        $sn = $this->request->param('sn');
-        $result = GroupActivityLogic::userOrderDetail($sn,$this->userId);
+        $order_id = $this->request->param('order_id');
+        $result = GroupActivityLogic::userOrderDetail($order_id,$this->userId);
         return $this->data($result);
     }
 

+ 11 - 14
app/api/logic/GroupActivityLogic.php

@@ -52,12 +52,9 @@ class GroupActivityLogic extends BaseLogic
     /**
      * @notes 拼团订单详情
      */
-    public static function orderDetail($sn,$order_id,$url){
-        if (empty($sn) && empty($order_id)) {
-            return [];
-        }
-        $where = $sn ? ['sn'=>$sn] : ['id'=>$order_id];
-        $detail = GroupOrder::where($where)->findOrEmpty()->toArray();
+    public static function orderDetail($order_id,$url){
+        
+        $detail = GroupOrder::where(['id'=>$order_id])->findOrEmpty()->toArray();
         if(!empty($detail)){
             $detail['activity'] = GroupActivity::with('goods')->where(['id'=>$detail['group_activity_id']])->visible([
                 'id','title','image','start_time','end_time','type','equity_id',
@@ -68,7 +65,7 @@ class GroupActivityLogic extends BaseLogic
 
             $detail['users'] = GroupUserOrder::alias('a')
                                 ->leftJoin('user b','a.user_id=b.id')
-                                ->where(['a.sn'=>$sn,'a.status'=>1])
+                                ->where(['a.id'=>$order_id,'a.status'=>1])
                                 ->field(['a.id','a.user_id','a.status','a.create_time','b.avatar','b.nickname'])
                                 ->order('a.create_time','asc')
                                 ->select()
@@ -111,8 +108,8 @@ class GroupActivityLogic extends BaseLogic
     /**
      * @notes 用户订单详情
      */
-    public static function userOrderDetail($sn,$userId){
-        $detail = GroupUserOrder::with('groupOrder')->where(['sn'=>$sn, 'user_id' => $userId])->field('id,status,pay_way,pay_time,pay_status,refund_status,remark,create_time,group_order_id,user_equity_id,area,address')->findOrEmpty()->toArray();
+    public static function userOrderDetail($order_id,$userId){
+        $detail = GroupUserOrder::with('groupOrder')->where(['id'=>$order_id, 'user_id' => $userId])->field('id,status,pay_way,pay_time,pay_status,refund_status,remark,create_time,group_order_id,user_equity_id,area,address')->findOrEmpty()->toArray();
         if ($detail) {
             $detail['is_refund'] = 0;
             if ($detail['pay_status'] == 1 && $detail['refund_status'] == 0) {
@@ -144,7 +141,7 @@ class GroupActivityLogic extends BaseLogic
             }
             
             //校验拼团活动
-            if (empty($params['sn'])) {
+            if (empty($params['order_id'])) {
                 //新开团
                 $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
                 if ($activity->isEmpty()) {
@@ -183,7 +180,7 @@ class GroupActivityLogic extends BaseLogic
                 }
             } else {
                 //加入已开的拼团单
-                $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'sn' => $params['sn']])->findOrEmpty()->toArray();
+                $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'id' => $params['order_id']])->findOrEmpty()->toArray();
                 if (empty($groupOrder)) {
                     throw new Exception('拼团订单不存在!'); //拼团活动不存在
                 }
@@ -243,7 +240,7 @@ class GroupActivityLogic extends BaseLogic
         try {
             $detail =  GroupUserOrder::where([
                     'user_id' => $params['user_id'],
-                    'sn'=>$params['sn']
+                    'id'=>$params['order_id']
                 ])->field('id,status')->findOrEmpty()->toArray();
             if(empty($detail)){
                 throw new Exception('订单不存在');
@@ -279,7 +276,7 @@ class GroupActivityLogic extends BaseLogic
         try {
             $order =  GroupUserOrder::where([
                     'user_id' => $params['user_id'],
-                    'sn'=>$params['sn']
+                    'id'=>$params['order_id']
                 ])->field('id,sn,status,order_amount,pay_status,pay_way,user_equity_id,user_id,order_terminal')->findOrEmpty()->toArray();
             if(empty($order)){
                 throw new Exception('订单不存在');
@@ -341,7 +338,7 @@ class GroupActivityLogic extends BaseLogic
         try{
             $order =  GroupUserOrder::where([
                 'user_id' => $params['user_id'],
-                'sn' => $params['sn']
+                'id' => $params['order_id']
             ])->findOrEmpty();
             if($order->isEmpty()){
                 throw new \Exception('订单不存在');

+ 3 - 3
app/api/validate/GroupOrderValidate.php

@@ -34,12 +34,12 @@ class GroupOrderValidate extends BaseValidate
 
     public function sceneDetail()
     {
-        return $this->only(['sn']);
+        return $this->only(['order_id']);
     }
 
     public function sceneCancel()
     {
-        return $this->only(['sn']);
+        return $this->only(['order_id']);
     }
 
     /**
@@ -53,7 +53,7 @@ class GroupOrderValidate extends BaseValidate
 
     public function sceneRefund()
     {
-        return $this->only(['sn']);
+        return $this->only(['order_id']);
     }
 
     public function sceneStatus()

+ 17 - 0
config/queue.php

@@ -0,0 +1,17 @@
+<?php
+return [
+    // 默认队列驱动
+    'default' => 'redis',
+    'connections' => [
+        'redis' => [
+            'type'       => 'redis',
+            'queue'      => 'default',
+            'host'       => '127.0.0.1',
+            'port'       => 6379,
+            'password'   => '',
+            'select'     => 0,
+            'timeout'    => 0,
+            'persistent' => false,
+        ],
+    ],
+];