添加:分销商添加人数限制(每个等级单独设置)
This commit is contained in:
parent
cd9a571d4d
commit
8ef8d416a1
|
|
@ -29,7 +29,7 @@ class OrderPaidListener
|
|||
{
|
||||
date_default_timezone_set("PRC");
|
||||
$model = $event->getOrderModel();
|
||||
\Log::info('分销订单支付',$model->id);
|
||||
\Log::debug('分销订单支付',$model->id);
|
||||
//先验证是否成为分销商
|
||||
(new BecomeAgentService())->verification($model->uid, 0);
|
||||
$this->upgradeData($model);
|
||||
|
|
@ -64,10 +64,10 @@ class OrderPaidListener
|
|||
}
|
||||
$set = \Setting::get('plugin.commission');
|
||||
if ($set['is_with']) {
|
||||
\Log::info('分销商升级[与]');
|
||||
\Log::debug('分销商升级[与]');
|
||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 1, $model, $levels, $set))->delay(10));
|
||||
} else {
|
||||
\Log::info('订单升级->');
|
||||
\Log::debug('订单升级->');
|
||||
//分销商 自购升级
|
||||
UpgradeService::selfBuyAfterPaid($model->uid);
|
||||
//指定商品
|
||||
|
|
@ -75,7 +75,7 @@ class OrderPaidListener
|
|||
UpgradeService::goodsAfterPaid($goods['goods_id'], $model->uid);
|
||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||
}
|
||||
\Log::info('订单升级<-');
|
||||
\Log::debug('订单升级<-');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,13 +17,14 @@ class AgentLevel extends BaseModel
|
|||
public $table = 'yz_agent_level';
|
||||
static protected $needLog = true;
|
||||
public $attributes = [
|
||||
'name' => '',
|
||||
'level' => '',
|
||||
'first_level' => '',
|
||||
'second_level' => '',
|
||||
'third_level' => '',
|
||||
'upgrade_type' => '',
|
||||
'upgrade_value' => ''
|
||||
'name' => '',
|
||||
'level' => '',
|
||||
'first_level' => '',
|
||||
'second_level' => '',
|
||||
'third_level' => '',
|
||||
'upgrade_type' => '',
|
||||
'upgrade_value' => '',
|
||||
'number_limit' => 0
|
||||
];
|
||||
|
||||
protected $guarded = [''];
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ use app\common\models\member\MemberParent;
|
|||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Yunshop\Commission\observers\AgentsObserver;
|
||||
|
||||
/**
|
||||
* Class Agents
|
||||
|
|
@ -611,5 +612,6 @@ class Agents extends BaseModel
|
|||
static::addGlobalScope(function (Builder $builder) {
|
||||
$builder->uniacid();
|
||||
});
|
||||
self::observe(new AgentsObserver());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Yunshop\Commission\observers;
|
||||
|
||||
use app\common\observers\BaseObserver;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Yunshop\Commission\models\AgentLevel;
|
||||
use Yunshop\Commission\models\Agents;
|
||||
|
||||
class AgentsObserver extends BaseObserver{
|
||||
|
||||
// 修改前
|
||||
public function updating(Model $model){
|
||||
// \Log::debug('修改分销商 - 信息:',$model->toArray());
|
||||
if ($model->getOriginal('agent_level_id') != $model->agent_level_id) {
|
||||
// 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级)
|
||||
$hasNum = (int)Agents::uniacid()->where('member_id','!=',$model->member_id)->count();
|
||||
$levelNumberLimit = (int)AgentLevel::uniacid()->where('id',$model->agent_level_id)->value('number_limit');
|
||||
if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -25,58 +25,69 @@ class BecomeAgentService
|
|||
{
|
||||
$agent = Agents::getAgentByMemberId($uid)->first();
|
||||
if($agent){
|
||||
\Log::debug('成为分销商条件判断 - 已经成为分销商');
|
||||
return;
|
||||
}
|
||||
|
||||
$set = MemberRelation::getSetInfo()->first();
|
||||
if (empty($set)) {
|
||||
\Log::debug('成为分销商条件判断 - 关系链不存在');
|
||||
return;
|
||||
}
|
||||
|
||||
//付款后 完成后
|
||||
if ($set->become_order != $order_status) {
|
||||
\Log::debug('成为分销商条件判断 - 订单完成后触发');
|
||||
return;
|
||||
}
|
||||
|
||||
$become_term = unserialize($set->become_term);
|
||||
if (empty($become_term)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//只支持 或和与
|
||||
if ($set->become != 2 && $set->become != 3) {
|
||||
return;
|
||||
}
|
||||
|
||||
//如果销售佣金插件未开启则不走销售佣金
|
||||
if (!app('plugins')->isEnabled('sale-commission')) {
|
||||
unset($become_term[5]);
|
||||
}
|
||||
|
||||
$result = false;
|
||||
foreach ($become_term as $item) {
|
||||
$result = $this->conditionalVerification($item, $set, $uid);
|
||||
//或
|
||||
if ($set->become == 2) {
|
||||
// 假 继续循环
|
||||
if ($result) {
|
||||
break;
|
||||
}
|
||||
// 真 跳出循环
|
||||
continue;
|
||||
$become_term = is_array(unserialize($set->become_term)) ? unserialize($set->become_term) : [];
|
||||
if(($set->become == 2 || $set->become == 3)){
|
||||
// 有条件
|
||||
if (empty($become_term)) {
|
||||
\Log::debug('成为分销商条件判断 - 条件未设置');
|
||||
return;
|
||||
}
|
||||
//与
|
||||
if ($set->become == 3) {
|
||||
if (!$result) {
|
||||
break;
|
||||
}
|
||||
//只支持 或和与
|
||||
// if ($set->become != 2 && $set->become != 3) {
|
||||
// \Log::debug('成为分销商条件判断 - 条件设置错误');
|
||||
// return;
|
||||
// }
|
||||
|
||||
//如果销售佣金插件未开启则不走销售佣金
|
||||
if (!app('plugins')->isEnabled('sale-commission')) {
|
||||
unset($become_term[5]);
|
||||
}
|
||||
|
||||
$result = false;
|
||||
foreach ($become_term as $item) {
|
||||
$result = $this->conditionalVerification($item, $set, $uid);
|
||||
//或
|
||||
if ($set->become == 2) {
|
||||
// 假 继续循环
|
||||
if ($result) break;
|
||||
// 真 跳出循环
|
||||
continue;
|
||||
}
|
||||
//与
|
||||
if ($set->become == 3 && !$result) break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
if ($result) {
|
||||
$this->become($uid);
|
||||
else if((int)$set->become == 0){
|
||||
// 无条件
|
||||
$result = true;
|
||||
}else{
|
||||
// 需要申请
|
||||
$result = false;
|
||||
}
|
||||
|
||||
\Log::debug('成为分销商条件判断 - 最终结果:',$result);
|
||||
if ($result) $this->become($uid);
|
||||
}
|
||||
|
||||
public function conditionalVerification($item, $set, $uid)
|
||||
|
|
@ -138,7 +149,7 @@ class BecomeAgentService
|
|||
if (!$levels) {
|
||||
return;
|
||||
}
|
||||
\Log::debug("监听is_with",$set);
|
||||
\Log::debug("监听is_with",$set['is_with']);
|
||||
if ($set['is_with']) {
|
||||
$this->dispatch(new UpgrateByRegisterJob($yzMemberModel['member_id'], $levels));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -854,6 +854,20 @@ class UpgradeService
|
|||
}
|
||||
$newLevel = $newLevel->toArray();
|
||||
$oldLevel = AgentLevel::getAgentLevelByid($agent->agent_level_id);
|
||||
// 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级)
|
||||
// \Log::debug('修改分销商等级信息 - 分销商升级',['level_id'=>$level['id'],'member_id' => $memberId]);
|
||||
$hasNum = (int)Agents::uniacid()->where('member_id','!=',$memberId)->count();
|
||||
if((int)$newLevel['number_limit'] <= $hasNum && (int)$newLevel['number_limit'] > 0) {
|
||||
\Log::debug("当前等级已达到人数上限", [
|
||||
'next_lv_id' => $level['id'],
|
||||
'current_lv_id' => $agent->agent_level_id,
|
||||
'next_lv_limit' => $newLevel['number_limit'],
|
||||
'has_num' => $hasNum,
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!$oldLevel) {
|
||||
$oldLevel['name'] = '默认等级';
|
||||
|
|
|
|||
|
|
@ -24,14 +24,24 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label"><span
|
||||
style='color:red'>*</span>
|
||||
等级名称</label>
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label"><span style='color:red'>*</span>等级名称</label>
|
||||
<div class="col-sm-9 col-xs-12">
|
||||
<input type="text" name="level[name]" class="form-control"
|
||||
value="{{$levelModel['name']}}"/>
|
||||
<input type="text" name="level[name]" class="form-control" value="{{$levelModel['name']}}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label">等级人数限制</label>
|
||||
<div class="col-sm-6 col-xs-6">
|
||||
<div class='input-group col-xs-4'>
|
||||
<input type='text' name='level[number_limit]' class="form-control" value="{{$levelModel['number_limit'] ?? 0}}"/>
|
||||
<div class='input-group-addon waytxt'>人</div>
|
||||
</div>
|
||||
<span class="help-block">当前等级总人数达到指定数量后,其他人则不能升级到当前等级。为空或者0则不限制人数</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@if($set['level']>=1)
|
||||
<div class="form-group">
|
||||
<label class="col-xs-12 col-sm-3 col-md-2 control-label">一级分销比例</label>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class DealerObserver extends BaseObserver
|
|||
*/
|
||||
event(new LevelChangeEvent($model));
|
||||
// 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级)
|
||||
$hasNum = (int)TeamDividendAgencyModel::uniacid()->count();
|
||||
$hasNum = (int)TeamDividendAgencyModel::uniacid()->where('uid','!=',$model->uid)->count();
|
||||
$levelNumberLimit = (int)TeamDividendLevelModel::uniacid()->where('id',$model->level)->value('number_limit');
|
||||
if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue