jh-admin/addon/team/model/Team.php

140 lines
5.0 KiB
PHP

<?php
/**
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.gobuysaas.com
* =========================================================
*/
namespace addon\team\model;
use app\model\BaseModel;
use think\Exception;
use think\facade\Db;
class Team extends BaseModel{
/**
* Common: 获取团队成员列表
* Author: wu-hui
* Time: 2024/08/09 11:19
* @param $params
* @param $siteId
* @return array
*/
public function getPageList($params, $siteId){
$page = $params['page'] ?? 1;
$pageLimit = $params['limit'] ?? PAGE_LIST_ROWS;
// 生成查询条件
$where = [
'a.site_id' => $siteId
];
if(isset($params['member_id']) && $params['member_id'] !== '') $where[] = ['a.member_id', '=', $params['member_id']];
if(isset($params['level_id']) && $params['level_id'] !== '') $where[] = ['a.level_id','=',$params['level_id']];
$join = [
['team_level tl','tl.id = a.level_id','left'],
['member m', 'a.member_id = m.member_id', 'left'],
];
$field = 'a.*,tl.title,tl.weight,m.nickname,m.username,m.headimg';
$result = model('team')->pageList($where,$field,'a.id DESC',$page,$pageLimit,'a',$join);
// 获取部分统计信息
$memberModel = new \addon\team\model\Member();
foreach($result['list'] as &$item){
$item['one_people'] = $memberModel->getPeopleNum($item['member_id'],$item['site_id']);// 直推人数
$item['team_people'] = $memberModel->getPeopleNum($item['member_id'],$item['site_id'],'team');// 团队人数
$item['one_money'] = $memberModel->getMoneyNum($item['member_id'],$item['site_id']);// 直推业绩
$item['team_money'] = $memberModel->getMoneyNum($item['member_id'],$item['site_id'],'team');// 团队业绩
}
return $this->success($result);
}
/**
* Common: 获取等级变更记录
* Author: wu-hui
* Time: 2024/08/09 14:55
* @param $params
* @return array
*/
public function levelChangeLogRecord($params){
$page = $params['page'] ?? 1;
$pageLimit = $params['limit'] ?? PAGE_LIST_ROWS;
// 生成查询条件
$where = [
'team_id' => $params['team_id']
];
$result = model('team_log')->pageList($where,'*','id DESC',$page,$pageLimit);
return $this->success($result);
}
/**
* Common: 团队长等级改变
* Author: wu-hui
* Time: 2024/08/09 10:51
* @param $memberId
* @param $levelId
* @param $completeItems
* @return array
*/
public function TeamUpgrade($memberId, $levelId, $completeItems){
Db::startTrans();
try{
if($memberId <= 0 || $levelId <= 0) throw new Exception('必要参数不存在!');
// 获取已存在的团长信息
$where = [
[ 'a.member_id', '=', $memberId],
];
$join = [
[ 'team_level tl', 'tl.id = a.level_id', 'left' ]
];
$field = 'a.id,a.member_id,a.level_id,tl.title,tl.weight';
$teamInfo = model('team')->getInfo($where,$field,'a',$join);
// 获取等级信息
$levelInfo = model('team_level')->getInfo([
[ 'id', '=', $levelId]
],'id,site_id,title,weight');
$siteId = $levelInfo['site_id'] ?? 0;
// 判断:增加 or 修改信息
$log = [
'team_id' => $teamInfo['id'] ?? 0,
'site_id' => $siteId,
'member_id' => $memberId,
'front_level_id' => $teamInfo['level_id'] ?? 0,
'front_level_title' => $teamInfo['title'] ?? '',
'front_level_weight' => $teamInfo['weight'] ?? 0,
'after_level_id' => $levelInfo['id'],
'after_level_title' => $levelInfo['title'],
'after_level_weight' => $levelInfo['weight'],
'reason' => implode(',',$completeItems)
];
if(!$teamInfo){
// 不存在团队长信息 增加信息
$log['team_id'] = model('team')->add([
'site_id' => $siteId,
'member_id' => $memberId,
'level_id' => $levelId,
]);
}
else{
model('team')->update(['level_id' => $levelId],[
['member_id','=',$memberId],
]);
}
// 记录日志
model('team_log')->add($log);
Db::commit();
return $this->success('操作成功');
}
catch(\Exception $e){
Db::rollback();
return $this->error('', $e->getMessage());
}
}
}