Explorar el Código

会员合伙人加一条支付记录

gorden hace 6 meses
padre
commit
2b9c1df42b

+ 48 - 18
app/admin/service/member/MemberService.php

@@ -747,10 +747,10 @@ class MemberService
         $rows = $rows->forPage($page, $pageSize)
             ->get()
             ->toArray();
-        foreach ($rows as &$row){
-            if (!empty($row['member_account_list_json'])){
-                $memberAccountListJson = json_decode($row['member_account_list_json'],true);
-                if ($memberAccountListJson['master_member_id']){
+        foreach ($rows as &$row) {
+            if (!empty($row['member_account_list_json'])) {
+                $memberAccountListJson = json_decode($row['member_account_list_json'], true);
+                if ($memberAccountListJson['master_member_id']) {
                     $row['master_member_name'] = MemberService::getMemberNameByMemberId($memberAccountListJson['master_member_id']);
                 }
             }
@@ -944,7 +944,7 @@ class MemberService
 
         $info = PayDetail::where(function ($query) use ($memberId) {
             $query->where('join_pay_member_id', $memberId)
-                ->whereIn('pay_category', ['RECHARGE', 'PARTNER'])
+                ->whereIn('pay_category', ['RECHARGE'])
                 ->where('pay_prepayid', '<>', $memberId . '-WELFARE')
                 ->where('pay_status', 'SUCCESS');
         })->orWhere(function ($query) use ($memberId) {
@@ -972,22 +972,33 @@ class MemberService
             ->toArray();
         $data = [];
         foreach ($info as $key => $item) {
-            if ($item['pay_category'] == 'PARTNER') {
-                $payObjectJson = json_decode($item['join_pay_object_json'], true);
-                if (!Order::where('order_id', $payObjectJson['order_id'])->where('order_is_complete', 'Y')->exists()) {
-                    continue;
-                }
-            }
-            if ($item['pay_category'] == 'REFERRER') {
+            $payObjectJson = [];
+            if (!empty($item['join_pay_object_json'])) {
                 $payObjectJson = json_decode($item['join_pay_object_json'], true);
-                if (!Order::where('order_id', $payObjectJson['order_id'])->where('order_is_complete', 'Y')->exists()) {
-                    continue;
-                }
             }
+//            if ($item['pay_category'] == 'PARTNER') {
+//                $payObjectJson = json_decode($item['join_pay_object_json'], true);
+//                if (!Order::where('order_id', $payObjectJson['order_id'])->where('order_is_complete', 'Y')->exists()) {
+//                    continue;
+//                }
+//            }
+//            if ($item['pay_category'] == 'REFERRER') {
+//                $payObjectJson = json_decode($item['join_pay_object_json'], true);
+//                if (!Order::where('order_id', $payObjectJson['order_id'])->where('order_is_complete', 'Y')->exists()) {
+//                    continue;
+//                }
+//            }
             $categoryIds = [];
             if (!empty($item['join_pay_order_id'])) {
-                $orderIds = Order::where('order_groupby', $item['join_pay_order_id'])->pluck('order_id');
-                $goodsIds = OrderSheet::whereIn('join_sheet_order_id', $orderIds)->pluck('join_sheet_goods_id');
+                $goodsIds = [];
+                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'REFERRER'])) {
+                    if (isset($payObjectJson['recharge_goods_id'])) {
+                        $goodsIds = [$payObjectJson['recharge_goods_id']];
+                    }
+                } else {
+                    $orderIds = Order::where('order_groupby', $item['join_pay_order_id'])->pluck('order_id');
+                    $goodsIds = OrderSheet::whereIn('join_sheet_order_id', $orderIds)->pluck('join_sheet_goods_id');
+                }
                 $categoryIds = Goods::whereIn('goods_id', $goodsIds)->pluck('join_goods_category_id');
             }
 
@@ -1005,6 +1016,8 @@ class MemberService
             $item['goods_category'] = implode(',', array_unique($categoryName));
             if (mb_substr($item['goods_category'], 0, 7) == '自定义金额充值') {
                 $item['goods_category'] = '自定义金额充值';
+            } else if (mb_substr($item['goods_category'], 0, 7) == '会员合伙人产品') {
+                $item['goods_category'] = '会员合伙人充值';
             }
             if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'PARTNER', 'IN'])) {
                 $item['balance_type'] = 'add';
@@ -1032,6 +1045,23 @@ class MemberService
                         ];
                     }
                     $balance = $balance - $extendJson['added_amount'];
+                } elseif (in_array($item['join_pay_order_id'],['PARTNER', 'COMBINE', 'REFERRER'])){
+                    $addedAmount = 0;
+                    if (!isset($payObjectJson['recharge_config'])) {
+                        $addedAmount = 0;
+                    }
+                    if (isset($payObjectJson['recharge_config']) && !empty($payObjectJson['recharge_config']['nbr']) && floatval($payObjectJson['recharge_config']['nbr'] > 0)) {
+                        $addedAmount = $payObjectJson['recharge_config']['nbr'];
+                        $data[] = [
+                            'join_pay_member_id' => $item['join_pay_member_id'],
+                            'pay_addtimes' => $item['pay_addtimes'],
+                            'pay_amount' => $addedAmount,
+                            'pay_category' => 'ADDED',
+                            'balance' => number_format($balance, 2, '.', ''),
+                            'balance_type' => 'add',
+                        ];
+                    }
+                    $balance = $balance - $addedAmount;
                 }
 
                 $item['balance'] = number_format($balance, 2, '.', '');
