Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

林海涛 1 tahun lalu
induk
melakukan
1b2c4775b2

+ 0 - 2
app/adminapi/logic/goods/GoodsLogic.php

@@ -150,8 +150,6 @@ class GoodsLogic extends BaseLogic
      * @notes 获取详情
      * @param $params
      * @return array
-     * @author likeadmin
-     * @date 2024/07/07 18:37
      */
     public static function detail($params): array
     {

+ 12 - 0
app/api/controller/ServiceOrderController.php

@@ -15,6 +15,18 @@ class ServiceOrderController extends BaseApiController
         return $this->dataLists(new ServiceOrderLists());
     }
 
+    public function detail()
+    {
+        $params = (new ServiceOrderValidate())->goCheck('detail',[
+            'user_id' => $this->userId,
+        ]);
+        $result = ServiceOrderLogic::detail($params);
+        if (false === $result) {
+            return $this->fail(ServiceOrderLogic::getError());
+        }
+        return $this->data($result);
+    }
+
     public function submitOrder()
     {
         $params = (new ServiceOrderValidate())->post()->goCheck('add', [

+ 2 - 0
app/api/lists/recharge/ServiceOrderLists.php

@@ -44,6 +44,7 @@ class ServiceOrderLists extends BaseApiDataLists
                 'order_type' => 0,
                 'user_id' => $this->userId,
             ])
+            ->group('work_id')
             ->order('id', 'desc')
             ->select()
             ->toArray();
@@ -61,6 +62,7 @@ class ServiceOrderLists extends BaseApiDataLists
                 'order_type' => 0,
                 'user_id' => $this->userId,
             ])
+            ->group('work_id')
             ->count();
     }
 

+ 63 - 4
app/api/logic/ServiceOrderLogic.php

@@ -6,11 +6,14 @@ use app\common\enum\GoodsEnum;
 use app\common\enum\PayEnum;
 use app\common\enum\WorkEnum;
 use app\common\logic\BaseLogic;
+use app\common\model\dict\DictData;
 use app\common\model\goods\Goods;
+use app\common\model\master_worker\MasterWorker;
 use app\common\model\orders\RechargeOrder;
 use app\common\model\recharge\OrderGoods;
 use app\common\model\works\ServiceWork;
 use think\Exception;
+use think\facade\Db;
 
 
 /**
@@ -27,6 +30,7 @@ class ServiceOrderLogic extends BaseLogic
      */
     public static function submitOrder($params)
     {
+        Db::startTrans();
         try {
             $goods = Goods::findOrEmpty($params['goods_id']);
             if($goods->isEmpty()){
@@ -105,13 +109,68 @@ class ServiceOrderLogic extends BaseLogic
                 'fee_schedule' => $goods['fee_schedule'],
                 'goods_status' => $goods['goods_status'],
             ]);
-
-            return [
-                'order_id' => (int)$order['id'],
-            ];
+            Db::commit();
         } catch (\Exception $e) {
             self::setError($e->getMessage());
             return false;
         }
