优化:分销商升级条件 直推间推多少人、团队业绩满多少支持和其他条件一起使用
修改:一级粉丝分销商满X人 不计算默认等级经销商
This commit is contained in:
parent
fd8e3858f2
commit
869c82b06c
|
|
@ -939,7 +939,7 @@ class SurveyController extends BaseController{
|
|||
// 获取存在数据的表
|
||||
$hasTable = $this->getHasDataTable($tables,$notCleanUp);
|
||||
|
||||
|
||||
debug($hasTable);
|
||||
// 执行清除操作
|
||||
// foreach($tables as $name){
|
||||
// if(!in_array($name,$notCleanUp)){
|
||||
|
|
|
|||
|
|
@ -70,13 +70,15 @@ class UpgrateByOrderJob implements ShouldQueue
|
|||
$agent = Agents::getAgentByMemberId($uid)->first();
|
||||
// 没有分销商数据 或 不允许升级
|
||||
if (!$agent || $agent->agent_not_upgrade) {
|
||||
file_put_contents(storage_path('logs/Y0914.txt'), print_r('UID['.$uid.']没有分销商数据 或 不允许升级, '.PHP_EOL,1), FILE_APPEND);
|
||||
\Log::debug('UID['.$uid.']没有分销商数据 或 不允许升级,');
|
||||
// file_put_contents(storage_path('logs/Y0914.txt'), print_r('UID['.$uid.']没有分销商数据 或 不允许升级, '.PHP_EOL,1), FILE_APPEND);
|
||||
} else {
|
||||
// 分销商的等级权重
|
||||
$agent_level_weight = isset($agent->agentLevel->level) ? $agent->agentLevel->level : 0;
|
||||
// uid 重新赋值
|
||||
$this->uid = $agent->member_id;
|
||||
file_put_contents(storage_path('logs/Y0914.txt'), print_r('time:'.date('Y-m-d H:i:s').',UID['.$this->uid.']要进行升级'.PHP_EOL,1), FILE_APPEND);
|
||||
\Log::debug('UID['.$this->uid.']要进行升级');
|
||||
// file_put_contents(storage_path('logs/Y0914.txt'), print_r('time:'.date('Y-m-d H:i:s').',UID['.$this->uid.']要进行升级'.PHP_EOL,1), FILE_APPEND);
|
||||
// 下一步
|
||||
$this->fecLevels($agent_level_weight);
|
||||
}
|
||||
|
|
@ -98,9 +100,8 @@ class UpgrateByOrderJob implements ShouldQueue
|
|||
// 判断条件
|
||||
$condition = $this->getCondition($level);
|
||||
|
||||
if ($condition) {
|
||||
continue;
|
||||
}
|
||||
if ($condition) continue;
|
||||
|
||||
// 触发升级条件判断
|
||||
$is_upgrate = $this->upgrateVerdict($level, $is_upgrate);
|
||||
if ($is_upgrate) {
|
||||
|
|
@ -133,7 +134,7 @@ class UpgrateByOrderJob implements ShouldQueue
|
|||
$function_name = Str::camel($upgrateType);
|
||||
// 验证方法是否存在 并 执行
|
||||
if(method_exists(new UpgrateConditionsService(), $function_name)) {
|
||||
$is_upgrate = UpgrateConditionsService::$function_name($this->uid, $level, $this->order, $level['upgraded']['self_order_after']);
|
||||
$is_upgrate = UpgrateConditionsService::$function_name($this->uid, $level, $this->order, $level['upgraded']['self_order_after'],$this->self_order_after);
|
||||
// 返回false 跳出循环
|
||||
if (!$is_upgrate) {
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -29,13 +29,16 @@ class FixController extends BaseController
|
|||
// plugin.commission.admin.fix.test
|
||||
public function test()
|
||||
{
|
||||
$levels = UpgradeService::getLevelUpgraded();
|
||||
$set = \Setting::get('plugin.commission');
|
||||
(new UpgrateByOrderJob($model->uid, 0, $model, $levels, $set))->handle();
|
||||
|
||||
|
||||
(new OrderCreatedListener())->handler(Order::find(230995));
|
||||
dd('ok');
|
||||
// $model = Order::find(276);
|
||||
// $levels = UpgradeService::getLevelUpgraded();
|
||||
// $set = \Setting::get('plugin.commission');
|
||||
// (new UpgrateByOrderJob($model->uid, 1, $model, $levels, $set))->handle();
|
||||
//
|
||||
// debug("完成")
|
||||
//
|
||||
// (new OrderCreatedListener())->handler(Order::find(230995));
|
||||
// dd('ok');
|
||||
}
|
||||
|
||||
public function up()
|
||||
|
|
|
|||
|
|
@ -9,17 +9,20 @@ namespace Yunshop\Commission\services;
|
|||
|
||||
|
||||
use app\common\models\member\ChildrenOfMember;
|
||||
use app\common\models\member\MemberParent;
|
||||
use app\common\models\Order;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Yunshop\Commission\models\Agents;
|
||||
use Yunshop\Commission\models\BlackLog;
|
||||
use Yunshop\Commission\models\CommissionOrder;
|
||||
use Yunshop\Commission\models\YzMember;
|
||||
use Yunshop\Love\Common\Models\LoveRecords;
|
||||
use Yunshop\Love\Common\Services\ConstService;
|
||||
use Yunshop\TeamDividend\admin\models\MemberChild;
|
||||
|
||||
class UpgrateConditionsService
|
||||
{
|
||||
public static function teamBuySum($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function teamBuySum($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$total = $level_model['upgraded']['team_buy_sum']['team_sum'];
|
||||
$goodsId = $level_model['upgraded']['team_buy_sum']['team_buy'];
|
||||
|
|
@ -50,7 +53,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 一级客户消费满x元 人数达到x个
|
||||
public static function buyAndSum($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function buyAndSum($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$status = $self_order_after == 1 ? 1: 3;
|
||||
|
||||
|
|
@ -76,7 +79,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 分销订单金额满x元
|
||||
public static function orderMoney($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function orderMoney($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$order = self::orderCommon($uid);
|
||||
// 比较
|
||||
|
|
@ -87,7 +90,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 分销订单数量满X个
|
||||
public static function orderCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function orderCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$order = self::orderCommon($uid);
|
||||
// 比较
|
||||
|
|
@ -98,7 +101,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 一级分销订单金额满X元
|
||||
public static function firstOrderMoney($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function firstOrderMoney($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$order = self::orderCommon($uid);
|
||||
// 一级层级分销订单
|
||||
|
|
@ -111,7 +114,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 一级分销订单数量满X个
|
||||
public static function firstOrderCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function firstOrderCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$order = self::orderCommon($uid);
|
||||
// 一级层级分销订单
|
||||
|
|
@ -124,7 +127,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 购买指定商品
|
||||
public static function goods($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function goods($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
// 如果订单是已付款 并且 等级设置不是 付款后 返回
|
||||
/*if ($order_model->status == 1 && $self_order_after != 1) {
|
||||
|
|
@ -179,7 +182,7 @@ class UpgrateConditionsService
|
|||
// }
|
||||
|
||||
// 自购订单金额满X元
|
||||
public static function selfBuyMoney($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function selfBuyMoney($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$status = $self_order_after == 1 ? 1: 3;
|
||||
|
||||
|
|
@ -191,7 +194,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 自购订单数量满X个
|
||||
public static function selfBuyCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function selfBuyCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$status = 3;
|
||||
if ($self_order_after == 1) {
|
||||
|
|
@ -205,7 +208,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 结算佣金满X元
|
||||
public static function settleMoney($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function settleMoney($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$agentModel = Agents::getAgentByMemberId($uid)->first();
|
||||
if ($agentModel->commission_total < $level_model['upgraded']['settle_money']) {
|
||||
|
|
@ -215,7 +218,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 粉丝数量满X人
|
||||
public static function lowerCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function lowerCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$memberPraentData = YzMember::getLowerData($uid)->get();
|
||||
if ($memberPraentData->count('member_id') < $level_model['upgraded']['lower_count']) {
|
||||
|
|
@ -225,7 +228,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 一级粉丝数量满X人
|
||||
public static function firstLowerCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function firstLowerCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$memberPraentData = YzMember::getLowerData($uid, '1')->get();
|
||||
if ($memberPraentData->count('member_id') < $level_model['upgraded']['first_lower_count']) {
|
||||
|
|
@ -235,7 +238,7 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 粉丝分销商满X人
|
||||
public static function lowerAgentCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function lowerAgentCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$agentPraentData = Agents::getLowerData($uid)->get();
|
||||
if ($agentPraentData->count('id') < $level_model['upgraded']['lower_agent_count']) {
|
||||
|
|
@ -245,9 +248,13 @@ class UpgrateConditionsService
|
|||
}
|
||||
|
||||
// 一级粉丝分销商满X人
|
||||
public static function firstLowerAgentCount($uid, $level_model, $order_model, $self_order_after)
|
||||
public static function firstLowerAgentCount($uid, $level_model, $order_model, $self_order_after,$current_self_order_after)
|
||||
{
|
||||
$agentPraentData = Agents::getLowerData($uid, '1')->get();
|
||||
$agentPraentData = Agents::getLowerData($uid,'1')
|
||||
->where(function($query){
|
||||
$query->where('agent_level_id','>',0)
|
||||
->orWhere('cultural_level_id','>',0);
|
||||
});
|
||||
if ($agentPraentData->count('id') < $level_model['upgraded']['first_lower_agent_count']) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -262,7 +269,7 @@ class UpgrateConditionsService
|
|||
* @return bool
|
||||
* 取消黑名单后累计自购订单冻结爱心值
|
||||
*/
|
||||
public static function selfLoveAfterBlack($uid, $level, $order, $self_order_after){
|
||||
public static function selfLoveAfterBlack($uid, $level, $order, $self_order_after,$current_self_order_after){
|
||||
if (!app('plugins')->isEnabled('love')) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -304,7 +311,7 @@ class UpgrateConditionsService
|
|||
* @return bool
|
||||
* 累计自购订单冻结爱心值
|
||||
*/
|
||||
public static function selfLove($uid, $level, $order, $self_order_after){
|
||||
public static function selfLove($uid, $level, $order, $self_order_after,$current_self_order_after){
|
||||
if (!app('plugins')->isEnabled('love')) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -340,4 +347,139 @@ class UpgrateConditionsService
|
|||
// 返回分销订单集合
|
||||
return $order;
|
||||
}
|
||||
|
||||
// 升级条件判断 - 直推间推多少人
|
||||
public static function oneOrTwo($memberId, $level, $order, $self_order_after,$current_self_order_after){
|
||||
try{
|
||||
$isPass = false;
|
||||
$type = (int)$current_self_order_after == 1 ? 'order_paid' : 'order_receive';
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 开始处理(与):',['member_id'=>$memberId,'type'=>$type]);
|
||||
// 分销商数据
|
||||
$agentModel = Agents::getAgentByMemberId($memberId)->first();
|
||||
if (!$agentModel) return false;
|
||||
// 获取全部上级
|
||||
$parentAgent = self::getParentsCommission($memberId);
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 本人及上级分销商信息:',$parentAgent);
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 等级信息:',$levels);
|
||||
$upgraded = $level['upgraded'] ?? [];
|
||||
$oneOrTwo = $upgraded['one_or_two'] ?? [];
|
||||
// 判断:支付后 完成后 是否存在对应的设置
|
||||
if(!empty($oneOrTwo) && (($type == 'order_receive' && (int)$upgraded['self_order_after'] != 1) || ($type == 'order_paid' && (int)$upgraded['self_order_after'] == 1))){
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 升级条件:',$oneOrTwo);
|
||||
// 循环所有上级 判断是否可以升级到当前等级
|
||||
foreach($parentAgent as $parentUser){
|
||||
if(($level['level_type'] == 1 ? (int)$parentUser['cultural_level']['level'] : (int)$parentUser['agent_level']['level']) < (int)$level['level']){
|
||||
$oneLvAndTwoLvNum = MemberParent::getOneOrTwoList($parentUser['member_id']);
|
||||
$subMemberIds = array_column($oneLvAndTwoLvNum,'member_id');
|
||||
$hasNum = (int)\Yunshop\Commission\models\Log::uniacid()
|
||||
->where('after_level_id',$oneOrTwo['one_or_two_level_id'])
|
||||
->whereIn('uid',$subMemberIds)
|
||||
->count(DB::raw('DISTINCT(uid)'));
|
||||
// 判断:是否达到升级要求 需求人数小于等于当前人数-达成升级条件
|
||||
$people = (int)$oneOrTwo['one_or_two_people'] > 0 ? (int)$oneOrTwo['one_or_two_people'] : 1;
|
||||
$isReach = (boolean)($people <= $hasNum);
|
||||
$validateResult = UpgradeService::validate($level, $parentUser['member_id']);
|
||||
// \Log::debug('分销商升级 - 直推间推人数 - 升级:',[
|
||||
// '当前分销商uid' => $parentUser['member_id'],
|
||||
// '当前分销商等级权重' => ($levelItem['level_type'] == 1 ? (int)$parentUser['cultural_level']['level'] : (int)$parentUser['agent_level']['level']),
|
||||
// '升级后等级权重' => (int)$levelItem['level'],
|
||||
// '一二下级id' => implode(',',$subMemberIds),
|
||||
// '拥有的人数' => $hasNum,
|
||||
// '条件人数' => $people,
|
||||
// '是否达成' => $isReach,
|
||||
// "直推间推{$levelNameList[$oneOrTwo['one_or_two_level_id']]}满{$people}人"
|
||||
// ]);
|
||||
if($isReach && $validateResult) $isPass = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $isPass;
|
||||
}catch(\Exception $e){
|
||||
\Log::debug('分销商升级 - 直推间推人数 - 错误(与):',$e->getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// 获取全部的本人及上级分销商信息
|
||||
public static function getParentsCommission($memberId){
|
||||
// $parents = MemberParent::uniacid()
|
||||
// ->where('member_id', $memberId)
|
||||
// ->select(['parent_id','level'])
|
||||
// ->orderBy('level', 'asc')
|
||||
// ->get()
|
||||
// ->keyBy('parent_id')
|
||||
// ->toArray();
|
||||
// $parentMemberIds = array_column($parents,'parent_id');
|
||||
$parentMemberIds[] = $memberId;
|
||||
$parentAgent = Agents::uniacid()
|
||||
->select(['member_id','agent_level_id','cultural_level_id','is_black'])
|
||||
->whereIn('member_id',$parentMemberIds)
|
||||
->get()
|
||||
->toArray();
|
||||
// 循环重构数组信息
|
||||
// foreach($parentAgent as &$agentInfo){
|
||||
// $agentInfo['distance'] = 0;//$parents[$agentInfo['member_id']]['level'];
|
||||
// }
|
||||
// array_multisort($parentAgent,SORT_ASC,array_column($parentAgent,'distance'));
|
||||
|
||||
// 这里是要本人
|
||||
return $parentAgent;
|
||||
}
|
||||
// 升级条件判断 - 团队业绩满多少
|
||||
public static function teamPerformance($memberId, $level, $order, $self_order_after,$current_self_order_after){
|
||||
try{
|
||||
$isPass = false;
|
||||
$type = (int)$current_self_order_after == 1 ? 'order_paid' : 'order_receive';
|
||||
// \Log::debug('分销商升级 - 团队业绩满多少 - 开始处理(与):',$memberId);
|
||||
// 分销商数据
|
||||
$agentModel = Agents::getAgentByMemberId($memberId)->first();
|
||||
if (!$agentModel) return false;
|
||||
// 获取全部上级
|
||||
$parentAgent = self::getParentsCommission($memberId);
|
||||
|
||||
$upgraded = $level['upgraded'] ?? [];
|
||||
$teamPerformance = $upgraded['team_performance'] ?? [];
|
||||
// 判断:支付后 完成后 是否存在对应的设置
|
||||
if(!empty($teamPerformance) && (($type == 'order_receive' && (int)$upgraded['self_order_after'] != 1) || ($type == 'order_paid' && (int)$upgraded['self_order_after'] == 1))){
|
||||
// \Log::debug('分销商升级 - 团队业绩满多少 - 升级条件:',$teamPerformance);
|
||||
// 循环所有上级 判断是否可以升级到当前等级
|
||||
foreach($parentAgent as $parentUser){
|
||||
if(($level['level_type'] == 1 ? (int)$parentUser['cultural_level']['level'] : (int)$parentUser['agent_level']['level']) < (int)$level['level']){
|
||||
// 获取直推下级列表
|
||||
$subIds = MemberChild::uniacid()
|
||||
->where('level',1)
|
||||
->where('member_id',$parentUser['member_id'])
|
||||
->pluck('child_id')
|
||||
->toArray();
|
||||
|
||||
if(count($subIds) <= 0) continue;
|
||||
$subPerformance = [];// 每条线的业绩
|
||||
foreach($subIds as $subUid){
|
||||
$lineAllUid = MemberChild::uniacid()->where('member_id',$subUid)->pluck('child_id')->toArray();
|
||||
$lineAllUid[] = $subUid;
|
||||
$subPerformance[$subUid] = Order::whereIn('uid',$lineAllUid)->where('status','>=',0)->sum('yz_order.price');
|
||||
}
|
||||
// 计算团队总业绩 判断:是否去除最大业绩
|
||||
$maxAmount = 0;
|
||||
if((int)$teamPerformance['team_performance_close_max'] == 1) $maxAmount = max($subPerformance);
|
||||
$teamOrderPrice = (float)sprintf("%.2f",array_sum($subPerformance) - $maxAmount);
|
||||
// 是否达到升级条件
|
||||
$validateResult = UpgradeService::validate($level, $parentUser['member_id']);
|
||||
if($teamOrderPrice >= (float)$teamPerformance['team_performance_total'] && $validateResult) {
|
||||
$isPass = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $isPass;
|
||||
}catch(\Exception $e){
|
||||
\Log::debug('分销商升级 - 团队业绩满多少 - 错误(与):',$e->getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue