修改:经销商升级赠送权重值

This commit is contained in:
wuhui_zzw 2023-10-16 18:25:59 +08:00
parent 0cd0069f0f
commit eaea295d6c
4 changed files with 119 additions and 16 deletions

View File

@ -428,6 +428,10 @@ class NewUpgrateJob implements ShouldQueue
];
(new LoveChangeService())->teamLevelAward($data);
}
// 升级赠送权重值
(new WeightValue())->upgradeGiveInit($uid,(int)$level->id);
// 升级赠送画
// CollectionRoomModel::addInfo($member->uid);
}
/**
@ -506,7 +510,5 @@ class NewUpgrateJob implements ShouldQueue
'relation' => $member->yzMember->relation,
'upgrade_at' => time(),
]);
// 会员升级经销商 赠送一幅画
CollectionRoomModel::addInfo($member->uid);
}
}

View File

@ -10,19 +10,9 @@ use Yunshop\CollectionRoom\models\CollectionRoomModel;
use Yunshop\TeamDividend\events\LevelChangeEvent;
use Yunshop\TeamDividend\models\TeamDividendAgencyModel;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\WeightValue\models\WeightValue;
class DealerObserver extends BaseObserver
{
// 添加后
public function created(Model $model){
\Log::debug('新增经销商 - created - 用户uid',$model->toArray());
if((int)$model->uid > 0){
// 会员升级经销商 赠送一幅画
CollectionRoomModel::addInfo((int)$model->uid);
}
}
class DealerObserver extends BaseObserver{
// 修改前
public function updating(Model $model){
if ($model->getOriginal('level') != $model->level) {
@ -48,4 +38,26 @@ class DealerObserver extends BaseObserver
if((int)$levelNumberLimit <= $hasNum && (int)$levelNumberLimit > 0) return false;
}
// 保存后 添加|编辑
public function saved(Model $model){
\Log::debug('经销商信息保存 - 保存成功后:',['old_lv'=>$model->getOriginal('level'),'lv'=>$model->level]);
// 经销商等级变更
if((int)$model->uid > 0 && (int)$model->getOriginal('level') != (int)$model->level){
// 经销商升级赠送权重值处理
(new WeightValue())->upgradeGiveInit($model->uid,(int)$model->level);
// 会员升级经销商 赠送一幅画
// CollectionRoomModel::addInfo((int)$model->uid);
}
}
}

View File

@ -35,7 +35,13 @@ class IndexController extends BaseController{
return view('Yunshop\WeightValue::index.index',$data)->render();
}
// 查看变更记录
/**
* Common: 查看变更记录
* Author: wu-hui
* Time: 2023/10/16 17:48
* @return array|\Illuminate\Http\JsonResponse|string
* @throws \Throwable
*/
public function changeRecord(){
// 参数获取
$memberId = (int)request()->input('member_id');
@ -72,11 +78,17 @@ class IndexController extends BaseController{
public function test(){
// (new WeightValue())->upgradeGiveInit(1,1);
}
}

View File

@ -31,7 +31,7 @@ class WeightValue extends BaseModel{
// 当前订单全部商品
$goodsList = $this->getGoodsList($model->id);
// 获取当前用户及上级信息
$agents = $this->getParent($model->uid);// 全部上级信息(包含购买人)
$agents = $this->getParent($model->uid);
// 循环处理每个商品
$changeRecord = [];// 变更记录
foreach($goodsList as $goodsInfo){
@ -203,6 +203,83 @@ class WeightValue extends BaseModel{
return (float)0;
}
}
/**
* Common: 经销商升级赠送权重值 - 开始处理
* Author: wu-hui
* Time: 2023/10/16 18:24
* @param $uid
* @param $levelId
*/
public function upgradeGiveInit($uid,$levelId){
\Log::debug('------经销商升级赠送权重值 - 开始处理------',['uid'=>$uid,'level_id'=>$levelId]);
$parents = $this->getParent($uid);// 获取当前用户及上级信息
$levelWvSet = $this->getLevelWeightValue($levelId);// 等级赠送设置信息
if(!$levelWvSet){
\Log::debug('------经销商升级赠送权重值 - 错误 - 当前等级不存在设置信息------',$levelId);
return;
}
$changeRecord = [];// 变更记录
// 判断:赠送等级为二级时,删除第三个用户 赠送等级0=二级1=三级
if($levelWvSet['lv_type'] == 1 && count($parents) >= 3) unset($parents[2]);
// 获取:当前需要操作的所有经销商的领取记录 是否已经领取升级赠送的权重值
$parentUidS = array_column($parents,'uid');
$getRecord = WeightValueLog::uniacid()
->whereIn('member_id',$parentUidS)
->where('source',1)
->where('team_dividend_agency_level_id',$levelId)
->pluck('member_id');
$getRecord = $getRecord ? $getRecord->toArray() : [];// 已领取记录列表
// 循环上级信息 处理每一个用户
foreach($parents as $agentKey => $agentInfo){
// 判断:当前用户是否已经领取 已领取不可重复领取
if(in_array($agentInfo['uid'],$getRecord)) continue;
// 用户当前持有的权重值
$currentAgentHasWeightValue = (float)$parents[$agentKey]['weight_value']['quantity'] ?? 0;
// 获取当前用户应得的权重值
$weightValue = (float)sprintf("%.2f",$this->getWeightValue($levelWvSet,$agentInfo));
// 应得权重值大于0 记录改变信息并且修改持有权重值
if((float)$weightValue > 0){
$changeAfter = sprintf("%.2f",($currentAgentHasWeightValue + $weightValue));
$changeRecord[] = [
'uniacid' => \YunShop::app()->uniacid,
'member_id' => $agentInfo['uid'],// 用户id
'team_dividend_agency_level_id' => $agentInfo['team_dividend_agency_level_id'],// 经销商等级id
'change_type' => 1,// 变更类型0=减少1=增加
'change_quantity' => $weightValue,// 变更数量
'change_front' => (float)$currentAgentHasWeightValue,// 变更前拥有的数量
'change_after' => $changeAfter,// 变更后拥有的数量
'remark' => "经销商升级赠送",// 备注
'created_at' => time(),// 变更时间
'source' => 1
];
$parents[$agentKey]['weight_value']['quantity'] = $changeAfter;
}
}
// 修改用户权重值变更信息 | 处理权重值变更记录
if($changeRecord){
$updateWeightValueList = array_column($parents,'weight_value');
self::updateInfo($updateWeightValueList);
WeightValueLog::insert($changeRecord);
}
return;
}
/**
* Common: 经销商升级赠送权重值 - 获取对应等级的设置
* Author: wu-hui
* Time: 2023/10/16 17:57
* @param $levelId
* @return array
*/
private function getLevelWeightValue($levelId){
$first = GoodsWeightValue::uniacid()
->where('team_dividend_level_id',$levelId)
->select(['is_open','gift_type','lv_type','quantity','ladder'])
->first();
return $first ? $first->toArray() : [];
}
/**