Browse Source

加盟合伙人

gorden 4 months ago
parent
commit
5ed5800642

+ 2 - 2
app/admin/service/coupon/CouponDetailService.php

@@ -116,11 +116,11 @@ class CouponDetailService
             Db::commit();
         } catch (BusinessException $e) {
             Db::rollBack();
-            Log::error("发券失败:" . $e->getMessage());
+            Log::error("周期券发券失败:" . $e->getMessage());
             throw new BusinessException($e->getMessage());
         } catch (\Exception $e) {
             Db::rollBack();
-            Log::error("发券失败:" . $e->getMessage());
+            Log::error("周期券发券失败:" . $e->getMessage());
             throw new BusinessException("优惠券发放失败");
         }
     }

+ 32 - 37
app/admin/service/member/MemberService.php

@@ -112,7 +112,7 @@ class MemberService
                     $query->where('member_is_referrer', 'Y');
                 }
             })
-            ->select('member_id', 'member_is_vip', 'member_is_owner', 'join_invite_member_id', 'member_is_partner','member_partner_json', 'member_is_referrer','member_referrer_json', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes', 'member_extend_json',
+            ->select('member_id', 'member_is_vip', 'member_is_owner', 'join_invite_member_id', 'member_is_partner', 'member_partner_json', 'member_is_referrer', 'member_referrer_json', 'member_is_franchisee', 'member_franchisee_json', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes', 'member_extend_json',
                 'member_info.member_info_nickname', 'member_info.member_info_headimg', 'member_info.member_info_referee', 'member_info.member_info_business', 'member_info.member_info_service', 'member_info.member_info_city', 'member_info.member_info_address', 'member_info.member_info_gender', 'member_info.member_info_birthday',
                 'member_role.member_role_id', 'member_role.member_role_name',
                 'member_cert.member_cert_birth', 'member_cert.member_cert_gender', 'member_cert.member_cert_name', 'member_cert.member_cert_nbr', 'member_cert.member_cert_province', 'member_cert.member_cert_addr', 'member_cert.member_cert_face', 'member_cert.member_cert_photo', 'member_cert.member_cert_nation'
@@ -122,8 +122,8 @@ class MemberService
         $total = $rows->count('member_id');
         // 已认证条数
         $authModel = clone $rows;
-        $authTotal = $authModel->where('member_cert.member_cert_name','<>','')
-            ->where('member_cert.member_cert_nbr','<>','')
+        $authTotal = $authModel->where('member_cert.member_cert_name', '<>', '')
+            ->where('member_cert.member_cert_nbr', '<>', '')
             ->count();
 
         $rows = $rows->orderBy('member_addtimes', 'DESC')
@@ -268,21 +268,21 @@ class MemberService
             $row['fans_total'] = count($fans1) + $fans2Count;
 
             // 合伙人信息
-            if ($row['member_is_partner'] == 'Y' && !empty($row['member_partner_json'])){
-                $partnerJson = json_decode($row['member_partner_json'],true);
+            if ($row['member_is_partner'] == 'Y' && !empty($row['member_partner_json'])) {
+                $partnerJson = json_decode($row['member_partner_json'], true);
                 $row['partner_add_times'] = $partnerJson['datetime'] ?? '';
                 unset($row['member_partner_json']);
             }
 
             // 推荐信息
-            if ($row['member_is_referrer'] == 'Y' && !empty($row['member_referrer_json'])){
-                $referrerJson = json_decode($row['member_referrer_json'],true);
+            if ($row['member_is_referrer'] == 'Y' && !empty($row['member_referrer_json'])) {
+                $referrerJson = json_decode($row['member_referrer_json'], true);
                 $row['referrer_add_times'] = $referrerJson['datetime'] ?? '';
                 unset($row['member_referrer_json']);
             }
         }
 
-        return json_success('', compact('rows', 'page', 'pageSize', 'total','authTotal'));
+        return json_success('', compact('rows', 'page', 'pageSize', 'total', 'authTotal'));
     }
 
     public static function exportMember(Request $request)
@@ -548,7 +548,7 @@ class MemberService
             $partnerJson = json_decode($member['member_partner_json'], true);
             if (isset($partnerJson['duedate'])) {
                 $member['partner_info'] = [
-                    'add_times'=>$partnerJson['datetime'],
+                    'add_times' => $partnerJson['datetime'],
                     'surplus' => ceil((strtotime($partnerJson['duedate'] . ' 23:59:59') - time()) / (3600 * 24)),
                     'dates' => date('Y/m/d 00:00:00', strtotime($partnerJson['datetime'])) . '-' . date('Y/m/d 23:59:59', strtotime($partnerJson['duedate']))
                 ];
@@ -558,7 +558,7 @@ class MemberService
             $referrerJson = json_decode($member['member_referrer_json'], true);
             if (isset($referrerJson['duedate'])) {
                 $member['referrer_info'] = [
-                    'add_times'=>$referrerJson['datetime'],
+                    'add_times' => $referrerJson['datetime'],
                     'surplus' => ceil((strtotime($referrerJson['duedate'] . ' 23:59:59') - time()) / (3600 * 24)),
                     'dates' => date('Y/m/d 00:00:00', strtotime($referrerJson['datetime'])) . '-' . date('Y/m/d 23:59:59', strtotime($referrerJson['duedate']))
                 ];
@@ -1097,22 +1097,10 @@ class MemberService
             if (!empty($item['join_pay_object_json'])) {
                 $payObjectJson = json_decode($item['join_pay_object_json'], true);
             }
-//            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'])) {
                 $goodsIds = [];
-                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'REFERRER'])) {
+                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'REFERRER', 'FRANCHISEE'])) {
                     if (isset($payObjectJson['recharge_goods_id'])) {
                         $goodsIds = [$payObjectJson['recharge_goods_id']];
                     }
@@ -1140,21 +1128,21 @@ class MemberService
             } else if (mb_substr($item['goods_category'], 0, 7) == '会员合伙人产品') {
                 $item['goods_category'] = '会员合伙人充值';
             }
