Quellcode durchsuchen

add - 独立工单支付接口

liugc vor 8 Monaten
Ursprung
Commit
9f786ea953

+ 16 - 0
app/adminapi/controller/works/ServiceWorkController.php

@@ -26,6 +26,7 @@ use app\api\logic\ServiceOrderLogic;
 use app\common\logic\ThirdOrderLogic;
 use app\common\model\works\ServiceWork;
 use app\adminapi\lists\works\ServiceWorkAppointmentLists;
+use Exception;
 
 
 /**
@@ -350,4 +351,19 @@ class ServiceWorkController extends BaseAdminController
         return $this->success('', $result, 1, 1);
     }
 
+    public function shareFixedAmountToNative()
+    {
+        try {
+            $params = request()->post();
+            $result = ServiceWorkLogic::shareFixedAmountToNative($params);
+            if (false === $result) {
+                return $this->fail(ServiceWorkLogic::getError());
+            }
+            return $this->success('', $result, 1, 1);
+        } catch (Exception $e) {
+            return $this->fail($e->getMessage());
+        }
+    }
+
+
 }

+ 25 - 20
app/adminapi/logic/works/ServiceWorkLogic.php

@@ -1521,23 +1521,6 @@ class ServiceWorkLogic extends BaseLogic
         // 通过分享单Id 获取工单详情 'id'=>$params['id']
         $externalShareOrder = ExternalShareOrder::where('id',$params['id']??0)->findOrEmpty();
         if($externalShareOrder->isEmpty()){
-            if($params['work_id']??false){
-                $work = ServiceWork::where(['id'=>$params['work_id']])->findOrEmpty();
-                if(empty($work->master_worker_id)){
-                    $work->work_status = 4;
-                    $work->master_worker_id = 2;
-                    $work->save();
-                    //amount user_id work_sn user_info.worker_number real_name master_worker_id
-                    self::confirmPrice([
-                        'amount'=>$params['amount']??1,
-                        'user_id'=>$work->master_worker_id,
-                        'work_sn'=>$work->work_sn,
-                        'user_info'=>['worker_number'=>'管理员','real_name'=>'管理员']
-                    ]);
-                    $res = ExternalShareOrder::create(['work_id'=>$params['work_id']]);
-                    return ['id'=>$res->id];
-                }
-            }
             return  [];
         }
 
@@ -1591,7 +1574,7 @@ class ServiceWorkLogic extends BaseLogic
             if($params['amount']){
                 $work = ServiceWork::where(['id'=>$params['id']])->findOrEmpty();
                 $work->work_status = 4;
-                $work->master_worker_id = 2;
+                if(empty($work->master_worker_id)) $work->master_worker_id = 2;
                 $work->save();
                 //amount user_id work_sn user_info.worker_number real_name master_worker_id
                 self::confirmPrice([
@@ -1608,7 +1591,7 @@ class ServiceWorkLogic extends BaseLogic
 
                 $work = ServiceWork::where(['id'=>$params['id']])->findOrEmpty();
                 $work->work_status = 4;
-                $work->master_worker_id = 2;
+                if(empty($work->master_worker_id)) $work->master_worker_id = 2;
                 $work->save();
                 //amount user_id work_sn user_info.worker_number real_name master_worker_id
                 self::confirmPrice([
@@ -1629,5 +1612,27 @@ class ServiceWorkLogic extends BaseLogic
         return ['info'=>$shareOrder->isEmpty()?[]:$shareOrder->toArray(),'share_url'=>$shareOrder->isEmpty()?'':$share_url];
     }
 
-
+    // 固定的尾款即同当前工单中的尾款金额
+    public static function shareFixedAmountToNative($params){
+        try {
+            // 创建分享单Id
+            $amount = RechargeOrder::where(['work_id'=>$params['id'],'pay_status'=>0])->sum('order_amount');
+            // 查询出未支付的总金额
+            $shareOrder = ExternalShareOrder::where(['work_id'=>$params['id']])->findOrEmpty();
+            if($shareOrder->isEmpty()){
+                $shareOrder = ExternalShareOrder::create(['order_status'=>1,'work_id'=>$params['id'],'paid_amount'=>$amount??0]);
+            }else{
+                if($shareOrder->order_status === 1 && empty($shareOrder->openid)){ // 可以改价
+                    $shareOrder->paid_amount= $amount??0;
+                    $shareOrder->save();
+                }else{ // 已结束 - 不用分享二维码
+                    throw new \Exception('订单已结束无需支付');
+                }
+            }
+            return ['info'=>$shareOrder->isEmpty()?[]:$shareOrder->toArray(),'share_url'=>(env('project.share_fixed_host','').'?id='.$shareOrder->id)];
+        } catch (\Exception $e) {
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
 }

+ 36 - 1
app/api/controller/ServiceOrderController.php

@@ -8,6 +8,7 @@ use app\api\logic\ActivityLogic;
 use app\api\logic\ServiceOrderLogic;
 use app\api\validate\ServiceOrderValidate;
 use app\common\model\works\ServiceWorkAppointmentLog;
+use Exception;
 use think\facade\Log;
 
 /**
@@ -330,6 +331,40 @@ class ServiceOrderController extends BaseApiController
     }
 
 
-
+    /**
+     * 获取工单需支付信息
+     * @return \think\response\Json
+     * @author liugc <466014217@qq.com>
+     * @date 2025/5/7 15:08
+     */
+    public function shareFixedAmountToNative()
+    {
+        try {
+            $params = request()->post();
+            $result = ServiceWorkLogic::shareFixedAmountToNative($params);
+            if (false === $result) {
+                return $this->fail(ServiceWorkLogic::getError());
+            }
+            return $this->success('', $result, 1, 1);
+        } catch (Exception $e) {
+            return $this->fail($e->getMessage());
+        }
+    }
+    /**
+     * 扫码分享的工单 - 获取工单信息
+     * @return \think\response\Json
+     * @author liugc <466014217@qq.com>
+     * @date 2025/5/7 15:08
+     */
+    public function shareServiceWorkDetail()
+    {
+        try {
+            $params = request()->post();
+            $result = ServiceWorkLogic::shareServiceWorkDetail($params);
+            return $this->data($result);
+        } catch (Exception $e) {
+            return $this->fail($e->getMessage());
+        }
+    }
 
 }