Bläddra i källkod

会员合伙人

gorden 5 månader sedan
förälder
incheckning
48ad22fe49

+ 36 - 7
app/admin/controller/finance/CommissionListController.php

@@ -2,11 +2,13 @@
 
 namespace app\admin\controller\finance;
 
+use app\admin\service\goods\GoodsSkuService;
 use app\admin\service\member\MemberService;
 use app\controller\Curd;
 use app\model\Member;
 use app\model\MemberAccountList;
 use app\model\Order;
+use app\model\OrderSheet;
 use support\Request;
 use support\Response;
 
@@ -20,6 +22,8 @@ class CommissionListController extends Curd
     public function select(Request $request): Response
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'member_account_list_addtimes';
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }
@@ -84,7 +88,7 @@ class CommissionListController extends Curd
             $item['member_is_vip'] = isset($item['member']) ? $item['member']['member_is_vip'] : '';
             $item['member_is_partner'] = isset($item['member']) ? $item['member']['member_is_partner'] : '';
             $item['member_is_referrer'] = isset($item['member']) ? $item['member']['member_is_referrer'] : '';
-            
+
             unset($item['member'], $item['memberInfo'], $item['memberCert']);
         }
 
@@ -124,18 +128,43 @@ class CommissionListController extends Curd
                     },
                     'cert' => function ($query) {
                         $query->select('join_cert_member_id', 'member_cert_name');
+                    },
+                    'role' => function ($query) {
+                        $query->select('member_role_id', 'member_role_name');
                     }
                 ])->where('member_id', $accountListJson['master_member_id'])
                     ->first();
-                $memberMobile = isset($member) && !empty($member->member_mobile) ? $member->member_mobile : '';
-                $memberNickname = isset($member->info) && !empty($member->info->member_info_nickname) ? $member->info->member_info_nickname : '';
-                $memberCertname = isset($member->cert) && !empty($member->cert->member_cert_name) ? $member->cert->member_cert_name : '';
-
-                $info->master_member_name = MemberService::getMemberName($memberMobile, $memberCertname, $memberNickname);
+                $info->master_nickname = isset($member->info) && !empty($member->info->member_info_nickname) ? $member->info->member_info_nickname : '';
+                $info->master_certname = isset($member->cert) && !empty($member->cert->member_cert_name) ? $member->cert->member_cert_name : '';
+                $info->master_mobile = isset($member) && !empty($member->member_mobile) ? $member->member_mobile : '';
+                $info->master_member_name = MemberService::getMemberName($info->master_mobile, $info->master_certname, $info->master_nickname);
+                $info->master_role_name = !empty($member->role) ? $member->role->member_role_name : '';
             }
             // 订单
             if (isset($accountListJson['order_id'])) {
-                $info->order = Order::where('order_id', $accountListJson['order_id'])->first();
+                $info->order = Order::where('order_id', $accountListJson['order_id'])
+                    ->select('order_id','order_groupby','order_amount_total','order_amount_pay','order_addtimes')
+                    ->first();
+                $sheets = OrderSheet::with([
+                    'goods'=>function($query){
+                        $query->select('goods_id','goods_name','goods_sales_price','goods_cover');
+                    },
+                    'sku' => function($query){
+                        $query->select('goods_sku_id','goods_sku_specs_json');
+                    }
+                ])->where('join_sheet_order_id',$accountListJson['order_id'])
+                    ->select('join_sheet_order_id','join_sheet_goods_id','join_sheet_goods_sku_id','order_sheet_num','order_sheet_price','order_sheet_amount','order_sheet_addtimes')
+                    ->get()
+                    ->toArray();
+                foreach ($sheets as &$sheet){
+                    if (!empty($sheet['goods']) && !empty($sheet['goods']['goods_cover'])){
+                        $sheet['goods']['goods_cover'] = getenv('STORAGE_DOMAIN').$sheet['goods']['goods_cover'];
+                    }
+                    if (!empty($sheet['sku'])){
+                        $sheet['sku']['sku_title'] = GoodsSkuService::getSkuTitle($sheet['sku']['goods_sku_specs_json']);
+                    }
+                }
+                $info->sheet = $sheets;
             }
         }
 

+ 9 - 3
app/admin/controller/order/GoodsController.php

@@ -553,7 +553,10 @@ class GoodsController extends Curd
             // 会员升级
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
+            }
+            if ($params['order_status_payment'] == 'SUCCESS'){
+                // 上级提成
+                Event::dispatch('commission.order', $params);
             }
 
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {
@@ -878,10 +881,13 @@ class GoodsController extends Curd
 
             Db::commit();
 
-            // 会员升级
+            // 完成订单
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
+            }
+            if ($params['order_status_payment'] == 'SUCCESS'){
+                // 上级提成
+                Event::dispatch('commission.order', $params);
             }
 
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {

+ 0 - 1
app/admin/controller/order/NewCustomerController.php

@@ -1137,7 +1137,6 @@ class NewCustomerController extends Curd
                     Event::dispatch('order.new_custom.grant', $params);
                 }
 
