diff --git a/plugins/team-dividend/src/admin/TeamAgencyController.php b/plugins/team-dividend/src/admin/TeamAgencyController.php index f959d505..35394d75 100644 --- a/plugins/team-dividend/src/admin/TeamAgencyController.php +++ b/plugins/team-dividend/src/admin/TeamAgencyController.php @@ -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'], diff --git a/plugins/team-dividend/src/models/Uplog.php b/plugins/team-dividend/src/models/Uplog.php index 0db06c6d..6d758089 100644 --- a/plugins/team-dividend/src/models/Uplog.php +++ b/plugins/team-dividend/src/models/Uplog.php @@ -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 + ]; + } + + + } \ No newline at end of file diff --git a/plugins/team-dividend/src/services/upgrate/UplogService.php b/plugins/team-dividend/src/services/upgrate/UplogService.php index 341be3f3..a5b97275 100644 --- a/plugins/team-dividend/src/services/upgrate/UplogService.php +++ b/plugins/team-dividend/src/services/upgrate/UplogService.php @@ -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(); } 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 e453772b..d9415696 100644 --- a/plugins/team-dividend/views/admin/level-set-add.blade.php +++ b/plugins/team-dividend/views/admin/level-set-add.blade.php @@ -119,6 +119,27 @@ 当前等级总人数达到指定数量后,其他人则不能升级到当前等级。为空或者0则不限制人数 +
+ +
+
+ +
+
+ 升级后赠送的名额,该名额可以赠送给其他用户,让其升级到指定等级! +
+
+
+ +
+ +
+
+
@@ -883,9 +904,12 @@
普通赠送-赠送指定的权重值;阶梯赠送-根据用户成为经销商的时间顺序排序,获取对应的权重值;超过最大名次则不赠送权重值 -
+ {{--
赠送级别
+ @@ -894,7 +918,7 @@
- 二级-赠送购买人、购买人上级;三级-赠送购买人、购买人上级、购买人上级的上级 + 二级-赠送购买人、购买人上级;三级-赠送购买人、购买人上级、购买人上级的上级--}} {{--赠送固定值--}}
赠送
diff --git a/plugins/weight-value/src/api/IndexController.php b/plugins/weight-value/src/api/IndexController.php index 58bdce21..6aec1951 100644 --- a/plugins/weight-value/src/api/IndexController.php +++ b/plugins/weight-value/src/api/IndexController.php @@ -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('升级成功!'); + } + } + } + } \ No newline at end of file diff --git a/plugins/weight-value/src/models/WeightValue.php b/plugins/weight-value/src/models/WeightValue.php index 22dc17ce..a4d2bc49 100644 --- a/plugins/weight-value/src/models/WeightValue.php +++ b/plugins/weight-value/src/models/WeightValue.php @@ -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');