1008 lines
42 KiB
PHP
1008 lines
42 KiB
PHP
<?php
|
||
/**
|
||
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
||
* =========================================================
|
||
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
||
* ----------------------------------------------
|
||
* 官方网址: https://www.gobuysaas.com
|
||
* =========================================================
|
||
*/
|
||
namespace addon\fenxiao\model;
|
||
use addon\fenxiao\model\Config as ConfigModel;
|
||
use app\job\RelationshipChainChangesJob;
|
||
use app\model\BaseModel;
|
||
use app\model\member\Member;
|
||
use app\model\order\OrderCommon;
|
||
use app\model\system\Stat;
|
||
use think\facade\Db;
|
||
use think\facade\Queue;
|
||
|
||
/**
|
||
* 分销
|
||
*/
|
||
class Fenxiao extends BaseModel
|
||
{
|
||
|
||
public $fenxiao_status_zh = [
|
||
1 => '正常',
|
||
-1 => '冻结',
|
||
];
|
||
|
||
/**
|
||
* 添加分销商
|
||
* @param $data
|
||
* @return mixed
|
||
*/
|
||
public function addFenxiao($data)
|
||
{
|
||
$fenxiao_info = model('fenxiao')->getInfo(
|
||
[[ 'member_id', '=', $data[ 'member_id' ] ], [ 'is_delete', '=', 0 ] ],
|
||
'fenxiao_id'
|
||
);
|
||
if (!empty($fenxiao_info)) return $this->error('', '已经是分销商了');
|
||
$data[ 'fenxiao_no' ] = date('YmdHi') . rand(1000, 9999);
|
||
$data[ 'create_time' ] = time();
|
||
$data[ 'audit_time' ] = time();
|
||
model('fenxiao')->startTrans();
|
||
try {
|
||
if (!empty($data[ 'parent' ])) {
|
||
//添加上级分销商一级下线人数
|
||
model('fenxiao')->setInc([ [ 'fenxiao_id', '=', $data[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'one_child_fenxiao_num');
|
||
//获取上上级分销商id
|
||
$grand_parent_id = model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $data[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'parent');
|
||
if (!empty($grand_parent_id) && $grand_parent_id[ 'parent' ] != 0) {
|
||
//添加上上级分销商二级下线人数
|
||
model('fenxiao')->setInc([ [ 'fenxiao_id', '=', $grand_parent_id[ 'parent' ] ] ], 'two_child_fenxiao_num');
|
||
|
||
$data[ 'grand_parent' ] = $grand_parent_id[ 'parent' ];
|
||
}
|
||
// 分销商检测升级
|
||
event('FenxiaoUpgrade', [
|
||
'fenxiao_id' => $data[ 'parent' ]
|
||
]);
|
||
}
|
||
|
||
$res = model('fenxiao')->add($data);
|
||
$data['fenxiao_id'] = $res;
|
||
$nodeInfo = event('NodeParent', $data, true);
|
||
if ($nodeInfo) {
|
||
model('fenxiao')->update($nodeInfo, [['fenxiao_id', '=', $res]]);
|
||
}
|
||
|
||
//修改会员信息
|
||
model('member')->update([ 'fenxiao_id' => $res, 'is_fenxiao' => 1 ], [ [ 'member_id', '=', $data[ 'member_id' ] ] ]);
|
||
$stat_model = new Stat();
|
||
$stat_model->switchStat([ 'type' => 'add_fenxiao_member', 'data' => [ 'site_id' => $data[ 'site_id' ] ] ]);
|
||
model('fenxiao')->commit();
|
||
return $this->success($res);
|
||
} catch (\Exception $e) {
|
||
model('fenxiao')->rollback();
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 冻结
|
||
* @param $fenxiao_id
|
||
* @return array
|
||
*/
|
||
public function frozen($fenxiao_id)
|
||
{
|
||
$data = [
|
||
'status' => -1,
|
||
'lock_time' => time()
|
||
];
|
||
$res = model('fenxiao')->update($data, [ [ 'fenxiao_id', '=', $fenxiao_id ] ]);
|
||
return $this->success($res);
|
||
}
|
||
|
||
/**
|
||
* 解冻
|
||
* @param $fenxiao_id
|
||
* @return array
|
||
*/
|
||
public function unfrozen($fenxiao_id)
|
||
{
|
||
$data = [
|
||
'status' => 1,
|
||
'lock_time' => time()
|
||
];
|
||
|
||
$res = model('fenxiao')->update($data, [ [ 'fenxiao_id', '=', $fenxiao_id ] ]);
|
||
return $this->success($res);
|
||
}
|
||
|
||
/**
|
||
* 获取分销商详细信息
|
||
* @param array $condition
|
||
* @param string $field
|
||
* @return array
|
||
*/
|
||
public function getFenxiaoInfo($condition = [], $field = '*')
|
||
{
|
||
$condition[] = [ 'is_delete', '=', 0 ];
|
||
$res = model('fenxiao')->getInfo($condition, $field);
|
||
return $this->success($res);
|
||
}
|
||
|
||
/**
|
||
* 获取分销商详细信息
|
||
* @param array $condition
|
||
* @param string $field
|
||
* @return array
|
||
*/
|
||
public function getFenxiaoDetailInfo($condition = [])
|
||
{
|
||
$condition[] = [ 'f.is_delete', '=', 0 ];
|
||
$field = 'f.*,pf.fenxiao_name as parent_name,nm.username,nm.nickname,nm.headimg,nm.order_num,nm.order_money,fl.level_num';
|
||
$alias = 'f';
|
||
$join = [
|
||
[
|
||
'fenxiao pf',
|
||
'pf.fenxiao_id = f.parent',
|
||
'left'
|
||
],
|
||
[
|
||
'member nm',
|
||
'nm.member_id = f.member_id',
|
||
'left'
|
||
],
|
||
[
|
||
'fenxiao_level fl',
|
||
'f.level_id = fl.level_id',
|
||
'left'
|
||
]
|
||
];
|
||
$res = model('fenxiao')->getInfo($condition, $field, $alias, $join);
|
||
return $this->success($res);
|
||
}
|
||
|
||
/**
|
||
* 获取分销列表
|
||
* @param array $condition
|
||
* @param string $field
|
||
* @param string $order
|
||
* @param string $limit
|
||
*/
|
||
public function getFenxiaoList($condition = [], $field = '*', $order = '', $limit = null)
|
||
{
|
||
$condition[] = [ 'is_delete', '=', 0 ];
|
||
$list = model('fenxiao')->getList($condition, $field, $order, '', '', '', $limit);
|
||
return $this->success($list);
|
||
}
|
||
|
||
/**
|
||
* 获取分销分页列表
|
||
* @param array $condition
|
||
* @param number $page
|
||
* @param string $page_size
|
||
* @param string $order
|
||
* @param string $field
|
||
*/
|
||
public function getFenxiaoPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '')
|
||
{
|
||
$condition[] = [ 'f.is_delete', '=', 0 ];
|
||
$field = 'f.*,pf.fenxiao_name as parent_name,pf.mobile as parent_mobile,m.username,m.nickname,m.mobile as member_mobile,m.headimg';
|
||
$alias = 'f';
|
||
$join = [
|
||
[
|
||
'fenxiao pf',
|
||
'pf.fenxiao_id = f.parent',
|
||
'left'
|
||
],
|
||
[
|
||
'member m',
|
||
'm.member_id = f.member_id',
|
||
'left'
|
||
]
|
||
];
|
||
$list = model('fenxiao')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
|
||
if (!empty($list[ 'list' ])) {
|
||
foreach ($list[ 'list' ] as $k => $v) {
|
||
$team_num = $this->getFenxiaoTeamNum($v[ 'fenxiao_id' ], $v[ 'site_id' ]);
|
||
$list[ 'list' ][ $k ][ 'team_num' ] = $team_num[ 'data' ][ 'num' ];
|
||
// if (empty($v['username'])) $list['list'][$k]['username'] = '--';
|
||
// if (empty($v['nickname'])) $list['list'][$k]['nickname'] = '--';
|
||
// if (empty($v['member_mobile'])) $list['list'][$k]['member_mobile'] = '--';
|
||
}
|
||
}
|
||
return $this->success($list);
|
||
}
|
||
|
||
/**
|
||
* 获取分销分页列表2
|
||
* @param array $condition
|
||
* @param int $page
|
||
* @param int $page_size
|
||
* @param string $order
|
||
* @param string $field
|
||
* @return array
|
||
*/
|
||
public function getFenxiaoPageLists($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*', $alias = 'a', $join = null)
|
||
{
|
||
$list = model('fenxiao')->pageList($condition, $field, $order, $page, $page_size, $alias, $join, '');
|
||
return $this->success($list);
|
||
}
|
||
|
||
/**
|
||
* 获取分销商团队
|
||
* @param $level
|
||
* @param $fenxiao_id
|
||
* @param int $page
|
||
* @param int $page_size
|
||
* @param int $is_pay
|
||
* @return array
|
||
*/
|
||
public function getFenxiaoTeam($level, $fenxiao_id, $page = 1, $page_size = PAGE_LIST_ROWS, $is_pay = 0)
|
||
{
|
||
$condition = '';
|
||
// 下级分销商id集合
|
||
$one_level_fenxiao = model('fenxiao')->getColumn([ [ 'parent', '=', $fenxiao_id ] ], 'fenxiao_id');
|
||
switch ( $level ) {
|
||
// 一级分销
|
||
case 1:
|
||
// 直属会员 + 直属下级分销商
|
||
$or = " OR (f.parent = {$fenxiao_id}) ";
|
||
$condition = "( (m.fenxiao_id = {$fenxiao_id} AND m.is_fenxiao = 0) " . $or . ") AND m.is_delete = 0";
|
||
break;
|
||
// 二级分销
|
||
case 2:
|
||
// 直属下级分销商的下级分销商 + 直属下级分销商的会员
|
||
if (!empty($one_level_fenxiao)) {
|
||
$or = " OR (f.parent in (" . implode($one_level_fenxiao) . ") ) ";
|
||
$condition = "( (m.is_fenxiao = 0 AND m.fenxiao_id in (" . implode(',', $one_level_fenxiao) . ") )" . $or . ") AND m.is_delete = 0";
|
||
}
|
||
break;
|
||
}
|
||
if (empty($condition)) return $this->success([
|
||
'page_count' => 1,
|
||
'count' => 0,
|
||
'list' => []
|
||
]);
|
||
if ($is_pay) $condition .= ' AND m.order_num > 0';
|
||
$condition .= '';
|
||
$field = 'm.member_id,m.nickname,m.headimg,m.is_fenxiao,m.reg_time,m.order_money,m.order_complete_money,m.order_num,m.order_complete_num,m.bind_fenxiao_time,f.fenxiao_id,f.fenxiao_no,f.fenxiao_name,f.audit_time,f.level_name,f.one_child_num,f.one_child_fenxiao_num';
|
||
$alias = 'm';
|
||
$join = [
|
||
[ 'fenxiao f', 'm.member_id = f.member_id', 'left' ]
|
||
];
|
||
$list = model('member')->pageList($condition, $field, 'm.bind_fenxiao_time desc', $page, $page_size, $alias, $join);
|
||
return $this->success($list);
|
||
}
|
||
|
||
|
||
public function getFenxiaoTeamCount($level, $fenxiao_id, $is_pay = 0){
|
||
$condition = '';
|
||
// 下级分销商id集合
|
||
$one_level_fenxiao = model('fenxiao')->getColumn([ [ 'parent', '=', $fenxiao_id ] ], 'fenxiao_id');
|
||
switch ( $level ) {
|
||
// 一级分销
|
||
case 1:
|
||
// 直属会员 + 直属下级分销商
|
||
$or = " OR (f.parent = {$fenxiao_id}) ";
|
||
$condition = "( (m.fenxiao_id = {$fenxiao_id} AND m.is_fenxiao = 0) " . $or . ") AND m.is_delete = 0";
|
||
break;
|
||
// 二级分销
|
||
case 2:
|
||
// 直属下级分销商的下级分销商 + 直属下级分销商的会员
|
||
if (!empty($one_level_fenxiao)) {
|
||
$or = " OR (f.parent in (" . implode($one_level_fenxiao) . ") ) ";
|
||
$condition = "( (m.is_fenxiao = 0 AND m.fenxiao_id in (" . implode(',', $one_level_fenxiao) . ") )" . $or . ") AND m.is_delete = 0";
|
||
}
|
||
break;
|
||
}
|
||
if (empty($condition)) return 0;
|
||
if ($is_pay) $condition .= ' AND m.order_num > 0';
|
||
$condition .= '';
|
||
$alias = 'm';
|
||
$join = [
|
||
[ 'fenxiao f', 'm.member_id = f.member_id', 'left' ]
|
||
];
|
||
return model('member')->getCount($condition,'m.member_id',$alias,$join);
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 查询我的团队的数量
|
||
* @param unknown $fenxiao_id
|
||
* @return array
|
||
*/
|
||
public function getFenxiaoTeamNum($fenxiao_id, $site_id)
|
||
{
|
||
// 查询分销基础配置
|
||
$config_model = new Config();
|
||
$fenxiao_basic_config = $config_model->getFenxiaoBasicsConfig($site_id)[ 'data' ][ 'value' ];
|
||
$level = $fenxiao_basic_config[ 'level' ];
|
||
$num = model('member')->getCount([ [ 'fenxiao_id', '=', $fenxiao_id ], [ 'is_fenxiao', '=', 0 ], [ 'is_delete', '=', 0 ] ]);
|
||
// 下级分销商id集合
|
||
$one_level_fenxiao = model('fenxiao')->getColumn([ [ 'parent', '=', $fenxiao_id ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id');
|
||
$return = [
|
||
'num' => $num, // 总人数
|
||
'member_num' => $num, // 会员人数
|
||
'fenxiao_num' => 0 // 分销商人数
|
||
];
|
||
switch ( $level ) {
|
||
case 1:
|
||
$return[ 'num' ] += count($one_level_fenxiao);
|
||
$return[ 'fenxiao_num' ] += count($one_level_fenxiao);
|
||
break;
|
||
case 2:
|
||
if (!empty($one_level_fenxiao)) {
|
||
$return[ 'num' ] += count($one_level_fenxiao);
|
||
$return[ 'fenxiao_num' ] += count($one_level_fenxiao);
|
||
|
||
$num = model('member')->getCount([ [ 'fenxiao_id', 'in', $one_level_fenxiao ], [ 'is_fenxiao', '=', 0 ], [ 'is_delete', '=', 0 ] ]);
|
||
$return[ 'num' ] += $num;
|
||
$return[ 'member_num' ] += $num;
|
||
|
||
$num = model('fenxiao')->getCount([ [ 'parent', 'in', $one_level_fenxiao ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id');
|
||
$return[ 'num' ] += $num;
|
||
$return[ 'fenxiao_num' ] += $num;
|
||
}
|
||
break;
|
||
}
|
||
return $this->success($return);
|
||
}
|
||
|
||
/**
|
||
* 会员注册之后
|
||
* @param unknown $member_id
|
||
*/
|
||
public function memberRegister($member_id, $site_id)
|
||
{
|
||
//如果有推荐人则要修改分享关系
|
||
$member_model = new Member();
|
||
$member_info = $member_model->getMemberInfo([ [ 'member_id', '=', $member_id ] ], 'source_member')[ 'data' ];
|
||
if (!empty($member_info[ 'source_member' ])) {
|
||
$member_model->alterShareRelation($member_id, $member_info[ 'source_member' ], $site_id);
|
||
}
|
||
$this->autoBecomeFenxiao($member_id, $site_id);
|
||
}
|
||
|
||
/**
|
||
* 自动成为分销商
|
||
* @param unknown $member_id
|
||
*/
|
||
public function autoBecomeFenxiao($member_id, $site_id)
|
||
{
|
||
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ], [ 'is_delete', '=', 0 ] ], 'order_num,order_complete_num,order_money,order_complete_money,is_fenxiao');
|
||
if (empty($member_info)) return $this->error('', '未查询到会员信息');
|
||
$fenxiao_info = $this->getFenxiaoDetailInfo([ [ 'f.member_id', '=', $member_id ] ])[ 'data' ];
|
||
if (!empty($fenxiao_info) && $member_info[ 'is_fenxiao' ]) return $this->error('', '已经是分销商');
|
||
try {
|
||
$config = new Config();
|
||
// 分销商基础设置
|
||
$basics_config = $config->getFenxiaoBasicsConfig($site_id);
|
||
$basics_config = $basics_config[ 'data' ][ 'value' ];
|
||
if (!$basics_config[ 'level' ]) return $this->error('', '未开启分销');
|
||
if ($basics_config[ 'is_apply' ] != 0) return $this->error('', '成为分销商需进行申请');
|
||
// 成为分销商的资格
|
||
|
||
$fenxiao_config = $config->getFenxiaoConfig($site_id);
|
||
$fenxiao_config = $fenxiao_config[ 'data' ][ 'value' ];
|
||
|
||
switch ( $fenxiao_config[ 'fenxiao_condition' ] ) {
|
||
case 2:
|
||
// 消费次数
|
||
if ($fenxiao_config[ 'consume_condition' ] == 1 && $member_info[ 'order_num' ] < $fenxiao_config[ 'consume_count' ]) return $this->error('', '未满足成为分销商的条件');
|
||
if ($fenxiao_config[ 'consume_condition' ] == 2 && $member_info[ 'order_complete_num' ] < $fenxiao_config[ 'consume_count' ]) return $this->error('', '未满足成为分销商的条件');
|
||
break;
|
||
case 3:
|
||
// 消费金额
|
||
if ($fenxiao_config[ 'consume_condition' ] == 1 && bccomp($member_info[ 'order_money' ], $fenxiao_config[ 'consume_money' ], 2) == -1) return $this->error('', '未满足成为分销商的条件');
|
||
if ($fenxiao_config[ 'consume_condition' ] == 2 && bccomp($member_info[ 'order_complete_money' ], $fenxiao_config[ 'consume_money' ], 2) == -1) return $this->error('', '未满足成为分销商的条件');
|
||
break;
|
||
case 4:
|
||
// 购买指定商品
|
||
$condition = [
|
||
[ 'goods_id', 'in', $fenxiao_config[ 'goods_ids' ] ],
|
||
];
|
||
if ($fenxiao_config[ 'consume_condition' ] == 1) $condition[] = [ 'pay_status', '=', 1 ];
|
||
if ($fenxiao_config[ 'consume_condition' ] == 2) $condition[] = [ 'order_status', '=', OrderCommon::ORDER_COMPLETE ];
|
||
$count = model('order_goods')->getCount($condition, 'order_goods_id', 'og', [ [ 'order o', 'o.order_id = og.order_id', 'inner' ] ]);
|
||
if (!$count) return $this->error('', '未满足成为分销商的条件');
|
||
break;
|
||
}
|
||
return $this->directlyBecomeFenxiao($member_id);
|
||
} catch (\Exception $e) {
|
||
return $this->error();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 会员直接成为分销商
|
||
*/
|
||
public function directlyBecomeFenxiao($member_id)
|
||
{
|
||
//获取用户信息
|
||
$member_field = 'member_id,site_id,source_member,fenxiao_id,nickname,headimg,mobile,reg_time,order_money,order_complete_money,order_num,order_complete_num';
|
||
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ] ], $member_field);
|
||
|
||
if (!empty($member_info)) {
|
||
$parent = 0;
|
||
if (!empty($member_info[ 'source_member' ])) {
|
||
$fenxiao_info = model('fenxiao')->getInfo([ [ 'member_id', '=', $member_info[ 'source_member' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id');
|
||
if (!empty($fenxiao_info)) $parent = $fenxiao_info[ 'fenxiao_id' ];
|
||
}
|
||
//获取分销等级信息
|
||
$level_model = new FenxiaoLevel();
|
||
$level_info = $level_model->getLevelInfo([ [ 'site_id', '=', $member_info[ 'site_id' ] ], [ 'is_default', '=', 1 ] ], 'level_id,level_name');
|
||
|
||
$data = [
|
||
'site_id' => $member_info[ 'site_id' ],
|
||
'fenxiao_name' => $member_info[ 'nickname' ],
|
||
'mobile' => $member_info[ 'mobile' ],
|
||
'member_id' => $member_info[ 'member_id' ],
|
||
'parent' => $parent,
|
||
'level_id' => $level_info[ 'data' ][ 'level_id' ],
|
||
'level_name' => $level_info[ 'data' ][ 'level_name' ]
|
||
];
|
||
|
||
$res = $this->addFenxiao($data);
|
||
|
||
return $res;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 绑定上下线关系
|
||
* TODO 订单创建对返回结果进行检测 不可返回失败
|
||
* @param $param
|
||
* @return array|void
|
||
*/
|
||
public function bindRelation($param)
|
||
{
|
||
$site_id = $param[ 'site_id' ] ?? 0;
|
||
$member_id = $param[ 'member_id' ] ?? 0;
|
||
$action = $param[ 'action' ] ?? '';
|
||
$config = [
|
||
'alter_share_relation' => 1,//对应 首次点击链接后绑定
|
||
'order_create' => 2,//对应 首次下单后绑定
|
||
'order_pay' => 3,//对应 首次付款后绑定
|
||
];
|
||
if (!isset($config[ $action ])) return;
|
||
//检测触发场景和设置是否匹配
|
||
$config_model = new ConfigModel();
|
||
$child_condition = $config_model->getFenxiaoRelationConfig($site_id)[ 'data' ][ 'value' ][ 'child_condition' ];
|
||
if ($child_condition != $config[ $action ]) return;
|
||
//检测用户
|
||
$member_info = model('member')->getInfo([
|
||
[ 'member_id', '=', $member_id ],
|
||
], 'share_member,fenxiao_id');
|
||
if (empty($member_info)) return;
|
||
//如果已经是分销商 不可以再修改关系
|
||
if (!empty($member_info['fenxiao_id'])) return;
|
||
// 查询推荐人是否是分销商
|
||
$fenxiao_info = model('fenxiao')->getInfo([
|
||
[ 'member_id', '=', $member_info[ 'share_member' ] ],
|
||
[ 'is_delete', '=', 0 ],
|
||
], 'fenxiao_id');
|
||
if (empty($fenxiao_info)) return;
|
||
model('member')->startTrans();
|
||
try {
|
||
$member_data = [
|
||
'fenxiao_id' => $fenxiao_info[ 'fenxiao_id' ],
|
||
'bind_fenxiao_time' => time()
|
||
];
|
||
model('member')->update($member_data, [ [ 'member_id', '=', $member_id ] ]);
|
||
model('fenxiao')->setInc([ [ 'fenxiao_id', '=', $fenxiao_info[ 'fenxiao_id' ] ] ], 'one_child_num');
|
||
// 分销商检测升级
|
||
event('FenxiaoUpgrade', [
|
||
'fenxiao_id' => $fenxiao_info[ 'fenxiao_id' ]
|
||
]);
|
||
// 关系链改变
|
||
Queue::push(RelationshipChainChangesJob::class,[
|
||
'member_id' => $member_id
|
||
]);
|
||
model('member')->commit();
|
||
return $this->success();
|
||
} catch (\Exception $e) {
|
||
model('member')->rollback();
|
||
return;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 分销商检测升级
|
||
* @param unknown $fenxiao_id
|
||
*/
|
||
public function fenxiaoUpgrade($fenxiao_id, $orderId = 0){
|
||
$where = [
|
||
['f.fenxiao_id','=',$fenxiao_id],
|
||
['f.status','=',1],
|
||
['f.is_delete','=',0],
|
||
[ 'f.is_delete', '=', 0 ]
|
||
];
|
||
$join = [
|
||
[ 'member m', 'f.member_id = m.member_id', 'inner' ],
|
||
[ 'fenxiao_level fl', 'f.level_id = fl.level_id', 'inner' ]
|
||
];
|
||
$field = [
|
||
'f.level_id',
|
||
'm.order_num',
|
||
'm.order_money',
|
||
'f.one_fenxiao_order_num',
|
||
'f.one_fenxiao_order_money',
|
||
'f.one_fenxiao_total_order',
|
||
'f.one_child_num',
|
||
'f.one_child_fenxiao_num',
|
||
'fl.one_rate',
|
||
'fl.level_num',
|
||
'f.site_id'
|
||
];
|
||
$fenxiao_info = model('fenxiao')->getInfo($where, $field, 'f', $join);
|
||
|
||
if (!empty($fenxiao_info)) {
|
||
$level_list = model('fenxiao_level')->getList([
|
||
['site_id','=',$fenxiao_info['site_id']],
|
||
['level_num','>',$fenxiao_info['level_num']]
|
||
],'*','level_num asc,one_rate asc');
|
||
|
||
if (!empty($level_list)) {
|
||
$upgrade_level = null;
|
||
foreach ($level_list as $item) {
|
||
// 判断:是否需要判断购买指定商品之一升级
|
||
$goodsReach = true;// 默认条件达成
|
||
$goodsIds = $item['goods_ids'] ?? '';
|
||
$goodsIdsArr = $goodsIds && $orderId > 0 ? explode(',', $goodsIds) : [];
|
||
if($orderId > 0 && count($goodsIdsArr) > 0){
|
||
|
||
$isBuy = (int)model('order_goods')->getValue([
|
||
['order_id', '=', $orderId],
|
||
['goods_id', 'in', $goodsIdsArr],
|
||
],'order_goods_id');
|
||
|
||
$goodsReach = $isBuy > 0;
|
||
}
|
||
if($item['one_child_fenxiao_equal']){
|
||
$equal_where = [
|
||
['f.chain', 'like', '%' . $fenxiao_id . ',' . '%' ],
|
||
['f.status','=',1],
|
||
['f.is_delete','=',0],
|
||
['fl.level_num','>=',$fenxiao_info['level_num']],
|
||
];
|
||
//查询用户下线中是否有相同等级或更高的
|
||
$one_child_fenxiao_equal_num = model('fenxiao')->getCount($equal_where, '*', 'f', $join);
|
||
}else{
|
||
$one_child_fenxiao_equal_num = 0;
|
||
}
|
||
// 判断:是否升级
|
||
if ($item[ 'upgrade_type' ] == 2) {
|
||
// 需要满足全部条件
|
||
if ($fenxiao_info[ 'order_num' ] >= $item[ 'order_num' ]
|
||
&& $fenxiao_info[ 'order_money' ] >= $item[ 'order_money' ]
|
||
&& $fenxiao_info[ 'one_fenxiao_order_num' ] >= $item[ 'one_fenxiao_order_num' ]
|
||
&& $fenxiao_info[ 'one_fenxiao_total_order' ] >= $item[ 'one_fenxiao_total_order' ]
|
||
&& $fenxiao_info[ 'one_fenxiao_order_money' ] >= $item[ 'one_fenxiao_order_money' ]
|
||
&& $fenxiao_info[ 'one_child_num' ] >= $item[ 'one_child_num' ]
|
||
&& (($fenxiao_info[ 'one_child_fenxiao_num' ] >= $item[ 'one_child_fenxiao_num' ] && $item['one_child_fenxiao_equal'] == 0) || ($item['one_child_fenxiao_equal'] == 1 && $one_child_fenxiao_equal_num >= $item[ 'one_child_fenxiao_num' ]))
|
||
&& $goodsReach
|
||
) {
|
||
$upgrade_level = $item;
|
||
break;
|
||
}
|
||
}
|
||
else {
|
||
// 满足条件之一即可
|
||
if (($fenxiao_info[ 'order_num' ] >= $item[ 'order_num' ] && $item[ 'order_num' ] > 0 )
|
||
|| ( $fenxiao_info[ 'order_money' ] >= $item[ 'order_money' ] && $item[ 'order_money' ] > 0 )
|
||
|| ( $fenxiao_info[ 'one_fenxiao_order_num' ] >= $item[ 'one_fenxiao_order_num' ] && $item[ 'one_fenxiao_order_num' ] > 0 )
|
||
|| ( $fenxiao_info[ 'one_fenxiao_order_money' ] >= $item[ 'one_fenxiao_order_money' ] && $item[ 'one_fenxiao_order_money' ] > 0 )
|
||
|| ( $fenxiao_info[ 'one_fenxiao_total_order' ] >= $item[ 'one_fenxiao_total_order' ] && $item[ 'one_fenxiao_total_order' ] > 0 )
|
||
|| ( $fenxiao_info[ 'one_child_num' ] >= $item[ 'one_child_num' ] && $item[ 'one_child_num' ] > 0 )
|
||
|| ( $fenxiao_info[ 'one_child_fenxiao_num' ] >= $item[ 'one_child_fenxiao_num' ] && $item[ 'one_child_fenxiao_num' ] > 0 && $item['one_child_fenxiao_equal'] == 0 )
|
||
|| ( $fenxiao_info[ 'one_child_fenxiao_num' ] >= $item[ 'one_child_fenxiao_num' ] && $item[ 'one_child_fenxiao_num' ] > 0 && $item['one_child_fenxiao_equal'] == 1 && $one_child_fenxiao_equal_num >= $item[ 'one_child_fenxiao_num' ])
|
||
|| ( $goodsReach && count($goodsIdsArr) > 0)
|
||
) {
|
||
|
||
$upgrade_level = $item;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if ($upgrade_level) {
|
||
model('fenxiao')->update([ 'level_id' => $upgrade_level[ 'level_id' ], 'level_name' => $upgrade_level[ 'level_name' ] ], [ [ 'fenxiao_id', '=', $fenxiao_id ] ]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取下一个可升级的分销商等级 及当前分销商已达成的条件
|
||
* @param $member_id
|
||
* @param $site_id
|
||
*/
|
||
public function geFenxiaoNextLevel($member_id, $site_id)
|
||
{
|
||
|
||
$array = [];
|
||
$join = [
|
||
[ 'member m', 'f.member_id = m.member_id', 'inner' ],
|
||
[ 'fenxiao_level fl', 'f.level_id = fl.level_id', 'inner' ]
|
||
];
|
||
$fenxiao_info = model('fenxiao')->getInfo(
|
||
[ [ 'f.member_id', '=', $member_id ], [ 'f.site_id', '=', $site_id ], [ 'f.status', '=', 1 ], [ 'f.is_delete', '=', 0 ] ],
|
||
'f.level_id,m.order_num,m.order_money,f.one_fenxiao_order_num,f.one_fenxiao_order_money,f.one_child_num,f.one_child_fenxiao_num,fl.one_rate,fl.level_num', 'f', $join
|
||
);
|
||
$array[ 'fenxiao' ] = $fenxiao_info;
|
||
$last_level = [];
|
||
if (!empty($fenxiao_info)) {
|
||
$last_level = model('fenxiao_level')->getFirstData([ [ 'site_id', '=', $site_id ], [ 'level_num', '>=', $fenxiao_info[ 'level_num' ] ], [ 'level_id', '<>', $fenxiao_info[ 'level_id' ] ] ], '*', 'level_num asc,one_rate asc');
|
||
}
|
||
$array[ 'last_level' ] = $last_level;
|
||
return $this->success($array);
|
||
}
|
||
|
||
/**
|
||
* 变更上下级关系
|
||
* @param $member_id
|
||
* @param $parent
|
||
*/
|
||
public function changeParentFenxiao($member_id, $parent)
|
||
{
|
||
if ($member_id == '' || $member_id == 0) {
|
||
return $this->error('', '参数member_id不能为空');
|
||
}
|
||
if ($parent == '' || $parent == 0) {
|
||
return $this->error('', '上级分销商不能为空');
|
||
}
|
||
|
||
//获取上级分销商id
|
||
$parent_info = model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $parent ], [ 'is_delete', '=', 0 ] ]);
|
||
if (empty($parent_info)) {
|
||
return $this->error('', '上级分销商不存在');
|
||
}
|
||
|
||
//用户信息
|
||
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ] ], 'fenxiao_id,is_fenxiao');
|
||
if (empty($member_info)) {
|
||
return $this->error('', '用户不存在');
|
||
}
|
||
|
||
model('fenxiao')->startTrans();
|
||
try {
|
||
$fenxiao_info = model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $member_info[ 'fenxiao_id' ] ], [ 'is_delete', '=', 0 ] ], 'parent');
|
||
if ($member_info[ 'is_fenxiao' ] == 1 && $fenxiao_info) {//是分销商
|
||
$fenxiao_info = model('fenxiao')->getInfo([['fenxiao_id', '=', $member_info['fenxiao_id']], ['is_delete', '=', 0]], 'parent,chain');
|
||
//修改原有上级分销商团队人数
|
||
if ($fenxiao_info['parent'] > 0) {
|
||
//获取原有上级分销商信息
|
||
model('fenxiao')->setDec([['fenxiao_id', '=', $fenxiao_info['parent']]], 'one_child_fenxiao_num');
|
||
$like = '%' . $fenxiao_info['chain'] . '%';
|
||
//修改下级的上上级id
|
||
model('fenxiao')->update(
|
||
['grand_parent' => $parent],
|
||
[['parent', '=', $member_info['fenxiao_id']], ['parent', '=', $fenxiao_info['parent']]]
|
||
);
|
||
} else {
|
||
$like = '%' . $member_info['fenxiao_id'] . ',%';
|
||
}
|
||
$old_chain = str_replace('%', '', $like);
|
||
$old_count = $this->getExplodeArrFilterCount($old_chain);
|
||
//修改变更后的上级分销商团队人数
|
||
model('fenxiao')->setInc([ [ 'fenxiao_id', '=', $parent ] ], 'one_child_fenxiao_num');
|
||
//修改上级分销商
|
||
$chain = $parent_info['chain'] ? $parent_info['chain'] . ',' . $member_info['fenxiao_id'] . ',' : $parent . ',' . $member_info['fenxiao_id'] . ',';
|
||
$count = $this->getExplodeArrFilterCount($chain);
|
||
model('fenxiao')->update(
|
||
['parent' => $parent,
|
||
'grand_parent' => $parent_info['parent'],
|
||
'chain' => $chain,
|
||
'depth_level' => $parent_info['depth_level'] + 1,
|
||
],
|
||
[['fenxiao_id', '=', $member_info['fenxiao_id']]]
|
||
);
|
||
|
||
$member_info_id = $member_info['fenxiao_id'];
|
||
|
||
//先修改下级节点深度
|
||
if ($old_count > $count) {
|
||
//如果旧的节点深度 > 新的节点深度,那么下级的节点深度统统减少
|
||
$sub = $old_count - $count;
|
||
model('fenxiao')->setDec([['chain', 'like', $like], ['fenxiao_id', '<>', $member_info_id]], 'depth_level', $sub);
|
||
} else if ($old_count < $count) {
|
||
//如果旧节点深度 < 新的节点深度,那么下级的节点深度都要增加
|
||
$add = $count - $old_count;
|
||
model('fenxiao')->setInc([['chain', 'like', $like], ['fenxiao_id', '<>', $member_info_id]], 'depth_level', $add);
|
||
}
|
||
//节点深度相同不作处理
|
||
|
||
//修改下级路由节点
|
||
$table = 'tk_fenxiao';
|
||
// $old_chain = $old_chain.',';
|
||
//修改fenxiao表,匹配chain字段是否有$old_chain字段中的值,替换成$chain,查询条件变换
|
||
$sql = "UPDATE `{$table}` SET chain = REPLACE(chain,'$old_chain','$chain') WHERE chain LIKE '$like' AND fenxiao_id <> '$member_info_id'";
|
||
Db::query($sql);
|
||
|
||
} else {//不是分销商
|
||
//修改上级分销商
|
||
model('member')->update([ 'fenxiao_id' => $parent ], [ [ 'member_id', '=', $member_id ] ]);
|
||
//修改变更后的上级分销商团队人数
|
||
model('fenxiao')->update([ 'one_child_num' => $parent_info[ 'one_child_num' ] + 1 ], [ [ 'fenxiao_id', '=', $parent ] ]);
|
||
}
|
||
// 关系链改变
|
||
Queue::push(RelationshipChainChangesJob::class,[
|
||
'member_id' => $member_id
|
||
]);
|
||
model('fenxiao')->commit();
|
||
return $this->success();
|
||
} catch (\Exception $e) {
|
||
model('fenxiao')->rollback();
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 取消上级分销商
|
||
* @param $member_id
|
||
* @param $parent
|
||
*/
|
||
public function cancelParentFenxiao($member_id)
|
||
{
|
||
if ($member_id == '' || $member_id == 0) {
|
||
return $this->error('', '参数member_id不能为空');
|
||
}
|
||
//用户信息
|
||
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ] ], 'fenxiao_id,is_fenxiao');
|
||
if (empty($member_info)) {
|
||
return $this->error('', '用户不存在');
|
||
}
|
||
model('fenxiao')->startTrans();
|
||
try {
|
||
if ($member_info['is_fenxiao'] == 1) {//是分销商
|
||
$fenxiao_info = model('fenxiao')->getInfo(
|
||
[['fenxiao_id', '=', $member_info['fenxiao_id']], ['is_delete', '=', 0]],
|
||
);
|
||
//修改原有上级分销商团队人数
|
||
if ($fenxiao_info['parent'] > 0) {
|
||
//获取原有上级分销商信息
|
||
model('fenxiao')->setDec([['fenxiao_id', '=', $fenxiao_info['parent']]], 'one_child_fenxiao_num');
|
||
$like = '%' . $fenxiao_info['chain'] . '%';
|
||
} else {
|
||
$like = '%,' . $member_info['fenxiao_id'] . ',%';
|
||
}
|
||
$old_chain = str_replace('%', '', $like);
|
||
$old_count = $this->getExplodeArrFilterCount($old_chain);
|
||
$chain = '';
|
||
//修改上级分销商和路由节点
|
||
model('fenxiao')->update(['parent' => '0', 'grand_parent' => '0', 'chain' => $chain, 'depth_level' => 1], [['fenxiao_id', '=', $member_info['fenxiao_id']]]);
|
||
|
||
//先修改下级节点深度
|
||
$member_info_id = $member_info['fenxiao_id'];
|
||
//下级的节点深度统统减少
|
||
$sub = $old_count - 1;
|
||
model('fenxiao')->setDec([['chain', 'like', $like], ['fenxiao_id', '<>', $member_info_id]], 'depth_level', $sub);
|
||
|
||
//修改下级路由节点
|
||
$chain = ',' . $member_info_id . ',';
|
||
$table = 'tk_fenxiao';
|
||
//修改fenxiao表,匹配chain字段是否有$old_chain字段中的值,替换成$chain,查询条件变换
|
||
$sql = "UPDATE `{$table}` SET chain = REPLACE(chain,'$old_chain','$chain') WHERE chain LIKE '$like' AND fenxiao_id <> '$member_info_id'";
|
||
Db::query($sql);
|
||
|
||
}
|
||
model('fenxiao')->commit();
|
||
return $this->success();
|
||
} catch (\Exception $e) {
|
||
model('fenxiao')->rollback();
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取上级分销商名称
|
||
* @param $fenxiao_id
|
||
* @param int $type 1-上级
|
||
* @return mixed|string
|
||
*/
|
||
public function getParentFenxiaoName($fenxiao_id, $type = 1)
|
||
{
|
||
if ($fenxiao_id == 0) {
|
||
return '';
|
||
}
|
||
if ($type == 1) {
|
||
$fenxiao_name = model('fenxiao')->getValue([ [ 'fenxiao_id', '=', $fenxiao_id ] ], 'fenxiao_name');
|
||
return $fenxiao_name;
|
||
} else {
|
||
$parent = model('fenxiao')->getValue([ [ 'fenxiao_id', '=', $fenxiao_id ] ], 'parent');
|
||
if ($parent == 0) {
|
||
return '';
|
||
} else {
|
||
$fenxiao_name = model('fenxiao')->getValue([ [ 'fenxiao_id', '=', $parent ] ], 'fenxiao_name');
|
||
return $fenxiao_name;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 会员注销删除分销商
|
||
* @param $member_id
|
||
* @param $site_id
|
||
* @return array
|
||
*/
|
||
public function CronMemberCancel($member_id, $site_id)
|
||
{
|
||
$info = model('fenxiao')->getInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ] ]);
|
||
if (empty($info)) {
|
||
return $this->success();
|
||
}
|
||
//冻结账户并删除
|
||
$data = [
|
||
'status' => -1,
|
||
'lock_time' => time(),
|
||
'is_delete' => 1
|
||
];
|
||
$res = model('fenxiao')->update($data, [ [ 'fenxiao_id', '=', $info[ 'fenxiao_id' ] ] ]);
|
||
return $this->success($res);
|
||
}
|
||
|
||
/**
|
||
* 变更分销商等级
|
||
* @param array $condition
|
||
* @param string $field
|
||
* @param string $order
|
||
* @param string $limit
|
||
*/
|
||
public function changeFenxiaoLevel($data, $condition)
|
||
{
|
||
$result = model('fenxiao')->update($data, $condition);
|
||
return $this->success($result);
|
||
}
|
||
|
||
/**
|
||
* 获取分销等级分销商数量
|
||
*/
|
||
public function getFenxiaoMemberCount($condition)
|
||
{
|
||
$condition[] = [ 'is_delete', '=', 0 ];
|
||
$count = model('fenxiao')->getCount($condition);
|
||
return $count;
|
||
}
|
||
|
||
/**
|
||
* 获取分销商排名
|
||
* @param $site_id
|
||
* @param $fenxiao_id
|
||
* @param $order
|
||
* @return array
|
||
*/
|
||
public function getFenxiaoRanking($site_id, $fenxiao_id, $order)
|
||
{
|
||
$prefix = config('database.connections.mysql.prefix');
|
||
$version = model('fenxiao')->query('SELECT VERSION() as version')[ 0 ][ 'version' ];
|
||
|
||
if (substr($version, 0, 1) == 8) {
|
||
$query = "SELECT * FROM (select *,row_number() OVER(order by {$order} DESC) as rownum from {$prefix}fenxiao nf) AS f WHERE f.fenxiao_id = {$fenxiao_id}";
|
||
} else {
|
||
$query = "SELECT b.rownum FROM (SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r,(SELECT * FROM {$prefix}fenxiao WHERE site_id = {$site_id} ORDER BY {$order} DESC,fenxiao_id ASC) AS t) AS b WHERE b.fenxiao_id = {$fenxiao_id};";
|
||
}
|
||
$data = model('fenxiao')->query($query);
|
||
$data = empty($data) ? 0 : $data[ 0 ][ 'rownum' ];
|
||
return $this->success($data);
|
||
}
|
||
|
||
|
||
/**
|
||
* Common: 获取某个用户全部上级
|
||
* Author: wu-hui
|
||
* Time: 2024/05/04 10:55
|
||
* @param $fenXiaoId
|
||
* @param array $superiorList
|
||
* @param int $level
|
||
* @return array
|
||
*/
|
||
public function getAllSuperior($fenXiaoId,array $superiorList = [],int $level = 1){
|
||
// 获取用户上级列表
|
||
$info = model('fenxiao')->getInfo(['fenxiao_id'=>$fenXiaoId],'member_id,level_id,parent,fenxiao_id');
|
||
// 判断:当前分销商是否已经存在数组中 如果已经存在则代理关系链进入循环中 直接返回
|
||
if(!empty($superiorList[$info['member_id']])) return $superiorList;
|
||
$superiorList[$info['member_id']] = [
|
||
'level' => $level,
|
||
'member_id' => $info['member_id'],
|
||
'parent' => $info['parent'],
|
||
'level_id' => $info['level_id'],
|
||
'fenxiao_id' => $info['fenxiao_id']
|
||
];
|
||
if(empty($info) || (int)$info['parent'] <= 0) return $superiorList;
|
||
return $this->getAllSuperior($info['parent'], $superiorList, ++$level);
|
||
}
|
||
/**
|
||
* Common: 判断:当前用户是否存在上级的大区团队中
|
||
* Author: wu-hui
|
||
* Time: 2024/05/04 13:34
|
||
* @param int $fenXiaoId
|
||
* @param int $spreadFenXiaoId
|
||
* @return bool
|
||
*/
|
||
public function isBigAreaPart(int $fenXiaoId,int $spreadFenXiaoId){
|
||
// 获取:当前上级的所有直推下级
|
||
$subIds = model('fenxiao')->getColumn(['parent'=>$spreadFenXiaoId],'fenxiao_id');
|
||
if(count($subIds) <= 1) return true;// 只有一条线 在大区业绩中
|
||
// 存在多条线 循环判断
|
||
$bigAreaFenXiaoIds = [];// 大区业绩所有用户的分销ID
|
||
$bigAreaMoney = 0;// 大全业绩金额
|
||
foreach($subIds as $subFenXiaoId){
|
||
// 获取全部下级
|
||
$subUserList = $this->getAllSubordinate([$subFenXiaoId]);
|
||
$currentLineFenXiaoId = array_merge(array_column($subUserList,'fenxiao_id'),[$subFenXiaoId]);
|
||
$memberIds = model('fenxiao')->getColumn([['fenxiao_id','in',$currentLineFenXiaoId]],'member_id');
|
||
// 获取当前线的业绩数量
|
||
$currentLineMoney = model('order_goods')->getSum([['member_id','in', $memberIds]], 'real_goods_money');
|
||
// 判断:当前线业绩 大于 当前大区业绩;更新大区信息
|
||
if($bigAreaMoney < $currentLineMoney) {
|
||
$bigAreaFenXiaoIds = $currentLineFenXiaoId;
|
||
$bigAreaMoney = $currentLineMoney;
|
||
}
|
||
}
|
||
|
||
return in_array($fenXiaoId,$bigAreaFenXiaoIds);// 当前用户id 存在大区用户id列表中;当前用户为大区团队成员
|
||
}
|
||
/**
|
||
* Common: 获取某个用户全部下级
|
||
* Author: wu-hui
|
||
* Time: 2024/05/04 11:35
|
||
* @param $fenXiaoIds
|
||
* @param array $subordinateList
|
||
* @param int $level
|
||
* @return array
|
||
*/
|
||
public function getAllSubordinate($fenXiaoIds,array $subordinateList = [],int $level = 1){
|
||
// 获取用户上级列表
|
||
$info = model('fenxiao')->getList([['parent','in',$fenXiaoIds]],"member_id,fenxiao_id,level_id,parent,{$level} as level");
|
||
// 判断:是否存在重复项 存在则删除 防止进入死循环
|
||
$infoFenXiaoIds = array_column($info,'fenxiao_id');
|
||
$hasFenXiaoIds = array_column($subordinateList,'fenxiao_id');
|
||
$info = array_column($info,null, 'fenxiao_id');
|
||
foreach($infoFenXiaoIds as $infoFenXiaoId){
|
||
if(in_array($infoFenXiaoId,$hasFenXiaoIds)) unset($info[$infoFenXiaoId]);
|
||
}
|
||
if(!empty($info)){
|
||
$subordinateList = array_merge($subordinateList,array_values($info));
|
||
|
||
return $this->getAllSubordinate(array_column($info,'fenxiao_id'), $subordinateList, ++$level);
|
||
}
|
||
|
||
return $subordinateList;
|
||
}
|
||
/**
|
||
* Common: 获取分销信息 如果不存在则添加
|
||
* Author: wu-hui
|
||
* Time: 2024/05/07 17:39
|
||
* @param $memberId
|
||
* @param bool $field
|
||
* @return mixed
|
||
*/
|
||
public function getAndCreateFenXiaoInfo($memberId, $field = true){
|
||
$fenXiaoInfo = model('fenxiao')->getInfo(['member_id'=>$memberId], $field);
|
||
if(!$fenXiaoInfo){
|
||
$this->directlyBecomeFenxiao($memberId);
|
||
|
||
return $this->getAndCreateFenXiaoInfo($memberId, $field);
|
||
}
|
||
|
||
return $fenXiaoInfo;
|
||
}
|
||
|
||
|
||
/**
|
||
* @param $data
|
||
* @param $explode
|
||
* @return int
|
||
* 获取分割后去除空白值的数组长度
|
||
*/
|
||
protected function getExplodeArrFilterCount($data, $explode = ',')
|
||
{
|
||
$data = explode($explode, $data);
|
||
$data = array_filter($data, function ($value) {
|
||
return !empty($value);
|
||
});
|
||
$count = count($data);
|
||
return $count;
|
||
}
|
||
|
||
|
||
}
|