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 --}} +