Przeglądaj źródła

订单尾款服务费= 订单金额-配件金额

whitefang 1 rok temu
rodzic
commit
ccd715d199

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

@@ -36,6 +36,22 @@ class ServiceOrderController extends BaseApiController
         return $this->data($result);
     }
 
+    /**
+     * 订单支付详情
+     * @return \think\response\Json
+     */
+    public function orderPayInfo()
+    {
+        $params = (new ServiceOrderValidate())->goCheck('detail',[
+            'user_id' => $this->userId,
+        ]);
+        $result = ServiceOrderLogic::orderPayInfo($params);
+        if (false === $result) {
+            return $this->fail(ServiceOrderLogic::getError());
+        }
+        return $this->data($result);
+    }
+
     public function getMasterWorker()
     {
         $params = (new ServiceOrderValidate())->goCheck('worker',[

+ 74 - 0
app/api/logic/ServiceOrderLogic.php

@@ -398,6 +398,80 @@ class ServiceOrderLogic extends BaseLogic
     }
 
 
+    /**
+     * 获取订单支付详情
+     * @param $params
+     * @return array|false
+     */
+    public static function orderPayInfo($params)
+    {
+        try {
+            $order_info =  \app\common\model\recharge\RechargeOrder::with(['service_work'=>function ($query) {
+                $query->visible(['spare_total','service_work_spare_id']);
+            }])
+                ->visible(['id','sn','work_id'])
+                ->where([
+                    'order_type' => 0,
+                    'user_id' => $params['user_id'],
+                    'sn'=>$params['sn']
+                ])->findOrEmpty()->toArray();
+
+            if(empty($order_info)){
+                throw new Exception('订单不存在');
+            }
+
+            //查询总价
+            $order_info['order_amount'] = \app\common\model\recharge\RechargeOrder::where(['order_type'=>0,'user_id'=>$params['user_id'],'work_id'=>$order_info['work_id']])->sum('order_amount');
+            $order_info['paid_amount'] = \app\common\model\recharge\RechargeOrder::where(['order_type'=>0,'user_id'=>$params['user_id'],'work_id'=>$order_info['work_id']])->sum('paid_amount');
+
+            //搜索当前工单下的所有订单记录
+            $order_info['pay_orders'] = \app\common\model\recharge\RechargeOrder::where(['work_id'=>$order_info['work_id']])->field('id as order_id, pay_status,payment_type,pay_way,pay_time,order_total,order_amount,coupon_price')->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');
+            $coupon_price = 0;
+            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']];
+
+                if($v['payment_type']!=1 and !empty($order_info['service_work']['spare_total'])){
+                    $v['order_total'] = $v['order_total'] - $order_info['service_work']['spare_total'];
+                    $v['order_amount'] = $v['order_amount'] - $order_info['service_work']['spare_total'];
+                }
+
+                $coupon_price += $v['coupon_price'];
+            }
+
+            //汇总优惠卷额度
+            $order_info['coupon_price'] = $coupon_price;
+
+            // 所有配件
+            $order_info['spare_total'] = $order_info['service_work']['spare_total']??0;
+            $order_info['spare_parts'] = [];
+            if($order_info['service_work']['service_work_spare_id']){
+                $work_spare_parts = json_decode(ServiceWorkSpare::where('id',$order_info['service_work']['service_work_spare_id'])->value('spare_parts'),true);
+                $spare_parts = SparePart::where('id','in',array_column($work_spare_parts,'id'))
+                    ->field(['id', 'goods_category_id', 'spare_name', 'spare_image', 'spare_number', 'spare_unit','spare_status'])
+                    ->select()
+                    ->toArray();
+                $spare_parts = array_column($spare_parts,null,'id');
+                foreach (array_column($work_spare_parts,null,'id') as $k=>&$v){
+                    $spare_parts[$k] = array_merge($spare_parts[$k],$v);
+                }
+                $order_info['spare_parts'] = array_values($spare_parts)??[];
+            }
+
+            return $order_info;
+        }
+        catch (\Exception $e) {
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
     /**
      * 取消订单
      * @param $params