修改:分销商升级判断 - 由当前人数修改为历史记录所有人数

添加:经销商添加升级条件 - 直推间推指定等级人数可以升级
This commit is contained in:
wuhui_zzw 2023-10-25 15:09:51 +08:00
parent ccf7c3aa1a
commit 7d54455095
7 changed files with 1015 additions and 1215 deletions

View File

@ -24,4 +24,27 @@ class MemberParent extends BaseModel
$builder->uniacid(); $builder->uniacid();
}); });
} }
/**
* Common: 获取某个用户的全部直推间推成员
* Author: wu-hui
* Time: 2023/10/25 14:20
* @param $uid
* @return array
*/
public function getOneOrTwoList($uid){
return self::uniacid()
->where('parent_id', $uid)
->whereIn('level',[1,2])// 只获取直推间推
->select(['parent_id','member_id','level'])
->orderBy('level', 'asc')
->get()
->toArray();
}
} }

View File

@ -5,8 +5,10 @@ namespace Yunshop\Commission\observers;
use app\common\observers\BaseObserver; use app\common\observers\BaseObserver;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Yunshop\Commission\models\AgentLevel; use Yunshop\Commission\models\AgentLevel;
use Yunshop\Commission\models\Agents; use Yunshop\Commission\models\Agents;
use Yunshop\Commission\models\Log;
class AgentsObserver extends BaseObserver{ class AgentsObserver extends BaseObserver{
@ -15,8 +17,15 @@ class AgentsObserver extends BaseObserver{
// \Log::debug('修改分销商 - 信息:',$model->toArray()); // \Log::debug('修改分销商 - 信息:',$model->toArray());
if ($model->getOriginal('agent_level_id') != $model->agent_level_id) { if ($model->getOriginal('agent_level_id') != $model->agent_level_id) {
// 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级) // 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级)
$hasNum = (int)Agents::uniacid()->where('member_id','!=',$model->member_id)->count(); $hasNum = (int)Log::uniacid()->where('after_level_id',$model->level)->where('uid','!=',$model->uid)->count(DB::raw('DISTINCT(uid)'));
$levelNumberLimit = (int)AgentLevel::uniacid()->where('id',$model->agent_level_id)->value('number_limit'); $levelNumberLimit = (int)AgentLevel::uniacid()->where('id',$model->agent_level_id)->value('number_limit');// 限制人数
\Log::debug("分销商等级变更 - 人数限制判断", [
'next_lv_id' => $model->agent_level_id,
'current_lv_id' => $model->getOriginal('agent_level_id'),
'next_lv_limit' => $levelNumberLimit,
'has_num' => $hasNum,
]);
if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) return false; if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) return false;
} }
} }

View File

