添加:经销商添加团队消费人数达到多少人升级

This commit is contained in:
wuhui_zzw 2023-12-15 17:56:51 +08:00
parent 28d447a618
commit 2ec492f449
4 changed files with 107 additions and 4 deletions

View File

@ -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');

View File

@ -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;

View File

@ -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;
}

View File

@ -766,6 +766,27 @@
{{-- 直推间推 某个等级 满多少人 END --}}
{{-- 直推间推 某个等级 满多少人 START --}}
<div class="input-group row">
<label class="radio-inline col-xs-12 col-sm-12">
<div class="col-xs-12 col-sm-6" style="padding-left: 0">
<input type="checkbox" name="upgrade_type[team_consumption_people]" value="1" @if ($upgrade_type['team_consumption_people']) checked @endif>
(编号:<a href='JavaScript:'>1051</a>)
<br>
<div class='input-group'>
<div class='input-group-addon waytxt'>团队消费人数满</div>
<input type="number" name="upgrade_value[team_consumption_people][team_consumption_people_total]" value="{{$upgrade_value['team_consumption_people']['team_consumption_people_total']}}" class="form-control">
<div class='input-group-addon waytxt'>人;</div>
<div class='input-group-addon waytxt'>
<input type="checkbox" name="upgrade_value[team_consumption_people][team_consumption_people_close_max]" value="1" @if ($upgrade_value['team_consumption_people']['team_consumption_people_close_max']) checked @endif>
</div>
<div class='input-group-addon waytxt'>去除业绩最大的那条线</div>
</div>
<span class="help-block">根据当前等级类型计算;当前等级类型为文创等级则统计文创商品业绩,为普通商品则统计非文创商品业绩;先计算所有人数(包含未消费),去除人数最多的线再计算消费用户数量</span>
</div>
</label>
</div>
{{-- 直推间推 某个等级 满多少人 END --}}