-
                 return json_success('success');
             }
 

+ 8 - 2
app/admin/controller/order/PackagesController.php

@@ -692,7 +692,10 @@ class PackagesController extends Curd
             // 会员升级
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
+            }
+            if ($params['order_status_payment'] == 'SUCCESS'){
+                // 给上级提成
+                Event::dispatch('commission.order', $params);
             }
 
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {
@@ -1018,7 +1021,10 @@ class PackagesController extends Curd
             // 会员升级
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
+            }
+            if ($params['order_status_payment'] == 'SUCCESS'){
+                // 给上级提成
+                Event::dispatch('commission.order', $params);
             }
 
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {

+ 99 - 80
app/admin/controller/order/PartnerController.php

@@ -206,6 +206,7 @@ class PartnerController extends Curd
         // 判断餐品是否连带着服务或实体
         $goodsClassifys = array_unique(array_column($params['goodsContentList'], 'goods_classify'));
         $params['goods_classify'] = $goodsClassifys[0];
+        $orderExtendJson = [];
         Db::beginTransaction();
         try {
             // 验证线下付款密码
@@ -215,6 +216,14 @@ class PartnerController extends Curd
                     throw new BusinessException('密码错误,请重新输入');
                 }
             }
+            if (!empty($params['dept_id'])) {
+                $dept = SysDept::where('dept_id', $params['dept_id'])->first();
+                if (!$dept) {
+                    throw new BusinessException("入伙场所不存在");
+                }
+                $params['dept_name'] = $dept->dept_name;
+                $orderExtendJson = ['dept_id' => $params['dept_id'], 'dept_name' => $params['dept_name']];
+            }
             // 下单账户
             if (empty($params['join_order_member_id']) && !empty($params['mobile'])) {
                 if (Member::where('member_mobile', $params['mobile'])->exists()) {
@@ -230,7 +239,6 @@ class PartnerController extends Curd
                 throw new BusinessException('检查下单账户');
             }
 
-            $qrcodePayAmount = 0;
             $params['orderId'] = 'OD' . date('ymdHi') . random_string(4, 'up');
             $params['orderGroupId'] = 'OD' . date('ymdHi') . random_string(4, 'up');
             // 查询是否有未完全支付订单
@@ -291,6 +299,7 @@ class PartnerController extends Curd
             }
 
             if (empty($paidOrder)) {
+                $params['order_extend_json'] = $orderExtendJson;
                 // 写入主订单
                 $this->insertMain($params);
                 // 订单详情
@@ -383,7 +392,21 @@ class PartnerController extends Curd
         }
         $goods = $goods->toArray();
         $params['goods_classify'] = $goods['goods_classify'] ?? '';
-
+        // 入伙场所
+        if (!empty($params['dept_id'])) {
+            $orderExtendJson = [];
+            if (!empty($order->order_extend_json)) {
+                $orderExtendJson = json_decode($order->order_extend_json, true);
+            }
+            $dept = SysDept::where('dept_id', $params['dept_id'])->first();
+            if (!$dept) {
+                throw new BusinessException("入伙场所不存在");
+            }
+            $params['dept_name'] = $dept->dept_name;
+            $orderExtendJson['dept_id'] = $params['dept_id'];
+            $orderExtendJson['dept_name'] = $params['dept_name'];
+            $order->order_extend_json = json_encode($orderExtendJson);
+        }
         // 立即结算
         if ($params['goods_classify'] == 'PARTNER') {
             $order->order_is_complete = 'Y';
@@ -976,6 +999,9 @@ class PartnerController extends Curd
                 if (isset($orderExtendJson['free_remark'])) {
                     $order->free_remark = $orderExtendJson['free_remark'];
                 }
+                if (isset($orderExtendJson['dept_id'])) {
+                    $order->dept_id = $orderExtendJson['dept_id'];
+                }
             }
             $discount = ['coupon_name' => '', 'classify' => '', 'value' => 0];
             if (!empty($order->order_discount_json)) {
@@ -1050,7 +1076,7 @@ class PartnerController extends Curd
         $order = Order::where('join_order_member_id', $memberId)
             ->where('order_category', 'PARTNER')
             ->where('order_status_system', 'PAYING')
-            ->select('order_id', 'order_amount_total', 'order_amount_paid', 'order_amount_pay')
+            ->select('order_id', 'order_amount_total', 'order_amount_paid', 'order_amount_pay', 'order_extend_json')
             ->first();
 
         return json_success('', $order);
@@ -1092,6 +1118,7 @@ class PartnerController extends Curd
         }
     }
 
