瀏覽代碼

Merge branch 'master' of http://39.98.194.76:3000/txct/wanyue_app

yxjapp 6 月之前
父節點
當前提交
003e5aafe9

+ 91 - 7
app/admin/controller/member/MemberController.php

@@ -457,17 +457,101 @@ class MemberController
         return MemberService::deleteDevice($request);
     }
 
-    public function coupon(Request $request)
+    /**
+     * @Desc 卡券数量
+     * @Author Gorden
+     * @Date 2024/8/22 18:51
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function couponCount(Request $request)
     {
-        $memberId = $request->get('member_id','');
-        $active = $request->get('active','');
+        $memberId = $request->get('member_id', '');
+        $coupons = CouponDetail::leftJoin('coupon', 'coupon.coupon_id', '=', 'coupon_detail.join_detail_coupon_id')
+            ->where('join_coupon_detail_member_id', $memberId)
+            ->select('coupon.coupon_name', 'coupon.coupon_classify')
+            ->get()
+            ->toArray();
+        $data = ['manjian'=>0,'diyong'=>0,'zhekou'=>0,'lijian'=>0,'zengpin'=>0,'fuli'=>0,'nianka'=>0,'jika'=>0,'yueka'=>0];
+        foreach ($coupons as $item) {
+            if ($item['coupon_classify'] == '满减券'){
+                $data['manjian'] += 1;
+            }elseif ($item['coupon_classify'] == '抵用券'){
+                $data['diyong'] += 1;
+            }elseif ($item['coupon_classify'] == '折扣券'){
+                $data['zhekou'] += 1;
+            }elseif ($item['coupon_classify'] == '立减券'){
+                $data['lijian'] += 1;
+            }elseif ($item['coupon_classify'] == '赠品券'){
+                $data['zengpin'] += 1;
+            }elseif ($item['coupon_classify'] == '福利券'){
+                $data['fuli'] += 1;
+            }elseif ($item['coupon_classify'] == '年卡'){
+                $data['nianka'] += 1;
+            }elseif ($item['coupon_classify'] == '季卡'){
+                $data['jika'] += 1;
+            }elseif ($item['coupon_classify'] == '月卡'){
+                $data['yueka'] += 1;
+            }
+        }
+        $data['total'] = $data['manjian']+$data['diyong']+$data['zhekou']+$data['lijian']+$data['zengpin']+$data['fuli']+$data['nianka']+$data['jika']+$data['yueka'];
 
-        $coupons = CouponDetail::where('join_coupon_detail_member_id',$memberId)
-            ->leftJoin('coupon','coupon.coupon_id','=','coupon_detail.join_detail_coupon_id')
-            ->groupBy('join_detail_coupon_id')
+        return json_success('',$data);
+    }
+
+    /**
+     * @Desc 我的卡券
+     * @Author Gorden
+     * @Date 2024/8/22 18:45
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function coupon(Request $request)
+    {
+        $memberId = $request->get('member_id', '');
+        $classify = $request->get('classify', '');
+        $page = $request->get('page', 1);
+        $pageSize = $request->get('pageSize', 20);
+
+        $coupons = CouponDetail::with([
+            'member' => function ($query) {
+                $query->select('member_id', 'member_mobile');
+            },
+            'cert' => function ($query) {
+                $query->select('join_cert_member_id', 'member_cert_name');
+            },
+            'info' => function ($query) {
+                $query->select('join_info_member_id', 'member_info_nickname');
+            }
+        ])
+            ->leftJoin('coupon', 'coupon.coupon_id', '=', 'coupon_detail.join_detail_coupon_id')
+            ->where('join_coupon_detail_member_id', $memberId)
+            ->where('coupon.coupon_classify', $classify);
+        $total = $coupons->count();
+        $rows = $coupons->select('coupon_detail.*', 'coupon.coupon_name', 'coupon.coupon_classify')
+            ->forPage($page, $pageSize)
             ->get()
             ->toArray();
 
-        dump($coupons);
+        foreach ($rows as &$item) {
+            $mobile = $certName = $nickname = '';
+            if (!empty($item['member']) && !empty($item['member']['member_mobile'])) {
+                $mobile = $item['member']['member_mobile'];
+            }
+            if (!empty($item['cert']) && !empty($item['cert']['member_cert_name'])) {
+                $certName = $item['cert']['member_cert_name'];
+            }
+            if (!empty($item['info']) && !empty($item['info']['member_info_nickname'])) {
+                $nickname = $item['info']['member_info_nickname'];
+            }
+            $item['member_name'] = MemberService::getMemberName($mobile, $certName, $nickname);
+            unset($item['member'], $item['cert'], $item['info']);
+
+            $data[$item['coupon_classify']][] = $item;
+        }
+
+        return json_success('', compact('rows', 'page', 'pageSize', 'total'));
     }
 }

+ 37 - 15
app/admin/controller/order/WholeController.php

@@ -757,7 +757,7 @@ class WholeController extends Curd
             Redis::del($key);
         }
         // 验证线下付款密码
-        if ($params['pay_constitute'] == 'N' && in_array($params['pay_category'], ['OFFLINE','MONEY'])) {
+        if ($params['pay_constitute'] == 'N' && in_array($params['pay_category'], ['OFFLINE', 'MONEY'])) {
             $password = $params['offline_password'];
             if ($password != '666888') {
                 return json_fail("密码错误,请重新输入");
@@ -1204,11 +1204,11 @@ class WholeController extends Curd
             }
             _syslog("订单", "订单支付成功");
             return json_success('支付成功');
-        }catch (BusinessException $e){
+        } catch (BusinessException $e) {
             dump($e->getMessage());
             Db::rollBack();
-            _syslog("订单", "订单支付失败:".$e->getMessage());
-            return json_fail("支付失败:".$e->getMessage());
+            _syslog("订单", "订单支付失败:" . $e->getMessage());
+            return json_fail("支付失败:" . $e->getMessage());
         } catch (\Exception $e) {
             dump($e->getMessage());
             Db::rollBack();
@@ -1231,7 +1231,7 @@ class WholeController extends Curd
                 $params['order_discount_amount'] = $params['order_amount_total'] - $params['order_amount_pay'];
                 $couponClassifyDesc = $couponClassify = '抹零';
             } else if (!empty($params['preferential']) && $params['preferential'] == 'custom') {
-                if (sprintf("%.2f",$params['order_amount_total']-$params['order_discount_amount']) != sprintf("%.2f",$params['order_amount_pay'])) {
+                if (sprintf("%.2f", $params['order_amount_total'] - $params['order_discount_amount']) != sprintf("%.2f", $params['order_amount_pay'])) {
                     throw new BusinessException("餐厅前台优惠后实际支付金额错误");
                 }
                 $couponClassifyDesc = $couponClassify = '餐厅前台优惠';
@@ -1242,7 +1242,7 @@ class WholeController extends Curd
                 $couponClassify = '折扣';
                 $couponClassifyDesc = $params['preferential'] . '折';
                 $params['order_discount_amount'] = $params['order_amount_total'] - $params['order_amount_pay'];
-            } else{
+            } else {
                 return $json;
             }
             $json[date('Y-m-d H:i:s')] = [
@@ -1253,7 +1253,7 @@ class WholeController extends Curd
                 'coupon_classify_en' => $params['preferential']
             ];
             return $json;
-        }catch (BusinessException $e){
+        } catch (BusinessException $e) {
             throw new BusinessException($e->getMessage());
         } catch (\Exception $e) {
             dump($e->getMessage());
@@ -1749,7 +1749,7 @@ class WholeController extends Curd
                 Redis::del($key);
             }
             // 验证线下付款密码
-            if ($params['settlement_now'] == 'Y' && $params['pay_constitute'] == 'N' && in_array($params['pay_category'], ['OFFLINE','MONEY'])) {
+            if ($params['settlement_now'] == 'Y' && $params['pay_constitute'] == 'N' && in_array($params['pay_category'], ['OFFLINE', 'MONEY'])) {
                 $password = $params['offline_password'];
                 if ($password != '666888') {
                     return json_fail("密码错误,请重新输入");
@@ -2895,7 +2895,7 @@ class WholeController extends Curd
                 $payPrepayid = $params['pay_category'];
             } else if ($params['pay_category'] == 'OFFLINE') {
                 $payPrepayid = 'OFFLINE';
-            }  else if ($params['pay_category'] == 'MONEY') {
+            } else if ($params['pay_category'] == 'MONEY') {
                 $payPrepayid = 'MONEY';
             } else {
                 $payPrepayid = $params['join_order_member_id'] . '-' . $params['pay_category'];
@@ -3866,6 +3866,7 @@ class WholeController extends Curd
     public function exportOrder(Request $request)
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $where['order_category'] = ['<>', 'RECHARGE'];
         if (!empty($request->get('order_ids'))) {
             $where['order_id'] = ['in', $request->get('order_ids')];
         }
@@ -4051,7 +4052,7 @@ class WholeController extends Curd
     {
         $data = [];
         foreach ($items as $key => $item) {
-            $goodsClassify = '--';
+            $goodsClassify = '';
             $goodsName = '--';
             if (!empty($item['sheet'])) {
                 $goods = Goods::where('goods_id', $item['sheet']['join_sheet_goods_id'])->first();
@@ -4064,17 +4065,33 @@ class WholeController extends Curd
             } elseif ($item['order_is_complete'] == 'R') {
                 $systemStatus = '售后已完成';
             }
-
+            $payDetails = PayDetail::where('join_pay_order_id', $item['order_groupby'])
+                ->where('pay_status', 'SUCCESS')
+                ->where('pay_category','<>','REFUND')
+                ->get()
+                ->toArray();
+            if (count($payDetails) > 1) {
+                $payWay = '组合支付';
+            } elseif (count($payDetails) == 1) {
+                $payWayEn = OrderService::getPayWayByPrepayId($payDetails[0]['pay_prepayid']);
+                $payWay = OrderService::$payWay[$payWayEn];
+            }
+            if ($item['member']['member_mobile'] == '0000') {
+                $memberName = '散客';
+            } else {
+                $memberName = (!empty($item['cert']) ? $item['cert']['member_cert_name'] : substr($item['member']['member_mobile'], -4) . '用户') . '-' . $item['member']['member_mobile'];
+            }
             $data[$key] = [
-                'goods_classify' => !empty($goods) && isset(self::$goodsClassify[$goods->goods_classify]) ? self::$goodsClassify[$goods->goods_classify] : '其他订单',
+                'goods_classify' => !empty($goodsClassify) && isset(self::$goodsClassify[$goodsClassify]) ? self::$goodsClassify[$goodsClassify] : '其他订单',
                 'order_id' => $item['order_id'],
-                'member' => (!empty($item['cert']) ? $item['cert']['member_cert_name'] : substr($item['member']['member_mobile'], -4) . '用户') . '-' . $item['member']['member_mobile'],
+                'member' => $memberName,
                 'goods_name' => $goodsName,
                 'nbr' => !empty($item['sheet']) ? intval($item['sheet']['order_sheet_num']) : '--',
                 'order_amount_total' => $item['order_amount_total'],
                 'order_amount_pay' => $item['order_amount_pay'],
                 'order_status_system' => !empty($systemStatus) ? $systemStatus : self::$systemStatus[$item['order_status_system']],
                 'order_status_payment' => self::$paymentStatus[$item['order_status_payment']],
+                'pay_way' => $payWay ?? '',
                 'order_addtimes' => date('Y-m-d H:i:s', strtotime($item['order_addtimes']))
             ];
         }
@@ -4205,12 +4222,16 @@ class WholeController extends Curd
 
         'GOODS' => "产品订单",
         'SERVICE' => "服务订单",
+        'CHNMED' => '服务订单',
+        'CHNNCD' => '服务订单',
         'DEVICE' => '设备订单',
         'SPECIAL' => '专题业务订单',
         'PACKAGE' => '套包订单',
         'RECHARGE' => '充值订单',
         'OTHER' => '其他订单',
-        'DISHES' => '餐饮订单'
+        'DISHES' => '餐饮订单',
+        'MEALS' => '餐饮订单',
+        'VIP' => '康养城订单'
     ];
 
     //				systemStatus: {BEING:"待生效",PAYING:"待支付",PENDING:"待确认",WAITING:"待受理",SENDING:"待发货",RECVING:"待收货",SIGNED:"已签收",CONFIRM:"确认收货"},
@@ -4233,6 +4254,7 @@ class WholeController extends Curd
         'WAITING' => "待支付",
         'PENDING' => "待支付",
         'CANCEL' => "取消支付",
-        'SUCCESS' => "支付成功"
+        'SUCCESS' => "支付成功",
+        'AWAITING' => "挂账"
     ];
 }

+ 50 - 19
app/admin/service/order/OrderService.php

@@ -225,16 +225,17 @@ class OrderService
                 $config['notify_url'] = getenv('NOTIFY_DOMAIN_ADMIN') . '/notify/orderPay/wxpay';
                 Pay::wechat($config)->pos($payData);
                 $result = self::findWxpay($params['orderGroupId'], 0);
-            }catch (GatewayException $g){
+            } catch (GatewayException $g) {
                 $result = self::findWxpay($params['orderGroupId'], 0);
             } catch (\Exception $e) {
                 $log->error("WXPAY", ['msg' => $e->getMessage()]);
                 $result = self::findWxpay($params['orderGroupId'], 0);
 //                throw new BusinessException("支付失败");
             }
-            try{
+            try {
                 $log->info("WXPAY_RETURN", json_decode(json_encode($result), true));
-            }catch (\Exception $e){}
+            } catch (\Exception $e) {
+            }
 
 
         } else if (in_array($prefix, [25, 26, 27, 28, 29, 30])) {
@@ -246,19 +247,20 @@ class OrderService
             ];
             try {
                 $config = config('payment.alipay');
-                $config['notify_url'] = getenv('NOTIFY_DOMAIN_ADMIN').'/notify/orderPay/alipay';
+                $config['notify_url'] = getenv('NOTIFY_DOMAIN_ADMIN') . '/notify/orderPay/alipay';
                 Pay::alipay($config)->pos($payData);
                 $result = self::findAlipay($params['orderGroupId'], 0);
-            } catch (GatewayException $g){
+            } catch (GatewayException $g) {
                 $result = self::findAlipay($params['orderGroupId'], 0);
             } catch (\Exception $e) {
                 $log->error("ALIPAY", ['msg' => $e->getMessage()]);
                 throw new BusinessException("支付失败");
             }
 
-            try{
+            try {
                 $log->info("ALIPAY_RETURN", json_decode(json_encode($result), true));
-            }catch (\Exception $e){}
+            } catch (\Exception $e) {
+            }
         } else {
             throw new BusinessException("付款码无效");
         }
@@ -286,16 +288,16 @@ class OrderService
         }
 
         if (!empty($result['return_code']) && $result['return_code'] == 'SUCCESS' && !empty($result['result_code']) && $result['result_code'] == 'SUCCESS' && !empty($result['trade_state']) && $result['trade_state'] == 'SUCCESS') {
-            SupportLog::channel('pay')->info("FIND_WXPAY_SUCCESS", ['nbr' => $nbr,'order_id'=>$orderId]);
+            SupportLog::channel('pay')->info("FIND_WXPAY_SUCCESS", ['nbr' => $nbr, 'order_id' => $orderId]);
             return $result;
         } else {
             if ($nbr > 2) {
-                SupportLog::channel('pay')->error("FIND_WXPAY", ['msg' => '订单查询失败','order_id'=>$orderId]);
-                return ['msg'=>'订单查询失败'];
+                SupportLog::channel('pay')->error("FIND_WXPAY", ['msg' => '订单查询失败', 'order_id' => $orderId]);
+                return ['msg' => '订单查询失败'];
             }
-            dump('nbr-'.$nbr);
+            dump('nbr-' . $nbr);
             sleep(5);
-            SupportLog::channel('pay')->error("FIND_WXPAY", ['nbr' => $nbr,'order_id'=>$orderId]);
+            SupportLog::channel('pay')->error("FIND_WXPAY", ['nbr' => $nbr, 'order_id' => $orderId]);
             return self::findWxpay($orderId, $nbr + 1);
         }
     }
@@ -320,15 +322,15 @@ class OrderService
         }
 
         if (!empty($result['code']) && $result['code'] == '10000' && !empty($result['trade_status']) && $result['trade_status'] == 'TRADE_SUCCESS') {
-            SupportLog::channel('pay')->info("FIND_ALIPAY_SUCCESS", ['nbr' => $nbr,'order_id'=>$orderId]);
+            SupportLog::channel('pay')->info("FIND_ALIPAY_SUCCESS", ['nbr' => $nbr, 'order_id' => $orderId]);
             return $result;
         } else {
             if ($nbr > 2) {
-                SupportLog::channel('pay')->error("FIND_ALIPAY", ['msg' => '订单查询失败','order_id'=>$orderId]);
-                return ['msg'=>'订单查询失败'];
+                SupportLog::channel('pay')->error("FIND_ALIPAY", ['msg' => '订单查询失败', 'order_id' => $orderId]);
+                return ['msg' => '订单查询失败'];
             }
             sleep(5);
-            SupportLog::channel('pay')->error("FIND_ALIPAY", ['nbr' => $nbr,'order_id'=>$orderId]);
+            SupportLog::channel('pay')->error("FIND_ALIPAY", ['nbr' => $nbr, 'order_id' => $orderId]);
             return self::findAlipay($orderId, $nbr + 1);
         }
     }
@@ -412,9 +414,38 @@ class OrderService
         $payDetail->save();
     }
 
+    public static function getPayWayByPrepayId($prepayId)
+    {
+        $payWay = '';
+        $categoryArray = explode('-', $prepayId);
+        if (isset($categoryArray[1])) {
+            $payWay = $categoryArray[1];
+        } else if (in_array($categoryArray[0], ['WXPAY', 'ALIPAY'])) {
+            $payWay = $categoryArray[0];
+        } else if ($categoryArray[0] == 'OFFLINE') {
+            $payWay = $categoryArray[0];
+        } else if ($categoryArray[0] == 'MONEY') {
+            $payWay = $categoryArray[0];
+        }
+
+        return $payWay;
+    }
+
+
+    public static $couponClassify = [
+        'wipe' => '抹零',
+        'custom' => '自定义优惠金额'
+    ];
 
-    public static $couponClassify=[
-        'wipe'=>'抹零',
-        'custom'=>'自定义优惠金额'
+    public static $payWay = [
+        'WXPAY'=>'微信支付',
+        'ALIPAY' => '支付宝',
+        'CASH' => '账户余额',
+        'CARD' => '储值卡',
+        'WELFARE' => '福利账户',
+        'MONEY' => '现金',
+        'OFFLINE' => '线下支付',
+        'QRCODE' => '付款码',
+        'NONE' => '付零'
     ];
 }

+ 11 - 0
app/event/order/OrderProcessEvent.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace app\event;
+
+class OrderProcessEvent
+{
+    public function insert($params)
+    {
+
+    }
+}

+ 1 - 0
route/admin.php

@@ -683,6 +683,7 @@ Route::group('/admin', function () {
             Route::get('/welfareInfo', [\app\admin\controller\member\MemberController::class, 'welfareInfo']);
             Route::get('/vipInfo', [\app\admin\controller\member\MemberController::class, 'vipInfo']);
             Route::get('/coupon', [\app\admin\controller\member\MemberController::class, 'coupon']);
+            Route::get('/couponCount', [\app\admin\controller\member\MemberController::class, 'couponCount']);
             Route::get('/balanceInfo', [\app\admin\controller\member\MemberController::class, 'balanceInfo']);
             Route::get('/pointInfo', [\app\admin\controller\member\MemberController::class, 'pointInfo']);
             Route::get('/list', [\app\admin\controller\member\MemberController::class, 'list']);