-            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE', 'PARTNER', 'IN'])) {
+            $goodsCategory = '';
+            if ($item['join_pay_order_id'] == 'FRANCHISEE') {
+                $goodsCategory = '加盟合伙人充值';
+            }
+            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE', 'PARTNER', 'FRANCHISEE', 'IN'])) {
                 $item['balance_type'] = 'add';
             } else {
                 $item['balance_type'] = 'cut';
             }
-            if ($key == 0 && in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE'])) {
-                if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
+            if ($key == 0 && in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'FRANCHISEE', 'CROWN_CONTINUE'])) {
+                if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'FRANCHISEE'])) {
                     $extendJson = json_decode($item['pay_extend_json'], true);
                     if (!isset($extendJson['added_amount'])) {
                         $extendJson['added_amount'] = 0;
                     }
-                    // 计划任务还没跑
-//                    if ($item['pay_category'] == 'RECHARGE' && (!isset($extendJson['notify']) || $extendJson['notify'] != 'success')) {
-//                        continue;
-//                    }
                     if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
                         $payCategory = 'ADDED';
                         if ($item['pay_category'] == 'GIVE') {
@@ -1169,6 +1157,7 @@ class MemberService
                             'pay_category' => $payCategory,
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
+                            'goods_category' => $goodsCategory
                         ];
                     } elseif (!empty($payObjectJson['recharge_config']) && $payObjectJson['recharge_config']['nbr'] > 0) {
                         $payCategory = 'ADDED';
@@ -1189,7 +1178,7 @@ class MemberService
                     }
                     $balance = $balance - $extendJson['added_amount'];
                 }
-                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
+                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'FRANCHISEE'])) {
                     $addedAmount = 0;
                     if (!isset($payObjectJson['recharge_config'])) {
                         $addedAmount = 0;
@@ -1203,6 +1192,7 @@ class MemberService
                             'pay_category' => 'ADDED',
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
+                            'goods_category' => $goodsCategory
                         ];
                     }
                     $balance = $balance - $addedAmount;
@@ -1210,15 +1200,15 @@ class MemberService
 
                 $item['balance'] = number_format($balance, 2, '.', '');
                 $balance = $balance - $item['pay_amount'];
-                if (!in_array($item['pay_category'], ['GIVE', 'CROWN_CONTINUE'])) {
+                if (!in_array($item['pay_category'], ['GIVE', 'CROWN_CONTINUE']) && !in_array($item['join_pay_order_id'], ['FRANCHISEE'])) {
                     $data[] = $item;
                 }
 
                 continue;
             }
 
-            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE', 'PARTNER', 'COMBINE', 'IN'])) {
-                if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
+            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'CROWN_CONTINUE', 'PARTNER', 'COMBINE', 'FRANCHISEE', 'IN'])) {
+                if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'FRANCHISEE'])) {
                     $extendJson = json_decode($item['pay_extend_json'], true);
                     if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
                         $payCategory = 'ADDED';
@@ -1234,6 +1224,7 @@ class MemberService
                             'pay_category' => $payCategory,
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
+                            'goods_category' => $goodsCategory
                         ];
                         $balance = $balance - $extendJson['added_amount'];
                     } elseif (!empty($payObjectJson['recharge_config']) && $payObjectJson['recharge_config']['nbr'] > 0) {
@@ -1251,11 +1242,12 @@ class MemberService
                             'pay_category' => $payCategory,
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
+                            'goods_category' => $goodsCategory
                         ];
                         $balance = $balance - $extendJson['added_amount'];
                     }
                 }
-                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
+                if (in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE', 'FRANCHISEE'])) {
                     $addedAmount = 0;
                     if (!isset($payObjectJson['recharge_config'])) {
                         $addedAmount = 0;
@@ -1269,6 +1261,7 @@ class MemberService
                             'pay_category' => 'ADDED',
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
+                            'goods_category' => $goodsCategory
                         ];
                     }
                     $balance = $balance - $addedAmount;
@@ -1280,7 +1273,7 @@ class MemberService
                 $balance = $balance + $item['pay_amount'];
             }
 
-            if (!in_array($item['pay_category'], ['GIVE', 'CROWN_CONTINUE'])) {
+            if (!in_array($item['pay_category'], ['GIVE', 'CROWN_CONTINUE']) && !in_array($item['join_pay_order_id'], ['FRANCHISEE'])) {
                 $data[] = $item;
             }
         }
@@ -1916,12 +1909,14 @@ class MemberService
      * @param $isReferrer
      * @return string
      */
-    public static function getIdentity($isPartner, $isReferrer)
+    public static function getIdentity($isPartner, $isReferrer, $isFranchisee)
     {
         if ($isPartner == 'Y') {
             return "PARTNER";
         } elseif ($isReferrer == 'Y') {
             return "REFERRER";
+        } elseif ($isFranchisee == 'Y') {
+            return "FRANCHISEE";
         } else {
             return 'NON';
         }

+ 11 - 7
app/admin/service/order/CommissionService.php

@@ -70,8 +70,10 @@ class CommissionService
                     $config1 = SysConfig::where('config_key', 'app-identity-partner-config')->first();
                 } else if ($member1->member_is_referrer == 'Y') {
                     $config1 = SysConfig::where('config_key', 'app-identity-referrer-config')->first();
+                } else if ($member1->member_is_franchisee == 'Y'){
+                    $config1 = SysConfig::where('config_key','app-identity-franchisee-config')->first();
                 }
-                if (!empty($config1)){
+                if (!empty($config1)) {
                     $configParams1 = json_decode($config1->config_value_json, true);
                     Log::info("一级提成参数", ['config' => $configParams1]);
                 }
@@ -81,8 +83,10 @@ class CommissionService
                         $config2 = SysConfig::where('config_key', 'app-identity-partner-config')->first();
                     } else if ($member1->member_is_referrer == 'Y') {
                         $config2 = SysConfig::where('config_key', 'app-identity-referrer-config')->first();
+                    } else if ($member1->member_is_franchisee == 'Y') {
+                        $config2 = SysConfig::where('config_key', 'app-identity-franchisee-config')->first();
                     }
-                    if (!empty($config2)){
+                    if (!empty($config2)) {
                         $configParams2 = json_decode($config2->config_value_json, true);
                         Log::info("二级提成参数", ['config' => $configParams2]);
                     }
@@ -99,8 +103,8 @@ class CommissionService
                 'master_member_id' => $memberId
             ];
             // 直属提成
