添加:分销商添加升级条件 - 直推间推指定等级人数后可以升级
This commit is contained in:
parent
7d54455095
commit
eb6900320d
|
|
@ -56,18 +56,16 @@ class OrderPaidListener
|
||||||
/**
|
/**
|
||||||
* @param $model
|
* @param $model
|
||||||
*/
|
*/
|
||||||
public function upgradeData($model)
|
public function upgradeData($model){
|
||||||
{
|
try{
|
||||||
|
\Log::debug('分销商升级 - 订单支付->');
|
||||||
$levels = UpgradeService::getLevelUpgraded();
|
$levels = UpgradeService::getLevelUpgraded();
|
||||||
if (!$levels) {
|
if (!$levels) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
$set = \Setting::get('plugin.commission');
|
$set = \Setting::get('plugin.commission');
|
||||||
if ($set['is_with']) {
|
if ($set['is_with']) {
|
||||||
\Log::debug('分销商升级[与]');
|
\Log::debug('分销商升级[与]');
|
||||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 1, $model, $levels, $set))->delay(10));
|
$this->dispatch((new UpgrateByOrderJob($model->uid, 1, $model, $levels, $set))->delay(10));
|
||||||
} else {
|
} else {
|
||||||
\Log::debug('订单升级->');
|
|
||||||
//分销商 自购升级
|
//分销商 自购升级
|
||||||
UpgradeService::selfBuyAfterPaid($model->uid);
|
UpgradeService::selfBuyAfterPaid($model->uid);
|
||||||
//指定商品
|
//指定商品
|
||||||
|
|
@ -75,7 +73,14 @@ class OrderPaidListener
|
||||||
UpgradeService::goodsAfterPaid($goods['goods_id'], $model->uid);
|
UpgradeService::goodsAfterPaid($goods['goods_id'], $model->uid);
|
||||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||||
}
|
}
|
||||||
\Log::debug('订单升级<-');
|
|
||||||
}
|
// 直推间推满多少人
|
||||||
|
UpgradeService::oneOrTwo($model->uid, 'order_paid');
|
||||||
|
}
|
||||||
|
\Log::debug('分销商升级 - 订单支付<-');
|
||||||
|
}catch(\Exception $e){
|
||||||
|
\Log::debug('分销商升级 - 订单支付<-ERROR',$e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,15 +105,14 @@ class OrderReceiveListener
|
||||||
*/
|
*/
|
||||||
public function upgradeData($model)
|
public function upgradeData($model)
|
||||||
{
|
{
|
||||||
|
try{
|
||||||
|
\Log::debug('分销商升级 - 订单完成->');
|
||||||
$levels = UpgradeService::getLevelUpgraded();
|
$levels = UpgradeService::getLevelUpgraded();
|
||||||
if (!$levels) {
|
if (!$levels) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
$set = \Setting::get('plugin.commission');
|
$set = \Setting::get('plugin.commission');
|
||||||
if ($set['is_with']) {
|
if ($set['is_with']) {
|
||||||
$this->dispatch((new UpgrateByOrderJob($model->uid, 0, $model, $levels, $set))->delay(10));
|
$this->dispatch((new UpgrateByOrderJob($model->uid, 0, $model, $levels, $set))->delay(10));
|
||||||
} else {
|
} else {
|
||||||
\Log::info('订单升级->');
|
|
||||||
//分销商 订单升级
|
//分销商 订单升级
|
||||||
UpgradeService::order($model->uid);
|
UpgradeService::order($model->uid);
|
||||||
//分销商 自购升级
|
//分销商 自购升级
|
||||||
|
|
@ -123,7 +122,14 @@ class OrderReceiveListener
|
||||||
UpgradeService::goods($goods['goods_id'], $model->uid);
|
UpgradeService::goods($goods['goods_id'], $model->uid);
|
||||||
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
UpgradeService::manyGood($goods['goods_id'], $model->uid);
|
||||||
}
|
}
|
||||||
\Log::info('订单升级<-');
|
// 直推间推满多少人
|
||||||
}
|
UpgradeService::oneOrTwo($model->uid, 'order_receive');
|
||||||
|
}
|
||||||
|
\Log::debug('分销商升级 - 订单完成<-');
|
||||||
|
}catch(\Exception $e){
|
||||||
|
\Log::debug('分销商升级 - 订单完成<-ERROR',$e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,8 @@ class LevelController extends BaseController
|
||||||
'set' => $set,
|
'set' => $set,
|
||||||
'upgrade_data' => $upgrade_data,
|
'upgrade_data' => $upgrade_data,
|
||||||
'upgrade_config' => $upgrade_config,
|
'upgrade_config' => $upgrade_config,
|
||||||
'levelModel' => $LevelModel
|
'levelModel' => $LevelModel,
|
||||||
|
'level_list' => AgentLevel::uniacid()->select(['id','name'])->get()->toArray()
|
||||||
])->render();
|
])->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,11 +118,13 @@ class LevelController extends BaseController
|
||||||
}
|
}
|
||||||
$upgrade_data = AgentLevelService::setUpgradedata($LevelModel->upgraded);
|
$upgrade_data = AgentLevelService::setUpgradedata($LevelModel->upgraded);
|
||||||
$upgrade_config = AgentLevelService::upgradeConfig();
|
$upgrade_config = AgentLevelService::upgradeConfig();
|
||||||
|
|
||||||
return view('Yunshop\Commission::admin.level_info', [
|
return view('Yunshop\Commission::admin.level_info', [
|
||||||
'set' => $set,
|
'set' => $set,
|
||||||
'upgrade_data' => $upgrade_data,
|
'upgrade_data' => $upgrade_data,
|
||||||
'upgrade_config' => $upgrade_config,
|
'upgrade_config' => $upgrade_config,
|
||||||
'levelModel' => $LevelModel
|
'levelModel' => $LevelModel,
|
||||||
|
'level_list' => AgentLevel::uniacid()->select(['id','name'])->get()->toArray()
|
||||||
])->render();
|
])->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ class AgentLevelService
|
||||||
}
|
}
|
||||||
$data['buy_and_sum'] = $upgrade['buy_and_sum'];
|
$data['buy_and_sum'] = $upgrade['buy_and_sum'];
|
||||||
$data['team_buy_sum'] = $upgrade['team_buy_sum'];
|
$data['team_buy_sum'] = $upgrade['team_buy_sum'];
|
||||||
|
$data['one_or_two'] = $upgrade['one_or_two'];
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,6 +61,9 @@ class AgentLevelService
|
||||||
$upgrades[$key]['team_buy'] = intval($upgradeValue['team_buy']);
|
$upgrades[$key]['team_buy'] = intval($upgradeValue['team_buy']);
|
||||||
$upgrades[$key]['team_sum'] = intval($upgradeValue['team_sum']);
|
$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') {
|
if ($type == 'team_buy_sum') {
|
||||||
$upgrades['team_buy_sum']['type'] = '团队下级购买指定商品ID'.$upgrade['team_buy_sum']['team_buy'].'满'.$upgrade['team_buy_sum']['team_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;
|
$level->upgrades = $upgrades;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ namespace Yunshop\Commission\services;
|
||||||
|
|
||||||
|
|
||||||
use app\common\facades\Setting;
|
use app\common\facades\Setting;
|
||||||
|
use app\common\models\member\MemberParent;
|
||||||
use app\common\models\Order;
|
use app\common\models\Order;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
@ -54,14 +55,10 @@ class UpgradeService
|
||||||
{
|
{
|
||||||
//等级 升级条件
|
//等级 升级条件
|
||||||
$levels = static::getLevelUpgraded();
|
$levels = static::getLevelUpgraded();
|
||||||
if (!$levels) {
|
if (!$levels) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
//分销商数据
|
//分销商数据
|
||||||
$agentModel = Agents::getAgentByMemberId($memberId)->first();
|
$agentModel = Agents::getAgentByMemberId($memberId)->first();
|
||||||
if (!$agentModel) {
|
if (!$agentModel) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$order_query = CommissionOrder::where('member_id', $memberId)
|
$order_query = CommissionOrder::where('member_id', $memberId)
|
||||||
->join('yz_order', function ($query) {
|
->join('yz_order', function ($query) {
|
||||||
|
|
@ -79,35 +76,116 @@ class UpgradeService
|
||||||
|
|
||||||
foreach ($levels as $level) {
|
foreach ($levels as $level) {
|
||||||
//团队+自购 购买指定商品满N件
|
//团队+自购 购买指定商品满N件
|
||||||
if (isset($level['upgraded']['team_buy_sum'])) {
|
if (isset($level['upgraded']['team_buy_sum'])) static::teamBuySum($memberId, $level);
|
||||||
static::teamBuySum($memberId, $level);
|
|
||||||
}
|
|
||||||
//一级客户消费满x元 人数达到x个
|
//一级客户消费满x元 人数达到x个
|
||||||
if (isset($level['upgraded']['buy_and_sum'])) {
|
if (isset($level['upgraded']['buy_and_sum'])) static::buyAndSum($memberId, $level);
|
||||||
static::buyAndSum($memberId, $level);
|
if (!$order_count) continue;
|
||||||
}
|
|
||||||
if (!$order_count) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
//分销订单金额
|
//分销订单金额
|
||||||
if (isset($level['upgraded']['order_money'])) {
|
if (isset($level['upgraded']['order_money'])) static::orderMoney($sum_price, $level, $memberId);
|
||||||
static::orderMoney($sum_price, $level, $memberId);
|
|
||||||
}
|
|
||||||
//分销订单数量
|
//分销订单数量
|
||||||
if (isset($level['upgraded']['order_count'])) {
|
if (isset($level['upgraded']['order_count'])) static::orderCount($order_count, $level, $memberId);
|
||||||
static::orderCount($order_count, $level, $memberId);
|
|
||||||
}
|
|
||||||
//一级分销订单金额
|
//一级分销订单金额
|
||||||
if (isset($level['upgraded']['first_order_money'])) {
|
if (isset($level['upgraded']['first_order_money'])) static::firstOrderMoney($first_sum_price, $level, $memberId);
|
||||||
static::firstOrderMoney($first_sum_price, $level, $memberId);
|
|
||||||
}
|
|
||||||
//一级分销订单数量
|
//一级分销订单数量
|
||||||
if (isset($level['upgraded']['first_order_count'])) {
|
if (isset($level['upgraded']['first_order_count'])) static::firstOrderCount($first_order_count, $level, $memberId);
|
||||||
static::firstOrderCount($first_order_count, $level, $memberId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return;
|
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)
|
public static function teamBuySum($uid, $level_model)
|
||||||
{
|
{
|
||||||
|
|
@ -490,7 +568,7 @@ class UpgradeService
|
||||||
*/
|
*/
|
||||||
public static function member($memberId)
|
public static function member($memberId)
|
||||||
{
|
{
|
||||||
Log::info('会员下线升级');
|
\Log::debug('分销商升级 - 会员下线升级入口');
|
||||||
//等级 升级条件
|
//等级 升级条件
|
||||||
$levels = static::getLevelUpgraded();
|
$levels = static::getLevelUpgraded();
|
||||||
if (!$levels) {
|
if (!$levels) {
|
||||||
|
|
@ -581,11 +659,11 @@ class UpgradeService
|
||||||
*/
|
*/
|
||||||
public static function agent($agent)
|
public static function agent($agent)
|
||||||
{
|
{
|
||||||
|
\Log::debug('分销商升级 - 分销下线升级入口');
|
||||||
//等级 升级条件
|
//等级 升级条件
|
||||||
$levels = static::getLevelUpgraded();
|
$levels = static::getLevelUpgraded();
|
||||||
if (!$levels) {
|
if (!$levels) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$agentPraent = Agents::getPraents($agent->parent)->get();
|
$agentPraent = Agents::getPraents($agent->parent)->get();
|
||||||
foreach ($levels as $level) {
|
foreach ($levels as $level) {
|
||||||
|
|
@ -821,6 +899,7 @@ class UpgradeService
|
||||||
$levelData[$key] = [
|
$levelData[$key] = [
|
||||||
'id' => $level['id'],
|
'id' => $level['id'],
|
||||||
'level' => $level['level'],
|
'level' => $level['level'],
|
||||||
|
'name' => $level['name'],
|
||||||
'upgraded' => unserialize($level['upgraded']),
|
'upgraded' => unserialize($level['upgraded']),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,30 @@
|
||||||
<span>个</span>
|
<span>个</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</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)
|
@foreach($upgrade_config as $key=>$config)
|
||||||
@if($config['key'] != 'goods' && $config['key'] != 'self_order_after' && $config['key'] != 'many_good')
|
@if($config['key'] != 'goods' && $config['key'] != 'self_order_after' && $config['key'] != 'many_good')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue