From 2ec492f449558e204b11ebea479076ebff1610b8 Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Fri, 15 Dec 2023 17:56:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E7=BB=8F=E9=94=80?= =?UTF-8?q?=E5=95=86=E6=B7=BB=E5=8A=A0=E5=9B=A2=E9=98=9F=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E4=BA=BA=E6=95=B0=E8=BE=BE=E5=88=B0=E5=A4=9A=E5=B0=91=E4=BA=BA?= =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/admin/TeamAgencyController.php | 8 +- .../src/models/TeamDividendLevelUpgrade.php | 2 +- .../upgrate/UpgrateConditionService.php | 80 +++++++++++++++++++ .../views/admin/level-set-add.blade.php | 21 +++++ 4 files changed, 107 insertions(+), 4 deletions(-) diff --git a/plugins/team-dividend/src/admin/TeamAgencyController.php b/plugins/team-dividend/src/admin/TeamAgencyController.php index fd64ef52..a6ae874c 100644 --- a/plugins/team-dividend/src/admin/TeamAgencyController.php +++ b/plugins/team-dividend/src/admin/TeamAgencyController.php @@ -325,12 +325,14 @@ class TeamAgencyController extends BaseController public function test(){ - //因为model偶尔会出现status异常的问题,所以重新查询一遍 - // $model = Order::with('hasManyOrderGoods')->find(84); + //经销商升级模拟 因为model偶尔会出现status异常的问题,所以重新查询一遍 + // $model = Order::with('hasManyOrderGoods')->find(16); // $set = \Setting::get('plugin.team_dividend'); // (new NewUpgrateJob($model->uid, $set, $model->uniacid, TeamDividendLevelUpgrade::ORDER_PAY, $model))->handle(); - // $order = Order::find(22); + + // 经销商提成模拟 + // $order = Order::find(16); // $TeamReturnService = ReturnConfig::getClass(); // if (app('plugins')->isEnabled('team-sideways')) debug('经销商订单创建终止:team-sideways'); // $set = $order->getSetting('plugin.team_dividend'); diff --git a/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php b/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php index 6adb4181..2cf9935c 100644 --- a/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php +++ b/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php @@ -71,7 +71,7 @@ class TeamDividendLevelUpgrade extends BackendModel '1031' => 'team_new_order_number', // 团队新订单数量满 '1032' => 'team_shop_order_amount', // 团队自营订单实付金额满 '1050' => 'one_or_two', // 直推间推 某个等级 满多少人 - + '1051' => 'team_consumption_people',// 团队消费人数满多少人 支持去除人数最多的线 ]; // 等级为 2000 + 等级id return $ret; diff --git a/plugins/team-dividend/src/services/upgrate/UpgrateConditionService.php b/plugins/team-dividend/src/services/upgrate/UpgrateConditionService.php index 82ed2b34..47a3119e 100644 --- a/plugins/team-dividend/src/services/upgrate/UpgrateConditionService.php +++ b/plugins/team-dividend/src/services/upgrate/UpgrateConditionService.php @@ -2016,6 +2016,86 @@ class UpgrateConditionService{ return false; } + /** + * Common: 升级条件 - 团队消费人数多少人,支持去除人数最多的线 + * Author: wu-hui + * Time: 2023/12/15 17:52 + * @return bool + */ + public function teamConsumptionPeople(){ + try{ + $upgradeSet = $this->upgradeParase[$this->typeName]; + if(!$upgradeSet) throw new \Exception('未设置条件,不执行'); + // 获取直推下级列表 + $subIds = MemberChild::uniacid() + ->where('level',1) + ->where('member_id',$this->uid) + ->pluck('child_id') + ->toArray(); + if(count($subIds) <= 0) throw new \Exception('无直推下级信息,不执行'); + $eachLineUid = [];// 每条线的用户id列表 + $maxPeopleInfo = [ + 'max_num' => 0,// 最大线人数 + 'sub_uid' => 0,// 最大线所属直推用户id + ]; + foreach($subIds as $subUid){ + // 获取每条件的用户id + $lineAllUid = MemberChild::uniacid()->where('member_id',$subUid)->pluck('child_id')->toArray(); + $lineAllUid[] = $subUid; + $eachLineUid[$subUid] = $lineAllUid; + // 判断:当前线用户数量是否为最多 + if($maxPeopleInfo['max_num'] <= count($eachLineUid[$subUid])) { + $maxPeopleInfo = [ + 'max_num' => count($eachLineUid[$subUid]),// 最大线人数 + 'sub_uid' => $subUid,// 最大线所属直推用户id + ]; + } + } + // 判断:是否去除人数最多的那条线 + if((int)$upgradeSet['team_consumption_people_close_max'] == 1) unset($eachLineUid[$maxPeopleInfo['sub_uid']]); + if(count($eachLineUid) <= 0) throw new \Exception('无有效团队信息,不执行'); + // 计算:消费总人数 + $allSubIds = []; + foreach($eachLineUid as $eachLineInfo){ + $allSubIds = array_merge($allSubIds,$eachLineInfo); + } + $consumptionPeople = Order::uniacid() + ->leftJoin('yz_order_goods','yz_order_goods.order_id','yz_order.id') + ->leftJoin('yz_goods_cultural_space','yz_goods_cultural_space.goods_id','yz_order_goods.goods_id') + ->whereIn('yz_order.uid',$allSubIds) + ->where('yz_order.status','>',0) + ->where('yz_goods_cultural_space.is_open',$this->levelType == 1 ? 1 : 0) + ->distinct('yz_order.uid') + ->count(); + // 判断:是否达到升级要求 需求人数小于等于当前人数-达成升级条件 + $people = (int)$upgradeSet['team_consumption_people_total'] > 0 ? (int)$upgradeSet['team_consumption_people_total'] : 1; + $isReach = (boolean)($people <= $consumptionPeople); + $this->uplogService->pushCondition([ + 'type' => $this->typeName, + 'type_name' => '团队消费人数多少人', + 'func_name' => 'teamConsumptionPeople', + 'condition' => '', + 'result' => '', + 'remark' => $isReach ? '满足条件' : '不满足条件' + ]); + if($isReach) return true; + + }catch(\Exception $e){ + $this->uplogService->pushCondition([ + 'type' => $this->typeName, + 'type_name' => '团队消费人数多少人', + 'func_name' => 'teamConsumptionPeople', + 'condition' => '', + 'complete' => '', + 'result' => '', + 'remark' => $e->getMessage() + ]); + \Log::debug('经销商升级 - 升级条件 - 团队消费人数多少人 - 错误:',$e->getMessage()); + } + + return false; + } + diff --git a/plugins/team-dividend/views/admin/level-set-add.blade.php b/plugins/team-dividend/views/admin/level-set-add.blade.php index fcb18d7c..76460d92 100644 --- a/plugins/team-dividend/views/admin/level-set-add.blade.php +++ b/plugins/team-dividend/views/admin/level-set-add.blade.php @@ -766,6 +766,27 @@ {{-- 直推间推 某个等级 满多少人 END --}} + {{-- 直推间推 某个等级 满多少人 START --}} +
+ +
+ {{-- 直推间推 某个等级 满多少人 END --}}