diff --git a/plugins/team-dividend/src/admin/TeamDividendLevelSetController.php b/plugins/team-dividend/src/admin/TeamDividendLevelSetController.php index 4a21f3eb..64a8d1d5 100644 --- a/plugins/team-dividend/src/admin/TeamDividendLevelSetController.php +++ b/plugins/team-dividend/src/admin/TeamDividendLevelSetController.php @@ -200,6 +200,7 @@ class TeamDividendLevelSetController extends BaseController $data['hierarchy_limit'] = !empty($data['hierarchy_limit']) ? $data['hierarchy_limit'] : 0; $data['auto_withdraw_day'] = !empty($data['auto_withdraw_day']) ? $data['auto_withdraw_day'] : ''; $data['auto_withdraw_period'] = !empty($data['auto_withdraw_period']) ? $data['auto_withdraw_period'] : ''; + $data['number_limit'] = !empty($data['number_limit']) ? $data['number_limit'] : 0; $dividend_model->fill($data); $validator = $dividend_model->validator(); diff --git a/plugins/team-dividend/src/jobs/NewUpgrateJob.php b/plugins/team-dividend/src/jobs/NewUpgrateJob.php index f02dad90..9d570816 100644 --- a/plugins/team-dividend/src/jobs/NewUpgrateJob.php +++ b/plugins/team-dividend/src/jobs/NewUpgrateJob.php @@ -116,40 +116,39 @@ class NewUpgrateJob implements ShouldQueue // 默认可以升级 $upgradeRet = false; foreach ($upgradeLevels as $level) { + // \Log::debug('经销商升级 - 当前等级信息:',$level->toArray()); + // 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级) + $hasNum = (int)TeamDividendAgencyModel::uniacid()->count(); + // \Log::debug('经销商升级 - 数量限制比较:',[$hasNum,(int)$level->number_limit]); + if((int)$level->number_limit <= $hasNum && (int)$level->number_limit > 0) continue; + //dump($level->level_name); // 没有升级条件 if (!$level->hasOneUpgradeSet || !$level->hasOneUpgradeSet->parase) { continue; } - // 升级条件 $parase = unserialize($level->hasOneUpgradeSet->parase); - // 升级后的等级设置 $afterLevelSetting = $level->toArray(); $afterLevelSetting['has_one_upgrade_set']['parase'] = unserialize($afterLevelSetting['has_one_upgrade_set']['parase']); $this->uplogService->setAfterLevelSetting($afterLevelSetting); // 升级后的等级id $this->uplogService->setAfterLevelId($level['id']); - // 记录 //$logModel->level_ups = $parase[0]; - // 升级条件 组 $upgradeGroup = $parase[0]['group']; - if ($this->order) { if ($parase[0]['become'] != $this->order_status) { continue; } } - if ($parase[0]['become'] == TeamDividendLevelUpgrade::ORDER_PAY) { $order_status = Order::WAIT_SEND; } else { $order_status = Order::COMPLETE; } - if ($upgradeGroup) { // 升级条件编号 $upgradeGroupSerialNumber = TeamDividendLevelUpgrade::getUpgradeIsSerialNumber(); diff --git a/plugins/team-dividend/src/models/TeamDividendLevelModel.php b/plugins/team-dividend/src/models/TeamDividendLevelModel.php index 4e188ae9..4a213740 100644 --- a/plugins/team-dividend/src/models/TeamDividendLevelModel.php +++ b/plugins/team-dividend/src/models/TeamDividendLevelModel.php @@ -17,13 +17,14 @@ class TeamDividendLevelModel extends BackendModel protected $guarded = ['']; public $attributes = [ 'upgrade_reward_point' => 0, - 'upgrade_reward_gold' => 0, - 'code_num' => 0, - 'award_hierarchy' => 0, - 'award_ratio' => 0, - 'award_gratitude' => 0, - 'auto_withdraw_day' => 0, + 'upgrade_reward_gold' => 0, + 'code_num' => 0, + 'award_hierarchy' => 0, + 'award_ratio' => 0, + 'award_gratitude' => 0, + 'auto_withdraw_day' => 0, 'auto_withdraw_period' => 0, + 'number_limit' => 0, ]; /** diff --git a/plugins/team-dividend/src/observers/DealerObserver.php b/plugins/team-dividend/src/observers/DealerObserver.php index dd0e56aa..5ee914c3 100644 --- a/plugins/team-dividend/src/observers/DealerObserver.php +++ b/plugins/team-dividend/src/observers/DealerObserver.php @@ -9,11 +9,11 @@ use Illuminate\Database\Eloquent\Model; use Yunshop\CollectionRoom\models\CollectionRoomModel; use Yunshop\TeamDividend\events\LevelChangeEvent; use Yunshop\TeamDividend\models\TeamDividendAgencyModel; +use Yunshop\TeamDividend\models\TeamDividendLevelModel; class DealerObserver extends BaseObserver { - - + // 添加后 public function created(Model $model){ \Log::debug('新增经销商 - created - 用户uid:',$model->toArray()); if((int)$model->uid > 0){ @@ -23,21 +23,29 @@ class DealerObserver extends BaseObserver } - - public function updating(Model $model) - { - /** - * @var TeamDividendAgencyModel $model - */ + // 修改前 + public function updating(Model $model){ if ($model->getOriginal('level') != $model->level) { + /** + * @var TeamDividendAgencyModel $model + */ event(new LevelChangeEvent($model)); + // 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级) + $hasNum = (int)TeamDividendAgencyModel::uniacid()->count(); + $levelNumberLimit = (int)TeamDividendLevelModel::uniacid()->where('id',$model->level)->value('number_limit'); + if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) return false; } } - public function creating(Model $model) - { + // 添加前 + public function creating(Model $model){ /** * @var TeamDividendAgencyModel $model */ event(new LevelChangeEvent($model)); + // 判断:如果当前等级人数已经达到限制 则不升级(上限小于等于已存在数量 不能升级到该等级) + $hasNum = (int)TeamDividendAgencyModel::uniacid()->count(); + $levelNumberLimit = (int)TeamDividendLevelModel::uniacid()->where('id',$model->level)->value('number_limit'); + if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) 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 f83139c3..8426cfa3 100644 --- a/plugins/team-dividend/views/admin/level-set-add.blade.php +++ b/plugins/team-dividend/views/admin/level-set-add.blade.php @@ -44,6 +44,17 @@ +