153 lines
4.3 KiB
PHP
153 lines
4.3 KiB
PHP
<?php
|
|
|
|
namespace app\api\controller\backend;
|
|
|
|
use app\common\controller\Api;
|
|
use app\common\library\Ems;
|
|
use app\common\library\Sms;
|
|
use fast\Random;
|
|
use think\Config;
|
|
use think\Validate;
|
|
use think\Db;
|
|
|
|
/**
|
|
* 个人档案
|
|
*/
|
|
class PersonalProfile extends Api
|
|
{
|
|
protected $noNeedLogin = ['*'];
|
|
protected $noNeedRight = '*';
|
|
|
|
protected $user_id = '';
|
|
protected $auth_group = '';
|
|
protected $user_group = '';
|
|
|
|
public function _initialize()
|
|
{
|
|
parent::_initialize();
|
|
$id = $this->request->header('Token');
|
|
if(!$id){
|
|
return $this->error('缺少参数');
|
|
}
|
|
$user = Db::name('user')->where('token', $id)->find();
|
|
if(!$user){
|
|
return $this->error('用户不存在');
|
|
}
|
|
$this->user_id = $user['id'];
|
|
$this->auth_group = $user['auth_group_id'];
|
|
$this->user_group = $user['group_id'];
|
|
|
|
}
|
|
public function index(){
|
|
$auth = Db::name('auth_group')->where('id', $this->auth_group)->find();
|
|
$group = Db::name('user_group')->where('id', $this->user_group)->find();
|
|
|
|
if(!$auth){
|
|
$this->error('角色无效');
|
|
}
|
|
$where = [];
|
|
if($auth['level'] == 2){
|
|
$where['id'] = $group['id'];
|
|
}
|
|
$data = Db::name('user_group')->where($where)->select();
|
|
// 构建层级结构
|
|
$tree = $this->buildTree($data);
|
|
$this->success(__('Logged in successful'), $tree );
|
|
}
|
|
|
|
/**
|
|
* 构建树结构
|
|
*
|
|
* @param array $data 数据库查询结果数组
|
|
* @param int $parentId 父ID
|
|
* @return array
|
|
*/
|
|
private function buildTree(array $data, $parentId = 0)
|
|
{
|
|
$tree = [];
|
|
foreach ($data as $item) {
|
|
if ($item['pid'] == $parentId) {
|
|
$children = $this->buildTree($data, $item['id']);
|
|
if ($children) {
|
|
$item['children'] = $children;
|
|
}
|
|
$tree[] = $item;
|
|
}
|
|
}
|
|
return $tree;
|
|
}
|
|
|
|
|
|
public function find(){
|
|
$group_id = $this->request->post('group_id');
|
|
$page = $this->request->post('page', 1);
|
|
$size = $this->request->post('size', 10);
|
|
$nickname = $this->request->post('nickname');
|
|
$mobile = $this->request->post('mobile');
|
|
|
|
// 基础条件
|
|
$where = ['group_id' => $group_id];
|
|
|
|
// 模糊搜索处理
|
|
if ($nickname) {
|
|
$where['nickname'] = ['like', "%{$nickname}%"]; // 前后模糊匹配
|
|
}
|
|
if ($mobile) {
|
|
$where['mobile'] = ['like', "%{$mobile}%"]; // 前后模糊匹配
|
|
}
|
|
|
|
// 执行查询
|
|
$userList = Db::name('user')
|
|
->where($where)
|
|
->page($page, $size)
|
|
->order('id asc')
|
|
->select();
|
|
|
|
// 获取总数(需移除分页参数)
|
|
$count = Db::name('user')
|
|
->where($where)
|
|
->count();
|
|
|
|
$data = [
|
|
'count' => $count,
|
|
'data' => $userList,
|
|
];
|
|
|
|
// 业务逻辑判断
|
|
if ($count == 0) {
|
|
$this->error('未查询到相关数据');
|
|
}
|
|
|
|
$this->success(__('查询成功'), $data);
|
|
}
|
|
|
|
|
|
public function personalProfile(){
|
|
$id = $this->request->post('user_id');
|
|
$time = $this->request->post('time', date('Y'));
|
|
if (!$id) {
|
|
$this->error(__('Invalid parameters'));
|
|
}
|
|
$ret = Db::name('user')->where('id',$id)->find();
|
|
$date = Db::name('addition_and_subtraction_records')
|
|
->field('a.*,p.project_name,p.scoring_criteria')
|
|
->alias('a')
|
|
->join('plus_minus_scoring p','a.assessment_project = p.id','LEFT')
|
|
->where('user_id', $id)
|
|
->where('YEAR(createtime)', $time)
|
|
->where('status',2)
|
|
->order('a.id', 'desc')
|
|
->select();
|
|
$array = [
|
|
'user' => $ret,
|
|
'date' => $date,
|
|
];
|
|
if ($array) {
|
|
$this->success(__('Logged in successful'), $array);
|
|
} else {
|
|
$this->error($this->auth->getError());
|
|
}
|
|
|
|
}
|
|
}
|