@ -6,6 +6,7 @@ namespace Yunshop\Commission\services;
use app\common\facades\Setting; use app\common\facades\Setting;
use app\common\models\Order; use app\common\models\Order;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Yunshop\Commission\models\AgentLevel; use Yunshop\Commission\models\AgentLevel;
use Yunshop\Commission\models\Agents; use Yunshop\Commission\models\Agents;
@ -855,10 +856,9 @@ class UpgradeService
$newLevel = $newLevel->toArray(); $newLevel = $newLevel->toArray();
$oldLevel = AgentLevel::getAgentLevelByid($agent->agent_level_id); $oldLevel = AgentLevel::getAgentLevelByid($agent->agent_level_id);
// 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级) // 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级)
// \Log::debug('修改分销商等级信息 - 分销商升级',['level_id'=>$level['id'],'member_id' => $memberId]); $hasNum = (int)\Yunshop\Commission\models\Log::uniacid()->where('after_level_id',$level['id'])->where('uid','!=',$memberId)->count(DB::raw('DISTINCT(uid)'));
$hasNum = (int)Agents::uniacid()->where('member_id','!=',$memberId)->count();
if((int)$newLevel['number_limit'] <= $hasNum && (int)$newLevel['number_limit'] > 0) { if((int)$newLevel['number_limit'] <= $hasNum && (int)$newLevel['number_limit'] > 0) {
\Log::debug("当前等级已达到人数上限", [ \Log::debug("分销商等级变更 - 人数限制判断", [
'next_lv_id' => $level['id'], 'next_lv_id' => $level['id'],
'current_lv_id' => $agent->agent_level_id, 'current_lv_id' => $agent->agent_level_id,
'next_lv_limit' => $newLevel['number_limit'], 'next_lv_limit' => $newLevel['number_limit'],

View File

@ -113,7 +113,7 @@ class NewUpgrateJob implements ShouldQueue
return; return;
} }
\Log::debug('经销商升级 - 开始处理:');
// 默认可以升级 // 默认可以升级
$upgradeRet = false; $upgradeRet = false;
foreach ($upgradeLevels as $level) { foreach ($upgradeLevels as $level) {
@ -205,15 +205,13 @@ class NewUpgrateJob implements ShouldQueue
$next = true; $next = true;
// 如果升级方式为 或 $upgradeRet 为真 不继续 // 如果升级方式为 或 $upgradeRet 为真 不继续
if ($this->setting['upgrate_type'] == 1) { if ($this->setting['upgrate_type'] == 1) {
if ($upgradeRet) { if ($upgradeRet) $next = false;
$next = false;
}
} else { } else {
// 如果升级方式为 与 $upgradeRet 为假 不继续 // 如果升级方式为 与 $upgradeRet 为假 不继续
if (!$upgradeRet && $upgradeGroup) { if (!$upgradeRet && $upgradeGroup) $next = false;
$next = false;
}
} }
// \Log::debug('经销商升级 - 是否继续:',$next);
// 升级条件 单个 与 升级结果为false // 升级条件 单个 与 升级结果为false
if ($next) { if ($next) {
$upgradeOnly = $parase[0]; $upgradeOnly = $parase[0];
@ -236,7 +234,7 @@ class NewUpgrateJob implements ShouldQueue
foreach ($upgradeToFirstChildLevel as $levelId => $ret) { foreach ($upgradeToFirstChildLevel as $levelId => $ret) {
$upgradeOnly['first_child_level_' . $levelId . '_' . $parase[1]['first_child_level'][$levelId]] = '1'; $upgradeOnly['first_child_level_' . $levelId . '_' . $parase[1]['first_child_level'][$levelId]] = '1';
} }
// \Log::debug('经销商升级 - 继续 - 循环体:',$upgradeOnly);
foreach ($upgradeOnly as $upgrade => $only_item) { foreach ($upgradeOnly as $upgrade => $only_item) {
// 升级类 // 升级类
$upgrateService = new UpgrateConditionService($agent['uid'], $this->setting, $parase[1], $this->uniacid, $upgrade, $order_status, $this->order, $this->uplogService); $upgrateService = new UpgrateConditionService($agent['uid'], $this->setting, $parase[1], $this->uniacid, $upgrade, $order_status, $this->order, $this->uplogService);

View File

@ -70,7 +70,7 @@ class TeamDividendLevelUpgrade extends BackendModel
'1030' => 'agent_love', // 会员累计获得{{ LOVE_NAME }}数量达到 '1030' => 'agent_love', // 会员累计获得{{ LOVE_NAME }}数量达到
'1031' => 'team_new_order_number', // 团队新订单数量满 '1031' => 'team_new_order_number', // 团队新订单数量满
'1032' => 'team_shop_order_amount', // 团队自营订单实付金额满 '1032' => 'team_shop_order_amount', // 团队自营订单实付金额满
// '1050' => 'one_or_two', // 直推间推 某个等级 满多少人 '1050' => 'one_or_two', // 直推间推 某个等级 满多少人
]; ];
// 等级为 2000 + 等级id // 等级为 2000 + 等级id

View File

@ -707,25 +707,28 @@
</div> </div>
{{-- 直推间推 某个等级 满多少人 START --}} {{-- 直推间推 某个等级 满多少人 START --}}
{{--<div class="input-group row">--}} <div class="input-group row">
{{-- <label class="radio-inline col-xs-12 col-sm-12">--}} <label class="radio-inline col-xs-12 col-sm-12">
{{-- <div class="col-xs-12 col-sm-12" style="padding-left: 0">--}} <div class="col-xs-12 col-sm-6" style="padding-left: 0">
{{-- <input type="checkbox" name="upgrade_type[one_or_two]" value="1" @if ($upgrade_type['one_or_two']) checked @endif>--}} <input type="checkbox" name="upgrade_type[one_or_two]" value="1" @if ($upgrade_type['one_or_two']) checked @endif>
{{-- (编号:<a href='JavaScript:'>1050</a>)--}} (编号:<a href='JavaScript:'>1050</a>)
{{-- <br>--}} <br>
{{-- <span>直推间推</span>--}} <div class='input-group'>
{{-- <select name='upgrade_value[one_or_two_level_id]'>--}} <div class='input-group-addon waytxt'>直推间推</div>
{{-- @foreach($level_list as $level)--}} <select name='upgrade_value[one_or_two][one_or_two_level_id]' class="form-control" style="width: 100px;">
{{-- <option value='{{$level->id}}' @if($level->id == $upgrade_value['one_or_two_level_id'])selected @endif >--}} @foreach($level_list as $level)
{{-- {{$level['level_name']}}--}} <option value='{{$level->id}}' @if($level->id == $upgrade_value['one_or_two']['one_or_two_level_id'])selected @endif >
{{-- </option>--}} {{$level['level_name']}}
{{-- @endforeach--}} </option>
{{-- </select>--}} @endforeach
{{-- <input type="text" name="upgrade_value[one_or_two_people]" value="{{$upgrade_value['one_or_two_people']}}" style="width: 50px">--}} </select>
{{-- <span>(不填或0默认为1人)</span>--}} <div class='input-group-addon waytxt'>等级,总人数达到</div>
{{-- </div>--}} <input type="number" name="upgrade_value[one_or_two][one_or_two_people]" value="{{$upgrade_value['one_or_two']['one_or_two_people']}}" class="form-control">
{{-- </label>--}} <div class='input-group-addon waytxt'>(不填或0默认为1人)</div>
{{--</div>--}} </div>
</div>
</label>
</div>
{{-- 直推间推 某个等级 满多少人 END --}} {{-- 直推间推 某个等级 满多少人 END --}}