@@ -1146,7 +1176,7 @@ class MemberService
         Db::beginTransaction();
         try {
             // 排重
-            if (Member::where('member_mobile',$params['mobile'])->where('member_status','ACTIVED')->exists()){
+            if (Member::where('member_mobile', $params['mobile'])->where('member_status', 'ACTIVED')->exists()) {
                 throw new BusinessException("会员已存在");
             }
             $memberId = self::generateMemberId();

+ 24 - 4
app/event/order/PartnerEvent.php

@@ -4,6 +4,7 @@ namespace app\event\order;
 
 use app\admin\service\coupon\CouponService;
 use app\admin\service\order\CommissionService;
+use app\model\Goods;
 use app\model\Member;
 use app\model\MemberAccount;
 use app\model\PayDetail;
@@ -26,7 +27,7 @@ class PartnerEvent
                     '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_id' => $params['dept_id'] ?? '',
                     'dept_name' => $params['dept_name'] ?? ''
                 ]),
                 'member_is_partner' => 'Y',
@@ -36,11 +37,30 @@ class PartnerEvent
             $memberAccount = MemberAccount::where('join_account_member_id', $params['member_id'])->where('member_account_classify', 'CASH')->first();
             // 增值到最后一条支付记录
             $added = 0;
-            $payDetail = PayDetail::whereJsonContains('join_pay_object_json->order_id', $params['orderId'])->orderBy('pay_addtimes', 'DESC')->first();
+//            $payDetail = PayDetail::whereJsonContains('join_pay_object_json->order_id', $params['orderId'])->orderBy('pay_addtimes', 'DESC')->first();
             if (!empty($configParams['account']['added']) && $configParams['account']['added'] > 0) {
                 $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();
+//                $payDetail->pay_extend_json = json_encode(['added_rate' => $configParams['account']['added'], 'added_amount' => $added]);
+//                $payDetail->save();
+                $goods = Goods::where('goods_id',$params['join_sheet_goods_id'])->select('goods_id','goods_name')->first();
+                // 增加一条支付记录
+                PayDetail::insert([
+                    'join_pay_member_id' => $params['member_id'],
+                    'join_pay_order_id' => 'PARTNER',
+                    'join_pay_object_json' => json_encode([
+                        'recharge_config' => [
+                            'nbr' => round($params['order_amount_total'] * $configParams['account']['added'], 2)
+                        ],
+                        'recharge_goods_id' => $params['join_sheet_goods_id'] ?? '',
+                        'recharge_goods_name' => !empty($goods->goods_name) ? $goods->goods_name : ''
+                    ]),
+                    'pay_status' => 'SUCCESS',
+                    'pay_category' => 'RECHARGE',
+                    'pay_amount'=>$params['order_amount_total'],
+                    'pay_paytimes'=>date('Y-m-d H:i:s'),
+                    'pay_prepayid' => $params['member_id'].'-CASH',
+                    'pay_addtimes'=>time()
+                ]);
             }
             // 入账
             $memberAccount->member_account_income = $memberAccount->member_account_income + $params['order_amount_total'];

+ 1 - 16
app/event/order/ReferrerEvent.php

@@ -4,6 +4,7 @@ namespace app\event\order;
 
 use app\admin\service\coupon\CouponService;
 use app\admin\service\order\CommissionService;
+use app\model\Goods;
 use app\model\Member;
 use app\model\MemberAccount;
 use app\model\PayDetail;
@@ -30,18 +31,6 @@ class ReferrerEvent
                 'member_is_referrer' => '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();
-            // 增值到最后一条支付记录
-            $payDetail = PayDetail::whereJsonContains('join_pay_object_json->order_id', $params['orderId'])->orderBy('pay_addtimes', 'DESC')->first();
-            if (!empty($configParams['account']['added']) && $configParams['account']['added'] > 0) {
-                $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_added = $memberAccount->member_account_added + $added;
-                $memberAccount->save();
-            }
 
             // 给上级提成
             CommissionService::commission($configParams, $params['member_id'], $params['orderId'], $params['order_amount_pay'], '推荐康养推荐官');
@@ -50,13 +39,9 @@ class ReferrerEvent
             CouponService::autoSendCouponByGoods($params);
 
         } catch (BusinessException $e) {
-            dump($e->getMessage());
-//            Db::rollBack();
             _syslog('会员合伙人', '推荐官处理失败:' . $e->getMessage());
             throw new BusinessException("推荐官处理失败");
         } catch (\Exception $e) {
-            dump($e->getMessage());
-//            Db::rollBack();
             Log::info('PARTNER_DISPOSE_ERROR:' . $e->getMessage(), $params);
             _syslog('会员合伙人', '推荐官处理失败');
             throw new BusinessException("推荐官处理失败");