+
     /**
      * @Desc 查询订单状态
      * @Author Gorden
@@ -1102,106 +1129,98 @@ class PartnerController extends Curd
      */
     public function getOrderPayStatus(Request $request)
     {
-        $orderId = $request->get('order_id', '');
-        if (!$orderId) {
-            return json_fail('订单不存在');
+        $groupId = $request->get('group_id');
+        if (!$groupId) {
+            return json_fail('参数异常');
         }
 
-        $order = Order::where('order_id', $orderId)->first();
-        if (!$order) {
+        $order = Order::where('order_groupby', $groupId)->first();
+        if (empty($order)) {
             return json_fail('订单不存在');
         }
-
-        $discountJson = [];
-        if (!empty($order->order_discount_json)) {
-            $discountJson = json_decode($order->order_discount_json, true);
-        }
-
-        if ($order->order_status_payment == 'SUCCESS') {
-            return json_success('success');
-        }
-
-        $payDetailType = PayDetail::where('join_pay_order_id', $order->order_groupby)->pluck('pay_prepayid')->toArray();
+        $order = $order->toArray();
+        $sheet = OrderSheet::where('join_sheet_order_id', $order['order_id'])
+            ->select('order_sheet_id', 'join_sheet_goods_id', 'join_sheet_goods_sku_id')
+            ->first();
+        $payDetailType = PayDetail::where('join_pay_order_id', $groupId)->pluck('pay_prepayid')->toArray();
         try {
             Db::beginTransaction();
+            $payStatus = 'N';
+            $payAmount = 0;
             if (in_array('WXPAY', $payDetailType)) {
-                $result = Pay::wechat(config('payment.wxpay'))->find($order->order_groupby, 'pos');
-                $result = json_decode(json_encode($result), true);
-//                $result = '{"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1680393367","appid":"wxc6274da7198e3eb4","openid":"o3JAn6Ii_bAlxS-jbNEC4WnPhdwM","is_subscribe":"N","trade_type":"MICROPAY","trade_state":"SUCCESS","bank_type":"OTHERS","total_fee":"1000","fee_type":"CNY","cash_fee":"1000","cash_fee_type":"CNY","transaction_id":"4200067718202409250802875650","out_trade_no":"OD24092518408RV7","attach":[],"time_end":"20240925184009","trade_state_desc":"支付成功","nonce_str":"OeGOkjch4eaV5qIt","sign":"6DCB3BFC594EBC018A2BEE2C3DFEA4E3"}';
-//                $result = json_decode($result, true);
+//                $result = Pay::wechat(config('payment.wxpay'))->find($groupId, 'pos');
+//                $result = json_decode(json_encode($result), true);
+                $result = '{"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1680393367","appid":"wxc6274da7198e3eb4","openid":"o3JAn6Ii_bAlxS-jbNEC4WnPhdwM","is_subscribe":"N","trade_type":"MICROPAY","trade_state":"SUCCESS","bank_type":"OTHERS","total_fee":"50","fee_type":"CNY","cash_fee":"1000","cash_fee_type":"CNY","transaction_id":"4200067718202409250802875650","out_trade_no":"OD24092518408RV7","attach":[],"time_end":"20240925184009","trade_state_desc":"支付成功","nonce_str":"OeGOkjch4eaV5qIt","sign":"6DCB3BFC594EBC018A2BEE2C3DFEA4E3"}';
+                $result = json_decode($result, true);
                 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') {
-                    $order->order_status_payment = 'SUCCESS';
-                    if (in_array($order->order_category, ['SERVICE', 'CHNMED', 'CHNNCD', 'PACKAGE'])) {
-                        $order->order_status_system = 'WAITING';
-                    } else if (in_array($order->order_category, ['DISHES', 'MEALS'])) {
-                        $order->order_is_complete = 'Y';
-                        $order->order_status_system = 'DONE';
-                    } else if (in_array($order->order_category, ['VIP', 'PARTNER'])) {
-                        $order->order_status_payment = 'PENDING';
-                        $totalFee = $result['total_fee'] / 100;
-                        if ($order->order_amount_paid + $totalFee >= $order->order_amount_total) {
-                            $order->order_amount_paid = $order->order_amount_paid + $totalFee;
-                            $order->order_status_payment = 'SUCCESS';
-                            $order->order_status_system = 'DONE';
-                            $order->order_is_complete = 'Y';
-                        }
-                    } else {
-                        $order->order_status_system = 'SENDING';
+                    $payStatus = 'Y';
+                    $payAmount = ($result['total_fee'] / 100);
+                    $orderUpdateData['order_status_payment'] = 'PENDING';
+                    $orderUpdateData['order_amount_paid'] = $order['order_amount_paid'] + $payAmount;
+                    $orderUpdateData['order_amount_pay'] = $order['order_amount_pay'] + $payAmount;
+                    if ($order['order_amount_paid'] + $payAmount >= $order['order_amount_total']) {
+                        $orderUpdateData['order_status_payment'] = 'SUCCESS';
+                        $orderUpdateData['order_status_system'] = 'DONE';
+                        $orderUpdateData['order_is_complete'] = 'Y';
                     }
-                    $order->save();
+                    // 主订单
+                    Order::where('order_groupby', $groupId)->update($orderUpdateData);
                     // Sheet
-                    if ($order->order_status_payment == 'SUCCESS') {
-                        OrderSheet::where('join_sheet_order_id', $orderId)->where('order_sheet_status', 'PAYING')->update(['order_sheet_status' => 'DONE']);
-                    }
-                    // 支付记录
-                    PayDetail::where('join_pay_order_id', $order->order_groupby)->where('pay_prepayid', 'WXPAY')->update(['pay_status' => 'SUCCESS']);
-
-                    // 优惠券标记使用
-                    $this->changeOrderCouponStatus($discountJson, 'USED');
+                    OrderSheet::where('join_sheet_order_id', $order['order_id'])->where('order_sheet_status', 'PAYING')->update(['order_sheet_status' => 'DONE']);
 
-                    Db::commit();
-                    return json_success('success');
+                    // 支付记录
+                    PayDetail::where('join_pay_order_id', $order['order_groupby'])->where('pay_prepayid', 'WXPAY')->update(['pay_status' => 'SUCCESS']);
                 }
             } else if (in_array('ALIPAY', $payDetailType)) {
-                $result = Pay::alipay(config('payment.alipay'))->find($order->order_groupby);
+                $result = Pay::alipay(config('payment.alipay'))->find($groupId);
                 $result = json_decode(json_encode($result), true);
-//                $result = '{"code":"10000","msg":"Success","buyer_logon_id":"138******93","buyer_pay_amount":"5.87","fund_bill_list":[{"amount":"5.69","fund_channel":"ALIPAYACCOUNT"},{"amount":"0.18","fund_channel":"COUPON"},{"amount":"0.13","fund_channel":"DISCOUNT"}],"invoice_amount":"5.69","out_trade_no":"OD2409251550Q07A","point_amount":"0.00","receipt_amount":"6.00","send_pay_date":"2024-09-25 15:50:22","total_amount":"6.00","trade_no":"2024092523001439431419750998","trade_status":"TRADE_SUCCESS","buyer_open_id":"04309N2aVhSZz4cKwN_DN2DQa7ekM3z5n8kscQHsmIZOJsf"}';
+//                $result = '{"code":"10000","msg":"Success","buyer_logon_id":"138******93","buyer_pay_amount":"5.87","fund_bill_list":[{"amount":"5.69","fund_channel":"ALIPAYACCOUNT"},{"amount":"0.18","fund_channel":"COUPON"},{"amount":"0.13","fund_channel":"DISCOUNT"}],"invoice_amount":"5.69","out_trade_no":"OD2409251550Q07A","point_amount":"0.00","receipt_amount":"0.01","send_pay_date":"2024-09-25 15:50:22","total_amount":"0.01","trade_no":"2024092523001439431419750998","trade_status":"TRADE_SUCCESS","buyer_open_id":"04309N2aVhSZz4cKwN_DN2DQa7ekM3z5n8kscQHsmIZOJsf"}';
 //                $result = json_decode($result, true);
                 if (!empty($result['code']) && $result['code'] == '10000' && !empty($result['trade_status']) && $result['trade_status'] == 'TRADE_SUCCESS') {
-                    $order->order_status_payment = 'SUCCESS';
-                    if (in_array($order->order_category, ['SERVICE', 'CHNMED', 'CHNNCD', 'PACKAGE'])) {
-                        $order->order_status_system = 'WAITING';
-                    } elseif (in_array($order->order_category, ['DISHES', 'MEALS'])) {
-                        $order->order_is_complete = 'Y';
-                        $order->order_status_system = 'DONE';
-                    } else if (in_array($order->order_category, ['VIP', 'PARTNER'])) {
-                        $order->order_status_payment = 'PENDING';
-                        if ($order->order_amount_paid + $result['total_amount'] >= $order->order_amount_total) {
-                            $order->order_amount_paid = $order->order_amount_paid + $result['total_amount'];
-                            $order->order_status_system = 'DONE';
-                            $order->order_status_payment = 'SUCCESS';
-                            $order->order_is_complete = 'Y';
-                        }
-                    } else {
-                        $order->order_status_system = 'SENDING';
+                    $payStatus = 'Y';
+                    $payAmount = $result['total_amount'];
+                    $orderUpdateData['order_status_payment'] = 'PENDING';
+                    $orderUpdateData['order_amount_paid'] = $order['order_amount_paid'] + $payAmount;
+                    $orderUpdateData['order_amount_pay'] = $order['order_amount_pay'] + $payAmount;
+                    if ($order['order_amount_paid'] + $payAmount >= $order['order_amount_total']) {
+                        $orderUpdateData['order_status_payment'] = 'SUCCESS';
+                        $orderUpdateData['order_status_system'] = 'DONE';
+                        $orderUpdateData['order_is_complete'] = 'Y';
                     }
-                    $order->save();
+                    // 主订单
+                    Order::where('order_groupby', $groupId)->update($orderUpdateData);
                     // Sheet
-                    if ($order->order_status_payment == 'SUCCESS') {
-                        OrderSheet::where('join_sheet_order_id', $orderId)->where('order_sheet_status', 'PAYING')->update(['order_sheet_status' => 'DONE']);
-                    }
+                    OrderSheet::where('join_sheet_order_id', $order['order_id'])->where('order_sheet_status', 'PAYING')->update(['order_sheet_status' => 'DONE']);
                     // 支付记录
-                    PayDetail::where('join_pay_order_id', $order->order_groupby)->where('pay_prepayid', 'ALIPAY')->update(['pay_status' => 'SUCCESS']);
-                    // 其他支付方式 扣
-//                    $this->deductAccount($order->order_groupby, 'ALIPAY');
-                    // 优惠券标记使用
-                    $this->changeOrderCouponStatus($discountJson, 'USED');
-                    Db::commit();
-                    return json_success('success');
+                    PayDetail::where('join_pay_order_id', $order['order_groupby'])->where('pay_prepayid', 'ALIPAY')->update(['pay_status' => 'SUCCESS']);
                 }
             }
+            if ($payStatus == 'Y') {
+                if ($order['order_amount_paid'] + $payAmount >= $order['order_amount_total']) {
+                    $params['member_id'] = $order['join_order_member_id'];
+                    $params['orderId'] = $order['order_id'];
+                    $params['order_amount_pay'] = $payAmount;
+                    $params['order_amount_total'] = $order['order_amount_total'];
+                    $params['join_sheet_goods_id'] = $sheet->join_sheet_goods_id;
+                    if (!empty($order['order_extend_json'])) {
+                        $orderExtendJson = json_decode($order['order_extend_json'], true);
+                        $params['dept_id'] = $orderExtendJson['dept_id'] ?? '';
+                        $params['dept_name'] = $orderExtendJson['dept_name'] ?? '';
+                    }
+
+                    Event::dispatch('order.partner.grant', $params);
+                }
+
+                Db::commit();
+                return json_success('success');
+            }
+
             Db::rollBack();
             return json_fail('没有查询到记录');
+        } catch (BusinessException $e) {
+            Db::rollBack();
+            _syslog("支付轮询", '订单支付异常:' . $e->getMessage());
+            return json_fail($e->getMessage());
         } catch (\Exception $e) {
             dump($e->getMessage());
             Db::rollBack();

+ 12 - 4
app/admin/controller/order/ServicesController.php

@@ -532,10 +532,14 @@ class ServicesController extends Curd
 
             Db::commit();
 
-            // 会员升级
+            // 触发事件
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
+            }
+            // 触发事件
+            if ($params['order_status_payment'] == 'SUCCESS') {
+                // 上级提成
+                Event::dispatch('commission.order', $params);
             }
 
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {
@@ -859,10 +863,14 @@ class ServicesController extends Curd
 
             Db::commit();
 
-            // 会员升级
+            // 触发事件
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 Event::dispatch('order.complete', $params);
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
+            }
+            // 触发事件
+            if ($params['order_status_payment'] == 'SUCCESS') {
+                // 上级提成
+                Event::dispatch('commission.order', $params);
             }
 
             if ($params['settlement_now'] == 'Y' && $params['order_status_payment'] != 'SUCCESS') {

+ 17 - 13
app/admin/controller/order/WholeController.php

@@ -1287,8 +1287,6 @@ class WholeController extends Curd
             if ($order->order_is_complete == 'Y' && $order->order_status_payment == 'SUCCESS') {
                 // 完成订单
                 Event::dispatch('order.complete', $params);
-                // 会员升级
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
                 // 上级提成
                 Event::dispatch('commission.order', $params);
             }
@@ -1745,8 +1743,6 @@ class WholeController extends Curd
             if ($order->order_is_complete == 'Y' && $order->order_status_payment == 'SUCCESS') {
                 // 完成订单
                 Event::dispatch('order.complete', $params);
-                // 会员升级
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
                 // 上级提成
                 Event::dispatch('commission.order', $params);
             }
@@ -2467,8 +2463,6 @@ class WholeController extends Curd
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 // 订单完成
                 Event::dispatch('order.complete', $params);
-                // 会员升级
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
                 // 上级提成
                 Event::dispatch('commission.order', $params);
             }
@@ -3024,8 +3018,6 @@ class WholeController extends Curd
             if (!empty($params['order_is_complete']) && $params['order_is_complete'] == 'Y' && $params['order_status_payment'] == 'SUCCESS') {
                 // 完成订单
                 Event::dispatch('order.complete', $params);
-                // 会员升级
-//                Event::dispatch('order_pay.member_level.up', $params['join_order_member_id']);
                 // 上级提成
                 Event::dispatch('commission.order', $params);
             }
@@ -4715,15 +4707,16 @@ class WholeController extends Curd
         if ($order->order_status_payment == 'SUCCESS') {
             return json_success('success');
         }
+        $params['orderId'] = $orderId;
 
         $payDetailType = PayDetail::where('join_pay_order_id', $order->order_groupby)->pluck('pay_prepayid')->toArray();
         try {
             Db::beginTransaction();
             if (in_array('WXPAY', $payDetailType)) {
-                $result = Pay::wechat(config('payment.wxpay'))->find($order->order_groupby, 'pos');
-                $result = json_decode(json_encode($result), true);
-//                $result = '{"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1680393367","appid":"wxc6274da7198e3eb4","openid":"o3JAn6Ii_bAlxS-jbNEC4WnPhdwM","is_subscribe":"N","trade_type":"MICROPAY","trade_state":"SUCCESS","bank_type":"OTHERS","total_fee":"1000","fee_type":"CNY","cash_fee":"1000","cash_fee_type":"CNY","transaction_id":"4200067718202409250802875650","out_trade_no":"OD24092518408RV7","attach":[],"time_end":"20240925184009","trade_state_desc":"支付成功","nonce_str":"OeGOkjch4eaV5qIt","sign":"6DCB3BFC594EBC018A2BEE2C3DFEA4E3"}';
-//                $result = json_decode($result, true);
+//                $result = Pay::wechat(config('payment.wxpay'))->find($order->order_groupby, 'pos');
+//                $result = json_decode(json_encode($result), true);
+                $result = '{"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1680393367","appid":"wxc6274da7198e3eb4","openid":"o3JAn6Ii_bAlxS-jbNEC4WnPhdwM","is_subscribe":"N","trade_type":"MICROPAY","trade_state":"SUCCESS","bank_type":"OTHERS","total_fee":"1000","fee_type":"CNY","cash_fee":"1000","cash_fee_type":"CNY","transaction_id":"4200067718202409250802875650","out_trade_no":"OD24092518408RV7","attach":[],"time_end":"20240925184009","trade_state_desc":"支付成功","nonce_str":"OeGOkjch4eaV5qIt","sign":"6DCB3BFC594EBC018A2BEE2C3DFEA4E3"}';
+                $result = json_decode($result, true);
                 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') {
                     $order->order_status_payment = 'SUCCESS';
                     if (in_array($order->order_category, ['SERVICE', 'CHNMED', 'CHNNCD', 'PACKAGE'])) {
@@ -4755,6 +4748,10 @@ class WholeController extends Curd
                     $this->changeOrderCouponStatus($discountJson, 'USED');
 
                     Db::commit();
+
+                    // 给上级提成
+                    Event::dispatch('commission.order', $params);
+
                     return json_success('success');
                 }
             } else if (in_array('ALIPAY', $payDetailType)) {
@@ -4792,6 +4789,10 @@ class WholeController extends Curd
                     // 优惠券标记使用
                     $this->changeOrderCouponStatus($discountJson, 'USED');
                     Db::commit();
+
+                    // 给上级提成
+                    Event::dispatch('commission.order', $params);
+
                     return json_success('success');
                 }
             }
@@ -4823,7 +4824,7 @@ class WholeController extends Curd
         if (empty($orders)) {
             return json_fail('订单不存在');
         }
-
+        $params['orderId'] = $orderId;
         $payDetailType = PayDetail::where('join_pay_order_id', $groupId)->pluck('pay_prepayid')->toArray();
         try {
             Db::beginTransaction();
@@ -4919,6 +4920,9 @@ class WholeController extends Curd
                     $this->insertBenefitPackage($groupId);
                 }
 
+                // 给上级提成
+                Event::dispatch('commission.order', $params);
+
                 return json_success('success');
             }
 

+ 1 - 0
app/admin/service/coupon/CouponService.php

@@ -243,6 +243,7 @@ class CouponService
                 }
             }
         }catch (\Exception $e){
+            dump($e->getMessage());
             throw new BusinessException("优惠券发放失败");
         }
     }

