Jelajahi Sumber

wesmiler 报恩寺项目

wesmiler 4 tahun lalu
induk
melakukan
dcbbdc6b63
2 mengubah file dengan 63 tambahan dan 56 penghapusan
  1. 61 55
      app/Services/GongdengOrderService.php
  2. 2 1
      app/Services/NotifyService.php

+ 61 - 55
app/Services/GongdengOrderService.php

@@ -48,7 +48,8 @@ class GongdengOrderService extends BaseService
         return parent::getList();
     }
 
-    public function getDdList(){
+    public function getDdList()
+    {
         $params = request()->all();
         $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
         $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
@@ -56,8 +57,8 @@ class GongdengOrderService extends BaseService
         $dataList = $this->model::from('gongdeng_orders as a')
             ->leftJoin('gongdeng_foxiang as gf', 'gf.id', '=', 'a.source_id')
             ->leftJoin('member as m', 'a.user_id', '=', 'm.id')
-            ->where(['a.mark'=> 1,'a.status'=> 2])
-            ->select(['a.id', 'a.source_id', 'a.user_id', 'a.sf_name','a.qf_content', 'a.pay','a.is_hide', 'gf.name as fx_name', 'm.nickname', 'm.avatar', 'a.status','a.pay_at', 'a.update_time'])
+            ->where(['a.mark' => 1, 'a.status' => 2])
+            ->select(['a.id', 'a.source_id', 'a.user_id', 'a.sf_name', 'a.qf_content', 'a.pay', 'a.is_hide', 'gf.name as fx_name', 'm.nickname', 'm.avatar', 'a.status', 'a.pay_at', 'a.update_time'])
             ->orderBy('a.pay_at', 'desc')
             ->orderBy('a.create_time', 'desc')
             ->paginate($pageSize);
@@ -66,10 +67,10 @@ class GongdengOrderService extends BaseService
         if ($dataList) {
             foreach ($dataList['data'] as &$item) {
                 $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : '';
-                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
-                $time = $item['pay_at']? $item['pay_at'] : $item['create_time'];
-                $item['time_text'] = $time? format_time(strtotime($time)) : '刚刚';
-                if($item['is_hide']){
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'], 'Y-m-d H:i:s') : '';
+                $time = $item['pay_at'] ? $item['pay_at'] : $item['create_time'];
+                $item['time_text'] = $time ? format_time(strtotime($time)) : '刚刚';
+                if ($item['is_hide']) {
                     $item['nickname'] = formatName($item['nickname']);
                 }
             }
@@ -78,7 +79,7 @@ class GongdengOrderService extends BaseService
 
         return [
             'code' => 0,
-            'success'=> true,
+            'success' => true,
             'msg' => '操作成功',
             'count' => isset($dataList['total']) ? $dataList['total'] : 0,
             'data' => isset($dataList['data']) ? $dataList['data'] : 0,
@@ -88,98 +89,103 @@ class GongdengOrderService extends BaseService
     /**
      * 供灯下单
      */
-    public function buy($userId){
+    public function buy($userId)
+    {
         $params = request()->all();
         // 验证佛像信息
-        $fid = isset($params['fid'])? $params['fid'] : 0;
-        $foInfo = GongdengFoxiangModel::where(['id'=>$fid, 'status'=> 1,'mark'=> 1])
-            ->select(['id','name'])
+        $fid = isset($params['fid']) ? $params['fid'] : 0;
+        $foInfo = GongdengFoxiangModel::where(['id' => $fid, 'status' => 1, 'mark' => 1])
+            ->select(['id', 'name'])
             ->first();
-        if(!$foInfo || $fid<=0){
+        if (!$foInfo || $fid <= 0) {
             return message('供灯佛像信息不存在', false);
         }
 
-        $payType = isset($params['payType'])? $params['payType'] : 0;
-        if(!in_array($payType, [1])){
+        $payType = isset($params['payType']) ? $params['payType'] : 0;
+        if (!in_array($payType, [1])) {
             return message('支付方式暂不支持', false);
         }
 
         // 套餐信息
-        $mid = isset($params['mid'])? $params['mid'] : 0;
-        $mealInfo = LampMealsModel::where(['id'=>$mid, 'status'=> 1,'mark'=> 1])
-            ->select(['id','name','price','num'])
+        $mid = isset($params['mid']) ? $params['mid'] : 0;
+        $mealInfo = LampMealsModel::where(['id' => $mid, 'status' => 1, 'mark' => 1])
+            ->select(['id', 'name', 'price', 'num'])
             ->first();
-        if(!$mealInfo){
+        if (!$mealInfo) {
             return message('供灯套餐不存在或已下架', false);
         }
 
         // 验证用户是否已授权
-        $memberInfo = MemberModel::where(['id'=> $userId, 'mark'=> 1, 'status'=> 1])
-            ->select('id','openid','nickname')
+        $memberInfo = MemberModel::where(['id' => $userId, 'mark' => 1, 'status' => 1])
+            ->select('id', 'openid', 'nickname')
             ->first();
-        $openid = isset($memberInfo['openid'])? trim($memberInfo['openid']) : '';
-        if(!$memberInfo){
+        $openid = isset($memberInfo['openid']) ? trim($memberInfo['openid']) : '';
+        if (!$memberInfo) {
             return message('账号已被冻结,请联系客服', false);
         }
 
-        if(empty($openid)){
+        if (empty($openid)) {
             return message('账号获取授权参数失败,请退出重试', false);
         }
 
         // 验证是否供灯过
         $buyType = 1;
-         $gdCheckData = GongdengOrderModel::where(['source_id'=> $fid,'user_id'=> $userId,'status'=>2,'mark'=>1])
-             ->where('expire_time','>=', time())
-             ->select(['id','source_id','user_id','expire_time','params'])
-             ->first();
+        $gdCheckData = GongdengOrderModel::where(['source_id' => $fid, 'user_id' => $userId, 'status' => 2, 'mark' => 1])
+            ->where('expire_time', '>=', time())
+            ->select(['id', 'source_id', 'user_id','device_num', 'expire_time', 'params'])
+            ->first();
 
-         // 续费
-        if($gdCheckData){
+        // 续费
+        if ($gdCheckData && $gdCheckData->id) {
             $buyType = 2;
         }
 
         // 创建订单
-        $expireTime = ($mealInfo->num*24*3600) + time();
+        $expireTime = ($mealInfo->num * 24 * 3600) + time();
         $data = [
-            'source_id'=> $fid,
-            'user_id'=> $userId,
-            'pay_type'=> $payType,
-            'buy_type'=> $buyType,
-            'order_sn'=> get_order_num('G'),
-            'num'=> 1,
-            'price'=> $mealInfo->price,
-            'total'=> $mealInfo->price,
-            'sf_name'=> isset($params['sf_name'])? trim($params['sf_name']) : '',
-            'qf_content'=> isset($params['qf_content'])? trim($params['qf_content']) : '',
-            'is_hide'=> isset($params['is_hide'])? intval($params['is_hide']) : 0,
-            'expire_time'=> $expireTime,
-            'create_time'=> time(),
-            'status'=> 1,
+            'source_id' => $fid,
+            'user_id' => $userId,
+            'pay_type' => $payType,
+            'buy_type' => $buyType,
+            'order_sn' => get_order_num('G'),
+            'num' => 1,
+            'price' => $mealInfo->price,
+            'total' => $mealInfo->price,
+            'sf_name' => isset($params['sf_name']) ? trim($params['sf_name']) : '',
+            'qf_content' => isset($params['qf_content']) ? trim($params['qf_content']) : '',
+            'is_hide' => isset($params['is_hide']) ? intval($params['is_hide']) : 0,
+            'expire_time' => $expireTime,
+            'create_time' => time(),
+            'status' => 1,
         ];
 
+        if($gdCheckData){
+            $data['params'] = $gdCheckData->params;
+        }
+
         // 订单
-        if(!$oid = GongdengOrderModel::insertGetId($data)){
+        if (!$oid = GongdengOrderModel::insertGetId($data)) {
             return message('供灯订单创建失败', false);
         }
 
 
         // 支付参数
-        switch($payType){
+        switch ($payType) {
             case 1: // 微信支付
                 $order = [
-                    'openid'=> $openid,
-                    'orderNo'=> $data['order_sn'],
-                    'amount'=> $data['total'],
-                    'body'=> '供灯订单支付',
+                    'openid' => $openid,
+                    'orderNo' => $data['order_sn'],
+                    'amount' => $data['total'],
+                    'body' => '供灯订单支付',
                 ];
 
                 $jsapiParams = WechatService::jsapiUnifiedorder($order);
-                $code = isset($jsapiParams['code'])? $jsapiParams['code'] : '';
-                if($code == 'error' || empty($jsapiParams)){
-                    $message = isset($jsapiParams['message']) && $jsapiParams['message']? $jsapiParams['message'] : '订单支付处理失败';
+                $code = isset($jsapiParams['code']) ? $jsapiParams['code'] : '';
+                if ($code == 'error' || empty($jsapiParams)) {
+                    $message = isset($jsapiParams['message']) && $jsapiParams['message'] ? $jsapiParams['message'] : '订单支付处理失败';
                     return message($message, false);
                 }
-                return message('订单创建成功', true, ['id'=> $oid,'params'=> $jsapiParams]);
+                return message('订单创建成功', true, ['id' => $oid, 'params' => $jsapiParams]);
                 break;
             default:
                 break;

+ 2 - 1
app/Services/NotifyService.php

@@ -98,7 +98,8 @@ class NotifyService extends BaseService
 
         // 更新订单数据
         DB::beginTransaction();
-        if(!$this->model::where(['order_sn'=> $outTradeNo])->update(['status'=> 2,'pay_at'=> date('Y-m-d H:i:s'),'pay_money'=> moneyFormat($payMoney/100),'remark'=> '已支付'])){
+        $tradeNo = isset($notifyData['transaction_id'])? $notifyData['transaction_id'] : '';
+        if(!$this->model::where(['order_sn'=> $outTradeNo])->update(['status'=> 2,'trade_no'=> $tradeNo,'pay_at'=> date('Y-m-d H:i:s'),'pay_money'=> moneyFormat($payMoney/100),'remark'=> '已支付'])){
             RedisService::set($errorKey.':error_update',['notify'=> $notifyData, 'error'=> '更新订单信息失败','order'=> $orderInfo
             ], 3600);
             DB::rollBack();