153 lines
4.3 KiB
PHP
Raw Normal View History

<?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());
}
}
}