+ 24 - 0
app/admin/service/goods/GoodsSkuService.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace app\admin\service\goods;
+
+class GoodsSkuService
+{
+    public static function getSkuTitle($json)
+    {
+        if (is_json($json)) {
+            $json = json_decode($json, true);
+        }
+
+        $skuName = '';
+        foreach ($json as $specsKey => $skuSpecs) {
+            if (is_array($skuSpecs)) {
+                $skuName = $skuName . ' ' . implode(' ', $skuSpecs) . ';';
+            } else {
+                $skuName = $skuName . ' ' . $skuSpecs . ';';
+            }
+        }
+        return rtrim($skuName, ';');
+    }
+
+}

+ 2 - 2
app/admin/service/order/CommissionService.php

@@ -79,7 +79,7 @@ class CommissionService
                 $accountListJson['identity'] = MemberService::getIdentity($member1->member_is_partner, $member1->member_is_referrer);
                 $member1CommissionAmount = $config['commission']['direct'] * $amount;
                 self::commissionToMember($member1->member_id, $accountListJson, $member1CommissionAmount, $accountListCategory);
-                Log::info("提成参数", ['member_id' => $member1->member_id, 'account_list_json' => $accountListJson, 'amount' => $member1CommissionAmount, 'category' => $accountListCategory]);
+                Log::info("直属提成参数", ['member_id' => $member1->member_id, 'account_list_json' => $accountListJson, 'amount' => $member1CommissionAmount, 'category' => $accountListCategory]);
 
             }
             // 间属提成
