添加:升级经销商可以获得赠送名额,赠送后指定用户可以升级到对应的经销商等级

This commit is contained in:
wuhui_zzw 2023-10-24 19:18:51 +08:00
parent 83e48188ef
commit 3c0efc948e
6 changed files with 185 additions and 4 deletions

View File

@ -142,6 +142,15 @@ class TeamAgencyController extends BaseController
// $agency_model->relation = $agentData['relation'];
if ($agency_model->save()) {
// 升级后等级
$c_level = TeamDividendLevelModel::with(['hasOneUpgradeSet'])->find($agentData['level']);
// 升级前等级
$o_level = NULL;
// 升级日志
Uplog::addLog($agency_model, $o_level, $c_level);
//签合同
$data=[
'member_id'=>$agentData['uid'],

View File

@ -114,4 +114,34 @@ class Uplog extends BaseModel
$builder->uniacid();
});
}
/**
* Common: 获取某个用户持有某个等级的名额信息
* Author: wu-hui
* Time: 2023/10/24 19:04
* @param $uid
* @param $teamLevelId
* @return int[]
*/
public static function getQuota($uid,$teamLevelId){
$info = Uplog::uniacid()
->where('uid',$uid)
->where('after_level_id',$teamLevelId)
->orderBy('created_at','ASC')
->first();
// 已使用
$useQuota = TeamDividendAgencyModel::uniacid()
->where('give_uid',$uid)
->where('give_level_id',$info['give_limit_level_id'])
->count();
return [
'total_quota' => (int)$info->give_limit,// 总数
'use_quota' => (int)$useQuota,// 已使用
'surplus_quota' => (int)$info->give_limit - (int)$useQuota,// 剩余
'give_limit_level_id' => (int)$info->give_limit_level_id,// 升级等级id
];
}
}

View File

@ -4,6 +4,7 @@
namespace Yunshop\TeamDividend\services\upgrate;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\TeamDividend\models\Uplog;
class UplogService
@ -52,6 +53,13 @@ class UplogService
public function store()
{
if($this->uplogModel->after_level_id > 0){
$lvInfo = TeamDividendLevelModel::find($this->uplogModel->after_level_id);
$this->uplogModel->give_limit = (int)$lvInfo->give_limit;
$this->uplogModel->give_limit_level_id = (int)$lvInfo->give_limit_level_id;
}
$this->uplogModel->conditions = $this->conditions;
$this->uplogModel->save();
}

View File

@ -119,6 +119,27 @@
<span class="help-block">当前等级总人数达到指定数量后其他人则不能升级到当前等级。为空或者0则不限制人数</span>
</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='dividend[give_limit]' class="form-control discounts_value" value="{{$dividend->give_limit?:0}}"/>
<div class='input-group-addon waytxt'></div>
</div>
<span class="help-block">升级后赠送的名额,该名额可以赠送给其他用户,让其升级到指定等级!</span>
</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">
<select name='dividend[give_limit_level_id]' class='form-control'>
@foreach ($level_list as $key => $item)
<option value='{{$item['id']}}' @if($dividend->give_limit_level_id == $item['id']) selected @endif>{{$item['level_name']}}</option>
@endforeach
</select>
</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">
@ -883,9 +904,12 @@
</div>
</div>
<span class="help-block">普通赠送-赠送指定的权重值;阶梯赠送-根据用户成为经销商的时间顺序排序,获取对应的权重值;超过最大名次则不赠送权重值</span>
<div class="input-group weight-value-top-content">
{{-- <div class="input-group weight-value-top-content">
<div class='input-group-addon waytxt weight-value-lable'>赠送级别</div>
<div class='input-group-addon waytxt weight-value-radio'>
<label class="radio-inline">
<input type="radio" name="wv[lv_type]" value="0" @if ((int)$wv['lv_type'] != 1) checked @endif> 二级
</label>
<label class="radio-inline">
<input type="radio" name="wv[lv_type]" value="0" @if ((int)$wv['lv_type'] != 1) checked @endif> 二级
</label>
@ -894,7 +918,7 @@
</label>
</div>
</div>
<span class="help-block">二级-赠送购买人、购买人上级;三级-赠送购买人、购买人上级、购买人上级的上级</span>
<span class="help-block">二级-赠送购买人、购买人上级;三级-赠送购买人、购买人上级、购买人上级的上级</span>--}}
{{--赠送固定值--}}
<div class='input-group wv-gift-type-num @if ((int)$wv['gift_type'] == 1) hide @endif'>
<div class='input-group-addon waytxt'>赠送</div>

