drag-create-api/app/admin/controller/User/User.php
2023-06-25 08:51:24 +08:00

372 lines
9.1 KiB
PHP

<?php
namespace app\admin\controller\User;
use app\common\arw\adjfut\src\Traverse;
use app\BaseController;
use app\exception\ErrorMsg;
use app\model\Role;
use app\common\model\Token;
use app\common\model\User\User as ModelUser;
use app\common\model\Role\Role as ModelRole;
use app\common\model\User\UserRole as ModelUserRole;
use app\model\UserRole;
use app\Request;
use think\db\Query;
use think\Exception;
use think\facade\Db;
use app\common\arw\adjfut\src\Validate;
use app\common\arw\adjfut\src\Excel;
use app\common\arw\adjfut\src\UploadFile;
class User extends BaseController
{
/**
* 获取用户信息
*
* @param Request $request
* @date 2022-03-09
* @example
* @author admin
* @since 1.0.0
*/
public function getUserInfo(Request $request): array
{
$user = $request->getCurrentUser();
return [
'code' => 0,
'data' => [
'user_name' => $user['user_name']
],
'msg' => 'ok'
];
}
/**
* 获取用户菜单
*
* @param Request $request
* @return array
* @date 2022-03-05
* @example
* @author admin
* @since 1.0.0
*/
public function getUserMenu(Request $request)
{
// $user = $request->getCurrentUser();
// $menus = [];
// foreach ($user->roles as $role) {
// $menus = array_merge($menus, $role->menus->toArray());
// }
// array_multisort(array_column($menus, 'menu_order'), SORT_DESC, $menus);
// var_dump($menus);
$token = Token::getCurrent();
$menus = $token->token_menu;
$Traverse = new Traverse('menu_guid', 'menu_parent_guid');
$tree = $Traverse->tree($menus, '0', function ($v) {
return [
'key' => $v['menu_guid'],
'name' => $v['menu_name'],
'url' => $v['menu_url'],
'show' => $v['menu_show'],
'icon' => $v['menu_icon'],
];
});
return [
'code' => 0,
'msg' => 'ok',
'data' => $tree
];
}
/**
* 获取用户列表
*
* @param Request $request
* @date 2022-02-25
* @example
* @author admin
* @since 1.0.0
*/
public function getUserList(Request $request): array
{
$user = $request->param('user');
$con = [
// 'user_status' => 1
];
$search = [];
if ($user) {
$search['user_name'] = $user;
}
$query = ModelUser::scope(['admin'])
->withSearch(array_keys($search), $search)->where($con)
->leftjoin('user_role', 'user_role.user_guid = user.user_guid')
->join('role', join(' AND ', [
'role.role_guid = user_role.role_guid',
'role.role_status = 1',
'role.role_delete_time IS NULL',
]), 'left')->where($con);
$select = self::pageWrapper($query)->field([
'user.user_guid',
'user.user_name',
'user.user_phone',
'user.user_position',
'user.user_department',
'user.user_img',
'user.user_status',
'role.role_name',
])
->append([
'roles',
])
->group('user.user_guid')->order([
'user.user_update_time' => 'desc'
])->select();
$count = $query->count();
return [
'code' => 0,
'data' => $select,
'count' => $count,
'msg' => 'ok'
];
}
/**
* 编辑用户
*
* @param Request $request
* @date 2022-02-28
* @example
* @author admin
* @since 1.0.0
*/
public function editUser(Request $request): array
{
$params = Validate::param([
'user_guid' => 'require',
'user_name' => 'require',
'roles|角色' => 'require',
]);
$model = ModelUser::where([
'user_guid' => $params['user_guid']
])->find();
if (!$model) {
throwErrorMsg("用户不存在", 1);
}
$model->save($params);
ModelUser::editUserRole($params);
return [
'code' => 0,
'msg' => '编辑成功'
];
}
/**
* 添加用户
*
* @param Request $request
* @date 2022-02-28
* @example
* @author admin
* @since 1.0.0
*/
public function addUser(Request $request): array
{
$params = Validate::param([
'user_name' => 'require',
'user_password' => 'require',
'roles|角色' => 'require',
]);
$params['user_status'] = 1;
$model = ModelUser::create($params);
$user_guid = $model->user_guid;
ModelUser::addUserRole($user_guid, $params);
return [
'code' => 0,
'msg' => '添加成功'
];
}
/**
* 删除用户
*
* @param Request $request
* @date 2022-02-28
* @example
* @author admin
* @since 1.0.0
*/
public function deleteUser(Request $request): array
{
$params = $request->param();
$this->validate($params, [
'user_guid' => 'require',
]);
$users = ModelUser::where([
'user_guid' => explode(',', $params['user_guid'])
])->select();
$users->delete();
return [
'code' => 0,
'msg' => "删除成功"
];
}
/**
* 更新用户状态
*
* @param Request $request
* @date 2022-02-28
* @example
* @author admin
* @since 1.0.0
*/
public function updateUserStatus(Request $request): array
{
$params = $request->param();
$this->validate($params, [
'user_guid' => 'require',
'user_status' => 'require|in:1,2',
]);
$user_status = $params['user_status'];
$users = ModelUser::where([
'user_guid' => explode(',', $params['user_guid'])
])->select();
$users->update([
'user_status' => $user_status
]);
return [
'code' => 0,
'msg' => "更新成功"
];
}
/**
* 重置用户密码
*
* @param Request $request
* @date 2022-02-25
* @example
* @author admin
* @since 1.0.0
*/
public function resetUserPassword(Request $request): array
{
$params = Validate::param([
'user_guid' => 'require',
'password' => 'require',
]);
$password = $params['password'];
$users = ModelUser::select(explode(',', $params['user_guid']));
// $users = ModelUser::where([
// 'user_guid' => ['in', $params['user_guid']]
// ])->select();
$users->update([
'user_password' => $password
]);
return [
'code' => 0,
'msg' => "密码已重置为:$password ,请及时修改密码"
];
}
/**
* 导出Excel
*/
public function exportExcel(Request $request)
{
$user = $request->param('user');
$con = [
// 'user_status' => 1
];
$search = [];
if ($user) {
$search['user_name'] = $user;
}
$select = ModelUser::scope(['admin'])
->where($con)->field([
'user.user_guid',
'user.user_name',
'user.user_phone',
'user.user_position',
'user.user_department',
'user.user_img',
'role.role_name',
])
->append([
'roles',
])
->withSearch(array_keys($search), $search)->where($con)
->leftjoin('user_role', 'user_role.user_guid = user.user_guid')
->join('role', join(' AND ', [
'role.role_guid = user_role.role_guid',
'role.role_status = 1',
'role.role_delete_time IS NULL',
]), 'left')
->group('user.user_guid')->order([
'user.user_update_time' => 'desc'
])->select();
return ModelUser::exportExcel($select);
}
/**
* 下载导入模板
*/
public function downloadTemplate(Request $request)
{
$params = $request->param();
$data = [
[
'用户名',
'头像',
'角色',
'手机号',
'密码',
]
];
$data[] = [
'负责人',
'https://img13.360buyimg.com/n5/jfs/t1/195344/2/24691/95759/6295e145E6fae20b9/1172b44c351eeaab.jpg.avif',
'管理员,部门负责人',
'10086',
'123456@aerwen',
];
$excel = (new Excel())->exporTsheet($data);
$excel->save('用户导入模板.xlsx');
}
/**
* 导入excel
*/
public function importExcel(Request $request)
{
$file = new UploadFile('uploads', 'fileExt:xlsx');
$file->putFile('User');
$msg = ModelUser::importExcel($file);
return [
'code' => 0,
'msg' => $msg
];
}
}