From 24e7139815e6538ee80601698cab5949cf184568 Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Mon, 23 Oct 2023 16:10:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E7=BB=8F=E9=94=80?= =?UTF-8?q?=E5=95=86=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=BB=8F=E9=94=80=E5=95=86=E5=8D=87=E7=BA=A7=E5=88=B0=E6=AF=8F?= =?UTF-8?q?=E4=B8=AA=E7=AD=89=E7=BA=A7=E7=9A=84=E6=8E=92=E5=90=8D=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E8=B4=AD=E4=B9=B0=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=B5=A0=E9=80=81=E6=9D=83=E9=87=8D=E5=80=BC=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=E7=BB=86=E5=88=86=E4=B8=BA=E7=BB=8F=E7=BA=AA?= =?UTF-8?q?=E4=BA=BA=E8=B5=A0=E9=80=81=EF=BC=8C=E4=BB=A3=E7=90=86=E5=95=86?= =?UTF-8?q?=E8=B5=A0=E9=80=81=EF=BC=8C=E7=9C=81=E5=85=AC=E5=8F=B8=E8=B5=A0?= =?UTF-8?q?=E9=80=81=E3=80=82=20=E6=B7=BB=E5=8A=A0=EF=BC=9A=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E9=85=8D=E9=80=81=E8=B5=A0=E9=80=81=E6=9D=83=E9=87=8D?= =?UTF-8?q?=E5=80=BC=20=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE=E7=99=BE?= =?UTF-8?q?=E5=88=86=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/admin/TeamAgencyController.php | 16 +- .../src/models/TeamDividendLevelModel.php | 30 ++- .../views/admin/team-agency.blade.php | 7 +- .../src/admin/IndexController.php | 5 +- .../src/admin/widget/WeightValueWidget.php | 1 - .../src/models/GoodsWeightValue.php | 21 +- .../weight-value/src/models/WeightValue.php | 180 ++++++++++---- .../views/widget/marketing/weight_value.js | 231 ++++++++++++++++-- 8 files changed, 412 insertions(+), 79 deletions(-) diff --git a/plugins/team-dividend/src/admin/TeamAgencyController.php b/plugins/team-dividend/src/admin/TeamAgencyController.php index 16382e3d..3962960f 100644 --- a/plugins/team-dividend/src/admin/TeamAgencyController.php +++ b/plugins/team-dividend/src/admin/TeamAgencyController.php @@ -83,12 +83,22 @@ class TeamAgencyController extends BaseController } } $level = TeamDividendLevelModel::getList()->get(); - - - + // 获取所有经销商的排名信息 + $rankList = TeamDividendLevelModel::getRanking(); foreach ($list['data'] as $key => $item) { $list['data'][$key]['total'] = count($item['has_many_member_children']); + $list['data'][$key]['rank_list'] = array_filter(array_map(function($rankInfo) use ($item){ + $rankSort = (string)$rankInfo['up_log'][$item['uid']]; + if($rankSort === '0' || $rankSort) { + return [ + 'id' => $rankInfo['id'], + 'level_name' => $rankInfo['level_name'], + 'ranking' => ((int)$rankInfo['up_log'][$item['uid']] + 1), + ]; + } + },$rankList)); } + return view('Yunshop\TeamDividend::admin.team-agency', [ 'list' => $list, 'endtime' => $endtime, diff --git a/plugins/team-dividend/src/models/TeamDividendLevelModel.php b/plugins/team-dividend/src/models/TeamDividendLevelModel.php index d1240153..acd6aab7 100644 --- a/plugins/team-dividend/src/models/TeamDividendLevelModel.php +++ b/plugins/team-dividend/src/models/TeamDividendLevelModel.php @@ -220,7 +220,35 @@ class TeamDividendLevelModel extends BackendModel return self::getList()->select($field)->get()->toArray(); } - + public function upLog(){ + return $this->hasMany(Uplog::class, 'after_level_id', 'id'); + } + /** + * Common: 获取所有等级所有经销商排名信息 + * Author: wu-hui + * Time: 2023/10/23 15:45 + * @return array|false|null + */ + public static function getRanking(){ + // 获取全部经销商 以此来获取排名信息 + $upRank = TeamDividendLevelModel::uniacid() + ->select(['id','level_name','level_weight']) + ->with(['upLog'=>function($query){ + $query->select(['id','uid','after_level_id','created_at']) + ->orderBy('created_at','ASC') + ->groupBy('after_level_id') + ->groupBy('uid'); + }]) + ->get(); + $allTeamDividend = $upRank->map(function($upItem){ + return [ + 'id' => $upItem->id, + 'level_name' => $upItem->level_name, + 'up_log' => array_flip($upItem->upLog->pluck('uid')->toArray()), + ]; + })->toArray(); + return array_column($allTeamDividend,null,'id'); + } } \ No newline at end of file diff --git a/plugins/team-dividend/views/admin/team-agency.blade.php b/plugins/team-dividend/views/admin/team-agency.blade.php index e8c5b4d0..8ac312c4 100644 --- a/plugins/team-dividend/views/admin/team-agency.blade.php +++ b/plugins/team-dividend/views/admin/team-agency.blade.php @@ -112,6 +112,7 @@ 成为经销商时间
升级时间 经销商 等级 + 排名 直属总经销商人数 经销商比例
累计提成 已结算提成
未结算提成 @@ -159,7 +160,11 @@ - + + @foreach($item['rank_list'] as $rankItem) +

