添加:经销商列表显示当前经销商升级到每个等级的排名
修改:购买商品赠送权重值 修改:细分为经纪人赠送,代理商赠送,省公司赠送。 添加:购买配送赠送权重值 支持设置百分比
This commit is contained in:
parent
9655c2f58d
commit
24e7139815
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -112,6 +112,7 @@
|
|||
<th width="13.5%">成为经销商时间<br>升级时间</th>
|
||||
<th width="8.5%">经销商</th>
|
||||
<th width="10.5%">等级</th>
|
||||
<th style="width: 100px;">排名</th>
|
||||
<th width="8.5%">直属总经销商人数</th>
|
||||
<th width="8.5%">经销商比例<br>累计提成</th>
|
||||
<th width="8.5%">已结算提成<br>未结算提成</th>
|
||||
|
|
@ -159,7 +160,11 @@
|
|||
</div>
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@foreach($item['rank_list'] as $rankItem)
|
||||
<p>{{$rankItem['level_name']}}:{{$rankItem['ranking']}}</p>
|
||||
@endforeach
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{$item['total'] ?? 0}}人
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3,17 +3,25 @@ define({
|
|||
template:`
|
||||
<div class="weight_value">
|
||||
<el-form>
|
||||
<div class="vue-main-title">
|
||||
<div class="vue-main-title-left"></div>
|
||||
<div class="vue-main-title-content">权重值设置</div>
|
||||
</div>
|
||||
<div style="margin:0 auto;width:80%;">
|
||||
<el-form-item label="是否开启" label-width="155px">
|
||||
<el-radio v-model="json.is_open" :label="0">关闭</el-radio>
|
||||
<el-radio v-model="json.is_open" :label="1">开启</el-radio>
|
||||
<div class="form-item_tips">仅存在经销商身份的用户可以获得权重值</div>
|
||||
<div class="form-item_tips">代理商:仅距离最近的第一个代理商有奖励</div>
|
||||
</el-form-item>
|
||||
<template v-if="json.is_open == 1">
|
||||
</div>
|
||||
<template v-if="json.is_open == 1">
|
||||
<el-form-item label="是否开启自购" label-width="155px">
|
||||
<el-radio v-model="json.is_self_purchase" :label="0">不开启</el-radio>
|
||||
<el-radio v-model="json.is_self_purchase" :label="1">开启</el-radio>
|
||||
<div class="form-item_tips">开启:当前用户购买后根据当前用户的经销商等级进行赠送</div>
|
||||
</el-form-item>
|
||||
<div class="vue-main-title">
|
||||
<div class="vue-main-title-left"></div>
|
||||
<div class="vue-main-title-content">经纪人权重值设置</div>
|
||||
</div>
|
||||
<div style="margin:0 auto;width:80%;">
|
||||
<el-form-item label="赠送方式" label-width="155px">
|
||||
<el-radio v-model="json.gift_type" :label="0">普通赠送</el-radio>
|
||||
<el-radio v-model="json.gift_type" :label="1">阶梯赠送</el-radio>
|
||||
|
|
@ -23,36 +31,125 @@ define({
|
|||
<el-form-item label="赠送级别" label-width="155px">
|
||||
<el-radio v-model="json.lv_type" :label="0">二级</el-radio>
|
||||
<el-radio v-model="json.lv_type" :label="1">三级</el-radio>
|
||||
<div class="form-item_tips">二级:赠送购买人、购买人上级</div>
|
||||
<div class="form-item_tips">三级:赠送购买人、购买人上级、购买人上级的上级</div>
|
||||
<div class="form-item_tips">二级:赠送购买人上级</div>
|
||||
<div class="form-item_tips">三级:赠送购买人上级、购买人上级的上级</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="计算类型" label-width="155px">
|
||||
<el-radio v-model="json.calculation_type" :label="0">固定值</el-radio>
|
||||
<el-radio v-model="json.calculation_type" :label="1">支付比例</el-radio>
|
||||
<div class="form-item_tips">固定值:指定数量,支付比例:当前商品实际支付的比例</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="赠送数量" v-if="json.gift_type != 1" label-width="155px" prop="quantity">
|
||||
<el-input v-model.trim="json.quantity" maxlength="300" type="number">
|
||||
<template slot="append">权重值</template>
|
||||
<el-input v-model.trim="json.quantity" maxlength="300" type="number" style="width: 300px;">
|
||||
<template slot="append">{{ json.calculation_type == 0 ? '权重值' : '%' }}</template>
|
||||
</el-input>
|
||||
<div class="form-item_tips">如果设置为空或者0则不赠送权重值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="阶梯赠送" v-else label-width="155px">
|
||||
<div class="ladder-content">
|
||||
<div class="ladder-row" v-for="(item,index) in json.ladder" :key="index">
|
||||
<el-form-item>
|
||||
<el-input class="ladder-input" v-model="json.ladder[index]['where']" placeholder="名次" type="number">
|
||||
<template slot="prepend">小于等于</template>
|
||||
<template slot="append">名</template>
|
||||
</el-input>
|
||||
<el-input class="ladder-input" v-model="json.ladder[index]['num']" placeholder="权重值" type="number">
|
||||
<template slot="prepend">赠送</template>
|
||||
<template slot="append">{{ json.calculation_type == 0 ? '权重值' : '%' }}</template>
|
||||
</el-input>
|
||||
<el-button type="danger" size="medium" @click="delLadder(index)">删除</el-button>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-button type="primary" @click="addLadder">增加阶梯</el-button>
|
||||
<div class="form-item_tips">例如:设置小于等于10赠送100权重值;小于等于32赠送120权重值。则第1~10位经销商赠送100权重值,第11~32位经销商赠送120权重值,第33位及之后所有经销商均不赠送权重值</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="vue-main-title">
|
||||
<div class="vue-main-title-left"></div>
|
||||
<div class="vue-main-title-content">代理商权重值设置</div>
|
||||
</div>
|
||||
<div style="margin:0 auto;width:80%;">
|
||||
<el-form-item label="赠送方式" label-width="155px">
|
||||
<el-radio v-model="json.agent_gift_type" :label="0">普通赠送</el-radio>
|
||||
<el-radio v-model="json.agent_gift_type" :label="1">阶梯赠送</el-radio>
|
||||
<div class="form-item_tips">普通赠送:赠送指定的权重值</div>
|
||||
<div class="form-item_tips">阶梯赠送:根据用户成为经销商的时间顺序排序,获取对应的权重值;超过最大名次则不赠送权重值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="计算类型" label-width="155px">
|
||||
<el-radio v-model="json.agent_calculation_type" :label="0">固定值</el-radio>
|
||||
<el-radio v-model="json.agent_calculation_type" :label="1">支付比例</el-radio>
|
||||
<div class="form-item_tips">固定值:指定数量,支付比例:当前商品实际支付的比例</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="赠送数量" v-if="json.agent_gift_type != 1" label-width="155px" prop="quantity">
|
||||
<el-input v-model.trim="json.agent_quantity" maxlength="300" type="number" style="width: 300px;">
|
||||
<template slot="append">{{ json.agent_calculation_type == 0 ? '权重值' : '%' }}</template>
|
||||
</el-input>
|
||||
<div class="form-item_tips">如果设置为空或者0则不赠送权重值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="阶梯赠送" v-else label-width="155px">
|
||||
<div class="ladder-content">
|
||||
<div class="ladder-row" v-for="(item,index) in json.agent_ladder" :key="index">
|
||||
<el-form-item>
|
||||
<el-input class="ladder-input" v-model="json.agent_ladder[index]['where']" placeholder="名次" type="number">
|
||||
<template slot="prepend">小于等于</template>
|
||||
<template slot="append">名</template>
|
||||
</el-input>
|
||||
<el-input class="ladder-input" v-model="json.agent_ladder[index]['num']" placeholder="权重值" type="number">
|
||||
<template slot="prepend">赠送</template>
|
||||
<template slot="append">{{ json.agent_calculation_type == 0 ? '权重值' : '%' }}</template>
|
||||
</el-input>
|
||||
<el-button type="danger" size="medium" @click="delLadder(index,'agent')">删除</el-button>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-button type="primary" @click="addLadder('agent')">增加阶梯</el-button>
|
||||
<div class="form-item_tips">例如:设置小于等于10赠送100权重值;小于等于32赠送120权重值。则第1~10位经销商赠送100权重值,第11~32位经销商赠送120权重值,第33位及之后所有经销商均不赠送权重值</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="vue-main-title">
|
||||
<div class="vue-main-title-left"></div>
|
||||
<div class="vue-main-title-content">省公司权重值设置</div>
|
||||
</div>
|
||||
<div style="margin:0 auto;width:80%;">
|
||||
<el-form-item label="赠送方式" label-width="155px">
|
||||
<el-radio v-model="json.province_gift_type" :label="0">普通赠送</el-radio>
|
||||
<el-radio v-model="json.province_gift_type" :label="1">阶梯赠送</el-radio>
|
||||
<div class="form-item_tips">普通赠送:赠送指定的权重值</div>
|
||||
<div class="form-item_tips">阶梯赠送:根据用户成为经销商的时间顺序排序,获取对应的权重值;超过最大名次则不赠送权重值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="计算类型" label-width="155px">
|
||||
<el-radio v-model="json.province_calculation_type" :label="0">固定值</el-radio>
|
||||
<el-radio v-model="json.province_calculation_type" :label="1">支付比例</el-radio>
|
||||
<div class="form-item_tips">固定值:指定数量,支付比例:当前商品实际支付的比例</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="赠送数量" v-if="json.province_gift_type != 1" label-width="155px" prop="quantity">
|
||||
<el-input v-model.trim="json.province_quantity" maxlength="300" type="number" style="width: 300px;">
|
||||
<template slot="append">{{ json.province_calculation_type == 0 ? '权重值' : '%' }}</template>
|
||||
</el-input>
|
||||
<div class="form-item_tips">如果设置为空或者0则不赠送权重值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="阶梯赠送" v-else label-width="155px">
|
||||
<div class="ladder-content">
|
||||
<div class="ladder-row" v-for="(item,index) in json.ladder" :key="index">
|
||||
<div class="ladder-row" v-for="(item,index) in json.province_ladder" :key="index">
|
||||
<el-form-item>
|
||||
<el-input class="ladder-input" v-model="json.ladder[index]['where']" placeholder="名次" type="number">
|
||||
<el-input class="ladder-input" v-model="json.province_ladder[index]['where']" placeholder="名次" type="number">
|
||||
<template slot="prepend">小于等于</template>
|
||||
<template slot="append">名</template>
|
||||
</el-input>
|
||||
<el-input class="ladder-input" v-model="json.ladder[index]['num']" placeholder="权重值" type="number">
|
||||
<el-input class="ladder-input" v-model="json.province_ladder[index]['num']" placeholder="权重值" type="number">
|
||||
<template slot="prepend">赠送</template>
|
||||
<template slot="append">权重值</template>
|
||||
<template slot="append">{{ json.province_calculation_type == 0 ? '权重值' : '%' }}</template>
|
||||
</el-input>
|
||||
<el-button type="danger" size="medium" @click="delLadder(index)">删除</el-button>
|
||||
<el-button type="danger" size="medium" @click="delLadder(index,'province')">删除</el-button>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-button type="primary" @click="addLadder">增加阶梯</el-button>
|
||||
<el-button type="primary" @click="addLadder('province')">增加阶梯</el-button>
|
||||
<div class="form-item_tips">例如:设置小于等于10赠送100权重值;小于等于32赠送120权重值。则第1~10位经销商赠送100权重值,第11~32位经销商赠送120权重值,第33位及之后所有经销商均不赠送权重值</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
`,
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue