jh-admin/addon/commission/model/WeightValue.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;
}
}