{{$rankItem['level_name']}}:{{$rankItem['ranking']}}

+ @endforeach + {{$item['total'] ?? 0}}人 diff --git a/plugins/weight-value/src/admin/IndexController.php b/plugins/weight-value/src/admin/IndexController.php index 2e3c00d8..427f1fd8 100644 --- a/plugins/weight-value/src/admin/IndexController.php +++ b/plugins/weight-value/src/admin/IndexController.php @@ -3,6 +3,7 @@ namespace Yunshop\WeightValue\admin; use app\common\components\BaseController; use app\common\helpers\PaginationHelper; +use app\common\models\Order; use Yunshop\TeamDividend\models\TeamDividendLevelModel; use Yunshop\WeightValue\models\WeightValue; use Yunshop\WeightValue\models\WeightValueLog; @@ -106,9 +107,7 @@ class IndexController extends BaseController{ public function test(){ // (new WeightValue())->upgradeGiveInit(1,1); - - - + // (new WeightValue())->giveInit(Order::find(128)); } diff --git a/plugins/weight-value/src/admin/widget/WeightValueWidget.php b/plugins/weight-value/src/admin/widget/WeightValueWidget.php index 19931dce..c13f89db 100644 --- a/plugins/weight-value/src/admin/widget/WeightValueWidget.php +++ b/plugins/weight-value/src/admin/widget/WeightValueWidget.php @@ -17,7 +17,6 @@ class WeightValueWidget extends BaseGoodsWidget{ public function getData(){ return GoodsWeightValue::uniacid() - ->select(['is_open','gift_type','lv_type','quantity','ladder']) ->where('goods_id', $this->goods->id) ->first(); } diff --git a/plugins/weight-value/src/models/GoodsWeightValue.php b/plugins/weight-value/src/models/GoodsWeightValue.php index 683ffc72..f2cd6df8 100644 --- a/plugins/weight-value/src/models/GoodsWeightValue.php +++ b/plugins/weight-value/src/models/GoodsWeightValue.php @@ -13,21 +13,40 @@ class GoodsWeightValue extends BaseModel{ public static function relationSave($goodsId, $data, $operate,$isTeamDividend = false){ if (!$goodsId) return false; if (!$data) return false; + $info = self::getModel($goodsId, $operate, $isTeamDividend); // 判断deleted if ($operate == 'deleted') return $info->delete(); - // 其他 + // 公共 $info->uniacid = \YunShop::app()->uniacid; $info->goods_id = $isTeamDividend ? 0 : $goodsId;// 经销商设置true goods_id = 0;否则为goodsId $info->team_dividend_level_id = $isTeamDividend ? $goodsId : 0;// 经销商设置true team_dividend_level_id = goodsId;否则为0 $info->is_open = $data['is_open'] ?? 0;// 是否开启购买商品赠送权重值:0=未开启,1=开启 + // 经纪人 $info->gift_type = $data['gift_type'] ?? 0;// 赠送方式:0=赠送固定值,1=阶梯值赠送 $info->lv_type = $data['lv_type'] ?? 0;// 赠送方式:0=二级,1=三级 + $info->calculation_type = $data['calculation_type'] ?? 0;// 计算类型:0=固定值,1=支付比例 $info->quantity = $data['quantity'] ?? 0;// 固定值赠送数量 foreach($data['ladder'] as $ladderIndex => $ladderItem){ if((float)$ladderItem['where'] <= 0 || (float)$ladderItem['num'] <= 0) unset($data['ladder'][$ladderIndex]); } $info->ladder = json_encode($data['ladder'] ?? []);// 阶梯赠送信息 + // 代理商 + $info->agent_gift_type = $data['agent_gift_type'] ?? 0;// 赠送方式:0=赠送固定值,1=阶梯值赠送 + $info->agent_calculation_type = $data['agent_calculation_type'] ?? 0;// 计算类型:0=固定值,1=支付比例 + $info->agent_quantity = $data['agent_quantity'] ?? 0;// 固定值赠送数量 + foreach($data['agent_ladder'] as $ladderIndex => $ladderItem){ + if((float)$ladderItem['where'] <= 0 || (float)$ladderItem['num'] <= 0) unset($data['agent_ladder'][$ladderIndex]); + } + $info->agent_ladder = json_encode($data['agent_ladder'] ?? []);// 阶梯赠送信息 + // 省公司 + $info->province_gift_type = $data['province_gift_type'] ?? 0;// 赠送方式:0=赠送固定值,1=阶梯值赠送 + $info->province_calculation_type = $data['province_calculation_type'] ?? 0;// 计算类型:0=固定值,1=支付比例 + $info->province_quantity = $data['province_quantity'] ?? 0;// 固定值赠送数量 + foreach($data['province_ladder'] as $ladderIndex => $ladderItem){ + if((float)$ladderItem['where'] <= 0 || (float)$ladderItem['num'] <= 0) unset($data['province_ladder'][$ladderIndex]); + } + $info->province_ladder = json_encode($data['province_ladder'] ?? []);// 阶梯赠送信息 return $info->save(); } diff --git a/plugins/weight-value/src/models/WeightValue.php b/plugins/weight-value/src/models/WeightValue.php index 0c63e1c5..f65c9bba 100644 --- a/plugins/weight-value/src/models/WeightValue.php +++ b/plugins/weight-value/src/models/WeightValue.php @@ -13,6 +13,7 @@ use Yunshop\ShareholderDividend\models\ShareholderDividendModel; use Yunshop\TeamDividend\models\TeamDividendAgencyModel; use Yunshop\TeamDividend\models\TeamDividendLevelModel; use Yunshop\TeamDividend\models\TeamDividendModel; +use Yunshop\TeamDividend\models\Uplog; class WeightValue extends BaseModel{ @@ -39,17 +40,19 @@ class WeightValue extends BaseModel{ // 循环处理每个商品 $changeRecord = [];// 变更记录 foreach($goodsList as $goodsInfo){ - // 由于涉及到删除 使用的经销商列表重新赋值给新的变量 方便操作 - $useAgentList = $agents; - // 判断:赠送等级为二级时,删除第三个用户 赠送等级:0=二级,1=三级 - if($goodsInfo['lv_type'] == 1 && count($useAgentList) >= 3) unset($useAgentList[2]); + $useAgentList = []; + $mergeAgentList = array_merge($agents['parents'],$agents['agents']);// 默认上级信息 + // 判断:是否开启自购 + if((int)$goodsInfo['is_self_purchase'] == 1) $mergeAgentList = array_merge($agents['current_user'],$agents['parents'],$agents['agents']); + foreach($mergeAgentList as $useAgentItem){ + $useAgentList[$useAgentItem['uid']] = $useAgentItem; + } // 循环上级信息 处理每一个用户、每一个商品的赠送情况 foreach($useAgentList as $agentKey => $agentInfo){ // 用户当前的权重值 $currentAgentHasWeightValue = (float)$agents[$agentKey]['weight_value']['quantity'] ?? 0; // 符合条件 获取当前用户应得的权重值 - $weightValue = $this->getWeightValue($goodsInfo,$agentInfo);// 应得权重值 - $totalWeightValue = (float)sprintf("%.2f",$goodsInfo['total'] * $weightValue);// 总数量 * 应得权重值 = 总应得权重值 + $totalWeightValue = $this->getWeightValue($goodsInfo,$agentInfo);// 应得权重值 // 应得权重值大于0 记录改变信息并且修改持有权重值 if((float)$totalWeightValue > 0){ $changeAfter = sprintf("%.2f",($currentAgentHasWeightValue + $totalWeightValue)); @@ -80,6 +83,7 @@ class WeightValue extends BaseModel{ DB::commit(); }catch(\Exception $e){ + \Log::debug('------购买商品赠送权重值 - 错误抛出------',$e->getMessage()); DB::rollBack(); } @@ -103,11 +107,22 @@ class WeightValue extends BaseModel{ 'yz_order_goods.goods_id', 'yz_order_goods.total', 'yz_order_goods.title', + 'yz_order_goods.payment_amount', 'yz_goods_weight_value.is_open', + 'yz_goods_weight_value.is_self_purchase', 'yz_goods_weight_value.gift_type', 'yz_goods_weight_value.lv_type', + 'yz_goods_weight_value.calculation_type', 'yz_goods_weight_value.quantity', - 'yz_goods_weight_value.ladder' + 'yz_goods_weight_value.ladder', + 'yz_goods_weight_value.agent_gift_type', + 'yz_goods_weight_value.agent_calculation_type', + 'yz_goods_weight_value.agent_quantity', + 'yz_goods_weight_value.agent_ladder', + 'yz_goods_weight_value.province_gift_type', + 'yz_goods_weight_value.province_calculation_type', + 'yz_goods_weight_value.province_quantity', + 'yz_goods_weight_value.province_ladder', ]) ->get() ->makeHidden(['order','after_sales','buttons']); @@ -115,10 +130,10 @@ class WeightValue extends BaseModel{ return $list ? $list->toArray() : []; } /** - * Common: 购买商品赠送权重值 - 获取上级信息 + * Common: 赠送权重值 - 获取上级信息 * Author: wu-hui - * Time: 2023/10/12 11:06 - * @param $uid + * Time: 2023/10/23 14:51 + * @param $uid * @return array */ private function getParent($uid){ @@ -127,7 +142,6 @@ class WeightValue extends BaseModel{ ->where('member_id', $uid) ->select(['parent_id','level']) ->orderBy('level', 'asc') - ->limit(2)// 由于最多只分三层,这里只获取直推上级及其上级 ->get() ->toArray(); // 包含购买人 @@ -135,7 +149,13 @@ class WeightValue extends BaseModel{ $uidS = array_column($parents,'parent_id'); // 获取经销商信息 $teamDividend = TeamDividendAgencyModel::uniacid() - ->select(['uid','level','is_black']) + ->join('yz_team_dividend_level', 'yz_team_dividend_level.id', '=', 'yz_team_dividend_agency.level') + ->select([ + 'yz_team_dividend_agency.uid', + 'yz_team_dividend_agency.level', + 'yz_team_dividend_agency.is_black', + 'yz_team_dividend_level.identity_type', + ]) ->whereIn('uid',$uidS) ->get(); $teamDividend = $teamDividend ? $teamDividend->keyBy('uid')->toArray() : []; @@ -150,63 +170,108 @@ class WeightValue extends BaseModel{ $weightValueGroup[$weightValueItem['member_id']][$weightValueItem['team_dividend_agency_level_id']] = $weightValueItem; } // 获取全部经销商 以此来获取排名信息 - $allTeamDividend = TeamDividendAgencyModel::uniacid()->pluck('uid')->toArray(); - $allTeamDividend = array_flip($allTeamDividend); + $allTeamDividend = TeamDividendLevelModel::getRanking(); $agents = []; foreach($parents as $memberInfo){ $teamDividendInfo = $teamDividend[$memberInfo['parent_id']] ?? []; - // 判断:仅经销商 且 不是黑名单的用户才会赠送 - $isBlack = (int)$teamDividendInfo['is_black'] ?? 0;// 是否为黑名单 - if($teamDividendInfo && $isBlack != 1) { - $teamDividendInfo['ranking'] = ((int)$allTeamDividend[$memberInfo['parent_id']] + 1); + if($teamDividendInfo) { + $currentRank = $allTeamDividend[(int)$teamDividendInfo['level']]['up_log'] ?? []; + $teamDividendInfo['ranking'] = ($currentRank[$memberInfo['parent_id']] + 1); $weightValue = $weightValueGroup[$memberInfo['parent_id']][(int)$teamDividendInfo['level']] ?? [ 'uniacid' => \YunShop::app()->uniacid, 'member_id' => $memberInfo['parent_id'], 'team_dividend_agency_level_id' => (int)$teamDividendInfo['level'], 'quantity' => 0, ]; - $agents[] = [ + $agents[$memberInfo['parent_id']] = [ 'uid' => $memberInfo['parent_id'], 'level' => $memberInfo['level'], + 'is_black' => (int)$teamDividendInfo['is_black'] ?? 0,// 是否为黑名单 'team_dividend_agency_level_id' => (int)$teamDividendInfo['level'], + 'identity_type' => (int)$teamDividendInfo['identity_type'], 'weight_value' => $weightValue, 'teamDividend' => $teamDividendInfo ]; } } + // 处理上级列表 取前二 + $parentList = $agents; + // unset($parentList[$uid]); + $sort = array_column($parentList,'level'); + array_multisort($parentList,SORT_ASC,$sort); + array_column($parentList,null,'uid'); + $parentList = array_splice($parentList,0,2); + // 获取代理商信息 这里只取第一个代理商 + $agentInfo = collect($agents) + ->where('identity_type',2) + ->where('uid','!=',$uid) + ->first(); - return $agents; + return [ + // 当前用户 + 'current_user' => [$uid => $agents[$uid]], + // 上级列表 + 'parents' => array_column($parentList,null,'uid'), + // 代理商 + 'agents' => [$agentInfo['uid'] => $agentInfo], + ]; } /** * Common: 购买商品赠送权重值 - 获取应得权重值 * Author: wu-hui - * Time: 2023/10/12 14:03 + * Time: 2023/10/23 15:28 * @param $currentSale * @param $agentInfo - * @return float|int + * @return float */ private function getWeightValue($currentSale,$agentInfo){ - if((int)$currentSale['gift_type'] == 0){ - // 赠送固定值 - return $currentSale['quantity']; - }else if($agentInfo['teamDividend']){ - // 阶梯赠送 阶梯判断条件必须按照从大到小排序 - $ladderList = json_decode($currentSale['ladder'],true); - array_multisort(array_column($ladderList,'where'),SORT_ASC, $ladderList); - $ranking = (int)$agentInfo['teamDividend']['ranking']; - $weightValueNum = 0; - foreach($ladderList as $ladder){ - if($ranking <= $ladder['where'] && $ranking > 0){ - $weightValueNum = (float)$ladder['num']; - break; - } - } - - return $weightValueNum; - }else { - return (float)0; + $deservedValue = 0;// 应得权重值(固定值||比例) + $calculationType = 0;// 计算类型:0=固定值,1=支付比例 + // 获取应得值 特殊身份:0=无特殊身份,1=经纪人,2=代理商,3=省级代理 + switch($agentInfo['identity_type']){ + // 经纪人处理 + case 1: + $calculationType = (int)$currentSale['calculation_type']; + if((int)$currentSale['gift_type'] == 0) $deservedValue = $currentSale['quantity'];// 赠送固定值 + else if($agentInfo['teamDividend']) $deservedValue = $this->getRankGive($currentSale['ladder'],(int)$agentInfo['teamDividend']['ranking']);// 阶梯赠送 + else $deservedValue = (float)0; + break; + // 代理商处理 + case 2: + $calculationType = (int)$currentSale['agent_calculation_type']; + if((int)$currentSale['agent_gift_type'] == 0) $deservedValue = $currentSale['agent_quantity']; + else if($agentInfo['teamDividend']) $deservedValue = $this->getRankGive($currentSale['agent_ladder'],(int)$agentInfo['teamDividend']['ranking']); + else $deservedValue = (float)0; + break; } + // 判断:是固定值还是比例,固定金额需要乘以商品购买数量,比例根据商品实际支付价格的比例 + if((int)$calculationType == 1) return (float)sprintf("%.2f",$currentSale['payment_amount'] * $deservedValue / 100);// 实际支付金额的比例 + else return (float)sprintf("%.2f",$currentSale['total'] * $deservedValue);// 总数量 * 应得权重值 = 总应得权重值 } + /** + * Common: 获取排名奖 + * Author: wu-hui + * Time: 2023/10/23 15:18 + * @param $ladder + * @param $ranking + * @return float + */ + private function getRankGive($ladder,$ranking){ + $ladderList = json_decode($ladder,true); + array_multisort(array_column($ladderList,'where'),SORT_ASC, $ladderList); + $weightValueNum = 0; + foreach($ladderList as $ladder){ + if($ranking <= $ladder['where'] && $ranking > 0){ + $weightValueNum = (float)$ladder['num']; + break; + } + } + + return (float)$weightValueNum; + } + + + /** * Common: 经销商升级赠送权重值 - 开始处理 * Author: wu-hui @@ -216,8 +281,11 @@ class WeightValue extends BaseModel{ */ public function upgradeGiveInit($uid,$levelId){ \Log::debug('------经销商升级赠送权重值 - 开始处理------',['uid'=>$uid,'level_id'=>$levelId]); - $parents = $this->getParent($uid);// 获取当前用户及上级信息 - $levelWvSet = $this->getLevelWeightValue($levelId);// 等级赠送设置信息 + // 获取当前用户及上级信息 + $agents = $this->getParent($uid); + $parents = array_merge($agents['current_user'],$agents['parents']); + // 等级赠送设置信息 + $levelWvSet = $this->getLevelWeightValue($levelId); if(!$levelWvSet){ \Log::debug('------经销商升级赠送权重值 - 错误 - 当前等级不存在设置信息------',$levelId); return; @@ -243,7 +311,7 @@ class WeightValue extends BaseModel{ // 用户当前持有的权重值 $currentAgentHasWeightValue = (float)$parents[$agentKey]['weight_value']['quantity'] ?? 0; // 获取当前用户应得的权重值 - $weightValue = (float)sprintf("%.2f",$this->getWeightValue($levelWvSet,$agentInfo)); + $weightValue = (float)sprintf("%.2f",$this->getGiveWeightValue($levelWvSet,$agentInfo)); // 应得权重值大于0 记录改变信息并且修改持有权重值 if((float)$weightValue > 0){ $changeAfter = sprintf("%.2f",($currentAgentHasWeightValue + $weightValue)); @@ -286,6 +354,30 @@ class WeightValue extends BaseModel{ return $first ? $first->toArray() : []; } + /** + * Common: 经销商升级赠送权重值 - 获取应得权重值 + * Author: wu-hui + * Time: 2023/10/23 15:10 + * @param $currentSale + * @param $agentInfo + * @return float|int + */ + private function getGiveWeightValue($currentSale,$agentInfo){ + if((int)$currentSale['gift_type'] == 0){ + // 赠送固定值 + return (float)$currentSale['quantity']; + }else if($agentInfo['teamDividend']){ + // 阶梯赠送 阶梯判断条件必须按照从大到小排序 + return (float)$this->getRankGive($currentSale['ladder'],(int)$agentInfo['teamDividend']['ranking']); + }else { + return (float)0; + } + } + + + + + /** diff --git a/plugins/weight-value/views/widget/marketing/weight_value.js b/plugins/weight-value/views/widget/marketing/weight_value.js index bd7e799f..d42f6016 100644 --- a/plugins/weight-value/views/widget/marketing/weight_value.js +++ b/plugins/weight-value/views/widget/marketing/weight_value.js @@ -3,17 +3,25 @@ define({ template:`
-
-
-
权重值设置
-
关闭 开启
仅存在经销商身份的用户可以获得权重值
+
代理商:仅距离最近的第一个代理商有奖励
-
`, @@ -78,39 +175,123 @@ define({ return { json: { is_open: 0,// 是否开启购买商品赠送权重值:0=未开启,1=开启 + is_self_purchase: 0,// 是否开启自购:0=不开启,1=开启 gift_type: 0,// 赠送方式:0=赠送固定值,1=阶梯值赠送 lv_type: 0,// 赠送方式:0=二级,1=三级 + calculation_type: 0,// 计算类型:0=固定值,1=支付比例 quantity: 0,// 赠送数量 ladder: {},// 阶梯赠送信息 + agent_gift_type: 0,// 赠送方式:0=赠送固定值,1=阶梯值赠送 + agent_calculation_type: 0,// 计算类型:0=固定值,1=支付比例 + agent_quantity: 0,// 赠送数量 + agent_ladder: {},// 阶梯赠送信息 + province_gift_type: 0,// 赠送方式:0=赠送固定值,1=阶梯值赠送 + province_calculation_type: 0,// 计算类型:0=固定值,1=支付比例 + province_quantity: 0,// 赠送数量 + province_ladder: {},// 阶梯赠送信息 } } }, watch: { }, mounted() { - console.log(this.form); if (this.form) { let weight_value = this.form || {}; + console.log('商品权重值设置信息'); + console.log(weight_value); this.json.is_open = weight_value.is_open ? weight_value.is_open : 0; + this.json.is_self_purchase = weight_value.is_self_purchase ? weight_value.is_self_purchase : 0; this.json.gift_type = weight_value.gift_type ? weight_value.gift_type : 0; this.json.lv_type = weight_value.lv_type ? weight_value.lv_type : 0; + this.json.calculation_type = weight_value.calculation_type ? weight_value.calculation_type : 0; this.json.quantity = weight_value.quantity ? weight_value.quantity : 0; this.json.ladder = weight_value.ladder ? JSON.parse(weight_value.ladder) : {}; - } - console.log(this.json); + this.json.agent_gift_type = weight_value.agent_gift_type ? weight_value.agent_gift_type : 0; + this.json.agent_calculation_type = weight_value.agent_calculation_type ? weight_value.agent_calculation_type : 0; + this.json.agent_quantity = weight_value.agent_quantity ? weight_value.agent_quantity : 0; + this.json.agent_ladder = weight_value.agent_ladder ? JSON.parse(weight_value.agent_ladder) : {}; + + this.json.province_gift_type = weight_value.province_gift_type ? weight_value.province_gift_type : 0; + this.json.province_calculation_type = weight_value.province_calculation_type ? weight_value.province_calculation_type : 0; + this.json.province_quantity = weight_value.province_quantity ? weight_value.province_quantity : 0; + this.json.province_ladder = weight_value.province_ladder ? JSON.parse(weight_value.province_ladder) : {}; + } }, methods:{ - addLadder(){ - this.json.ladder = Object.values(this.json.ladder).concat({where: '', num: ''}); + addLadder(type = ''){ + if(type === 'agent') this.json.agent_ladder = Object.values(this.json.agent_ladder).concat({where: '', num: ''}); + else if(type === 'province') this.json.province_ladder = Object.values(this.json.province_ladder).concat({where: '', num: ''}); + else this.json.ladder = Object.values(this.json.ladder).concat({where: '', num: ''}); }, - delLadder(index){ - let ladder = Object.assign({},this.json.ladder); + delLadder(index,type = ''){ + let ladder = {}; + if(type === 'agent') ladder = Object.assign({},this.json.agent_ladder); + else if(type === 'province') ladder = Object.assign({},this.json.province_ladder); + else ladder = Object.assign({},this.json.ladder); + delete ladder[index]; - this.json.ladder = Object.values(ladder); + if(type === 'agent') this.json.agent_ladder = Object.values(ladder); + else if(type === 'province') this.json.province_ladder = Object.values(ladder); + else this.json.ladder = Object.values(ladder); }, validate(){ + let json = this.json; + // console.log("权重值信息处理 - validate:"); + // console.log(json); + if(parseInt(json.calculation_type) === 1){ + if(json.gift_type == 1){ + let isPass = false; + Object.values(json.ladder).forEach((item,index)=>{ + if(item.num <= 0 || item.num > 100) isPass = true; + }); + if(isPass) { + this.$message.error('经纪人设置-赠送数量比例不能小于等于0或者大于100') + return false + } + }else{ + if(json.quantity <= 0 || json.quantity > 100){ + this.$message.error('经纪人设置-赠送数量比例不能小于等于0或者大于100') + return false + } + } + } + if(parseInt(json.agent_calculation_type) === 1){ + if(json.agent_gift_type == 1){ + let isPass = false; + Object.values(json.agent_ladder).forEach((item,index)=>{ + if(item.num <= 0 || item.num > 100) isPass = true; + }); + if(isPass) { + this.$message.error('代理商设置-赠送数量比例不能小于等于0或者大于100') + return false + } + }else{ + if(json.agent_quantity <= 0 || json.agent_quantity > 100){ + this.$message.error('代理商设置-赠送数量比例不能小于等于0或者大于100') + return false + } + } + } + if(parseInt(json.province_calculation_type) === 1){ + if(json.province_gift_type == 1){ + let isPass = false; + Object.values(json.province_ladder).forEach((item,index)=>{ + if(item.num <= 0 || item.num > 100) isPass = true; + }); + if(isPass) { + this.$message.error('省公司设置-赠送数量比例不能小于等于0或者大于100') + return false + } + }else{ + if(json.province_quantity <= 0 || json.province_quantity > 100){ + this.$message.error('省公司设置-赠送数量比例不能小于等于0或者大于100') + return false + } + } + } + return this.json; } }