145 lines
5.5 KiB
PHP
145 lines
5.5 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\commission\model;
|
|
|
|
|
|
use addon\fenxiao\model\Fenxiao;
|
|
use app\model\BaseModel;
|
|
|
|
class WeightValue extends BaseModel{
|
|
/**
|
|
* Common: 获取用户权重值持有记录
|
|
* Author: wu-hui
|
|
* Time: 2024/05/04 15:24
|
|
* @param $page
|
|
* @param $params
|
|
* @param $siteId
|
|
* @return array
|
|
*/
|
|
public function getPageList($page, $params, $siteId){
|
|
// 判断:不是总平台 仅显示当前店铺相关抽成记录
|
|
if($siteId != $this->adminSiteId) $params['site_id'] = $siteId;
|
|
// 生成查询条件
|
|
$where = [];
|
|
if(isset($params['member_id']) && $params['member_id'] !== '') $where[] = ['a.member_id','=',$params['member_id']];
|
|
if(isset($params['site_id']) && $params['site_id'] !== '') $where[] = ['a.site_id','=',$params['site_id']];
|
|
// 关联查询
|
|
$join = [
|
|
[ 'member m', 'm.member_id = a.member_id', 'left' ],
|
|
[ 'site s', 's.site_id = a.site_id', 'left' ],
|
|
[ 'fenxiao_level fl', 'fl.level_id = a.level_id', 'left' ]
|
|
];
|
|
$field = [
|
|
'a.*',
|
|
'm.nickname',
|
|
'm.username',
|
|
'm.headimg',
|
|
's.site_name',
|
|
's.contacts_name',
|
|
'fl.level_name',
|
|
'fl.level_num',
|
|
];
|
|
$result = model('commission_weight_value')->pageList($where,$field,'a.id DESC',$page,PAGE_LIST_ROWS,'a',$join);
|
|
$result['is_admin'] = $siteId == $this->adminSiteId;
|
|
|
|
return $this->success($result);
|
|
}
|
|
/**
|
|
* Common: 获取用户权重值变更记录明细
|
|
* Author: wu-hui
|
|
* Time: 2024/05/04 16:07
|
|
* @param $page
|
|
* @param $params
|
|
* @return array
|
|
*/
|
|
public function getLogPageList($page, $params){
|
|
// 生成查询条件
|
|
$where = [];
|
|
if(isset($params['member_id']) && $params['member_id'] !== '') $where[] = ['member_id','=',$params['member_id']];
|
|
if(isset($params['site_id']) && $params['site_id'] !== '') $where[] = ['site_id','=',$params['site_id']];
|
|
if(isset($params['level_id']) && $params['level_id'] !== '') $where[] = ['level_id','=',$params['level_id']];
|
|
// 关联查询
|
|
$result = model('commission_weight_value_log')->pageList($where,true,'id DESC',$page,PAGE_LIST_ROWS);
|
|
|
|
return $this->success($result);
|
|
}
|
|
|
|
|
|
/**
|
|
* Common: 根据用户ID 获取所有有效上级持有权重值信息
|
|
* Author: wu-hui
|
|
* Time: 2024/05/04 13:45
|
|
* @param int $memberId
|
|
* @param int $siteId
|
|
* @param array $userHoldList
|
|
* @return array
|
|
*/
|
|
public function getUserHoldList(int $memberId,int $siteId,array $userHoldList = []){
|
|
// 获取用户所有上级
|
|
if(count($userHoldList) <= 0){
|
|
// 获取全部上级
|
|
$fenXiaoId = model('fenxiao')->getValue(['member_id'=>$memberId],'fenxiao_id');
|
|
$allSuperiorList = (new Fenxiao())->getAllSuperior($fenXiaoId);
|
|
unset($allSuperiorList[$memberId]);// 删除本人
|
|
if(count($allSuperiorList) <= 0) return [];// 不存在上级
|
|
// 循环处理 仅小区业绩消费才会获得权重值奖励
|
|
$userHoldList = [];// 符合条件的用户
|
|
$currentFenXiaoId = $fenXiaoId;
|
|
foreach($allSuperiorList as $userInfo){
|
|
// 判断:当前用户是否为上级的大区业绩的线
|
|
if(!(new Fenxiao())->isBigAreaPart((int)$currentFenXiaoId,(int)$userInfo['fenxiao_id'])){
|
|
$userHoldList[] = $userInfo;
|
|
}
|
|
$currentFenXiaoId = $userInfo['fenxiao_id'];
|
|
}
|
|
}
|
|
// 获取持有信息
|
|
$where = [
|
|
['site_id', '=', $siteId],
|
|
['member_id', 'in', array_column($userHoldList,'member_id')]
|
|
];
|
|
$field = 'id,site_id,member_id,level_id,quantity,CONCAT(member_id, "_", level_id) AS only_key';
|
|
$holdList = model('commission_weight_value')->getList($where,$field);
|
|
// 判断:是否有不存在的用户持有信息 有则先添加
|
|
$holdList = array_column($holdList,null,'only_key');
|
|
$onlyKeyList = array_column($holdList,'only_key');
|
|
$insertData = [];
|
|
// 判断:是否存在持有信息 不存在添加
|
|
$currentLevelList = [];
|
|
foreach($userHoldList as $userItem){
|
|
$onlyKey = $userItem['member_id'].'_'.$userItem['level_id'];
|
|
if(!in_array($onlyKey,$onlyKeyList)){
|
|
// 不存在 需要添加
|
|
$defaultData = [
|
|
'site_id' => $siteId,
|
|
'member_id' => $userItem['member_id'],
|
|
'level_id' => $userItem['level_id'],
|
|
'quantity' => 0,
|
|
];
|
|
$insertData[] = $defaultData;
|
|
}
|
|
else{
|
|
$currentLevelList[] = $holdList[$onlyKey];
|
|
}
|
|
}
|
|
// 存在新增加内容 增加然后再次执行
|
|
if(count($insertData) > 0) {
|
|
model('commission_weight_value')->addList($insertData);
|
|
|
|
return $this->getUserHoldList($memberId,$siteId,$userHoldList);
|
|
}
|
|
|
|
return $currentLevelList;
|
|
}
|
|
|
|
|
|
|
|
} |