用户管理

This commit is contained in:
Richie 2024-06-01 22:02:13 +08:00
parent b38514ee6b
commit 57605906e2
7 changed files with 127 additions and 83 deletions

View File

@ -1,6 +1,7 @@
package com.qihang.security.service; package com.qihang.security.service;
import com.qihang.common.common.ServiceException;
import com.qihang.common.config.RedisCache; import com.qihang.common.config.RedisCache;
import com.qihang.common.constant.UserConstants; import com.qihang.common.constant.UserConstants;
import com.qihang.common.exception.UserNotExistsException; import com.qihang.common.exception.UserNotExistsException;
@ -78,7 +79,7 @@ public class SysLoginService
else else
{ {
// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); // AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
// throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());
} }
} }
finally finally

View File

@ -8,6 +8,7 @@ import com.qihang.security.common.SecurityUtils;
import com.qihang.security.entity.SysUser; import com.qihang.security.entity.SysUser;
import com.qihang.security.service.ISysUserService; import com.qihang.security.service.ISysUserService;
import com.qihang.common.common.TableDataInfo; import com.qihang.common.common.TableDataInfo;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -59,7 +60,9 @@ public class SysUserController extends BaseController
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
{ {
userService.checkUserDataScope(userId); userService.checkUserDataScope(userId);
SysUser sysUser = userService.selectUserById(userId);
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put(AjaxResult.DATA_TAG, sysUser);
// List<SysRole> roles = roleService.selectRoleAll(); // List<SysRole> roles = roleService.selectRoleAll();
// ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); // ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
// ajax.put("posts", postService.selectPostAll()); // ajax.put("posts", postService.selectPostAll());
@ -96,77 +99,77 @@ public class SysUserController extends BaseController
user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
return toAjax(userService.insertUser(user)); return toAjax(userService.insertUser(user));
} }
//
// /** /**
// * 修改用户 * 修改用户
// */ */
// @PreAuthorize("@ss.hasPermi('system:user:edit')") @PreAuthorize("@ss.hasPermi('system:user:edit')")
// @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping
// @PutMapping public AjaxResult edit(@Validated @RequestBody SysUser user)
// public AjaxResult edit(@Validated @RequestBody SysUser user) {
// { userService.checkUserAllowed(user);
// userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId());
// userService.checkUserDataScope(user.getUserId()); if (!userService.checkUserNameUnique(user))
// if (!userService.checkUserNameUnique(user)) {
// { return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
// return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); }
// } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
// else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
// { return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
// return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); }
// } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
// else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
// { return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
// return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); }
// } user.setUpdateBy(getUsername());
// user.setUpdateBy(getUsername()); return toAjax(userService.updateUser(user));
// return toAjax(userService.updateUser(user)); }
// }
// /**
// /** * 删除用户
// * 删除用户 */
// */ @PreAuthorize("@ss.hasPermi('system:user:remove')")
// @PreAuthorize("@ss.hasPermi('system:user:remove')")
// @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}")
// @DeleteMapping("/{userIds}") public AjaxResult remove(@PathVariable Long[] userIds)
// public AjaxResult remove(@PathVariable Long[] userIds) {
// { if (ArrayUtils.contains(userIds, getUserId()))
// if (ArrayUtils.contains(userIds, getUserId())) {
// { return error("当前用户不能删除");
// return error("当前用户不能删除"); }
// } for (var userId:userIds){
// return toAjax(userService.deleteUserByIds(userIds)); userService.deleteUserById(userId);
// } }
// return toAjax(userIds.length);
// /** }
// * 重置密码
// */ /**
// @PreAuthorize("@ss.hasPermi('system:user:resetPwd')") * 重置密码
// @Log(title = "用户管理", businessType = BusinessType.UPDATE) */
// @PutMapping("/resetPwd") @PreAuthorize("@ss.hasPermi('system:user:resetPwd')")
// public AjaxResult resetPwd(@RequestBody SysUser user) @PutMapping("/resetPwd")
// { public AjaxResult resetPwd(@RequestBody SysUser user)
// userService.checkUserAllowed(user); {
// userService.checkUserDataScope(user.getUserId()); userService.checkUserAllowed(user);
// user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); userService.checkUserDataScope(user.getUserId());
// user.setUpdateBy(getUsername()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
// return toAjax(userService.resetPwd(user)); user.setUpdateBy(getUsername());
// } return toAjax(userService.resetPwd(user));
// }
// /**
// * 状态修改 /**
// */ * 状态修改
// @PreAuthorize("@ss.hasPermi('system:user:edit')") */
// @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PreAuthorize("@ss.hasPermi('system:user:edit')")
// @PutMapping("/changeStatus") @PutMapping("/changeStatus")
// public AjaxResult changeStatus(@RequestBody SysUser user) public AjaxResult changeStatus(@RequestBody SysUser user)
// { {
// userService.checkUserAllowed(user); userService.checkUserAllowed(user);
// userService.checkUserDataScope(user.getUserId()); userService.checkUserDataScope(user.getUserId());
// user.setUpdateBy(getUsername()); user.setUpdateBy(getUsername());
// return toAjax(userService.updateUserStatus(user)); return toAjax(userService.updateUserStatus(user));
// } }
//
// /** // /**
// * 根据用户编号获取授权角色 // * 根据用户编号获取授权角色
// */ // */

View File

@ -41,7 +41,8 @@ public class SysPermissionService
} }
else else
{ {
roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId())); // roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
roles.add("admin");
} }
return roles; return roles;
} }

View File

@ -244,7 +244,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
} }
else else
{ {
menus = menuMapper.selectMenuTreeByUserId(userId); // menus = menuMapper.selectMenuTreeByUserId(userId);
menus = menuMapper.selectMenuTreeAll();
} }
return getChildPerms(menus, 0); return getChildPerms(menus, 0);
} }

View File

@ -0,0 +1,38 @@
#错误消息
not.null=* 必须填写
user.jcaptcha.error=验证码错误
user.jcaptcha.expire=验证码已失效
user.not.exists=用户不存在/密码错误
user.password.not.match=用户不存在/密码错误
user.password.retry.limit.count=密码输入错误{0}次
user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
user.password.delete=对不起,您的账号已被删除
user.blocked=用户已封禁,请联系管理员
role.blocked=角色已封禁,请联系管理员
login.blocked=很遗憾访问IP已被列入系统黑名单
user.logout.success=退出成功
length.not.valid=长度必须在{min}到{max}个字符之间
user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成且必须以非数字开头
user.password.not.valid=* 5-50个字符
user.email.not.valid=邮箱格式错误
user.mobile.phone.number.not.valid=手机号格式错误
user.login.success=登录成功
user.register.success=注册成功
user.notfound=请重新登录
user.forcelogout=管理员强制退出,请重新登录
user.unknown.error=未知错误,请重新登录
##文件上传消息
upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB
upload.filename.exceed.length=上传的文件名最长{0}个字符
##权限
no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]

View File

@ -39,7 +39,7 @@ export function updateUser(data) {
// 删除用户 // 删除用户
export function delUser(userId) { export function delUser(userId) {
return request({ return request({
url: '/system/user/' + userId, url: '/api/sys-api/system/user/' + userId,
method: 'delete' method: 'delete'
}) })
} }
@ -51,7 +51,7 @@ export function resetUserPwd(userId, password) {
password password
} }
return request({ return request({
url: '/system/user/resetPwd', url: '/api/sys-api/system/user/resetPwd',
method: 'put', method: 'put',
data: data data: data
}) })
@ -64,7 +64,7 @@ export function changeUserStatus(userId, status) {
status status
} }
return request({ return request({
url: '/system/user/changeStatus', url: '/api/sys-api/system/user/changeStatus',
method: 'put', method: 'put',
data: data data: data
}) })
@ -73,7 +73,7 @@ export function changeUserStatus(userId, status) {
// 查询用户个人信息 // 查询用户个人信息
export function getUserProfile() { export function getUserProfile() {
return request({ return request({
url: '/system/user/profile', url: '/api/sys-api/system/user/profile',
method: 'get' method: 'get'
}) })
} }
@ -81,7 +81,7 @@ export function getUserProfile() {
// 修改用户个人信息 // 修改用户个人信息
export function updateUserProfile(data) { export function updateUserProfile(data) {
return request({ return request({
url: '/system/user/profile', url: '/api/sys-api/system/user/profile',
method: 'put', method: 'put',
data: data data: data
}) })
@ -94,7 +94,7 @@ export function updateUserPwd(oldPassword, newPassword) {
newPassword newPassword
} }
return request({ return request({
url: '/system/user/profile/updatePwd', url: '/api/sys-api/system/user/profile/updatePwd',
method: 'put', method: 'put',
params: data params: data
}) })

View File

@ -121,7 +121,7 @@
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> <!-- <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />-->
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" /> <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
<el-table-column label="状态" align="center" key="status" v-if="columns[5].visible"> <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
<template slot-scope="scope"> <template slot-scope="scope">
@ -527,8 +527,8 @@ export default {
const userId = row.userId || this.ids; const userId = row.userId || this.ids;
getUser(userId).then(response => { getUser(userId).then(response => {
this.form = response.data; this.form = response.data;
this.postOptions = response.posts; // this.postOptions = response.posts;
this.roleOptions = response.roles; // this.roleOptions = response.roles;
// this.$set(this.form, "postIds", response.postIds); // this.$set(this.form, "postIds", response.postIds);
// this.$set(this.form, "roleIds", response.roleIds); // this.$set(this.form, "roleIds", response.roleIds);
this.open = true; this.open = true;