@@ -87,7 +87,7 @@ class CommissionService
                 $accountListJson['identity'] = MemberService::getIdentity($member2->member_is_partner, $member2->member_is_referrer);
                 $member2CommissionAmount = $config['commission']['indirect'] * $amount;
                 self::commissionToMember($member2->member_id, $accountListJson, $member2CommissionAmount, $accountListCategory);
-                Log::info("提成参数", ['member_id' => $member2->member_id, 'account_list_json' => $accountListJson, 'amount' => $member2CommissionAmount, 'category' => $accountListCategory]);
+                Log::info("间属提成参数", ['member_id' => $member2->member_id, 'account_list_json' => $accountListJson, 'amount' => $member2CommissionAmount, 'category' => $accountListCategory]);
 
             }
         } catch (\Exception $e) {

+ 8 - 3
app/event/order/CommissionEvent.php

@@ -9,6 +9,7 @@ use app\model\Order;
 use app\model\SysConfig;
 use support\Db;
 use support\exception\BusinessException;
+use support\Log;
 
 class CommissionEvent
 {
@@ -45,9 +46,7 @@ class CommissionEvent
 //}
     public function order($params)
     {
-        // 提成设置
-        $config = SysConfig::where('config_key', 'app-identity-partner-config')->first();
-        $configParams = json_decode($config->config_value_json, true);
+        Log::info("计算消费提成",$params);
         Db::beginTransaction();
         try {
             $order = Order::where('order_id', $params['orderId'])->where('order_status_payment', 'SUCCESS')->first();
@@ -66,11 +65,17 @@ class CommissionEvent
             $memberUp = Member::where('member_id', $inviteMemberId)->first();
             if ($memberUp->member_is_partner == 'Y') {
                 $identity = 'PARTNER';
+                // 提成设置
+                $config = SysConfig::where('config_key', 'app-identity-partner-config')->first();
             } elseif ($memberUp->member_is_referrer == 'Y') {
                 $identity = 'REFERRER';
+                // 提成设置
+                $config = SysConfig::where('config_key', 'app-identity-referrer-config')->first();
+//                $configParams = json_decode($config->config_value_json, true);
             }else{
                 throw new BusinessException("直属上级非合伙人或者推荐官");
             }
+            $configParams = json_decode($config->config_value_json, true);
             // 记录的JSON
             $accountListJson = [
                 'line' => 'relate-consum',

+ 21 - 15
app/event/order/PartnerEvent.php

@@ -16,31 +16,35 @@ class PartnerEvent
 {
     public function grant($params)
     {
-        Db::beginTransaction();
         try {
             Log::info("进入会员合伙人事件", $params);
             $config = SysConfig::where('config_key', 'app-identity-partner-config')->first();
             $configParams = json_decode($config->config_value_json, true);
-            // 更新身份
-            Member::where('member_id', $params['member_id'])->update(['member_is_partner' => 'Y']);
+            // 更新身份{"duedate": "2025-09-26", "datetime": "2024-09-27 14:40:51", "order_id": "OD2409271440L951"}
+            $memberUpdateData = [
+                'member_partner_json' => json_encode([
+                    'datetime' => date('Y-m-d H:i:s'),
+                    'duedate' => date('Y-m-d', strtotime("+" . $configParams['config']['valid'] . ' day')),
+                    'order_id' => $params['orderId'],
+                    'dept_id'=>$params['dept_id'] ?? '',
+                    'dept_name' => $params['dept_name'] ?? ''
+                ]),
+                'member_is_partner' => 'Y',
+            ];
+            Member::where('member_id', $params['member_id'])->update($memberUpdateData);
             // 余额账户
             $memberAccount = MemberAccount::where('join_account_member_id', $params['member_id'])->where('member_account_classify', 'CASH')->first();
-            // 分期付款
-            if (isset($params['order_amount_paid']) && $params['order_amount_paid'] > 0) {
-                $params['order_amount_pay'] = $params['order_amount_paid'] + $params['order_amount_pay'];
-            }
             // 增值到最后一条支付记录
             $added = 0;
             $payDetail = PayDetail::whereJsonContains('join_pay_object_json->order_id', $params['orderId'])->orderBy('pay_addtimes', 'DESC')->first();
             if (!empty($configParams['account']['added'])) {
-                $params['order_amount_pay'] = 10000;
-                $added = round($params['order_amount_pay'] * $configParams['account']['added'], 2);
+                $added = round($params['order_amount_total'] * $configParams['account']['added'], 2);
                 $payDetail->pay_extend_json = json_encode(['added_rate' => $configParams['account']['added'], 'added_amount' => $added]);
                 $payDetail->save();
             }
             // 入账
-            $memberAccount->member_account_income = $memberAccount->member_account_income + $params['order_amount_pay'];
-            $memberAccount->member_account_surplus = $memberAccount->member_account_surplus + $params['order_amount_pay'];
+            $memberAccount->member_account_income = $memberAccount->member_account_income + $params['order_amount_total'];
+            $memberAccount->member_account_surplus = $memberAccount->member_account_surplus + $params['order_amount_total'];
             $memberAccount->member_account_added = $memberAccount->member_account_added + $added;
             $memberAccount->save();
 
@@ -50,15 +54,17 @@ class PartnerEvent
             //发放优惠券
             CouponService::autoSendCouponByGoods($params);
 
-            Db::commit();
         } catch (BusinessException $e) {
-            Db::rollBack();
+            dump($e->getMessage());
+//            Db::rollBack();
             _syslog('会员合伙人', '会员合伙人处理失败:' . $e->getMessage());
+            throw new BusinessException("会员合伙人处理失败");
         } catch (\Exception $e) {
-            Db::rollBack();
+            dump($e->getMessage());
+//            Db::rollBack();
             Log::info('PARTNER_DISPOSE_ERROR:' . $e->getMessage(), $params);
-
             _syslog('会员合伙人', '会员合伙人处理失败');
+            throw new BusinessException("会员合伙人处理失败");
         }
     }
 }

+ 2 - 2
config/log.php

@@ -19,7 +19,7 @@ return [
                 'class' => Monolog\Handler\RotatingFileHandler::class,
                 'constructor' => [
                     runtime_path() . '/logs/webman.log',
-                    7, //$maxFiles
+                    100, //$maxFiles
                     Monolog\Logger::DEBUG,
                 ],
                 'formatter' => [
@@ -35,7 +35,7 @@ return [
                 'class' => Monolog\Handler\RotatingFileHandler::class,
                 'constructor' => [
                     runtime_path() . '/logs/pay.log',
-                    7, //$maxFiles
+                    100, //$maxFiles
                     Monolog\Logger::DEBUG,
                 ],
                 'formatter' => [

+ 1 - 1
route/admin.php

@@ -1019,7 +1019,7 @@ Route::group('/admin', function () {
             Route::get('/sheet', [\app\admin\controller\order\PartnerController::class, 'sheet']);
             Route::get('/getPaidOrder', [\app\admin\controller\order\PartnerController::class, 'getPaidOrder']);
             Route::post('/uploadTicket', [\app\admin\controller\order\PartnerController::class, 'uploadTicket']);
-            Route::get('/getOrderPayStatus', [\app\admin\controller\order\WholeController::class, 'getOrderPayStatus']);
+            Route::get('/getOrderPayStatus', [\app\admin\controller\order\PartnerController::class, 'getOrderPayStatus']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);