View File

@ -11,6 +11,8 @@ use app\common\services\password\PasswordService;
use Illuminate\Support\Facades\DB;
use Yunshop\TeamDividend\models\TeamDividendAgencyModel;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\TeamDividend\models\Uplog;
use Yunshop\TeamDividend\services\UpgradeService;
use Yunshop\WeightValue\models\WeightValue;
use Yunshop\WeightValue\models\WeightValueLog;
use Yunshop\WeightValue\models\WeightValueTransfer;
@ -226,8 +228,110 @@ class IndexController extends ApiController{
}
/**
* Common: 使用升级名额 - 获取信息
* Author: wu-hui
* Time: 2023/10/24 18:13
* @return \Illuminate\Http\JsonResponse
*/
public function useUpgradeInfo(){
// 基本参数
$uid = \YunShop::app()->getMemberId();
$teamLevelId = (int)request()->input('team_level_id');// 经销商等级id
if($teamLevelId <= 0) return $this->errorJson('非法请求,等级不明确!');
$giveLimitInfo = Uplog::getQuota($uid,$teamLevelId);
$levelName = TeamDividendLevelModel::uniacid()->where('id',$giveLimitInfo['give_limit_level_id'])->value('level_name');
return $this->successJson('获取数据成功', [
'level_name' => $levelName,
'surplus_quota' => $giveLimitInfo['surplus_quota'],
]);
}
/**
* Common: 使用升级名额 - 升级处理
* Author: wu-hui
* Time: 2023/10/24 19:07
* @return \Illuminate\Http\JsonResponse|void
*/
public function useUpgradeHandle(){
// 基本参数
$uid = \YunShop::app()->getMemberId();
$teamLevelId = (int)request()->input('team_level_id');// 经销商等级id
$transferId = (int)request()->input('transfer_id');// 受让人id
if($teamLevelId <= 0) return $this->errorJson('非法请求,等级不明确!');
if($transferId <= 0) return $this->errorJson('非法请求,受让人不明确!');
// 判断:受让人是否为经销商
$isHas = (int)TeamDividendAgencyModel::uniacid()->where('uid',$transferId)->value('id');
if($isHas > 0) return $this->errorJson('升级失败,当前用户非普通用户!');
// 判断:名额是否足够
$giveLimitInfo = Uplog::getQuota($uid,$teamLevelId);
if((int)$giveLimitInfo['surplus_quota'] <= 0) return $this->errorJson('名额不足!');
// 可以赠送 处理
$memberInfo = Member::uniacid()
->where('uid',$transferId)
->whereHas('yzMember', function ($query) {
$query->whereNull('deleted_at');
})
->with('yzMember')
->with('hasOneFans')
->with('hasOneMiniApp')
->first();
if($memberInfo) $memberInfo = $memberInfo->toArray();
$agentData = [
'uid' => $transferId,
'parent_id' => (int)$memberInfo['yz_member']['parent_id'],
'relation' => $memberInfo['yz_member']['relation'],
'level' => $giveLimitInfo['give_limit_level_id'],
'uniacid' => \YunShop::app()->uniacid,
'upgrade_at' => time(),
'give_uid' => $uid,
'give_level_id' => $giveLimitInfo['give_limit_level_id'],
];
$agency_model = new \Yunshop\TeamDividend\admin\models\TeamDividendAgencyModel();
$agency_model->fill($agentData);
$validator = $agency_model->validator();
if ($validator->fails()) {
return $this->errorJson($validator->messages());
} else {
if ($agency_model->save()) {
// 升级后等级
$c_level = TeamDividendLevelModel::with(['hasOneUpgradeSet'])->find($agentData['level']);
// 升级前等级
$o_level = NULL;
// 升级日志
Uplog::addLog($agency_model, $o_level, $c_level);
//签合同
$data=[
'member_id'=>$agentData['uid'],
'created_at' => time(),
];
event(new \app\common\events\plugin\TeamDividendEvent($data));
//激活码
$upgrade_set = (new UpgradeService())->getUpgradeById($agentData['level']);
if ($upgrade_set) {
$set = \Setting::get('plugin.team_dividend');
if ($set['is_activation_code'] && $upgrade_set[0]->code_num) {
$level_list = TeamDividendLevelModel::getList()->get();
$code_num = unserialize($upgrade_set[0]->code_num);
foreach($level_list as $key => $level) {
if($code_num['level_'.$level->id]) {
(new UpgradeService())->senCode($agentData['uid'], $code_num['level_'.$level->id], $level->id, $level->level_name);
}
}
\Log::debug('激活码');
}
}
(new UpgradeService())->becomeAgencyNotify($agentData['uid']);
return $this->successJson('升级成功!');
}
}
}
}

