Переглянути джерело

提交工程师质保金缴费

dongxiaoqin 8 місяців тому
батько
коміт
6b9934799f

+ 15 - 0
app/adminapi/controller/master_worker/MasterWorkerController.php

@@ -207,4 +207,19 @@ class MasterWorkerController extends BaseAdminController
         }
         return $this->fail(MasterWorkerLogic::getError());
     }
+
+    /**
+     * @notes 工程师质保金缴费二维码
+     * @return \think\response\Json
+     */
+    public function retentionMoneyOrder()
+    {
+        $params = request()->post();
+        $result = MasterWorkerLogic::retentionMoneyOrder($params);
+        if (false === $result) {
+            return $this->fail(MasterWorkerLogic::getError());
+        }
+        return $this->success('', $result, 1, 1);
+        
+    }
 }

+ 28 - 0
app/adminapi/logic/master_worker/MasterWorkerLogic.php

@@ -22,6 +22,7 @@ use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
 use app\common\model\master_worker_credential\MasterWorkerCredentialImages;
 use app\common\model\service_area\ServiceArea;
 use app\common\model\master_worker\MasterWorkerStop;
+use app\common\model\master_worker\MasterWorkerRetentionMoneyOrder;
 use think\db\Query;
 use think\facade\Config;
 use think\facade\Db;
@@ -381,4 +382,31 @@ class MasterWorkerLogic extends BaseLogic
             return false;
         }
     }
+
+    /**
+     * 工程师质保金缴费二维码
+     * @param $params
+     * @return array|false|string
+     * @throws \Exception
+     */
+    public static function retentionMoneyOrder($params){
+        // 创建分享单Id
+        $is_share = true;
+        $params['amount'] = (float)$params['amount']??0;
+        $order = MasterWorkerRetentionMoneyOrder::where(['worker_id'=>$params['worker_id']])->findOrEmpty();
+        if($order->isEmpty()){
+            $sn = generate_sn(MasterWorkerRetentionMoneyOrder::class, 'sn');
+            $order = MasterWorkerRetentionMoneyOrder::create(['sn' => $sn, 'order_status'=>1,'worker_id'=>$params['worker_id'],'order_amount'=>$params['amount']??0]);
+        }else{
+            if($order->order_status === 1 && empty($order->openid) && $params['amount']>0){ // 可以改价
+                $order->order_amount= $params['amount']??0;
+                $order->save();
+            }else{ // 已结束 - 不用分享二维码
+                if((float)$order->order_amount>0 && empty($params['amount'])) $is_share = true;
+                else $is_share = false;
+            }
+        }
+        $share_url = $is_share?(env('project.share_retention_money_host','').'?id='.$order->id):'';
+        return ['info'=>$order->isEmpty()?[]:$order->toArray(),'share_url'=>$order->isEmpty()?'':$share_url];
+    }
 }

+ 5 - 1
app/api/controller/PayController.php

@@ -56,7 +56,11 @@ class PayController extends BaseApiController
     {
         $params = (new PayValidate())->post()->goCheck();
         //订单信息
-        $order = PaymentLogic::getPayOrderInfo($params);
+        if ($params['from'] == 'retention_money') {
+            $order = PaymentLogic::getPayRetentionMoneyOrderInfo($params);//质保金缴费单
+        } else {
+            $order = PaymentLogic::getPayOrderInfo($params);
+        }
         if (false === $order) {
             return $this->fail(PaymentLogic::getError(), $params);
         }

+ 30 - 0
app/common/logic/PayNotifyLogic.php

@@ -26,6 +26,8 @@ use app\common\model\recharge\RechargeOrder;
 use app\common\model\shops\ShopOrders;
 use app\common\model\user\User;
 use app\common\model\works\ServiceWork;
+use app\common\model\master_worker\MasterWorkerRetentionMoneyOrder;
+use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
 use think\facade\Db;
 use think\facade\Log;
 
@@ -207,4 +209,32 @@ class PayNotifyLogic extends BaseLogic
         }
     }
 
+    /**
+     * @notes 工程师质保金支付回调
+     * @param $orderSn
+     * @param array $extra
+     */
+    public static function retention_money($orderSn, array $extra = [])
+    {
+        $order = MasterWorkerRetentionMoneyOrder::where('sn', $orderSn)->findOrEmpty();
+        Log::write($order->toArray(),JSON_UNESCAPED_UNICODE);
+        if(!$order->isEmpty()){
+            // 更新用户拼团订单状态
+            $order->transaction_id = $extra['transaction_id'] ?? '';
+            $order->order_status = PayEnum::ISPAID;
+            $order->pay_time = time();
+            $order->paid_amount = $order->order_amount;
+            $order->save();
+            
+            //生成质保金缴费记录
+            MasterWorkerRetentionMoneyLog::create([
+                'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
+                'worker_id' => $order->worker_id,
+                'action' => 3,
+                'amount' => $order->paid_amount,
+                'source' => 3,
+            ]);
+        }
+    }
+
 }

+ 31 - 0
app/common/logic/PaymentLogic.php

@@ -26,6 +26,7 @@ use app\common\model\recharge\RechargeOrder;
 use app\common\model\shops\ShopOrders;
 use app\common\model\group_activity\GroupUserOrder;
 use app\common\model\user\User;
+use app\common\model\master_worker\MasterWorkerRetentionMoneyOrder;
 use app\common\service\pay\AliPayService;
 use app\common\service\pay\WeChatPayService;
 use app\common\service\pay\WorkerWeChatPayService;
@@ -239,6 +240,28 @@ class PaymentLogic extends BaseLogic
         }
     }
 
+    /**
+     * @notes 获取工程师质保金预支付订单信息
+     * @param $params
+     * @return MasterWorkerRetentionMoneyOrder|array|false|\think\Model
+     */
+    public static function getPayRetentionMoneyOrderInfo($params)
+    {
+        try {
+            $order = MasterWorkerRetentionMoneyOrder::findOrEmpty($params['order_id']);
+            if ($order->isEmpty()) {
+                throw new Exception('订单不存在');
+            }
+            if ($order['pay_status'] == PayEnum::ISPAID) {
+                throw new Exception('订单已支付');
+            }
+            return $order;
+        } catch (\Exception $e) {
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
     /**
      * @notes 支付
      * @param $payWay
@@ -269,6 +292,10 @@ class PaymentLogic extends BaseLogic
             case 'group':
                 GroupUserOrder::update(['pay_way' => $payWay, 'pay_sn' => $paySn], ['id' => $order['id']]);
                 break;
+            case 'retention_money':
+                //质保金
+                MasterWorkerRetentionMoneyOrder::update(['pay_way' => $payWay, 'pay_sn' => $paySn], ['id' => $order['id']]);
+                break;
         }
 
         if ($order['order_amount'] == 0) {
@@ -335,6 +362,10 @@ class PaymentLogic extends BaseLogic
             case 'goods':
                 RechargeOrder::update(['pay_way' => $payWay, 'pay_sn' => $paySn], ['id' => $order['id']]);
                 break;
+            case 'retention_money':
+                //质保金
+                MasterWorkerRetentionMoneyOrder::update(['pay_sn' => $paySn], ['id' => $order['id']]);
+                break;
         }
 
         if ($order['order_amount'] == 0) {

+ 9 - 0
app/common/model/master_worker/MasterWorkerRetentionMoneyOrder.php

@@ -0,0 +1,9 @@
+<?php
+namespace app\common\model\master_worker;
+use app\common\model\BaseModel;
+
+
+class MasterWorkerRetentionMoneyOrder extends BaseModel
+{
+    protected $name = 'master_worker_retention_money_order';
+}