+
+        return [
+            'order_id' => (int)$order['id'],
+        ];
+    }
+
+    /**
+     * 获取详情
+     * @param $params
+     * @return array|false
+     */
+    public static function detail($params)
+    {
+        try {
+            $order_info =  \app\common\model\recharge\RechargeOrder::with(['order_goods'=>function ($query) {
+                $query->visible(['goods_name','goods_image','goods_number','good_unit']);
+            },'service_work'=>function ($query) {
+                $query->visible(['service_status','appointment_time','address','master_worker_id']);
+            }])
+                ->visible(['id','sn','order_total','order_amount','pay_status','create_time','title','work_id'])
+                ->where([
+                    'order_type' => 0,
+                    'user_id' => $params['user_id'],
+                    'sn'=>$params['sn']
+                ])->findOrEmpty()->toArray();
+            $order_info['master_worker'] = [
+                'real_name'=>'',
+                'worker_number'=>'',
+                'mobile'=>'',
+                'worker_exp'=>''
+            ];
+
+            //获取师傅参数
+            if(!empty($order_info['service_work']['master_worker_id'])){
+                $worker = MasterWorker::find($order_info['service_work']['master_worker_id']);
+                $order_info['master_worker']['real_name'] = $worker['real_name'];
+                $order_info['master_worker']['worker_number'] = $worker['worker_number'];
+                $order_info['master_worker']['mobile'] = $worker['mobile'];
+                $order_info['master_worker']['worker_exp'] = DictData::where(['type_value'=>'worker_exp_type','value'=>$worker->worker_register->maintain_exp_type])->value('name');
+            }
+
+            //搜索当前工单下的所有订单记录
+            $order_info['pay_orders'] = \app\common\model\recharge\RechargeOrder::where(['work_id'=>$order_info['work_id']])->field('pay_status,payment_type,pay_way,pay_time,order_amount')->order('id asc')->select()->toArray();
+            $pay_status_data = DictData::where('type_value','pay_status')->column('name','value');
+            $payment_type_data = DictData::where('type_value','payment_type')->column('name','value');
+            $pay_way_data = DictData::where('type_value','pay_way')->column('name','value');
+            foreach ($order_info['pay_orders'] as $k=>&$v){
+                $v['pay_status_name'] = $pay_status_data[$v['pay_status']];
+                $v['payment_type_name'] = $payment_type_data[$v['payment_type']];
+                $v['pay_way_name'] = $pay_way_data[$v['pay_way']];
+            }
+
+            return $order_info;
+        }
+        catch (\Exception $e) {
+                self::setError($e->getMessage());
+                return false;
+            }
     }
 }

+ 7 - 0
app/api/validate/ServiceOrderValidate.php

@@ -14,6 +14,7 @@ class ServiceOrderValidate extends BaseValidate
 {
 
     protected $rule = [
+        'sn'=>'require',
         'address' => 'require',
         'appointment_time' => 'require|dateFormat:Y-m-d H:i:s',
         'pay_way' => 'require',
@@ -22,6 +23,7 @@ class ServiceOrderValidate extends BaseValidate
 
 
     protected $message = [
+        'sn.require' => '订单编号错误',
         'address.require' => '请填写地址',
         'appointment_time.require' => '请填写预约上门时间',
         'appointment_time.dateFormat' => '预约上门时间格式错误',
@@ -35,4 +37,9 @@ class ServiceOrderValidate extends BaseValidate
         return $this->only(['address','appointment_time','pay_way','goods_id']);
     }
 
+    public function sceneDetail()
+    {
+        return $this->only(['sn']);
+    }
+
 }

+ 0 - 1
app/common/enum/PayEnum.php

@@ -29,7 +29,6 @@ class PayEnum
     const WECHAT_PAY    = 2; //微信支付
     const ALI_PAY       = 3; //支付宝支付
 
-
     //支付状态
     const UNPAID = 0; //未支付
     const ISPAID = 1; //已支付

+ 7 - 0
app/common/model/master_worker/MasterWorker.php

@@ -7,6 +7,7 @@
 namespace app\common\model\master_worker;
 
 use app\common\model\BaseModel;
+use app\common\model\MasterWorkerRegister;
 
 /**
  * 师傅表
@@ -28,4 +29,10 @@ class MasterWorker extends BaseModel
         }
         return $sn;
     }
+
+    public function workerRegister()
+    {
+        return $this->hasOne(MasterWorkerRegister::class, 'master_worker_id', 'id');
+    }
+
 }

+ 5 - 2
app/common/model/works/ServiceWork.php

@@ -16,7 +16,7 @@ namespace app\common\model\works;
 
 
 use app\common\model\BaseModel;
-
+use app\common\model\master_worker\MasterWorker;
 
 
 /**
@@ -29,6 +29,9 @@ class ServiceWork extends BaseModel
     
     protected $name = 'service_work';
     
-
+    public function worker()
+    {
+        return $this->belongsTo(MasterWorker::class, 'master_worker_id', 'id');
+    }
     
 }