-            if (!empty($member1) && ($member1->member_is_partner == 'Y' || $member1->member_is_referrer == 'Y') && !empty($configParams1)) {
-                $accountListJson['identity'] = MemberService::getIdentity($member1->member_is_partner, $member1->member_is_referrer);
+            if (!empty($member1) && ($member1->member_is_partner == 'Y' || $member1->member_is_referrer == 'Y' || $member1->member_is_franchisee == 'Y') && !empty($configParams1)) {
+                $accountListJson['identity'] = MemberService::getIdentity($member1->member_is_partner, $member1->member_is_referrer,$member1->member_is_franchisee);
                 $accountListJson['line'] = 'direct';
                 $member1CommissionAmount = $configParams1['commission']['direct'] * $amount;
                 self::commissionToMember($member1->member_id, $accountListJson, $member1CommissionAmount, $accountListCategory);
@@ -108,8 +112,8 @@ class CommissionService
 
             }
             // 间属提成
-            if (!empty($member2) && ($member2->member_is_partner == 'Y' || $member2->member_is_referrer == 'Y') && !empty($configParams2)) {
-                $accountListJson['identity'] = MemberService::getIdentity($member2->member_is_partner, $member2->member_is_referrer);
+            if (!empty($member2) && ($member2->member_is_partner == 'Y' || $member2->member_is_referrer == 'Y' || $member1->member_is_franchisee == 'Y') && !empty($configParams2)) {
+                $accountListJson['identity'] = MemberService::getIdentity($member2->member_is_partner, $member2->member_is_referrer,$member2->member_is_franchisee);
                 $accountListJson['line'] = 'indirect';
                 $member2CommissionAmount = $configParams2['commission']['indirect'] * $amount;
                 self::commissionToMember($member2->member_id, $accountListJson, $member2CommissionAmount, $accountListCategory);
@@ -117,7 +121,7 @@ class CommissionService
 
             }
         } catch (\Exception $e) {
-            dump('提成处理失败:'.$e->getMessage());
+            Log::error("提成处理失败", ['msg' => $e->getMessage()]);
             _syslog("提成处理失败", '提成处理失败');
         }
     }

+ 5 - 1
app/event/order/CommissionEvent.php

@@ -80,8 +80,12 @@ class CommissionEvent
                 $identity = 'REFERRER';
                 // 提成设置
                 $config = SysConfig::where('config_key', 'app-identity-referrer-config')->first();
+            } elseif ($memberUp->member_is_franchisee == 'Y') {
+                $identity = 'FRANCHISEE';
+                // 提成设置
+                $config = SysConfig::where('config_key', 'app-identity-franchisee-config')->first();
             } else {
-                throw new BusinessException("直属上级非合伙人或者推荐官");
+                throw new BusinessException("直属上级非会员合伙人、加盟合伙人和推荐官");
             }
             $configParams = json_decode($config->config_value_json, true);
             // 记录的JSON

+ 3 - 3
app/event/order/FranchiseeEvent.php

@@ -38,7 +38,7 @@ class FranchiseeEvent
             // 增值到最后一条支付记录
             $added = 0;
 //            $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) {
+            if (!empty($configParams['account']) && !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();
@@ -57,7 +57,7 @@ class FranchiseeEvent
                     ]),
                     'pay_status' => 'SUCCESS',
                     'pay_category' => 'RECHARGE',
-                    'pay_amount' => $params['order_amount_total'],
+                    'pay_amount' => 0,
                     'pay_paytimes' => date('Y-m-d H:i:s'),
                     'pay_prepayid' => $params['member_id'] . '-CASH',
                     'pay_addtimes' => time()
@@ -79,7 +79,7 @@ class FranchiseeEvent
             _syslog('加盟合伙人', '加盟合伙人处理失败:' . $e->getMessage());
             throw new BusinessException("加盟合伙人处理失败");
         } catch (\Exception $e) {
-            Log::info('PARTNER_DISPOSE_ERROR:' . $e->getMessage(), $params);
+            Log::info('FRANCHISEE_DISPOSE_ERROR:' . $e->getMessage(), $params);
             _syslog('加盟合伙人', '加盟合伙人处理失败');
             throw new BusinessException("加盟合伙人处理失败");
         }

+ 3 - 0
config/event.php

@@ -16,6 +16,9 @@ return [
     'order.partner.grant' => [
         [\app\event\order\PartnerEvent::class, 'grant']
     ],
+    'order.franchisee.grant' => [
+        [\app\event\order\FranchiseeEvent::class, 'grant']
+    ],
     'order.referrer.grant' => [
         [\app\event\order\ReferrerEvent::class, 'grant']
     ],