View File

@ -284,7 +284,8 @@ class WeightValue extends BaseModel{
\Log::debug('------经销商升级赠送权重值 - 开始处理------',['uid'=>$uid,'level_id'=>$levelId]);
// 获取当前用户及上级信息
$agents = $this->getParent($uid);
$parents = array_merge($agents['current_user'],$agents['parents']);
// $parents = array_merge($agents['current_user'],$agents['parents']);
$parents = $agents['current_user'];// 修改:经销商升级仅赠送给本人
// 等级赠送设置信息
$levelWvSet = $this->getLevelWeightValue($levelId);
if(!$levelWvSet){
@ -293,7 +294,7 @@ class WeightValue extends BaseModel{
}
$changeRecord = [];// 变更记录
// 判断:赠送等级为二级时,删除第三个用户 赠送等级0=二级1=三级
if($levelWvSet['lv_type'] == 1 && count($parents) >= 3) unset($parents[2]);
// if($levelWvSet['lv_type'] == 1 && count($parents) >= 3) unset($parents[2]);
// 获取:当前需要操作的所有经销商的领取记录 是否已经领取升级赠送的权重值
$parentUidS = array_column($parents,'uid');
$getRecord = WeightValueLog::uniacid()
@ -585,6 +586,9 @@ class WeightValue extends BaseModel{
$weightValue = self::getWeightValueQuantity((int)$uid,(int)$teamLevelId);
// 团队订单信息
$teamOrderInfo = self::getTeamOrderInfo($uid);
// 我的名额
$giveLimitNum = Uplog::getQuota($uid,$teamLevelId);
$list = [
// 下级购买除【升级商品(购买当前商品可以升级到经销商)】外其他商品的 推广奖励(计算分销商奖励)
'direct_push_give' => ['key_name' => 'direct_push_give','title' => '直推奖励','num' => (float)$directPush,'sort' => 1],
@ -598,6 +602,8 @@ class WeightValue extends BaseModel{
'order_money' => ['key_name' => 'order_money','title' => '总订单金额','num' => $teamOrderInfo['total_price'],'sort' => 11],
// 本团队所有相关订单总数 (不包括本人)
'order_num' => ['key_name' => 'order_num','title' => '总订单数','num' => $teamOrderInfo['total'],'sort' => 12],
// 我的赠送升级名额
'give_limit' => ['key_name' => 'give_limit','title' => '我的名额','num' => (int)$giveLimitNum['surplus_quota'],'sort' => 13],
];
// 获取经销商特殊身份 特殊身份0=无特殊身份1=经纪人2=代理商3=省级代理
$identityType = (int)TeamDividendLevelModel::uniacid()->where('id',$teamLevelId)->value('identity_type');