添加:分销商添加升级条件 - 直推间推指定等级人数后可以升级
This commit is contained in:
parent
7d54455095
commit
eb6900320d
|
|
@ -56,26 +56,31 @@ class OrderPaidListener
|
|||
/**
|
||||
* @param $model
|
||||
*/
|
||||
public function upgradeData($model)
|
||||
{
|
||||
$levels = UpgradeService::getLevelUpgraded();
|
||||
if (!$levels) {
|
||||
return;
|
||||
}
|
||||
$set = \Setting::get('plugin.commission');
|
||||
if ($set['is_with']) {
|
||||
\Log::debug('分销商升级[与]');
|
||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 1, $model, $levels, $set))->delay(10));
|
||||
} else {
|
||||
\Log::debug('订单升级->');
|
||||
//分销商 自购升级
|
||||
UpgradeService::selfBuyAfterPaid($model->uid);
|
||||
//指定商品
|
||||
foreach ($model->hasManyOrderGoods as $goods) {
|
||||
UpgradeService::goodsAfterPaid($goods['goods_id'], $model->uid);
|
||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||
public function upgradeData($model){
|
||||
try{
|
||||
\Log::debug('分销商升级 - 订单支付->');
|
||||
$levels = UpgradeService::getLevelUpgraded();
|
||||
if (!$levels) return;
|
||||
$set = \Setting::get('plugin.commission');
|
||||
if ($set['is_with']) {
|
||||
\Log::debug('分销商升级[与]');
|
||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 1, $model, $levels, $set))->delay(10));
|
||||
} else {
|
||||
//分销商 自购升级
|
||||
UpgradeService::selfBuyAfterPaid($model->uid);
|
||||
//指定商品
|
||||
foreach ($model->hasManyOrderGoods as $goods) {
|
||||
UpgradeService::goodsAfterPaid($goods['goods_id'], $model->uid);
|
||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||
}
|
||||
|
||||
// 直推间推满多少人
|
||||
UpgradeService::oneOrTwo($model->uid, 'order_paid');
|
||||
}
|
||||
\Log::debug('订单升级<-');
|
||||
\Log::debug('分销商升级 - 订单支付<-');
|
||||
}catch(\Exception $e){
|
||||
\Log::debug('分销商升级 - 订单支付<-ERROR',$e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,25 +105,31 @@ class OrderReceiveListener
|
|||
*/
|
||||
public function upgradeData($model)
|
||||
{
|
||||
$levels = UpgradeService::getLevelUpgraded();
|
||||
if (!$levels) {
|
||||
return;
|
||||
}
|
||||
$set = \Setting::get('plugin.commission');
|
||||
if ($set['is_with']) {
|
||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 0, $model, $levels, $set))->delay(10));
|
||||
} else {
|
||||
\Log::info('订单升级->');
|
||||
//分销商 订单升级
|
||||
UpgradeService::order($model->uid);
|
||||
//分销商 自购升级
|
||||
UpgradeService::selfBuy($model->uid);
|
||||
//指定商品
|
||||
foreach ($model->hasManyOrderGoods as $goods) {
|
||||
UpgradeService::goods($goods['goods_id'], $model->uid);
|
||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||
try{
|
||||
\Log::debug('分销商升级 - 订单完成->');
|
||||
$levels = UpgradeService::getLevelUpgraded();
|
||||
if (!$levels) return;
|
||||
$set = \Setting::get('plugin.commission');
|
||||
if ($set['is_with']) {
|
||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 0, $model, $levels, $set))->delay(10));
|
||||
} else {
|
||||
//分销商 订单升级
|
||||
UpgradeService::order($model->uid);
|
||||
//分销商 自购升级
|
||||
UpgradeService::selfBuy($model->uid);
|
||||
//指定商品
|
||||
foreach ($model->hasManyOrderGoods as $goods) {
|
||||
UpgradeService::goods($goods['goods_id'], $model->uid);
|
||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||
}
|
||||
// 直推间推满多少人
|
||||
UpgradeService::oneOrTwo($model->uid, 'order_receive');
|
||||
}
|
||||
\Log::info('订单升级<-');
|
||||
\Log::debug('分销商升级 - 订单完成<-');
|
||||
}catch(\Exception $e){
|
||||
\Log::debug('分销商升级 - 订单完成<-ERROR',$e->getMessage());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,8 @@ class LevelController extends BaseController
|
|||
'set' => $set,
|
||||
'upgrade_data' => $upgrade_data,
|
||||
'upgrade_config' => $upgrade_config,
|
||||
'levelModel' => $LevelModel
|
||||
'levelModel' => $LevelModel,
|
||||
'level_list' => AgentLevel::uniacid()->select(['id','name'])->get()->toArray()
|
||||
])->render();
|
||||
}
|
||||
|
||||
|
|
@ -117,11 +118,13 @@ class LevelController extends BaseController
|
|||
}
|
||||
$upgrade_data = AgentLevelService::setUpgradedata($LevelModel->upgraded);
|
||||
$upgrade_config = AgentLevelService::upgradeConfig();
|
||||
|
||||
return view('Yunshop\Commission::admin.level_info', [
|
||||
'set' => $set,
|
||||
'upgrade_data' => $upgrade_data,
|
||||
'upgrade_config' => $upgrade_config,
|
||||
'levelModel' => $LevelModel
|
||||
'levelModel' => $LevelModel,
|
||||
'level_list' => AgentLevel::uniacid()->select(['id','name'])->get()->toArray()
|
||||
])->render();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ class AgentLevelService
|
|||
}
|
||||
$data['buy_and_sum'] = $upgrade['buy_and_sum'];
|
||||
$data['team_buy_sum'] = $upgrade['team_buy_sum'];
|
||||
$data['one_or_two'] = $upgrade['one_or_two'];
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +61,9 @@ class AgentLevelService
|
|||
$upgrades[$key]['team_buy'] = intval($upgradeValue['team_buy']);
|
||||
$upgrades[$key]['team_sum'] = intval($upgradeValue['team_sum']);
|
||||
}
|
||||
if ($key == 'one_or_two' && intval($upgradeValue['one_or_two'])) {
|
||||
$upgrades[$key] = $upgradeValue['one_or_two'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -92,6 +96,11 @@ class AgentLevelService
|
|||
if ($type == 'team_buy_sum') {
|
||||
$upgrades['team_buy_sum']['type'] = '团队下级购买指定商品ID'.$upgrade['team_buy_sum']['team_buy'].'满'.$upgrade['team_buy_sum']['team_sum'].'个';
|
||||
}
|
||||
if ($type == 'one_or_two') {
|
||||
$levelId = $upgrade['one_or_two']['one_or_two_level_id'];
|
||||
$lvName = AgentLevel::uniacid()->where('id',$levelId)->value('name');
|
||||
$upgrades['one_or_two']['type'] = '直推间推'.$lvName.'满'.$upgrade['one_or_two']['one_or_two_people'].'人';
|
||||
}
|
||||
}
|
||||
$level->upgrades = $upgrades;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace Yunshop\Commission\services;
|
|||
|
||||
|
||||
use app\common\facades\Setting;
|
||||
use app\common\models\member\MemberParent;
|
||||
use app\common\models\Order;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
|
@ -54,14 +55,10 @@ class UpgradeService
|
|||
{
|
||||
//等级 升级条件
|
||||
$levels = static::getLevelUpgraded();
|
||||
if (!$levels) {
|
||||
return;
|
||||
}
|
||||
if (!$levels) return;
|
||||
//分销商数据
|
||||
$agentModel = Agents::getAgentByMemberId($memberId)->first();
|
||||
if (!$agentModel) {
|
||||
return;
|
||||
}
|
||||
if (!$agentModel) return;
|
||||
|
||||
$order_query = CommissionOrder::where('member_id', $memberId)
|
||||
->join('yz_order', function ($query) {
|
||||
|
|
@ -79,35 +76,116 @@ class UpgradeService
|
|||
|
||||
foreach ($levels as $level) {
|
||||
//团队+自购 购买指定商品满N件
|
||||
if (isset($level['upgraded']['team_buy_sum'])) {
|
||||
static::teamBuySum($memberId, $level);
|
||||
}
|
||||
if (isset($level['upgraded']['team_buy_sum'])) static::teamBuySum($memberId, $level);
|
||||
//一级客户消费满x元 人数达到x个
|
||||
if (isset($level['upgraded']['buy_and_sum'])) {
|
||||
static::buyAndSum($memberId, $level);
|
||||
}
|
||||
if (!$order_count) {
|
||||
continue;
|
||||
}
|
||||
if (isset($level['upgraded']['buy_and_sum'])) static::buyAndSum($memberId, $level);
|
||||
if (!$order_count) continue;
|
||||
//分销订单金额
|
||||
if (isset($level['upgraded']['order_money'])) {
|
||||
static::orderMoney($sum_price, $level, $memberId);
|
||||
}
|
||||
if (isset($level['upgraded']['order_money'])) static::orderMoney($sum_price, $level, $memberId);
|
||||
//分销订单数量
|
||||
if (isset($level['upgraded']['order_count'])) {
|
||||
static::orderCount($order_count, $level, $memberId);
|
||||
}
|
||||
if (isset($level['upgraded']['order_count'])) static::orderCount($order_count, $level, $memberId);
|
||||
//一级分销订单金额
|
||||
if (isset($level['upgraded']['first_order_money'])) {
|
||||
static::firstOrderMoney($first_sum_price, $level, $memberId);
|
||||
}
|
||||
if (isset($level['upgraded']['first_order_money'])) static::firstOrderMoney($first_sum_price, $level, $memberId);
|
||||
//一级分销订单数量
|
||||
if (isset($level['upgraded']['first_order_count'])) {
|
||||
static::firstOrderCount($first_order_count, $level, $memberId);
|
||||
}
|
||||
if (isset($level['upgraded']['first_order_count'])) static::firstOrderCount($first_order_count, $level, $memberId);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// 升级条件判断 - 直推间推多少人
|
||||
public static function oneOrTwo($memberId, $type = 'order_receive'){
|
||||
try{
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 开始处理:',['member_id'=>$memberId,'type'=>$type]);
|
||||
// 等级 升级条件
|
||||
$levels = static::getLevelUpgraded();
|
||||
if (!$levels) return;
|
||||
// 分销商数据
|
||||
$agentModel = Agents::getAgentByMemberId($memberId)->first();
|
||||
if (!$agentModel) return;
|
||||
// 获取全部上级
|
||||
$parentAgent = self::getParentsCommission($memberId);
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 本人及上级分销商信息:',$parentAgent);
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 等级信息:',$levels);
|
||||
// 循环处理
|
||||
$levelNameList = array_column($levels,'name','id');
|
||||
foreach($levels as $levelIndex => $levelItem){
|
||||
$upgraded = $levelItem['upgraded'] ?? [];
|
||||
$oneOrTwo = $upgraded['one_or_two'] ?? [];
|
||||
// 判断:支付后 完成后 是否存在对应的设置
|
||||
if(!empty($oneOrTwo) && (($type == 'order_receive' && (int)$upgraded['self_order_after'] != 1) || ($type == 'order_paid' && (int)$upgraded['self_order_after'] == 1))){
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 升级条件:',$oneOrTwo);
|
||||
// 循环所有上级 判断是否可以升级到当前等级
|
||||
foreach($parentAgent as $parentUser){
|
||||
if((int)$parentUser['agent_level']['level'] < (int)$levelItem['level']){
|
||||
$oneLvAndTwoLvNum = MemberParent::getOneOrTwoList($parentUser['member_id']);
|
||||
$subMemberIds = array_column($oneLvAndTwoLvNum,'member_id');
|
||||
$hasNum = (int)\Yunshop\Commission\models\Log::uniacid()
|
||||
->where('after_level_id',$oneOrTwo['one_or_two_level_id'])
|
||||
->whereIn('uid',$subMemberIds)
|
||||
->count(DB::raw('DISTINCT(uid)'));
|
||||
// 判断:是否达到升级要求 需求人数小于等于当前人数-达成升级条件
|
||||
$people = (int)$oneOrTwo['one_or_two_people'] > 0 ? (int)$oneOrTwo['one_or_two_people'] : 1;
|
||||
$isReach = (boolean)($people <= $hasNum);
|
||||
$validateResult = static::validate($levelItem['level'], $parentUser['member_id']);
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 升级:',[
|
||||
// '当前分销商uid' => $parentUser['member_id'],
|
||||
// '当前分销商等级权重' => $parentUser['agent_level']['level'],
|
||||
// '升级后等级权重' => (int)$levelItem['level'],
|
||||
// '一二下级id' => implode(',',$subMemberIds),
|
||||
// '拥有的人数' => $hasNum,
|
||||
// '条件人数' => $people,
|
||||
// '是否达成' => $isReach,
|
||||
// "直推间推{$levelNameList[$oneOrTwo['one_or_two_level_id']]}满{$people}人"
|
||||
// ]);
|
||||
if($isReach && $validateResult) {
|
||||
\Yunshop\Commission\models\Log::addLog(
|
||||
$validateResult['agent_level_id'],
|
||||
$levelItem['id'],
|
||||
$validateResult,
|
||||
"直推间推{$levelNameList[$oneOrTwo['one_or_two_level_id']]}满{$people}人"
|
||||
);
|
||||
static::upgrade($levelItem, $parentUser['member_id'], $validateResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch(\Exception $e){
|
||||
\Log::debug('分销商升级 - 直推间推人数 - 错误:',$e->getMessage());
|
||||
}
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Common: 获取全部的本人及上级分销商信息
|
||||
* Author: wu-hui
|
||||
* Time: 2023/10/25 17:44
|
||||
* @param $memberId
|
||||
* @return array
|
||||
*/
|
||||
public static function getParentsCommission($memberId){
|
||||
$parents = MemberParent::uniacid()
|
||||
->where('member_id', $memberId)
|
||||
->select(['parent_id','level'])
|
||||
->orderBy('level', 'asc')
|
||||
->get()
|
||||
->keyBy('parent_id')
|
||||
->toArray();
|
||||
$parentMemberIds = array_column($parents,'parent_id');
|
||||
$parentMemberIds[] = $memberId;
|
||||
$parentAgent = Agents::uniacid()
|
||||
->select(['member_id','agent_level_id','is_black'])
|
||||
->whereIn('member_id',$parentMemberIds)
|
||||
->get()
|
||||
->toArray();
|
||||
// 循环重构数组信息
|
||||
foreach($parentAgent as &$agentInfo){
|
||||
$agentInfo['distance'] = $parents[$agentInfo['member_id']]['level'];
|
||||
}
|
||||
array_multisort($parentAgent,SORT_ASC,array_column($parentAgent,'distance'));
|
||||
|
||||
|
||||
return $parentAgent;
|
||||
}
|
||||
|
||||
|
||||
public static function teamBuySum($uid, $level_model)
|
||||
{
|
||||
|
|
@ -490,7 +568,7 @@ class UpgradeService
|
|||
*/
|
||||
public static function member($memberId)
|
||||
{
|
||||
Log::info('会员下线升级');
|
||||
\Log::debug('分销商升级 - 会员下线升级入口');
|
||||
//等级 升级条件
|
||||
$levels = static::getLevelUpgraded();
|
||||
if (!$levels) {
|
||||
|
|
@ -581,11 +659,11 @@ class UpgradeService
|
|||
*/
|
||||
public static function agent($agent)
|
||||
{
|
||||
\Log::debug('分销商升级 - 分销下线升级入口');
|
||||
//等级 升级条件
|
||||
$levels = static::getLevelUpgraded();
|
||||
if (!$levels) {
|
||||
return;
|
||||
}
|
||||
if (!$levels) return;
|
||||
|
||||
|
||||
$agentPraent = Agents::getPraents($agent->parent)->get();
|
||||
foreach ($levels as $level) {
|
||||
|
|
@ -821,6 +899,7 @@ class UpgradeService
|
|||
$levelData[$key] = [
|
||||
'id' => $level['id'],
|
||||
'level' => $level['level'],
|
||||
'name' => $level['name'],
|
||||
'upgraded' => unserialize($level['upgraded']),
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,6 +138,30 @@
|
|||
<span>个</span>
|
||||
</label>
|
||||
</div>
|
||||
{{-- 直推间推 某个等级 满多少人 START --}}
|
||||
<div class="input-group row">
|
||||
<label class="radio-inline col-xs-12 col-sm-12">
|
||||
<div class="col-xs-12 col-sm-12" style="padding-left: 0">
|
||||
<div class='input-group'>
|
||||
<div class='input-group-addon waytxt'>
|
||||
<input type="checkbox" name="upgrade_type[one_or_two]" value="1" @if ($upgrade_data['one_or_two']) checked @endif>
|
||||
</div>
|
||||
<div class='input-group-addon waytxt'>直推间推</div>
|
||||
<select name='upgrade_value[one_or_two][one_or_two_level_id]' class="form-control" style="width: 150px;">
|
||||
@foreach($level_list as $level)
|
||||
<option value='{{$level['id']}}' @if($level['id'] == $upgrade_data['one_or_two']['one_or_two_level_id'])selected @endif >
|
||||
{{$level['name']}}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<div class='input-group-addon waytxt'>等级,总人数达到</div>
|
||||
<input type="number" name="upgrade_value[one_or_two][one_or_two_people]" value="{{$upgrade_data['one_or_two']['one_or_two_people']}}" class="form-control">
|
||||
<div class='input-group-addon waytxt'>人(不填或0默认为1人)</div>
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
{{-- 直推间推 某个等级 满多少人 END --}}
|
||||
|
||||
@foreach($upgrade_config as $key=>$config)
|
||||
@if($config['key'] != 'goods' && $config['key'] != 'self_order_after' && $config['key'] != 'many_good')
|
||||
|
|
|
|||
Loading…
Reference in New Issue