--}}
{{--赠送固定值--}}
赠送
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');