refactor(user): 调整用户昵称与登录名字段使用逻辑- 将用户昵称字段从 nickName 更改为 userName
- 将登录账号字段从 userName 更改为 loginName - 更新了用户信息展示和表单输入相关组件 - 调整了状态管理和数据获取逻辑以匹配新的字段命名 - 修正了个人信息页面的字段绑定和校验规则 - 更新了角色授权相关页面的用户信息显示字段- 后端接口同步调整用户字段处理逻辑master
parent
bbe760abf6
commit
7dcbffe211
|
|
@ -65,7 +65,10 @@ export function changeUserStatus(userId, status) {
|
||||||
}
|
}
|
||||||
return request({
|
return request({
|
||||||
url: '/system/user/changeStatus',
|
url: '/system/user/changeStatus',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
},
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
|
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
|
||||||
<div class="avatar-wrapper">
|
<div class="avatar-wrapper">
|
||||||
<img :src="avatar" class="user-avatar">
|
<img :src="avatar" class="user-avatar">
|
||||||
<span class="user-nickname"> {{ nickName }} </span>
|
<span class="user-nickname"> {{ userName }} </span>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<router-link to="/user/profile">
|
<router-link to="/user/profile">
|
||||||
|
|
@ -74,7 +74,7 @@ export default {
|
||||||
'sidebar',
|
'sidebar',
|
||||||
'avatar',
|
'avatar',
|
||||||
'device',
|
'device',
|
||||||
'nickName'
|
'userName'
|
||||||
]),
|
]),
|
||||||
setting: {
|
setting: {
|
||||||
get() {
|
get() {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ const getters = {
|
||||||
avatar: state => state.user.avatar,
|
avatar: state => state.user.avatar,
|
||||||
id: state => state.user.id,
|
id: state => state.user.id,
|
||||||
name: state => state.user.name,
|
name: state => state.user.name,
|
||||||
nickName: state => state.user.nickName,
|
userName: state => state.user.userName,
|
||||||
introduction: state => state.user.introduction,
|
introduction: state => state.user.introduction,
|
||||||
roles: state => state.user.roles,
|
roles: state => state.user.roles,
|
||||||
permissions: state => state.user.permissions,
|
permissions: state => state.user.permissions,
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ const user = {
|
||||||
state: {
|
state: {
|
||||||
id: '',
|
id: '',
|
||||||
name: '',
|
name: '',
|
||||||
nickName: '',
|
userName: '',
|
||||||
avatar: '',
|
avatar: '',
|
||||||
roles: [],
|
roles: [],
|
||||||
permissions: []
|
permissions: []
|
||||||
|
|
@ -21,8 +21,8 @@ const user = {
|
||||||
SET_NAME: (state, name) => {
|
SET_NAME: (state, name) => {
|
||||||
state.name = name
|
state.name = name
|
||||||
},
|
},
|
||||||
SET_NICK_NAME: (state, nickName) => {
|
SET_NICK_NAME: (state, userName) => {
|
||||||
state.nickName = nickName
|
state.userName = userName
|
||||||
},
|
},
|
||||||
SET_AVATAR: (state, avatar) => {
|
SET_AVATAR: (state, avatar) => {
|
||||||
state.avatar = avatar
|
state.avatar = avatar
|
||||||
|
|
@ -69,8 +69,8 @@ const user = {
|
||||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
||||||
}
|
}
|
||||||
commit('SET_ID', user.userId)
|
commit('SET_ID', user.userId)
|
||||||
commit('SET_NAME', user.userName)
|
commit('SET_NAME', user.loginName)
|
||||||
commit('SET_NICK_NAME', user.nickName)
|
commit('SET_NICK_NAME', user.userName)
|
||||||
commit('SET_AVATAR', avatar)
|
commit('SET_AVATAR', avatar)
|
||||||
/* 初始密码提示 */
|
/* 初始密码提示 */
|
||||||
if(data.isDefaultModifyPwd) {
|
if(data.isDefaultModifyPwd) {
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,8 @@
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
|
<el-table-column label="用户名称" prop="loginName" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
|
<el-table-column label="用户昵称" prop="userName" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
|
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
|
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column label="状态" align="center" prop="status">
|
||||||
|
|
@ -196,4 +196,4 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
|
<el-table @row-click="clickRow" ref="table" :data="userList" @selection-change="handleSelectionChange" height="260px">
|
||||||
<el-table-column type="selection" width="55"></el-table-column>
|
<el-table-column type="selection" width="55"></el-table-column>
|
||||||
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
|
<el-table-column label="用户名称" prop="loginName" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
|
<el-table-column label="用户昵称" prop="userName" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
|
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
|
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column label="状态" align="center" prop="status">
|
||||||
|
|
@ -129,7 +129,7 @@ export default {
|
||||||
this.$modal.msgSuccess(res.msg)
|
this.$modal.msgSuccess(res.msg)
|
||||||
this.visible = false
|
this.visible = false
|
||||||
this.$emit("ok")
|
this.$emit("ok")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,13 @@
|
||||||
<el-form ref="form" :model="form" label-width="80px">
|
<el-form ref="form" :model="form" label-width="80px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8" :offset="2">
|
<el-col :span="8" :offset="2">
|
||||||
<el-form-item label="用户昵称" prop="nickName">
|
<el-form-item label="用户昵称" prop="userName">
|
||||||
<el-input v-model="form.nickName" disabled />
|
<el-input v-model="form.userName" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :offset="2">
|
<el-col :span="8" :offset="2">
|
||||||
<el-form-item label="登录账号" prop="userName">
|
<el-form-item label="登录账号" prop="loginName">
|
||||||
<el-input v-model="form.userName" disabled />
|
<el-input v-model="form.loginName" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -120,4 +120,4 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -59,8 +59,8 @@
|
||||||
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="50" align="center" />
|
<el-table-column type="selection" width="50" align="center" />
|
||||||
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" />
|
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" />
|
||||||
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" />
|
<el-table-column label="用户名称" align="center" key="loginName" prop="loginName" v-if="columns.loginName.visible" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" />
|
<el-table-column label="用户昵称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" />
|
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" />
|
||||||
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" />
|
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" />
|
||||||
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible">
|
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible">
|
||||||
|
|
@ -99,8 +99,8 @@
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="用户昵称" prop="nickName">
|
<el-form-item label="用户名称" prop="userName">
|
||||||
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
|
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
|
@ -123,8 +123,8 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName">
|
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="loginName">
|
||||||
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" />
|
<el-input v-model="form.loginName" placeholder="请输入用户名称" maxlength="30" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
|
@ -279,8 +279,8 @@ export default {
|
||||||
// 列信息
|
// 列信息
|
||||||
columns: {
|
columns: {
|
||||||
userId: { label: '用户编号', visible: true },
|
userId: { label: '用户编号', visible: true },
|
||||||
userName: { label: '用户名称', visible: true },
|
loginName: { label: '用户名称', visible: true },
|
||||||
nickName: { label: '用户昵称', visible: true },
|
userName: { label: '用户昵称', visible: true },
|
||||||
deptName: { label: '部门', visible: true },
|
deptName: { label: '部门', visible: true },
|
||||||
phonenumber: { label: '手机号码', visible: true },
|
phonenumber: { label: '手机号码', visible: true },
|
||||||
status: { label: '状态', visible: true },
|
status: { label: '状态', visible: true },
|
||||||
|
|
@ -288,11 +288,11 @@ export default {
|
||||||
},
|
},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
userName: [
|
loginName: [
|
||||||
{ required: true, message: "用户名称不能为空", trigger: "blur" },
|
{ required: true, message: "用户名称不能为空", trigger: "blur" },
|
||||||
{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }
|
{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
nickName: [
|
userName: [
|
||||||
{ required: true, message: "用户昵称不能为空", trigger: "blur" }
|
{ required: true, message: "用户昵称不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
password: [
|
password: [
|
||||||
|
|
@ -392,7 +392,7 @@ export default {
|
||||||
userId: undefined,
|
userId: undefined,
|
||||||
deptId: undefined,
|
deptId: undefined,
|
||||||
userName: undefined,
|
userName: undefined,
|
||||||
nickName: undefined,
|
loginName: undefined,
|
||||||
password: undefined,
|
password: undefined,
|
||||||
phonenumber: undefined,
|
phonenumber: undefined,
|
||||||
email: undefined,
|
email: undefined,
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用户昵称" prop="nickName">
|
<el-form-item label="用户昵称" prop="userName">
|
||||||
<el-input v-model="form.nickName" maxlength="30" />
|
<el-input v-model="form.userName" maxlength="30" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="手机号码" prop="phonenumber">
|
<el-form-item label="手机号码" prop="phonenumber">
|
||||||
<el-input v-model="form.phonenumber" maxlength="11" />
|
<el-input v-model="form.phonenumber" maxlength="11" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -36,7 +36,7 @@ export default {
|
||||||
form: {},
|
form: {},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
nickName: [
|
userName: [
|
||||||
{ required: true, message: "用户昵称不能为空", trigger: "blur" }
|
{ required: true, message: "用户昵称不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
email: [
|
email: [
|
||||||
|
|
@ -62,7 +62,7 @@ export default {
|
||||||
user: {
|
user: {
|
||||||
handler(user) {
|
handler(user) {
|
||||||
if (user) {
|
if (user) {
|
||||||
this.form = { nickName: user.nickName, phonenumber: user.phonenumber, email: user.email, sex: user.sex }
|
this.form = { userName: user.userName, phonenumber: user.phonenumber, email: user.email, sex: user.sex }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
immediate: true
|
immediate: true
|
||||||
|
|
|
||||||
|
|
@ -1,393 +1,542 @@
|
||||||
package com.ruoyi.web.controller.system;
|
package com.ruoyi.web.controller.system;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.Collections;
|
||||||
import java.util.stream.Collectors;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import cn.hutool.core.lang.Dict;
|
|
||||||
import com.ruoyi.common.utils.mail.TemplateMailUtil;
|
import cn.hutool.core.lang.Dict;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import com.ruoyi.common.config.RuoYiConfig;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import com.ruoyi.common.utils.mail.TemplateMailUtil;
|
||||||
import org.springframework.stereotype.Controller;
|
import com.ruoyi.system.domain.SysPost;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import com.ruoyi.common.core.domain.Ztree;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import com.ruoyi.common.core.domain.entity.SysDept;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import com.ruoyi.common.core.domain.entity.SysRole;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.text.Convert;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.core.domain.Ztree;
|
||||||
import com.ruoyi.common.utils.ShiroUtils;
|
import com.ruoyi.common.core.domain.entity.SysDept;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.framework.shiro.util.AuthorizationUtils;
|
import com.ruoyi.common.core.text.Convert;
|
||||||
import com.ruoyi.system.service.ISysDeptService;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.system.service.ISysPostService;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.system.service.ISysRoleService;
|
import com.ruoyi.common.utils.ShiroUtils;
|
||||||
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
/**
|
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
||||||
* 用户信息
|
import com.ruoyi.framework.shiro.util.AuthorizationUtils;
|
||||||
*
|
import com.ruoyi.system.service.ISysDeptService;
|
||||||
* @author ruoyi
|
import com.ruoyi.system.service.ISysPostService;
|
||||||
*/
|
import com.ruoyi.system.service.ISysRoleService;
|
||||||
@Controller
|
import com.ruoyi.system.service.ISysUserService;
|
||||||
@RequestMapping("/system/user")
|
|
||||||
public class SysUserController extends BaseController
|
/**
|
||||||
{
|
* 用户信息
|
||||||
private String prefix = "system/user";
|
*
|
||||||
|
* @author ruoyi
|
||||||
@Autowired
|
*/
|
||||||
private ISysUserService userService;
|
@Controller
|
||||||
|
@RequestMapping("/system/user")
|
||||||
@Autowired
|
public class SysUserController extends BaseController
|
||||||
private ISysRoleService roleService;
|
{
|
||||||
|
private String prefix = "system/user";
|
||||||
@Autowired
|
|
||||||
private ISysDeptService deptService;
|
@Autowired
|
||||||
|
private ISysUserService userService;
|
||||||
@Autowired
|
|
||||||
private ISysPostService postService;
|
@Autowired
|
||||||
|
private ISysRoleService roleService;
|
||||||
@Autowired
|
|
||||||
private SysPasswordService passwordService;
|
@Autowired
|
||||||
|
private ISysDeptService deptService;
|
||||||
@RequiresPermissions("system:user:view")
|
|
||||||
@GetMapping()
|
@Autowired
|
||||||
public String user()
|
private ISysPostService postService;
|
||||||
{
|
|
||||||
return prefix + "/user";
|
@Autowired
|
||||||
}
|
private SysPasswordService passwordService;
|
||||||
|
|
||||||
@RequiresPermissions("system:user:list")
|
@Autowired
|
||||||
@PostMapping("/list")
|
private RuoYiConfig ruoYiConfig;
|
||||||
@ResponseBody
|
|
||||||
public TableDataInfo list(SysUser user)
|
@RequiresPermissions("system:user:view")
|
||||||
{
|
@GetMapping()
|
||||||
startPage();
|
public String user()
|
||||||
List<SysUser> list = userService.selectUserList(user);
|
{
|
||||||
return getDataTable(list);
|
return prefix + "/user";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
|
@RequiresPermissions("system:user:list")
|
||||||
@RequiresPermissions("system:user:export")
|
@PostMapping("/list")
|
||||||
@PostMapping("/export")
|
@ResponseBody
|
||||||
@ResponseBody
|
public TableDataInfo list(SysUser user)
|
||||||
public AjaxResult export(SysUser user)
|
{
|
||||||
{
|
startPage();
|
||||||
List<SysUser> list = userService.selectUserList(user);
|
List<SysUser> list = userService.selectUserList(user);
|
||||||
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
return getDataTable(list);
|
||||||
return util.exportExcel(list, "用户数据");
|
}
|
||||||
}
|
|
||||||
|
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
|
||||||
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
|
@RequiresPermissions("system:user:export")
|
||||||
@RequiresPermissions("system:user:import")
|
@PostMapping("/export")
|
||||||
@PostMapping("/importData")
|
@ResponseBody
|
||||||
@ResponseBody
|
public AjaxResult export(SysUser user)
|
||||||
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
|
{
|
||||||
{
|
List<SysUser> list = userService.selectUserList(user);
|
||||||
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
||||||
List<SysUser> userList = util.importExcel(file.getInputStream());
|
return util.exportExcel(list, "用户数据");
|
||||||
String message = userService.importUser(userList, updateSupport, getLoginName());
|
}
|
||||||
return AjaxResult.success(message);
|
|
||||||
}
|
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
|
||||||
|
@RequiresPermissions("system:user:import")
|
||||||
@RequiresPermissions("system:user:view")
|
@PostMapping("/importData")
|
||||||
@GetMapping("/importTemplate")
|
@ResponseBody
|
||||||
@ResponseBody
|
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
|
||||||
public AjaxResult importTemplate()
|
{
|
||||||
{
|
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
||||||
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
List<SysUser> userList = util.importExcel(file.getInputStream());
|
||||||
return util.importTemplateExcel("用户数据");
|
String message = userService.importUser(userList, updateSupport, getLoginName());
|
||||||
}
|
return AjaxResult.success(message);
|
||||||
|
}
|
||||||
/**
|
|
||||||
* 新增用户
|
@RequiresPermissions("system:user:view")
|
||||||
*/
|
@GetMapping("/importTemplate")
|
||||||
@RequiresPermissions("system:user:add")
|
@ResponseBody
|
||||||
@GetMapping("/add")
|
public AjaxResult importTemplate()
|
||||||
public String add(ModelMap mmap)
|
{
|
||||||
{
|
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
|
||||||
mmap.put("roles", roleService.selectRoleAll().stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
return util.importTemplateExcel("用户数据");
|
||||||
mmap.put("posts", postService.selectPostAll());
|
}
|
||||||
return prefix + "/add";
|
|
||||||
}
|
/**
|
||||||
|
* 新增用户
|
||||||
/**
|
*/
|
||||||
* 新增保存用户
|
@RequiresPermissions("system:user:add")
|
||||||
*/
|
@GetMapping("/add")
|
||||||
@RequiresPermissions("system:user:add")
|
public String add(ModelMap mmap)
|
||||||
@Log(title = "用户管理", businessType = BusinessType.INSERT)
|
{
|
||||||
@PostMapping("/add")
|
mmap.put("roles", roleService.selectRoleAll().stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
||||||
@ResponseBody
|
mmap.put("posts", postService.selectPostAll());
|
||||||
public AjaxResult addSave(@Validated SysUser user)
|
return prefix + "/add";
|
||||||
{
|
}
|
||||||
deptService.checkDeptDataScope(user.getDeptId());
|
|
||||||
roleService.checkRoleDataScope(user.getRoleIds());
|
/**
|
||||||
if (!userService.checkLoginNameUnique(user))
|
* 新增保存用户
|
||||||
{
|
*/
|
||||||
return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
|
@RequiresPermissions("system:user:add")
|
||||||
}
|
@Log(title = "用户管理", businessType = BusinessType.INSERT)
|
||||||
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
|
@PostMapping("/add")
|
||||||
{
|
@ResponseBody
|
||||||
return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
|
public AjaxResult addSave(@Validated SysUser user)
|
||||||
}
|
{
|
||||||
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
|
deptService.checkDeptDataScope(user.getDeptId());
|
||||||
{
|
roleService.checkRoleDataScope(user.getRoleIds());
|
||||||
return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
|
if (!userService.checkLoginNameUnique(user))
|
||||||
}
|
{
|
||||||
user.setSalt(ShiroUtils.randomSalt());
|
return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
|
||||||
user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
|
}
|
||||||
user.setPwdUpdateDate(DateUtils.getNowDate());
|
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
|
||||||
user.setCreateBy(getLoginName());
|
{
|
||||||
return toAjax(userService.insertUser(user));
|
return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
|
||||||
}
|
}
|
||||||
|
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
|
||||||
/**
|
{
|
||||||
* 修改用户
|
return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
|
||||||
*/
|
}
|
||||||
@RequiresPermissions("system:user:edit")
|
user.setSalt(ShiroUtils.randomSalt());
|
||||||
@GetMapping("/edit/{userId}")
|
user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
|
||||||
public String edit(@PathVariable("userId") Long userId, ModelMap mmap)
|
user.setPwdUpdateDate(DateUtils.getNowDate());
|
||||||
{
|
user.setCreateBy(getLoginName());
|
||||||
userService.checkUserDataScope(userId);
|
return toAjax(userService.insertUser(user));
|
||||||
List<SysRole> roles = roleService.selectRolesByUserId(userId);
|
}
|
||||||
mmap.put("user", userService.selectUserById(userId));
|
|
||||||
mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
/**
|
||||||
mmap.put("posts", postService.selectPostsByUserId(userId));
|
* 修改用户
|
||||||
return prefix + "/edit";
|
*/
|
||||||
}
|
@RequiresPermissions("system:user:edit")
|
||||||
|
@GetMapping("/edit/{userId}")
|
||||||
/**
|
public String edit(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||||
* 查询用户详细
|
{
|
||||||
*/
|
userService.checkUserDataScope(userId);
|
||||||
@RequiresPermissions("system:user:list")
|
List<SysRole> roles = roleService.selectRolesByUserId(userId);
|
||||||
@GetMapping("/view/{userId}")
|
mmap.put("user", userService.selectUserById(userId));
|
||||||
public String view(@PathVariable("userId") Long userId, ModelMap mmap)
|
mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
||||||
{
|
mmap.put("posts", postService.selectPostsByUserId(userId));
|
||||||
userService.checkUserDataScope(userId);
|
return prefix + "/edit";
|
||||||
mmap.put("user", userService.selectUserById(userId));
|
}
|
||||||
mmap.put("roleGroup", userService.selectUserRoleGroup(userId));
|
|
||||||
mmap.put("postGroup", userService.selectUserPostGroup(userId));
|
/**
|
||||||
return prefix + "/view";
|
* 查询用户详细
|
||||||
}
|
*/
|
||||||
|
@RequiresPermissions("system:user:list")
|
||||||
/**
|
@GetMapping("/view/{userId}")
|
||||||
* 修改保存用户
|
public String view(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||||
*/
|
{
|
||||||
@RequiresPermissions("system:user:edit")
|
userService.checkUserDataScope(userId);
|
||||||
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
mmap.put("user", userService.selectUserById(userId));
|
||||||
@PostMapping("/edit")
|
mmap.put("roleGroup", userService.selectUserRoleGroup(userId));
|
||||||
@ResponseBody
|
mmap.put("postGroup", userService.selectUserPostGroup(userId));
|
||||||
public AjaxResult editSave(@Validated SysUser user)
|
return prefix + "/view";
|
||||||
{
|
}
|
||||||
userService.checkUserAllowed(user);
|
|
||||||
userService.checkUserDataScope(user.getUserId());
|
/**
|
||||||
deptService.checkDeptDataScope(user.getDeptId());
|
* 修改保存用户
|
||||||
roleService.checkRoleDataScope(user.getRoleIds());
|
*/
|
||||||
if (!userService.checkLoginNameUnique(user))
|
@RequiresPermissions("system:user:edit")
|
||||||
{
|
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
||||||
return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
|
@PostMapping("/edit")
|
||||||
}
|
@ResponseBody
|
||||||
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
|
public AjaxResult editSave(@Validated SysUser user)
|
||||||
{
|
{
|
||||||
return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
|
userService.checkUserAllowed(user);
|
||||||
}
|
userService.checkUserDataScope(user.getUserId());
|
||||||
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
|
deptService.checkDeptDataScope(user.getDeptId());
|
||||||
{
|
roleService.checkRoleDataScope(user.getRoleIds());
|
||||||
return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
|
if (!userService.checkLoginNameUnique(user))
|
||||||
}
|
{
|
||||||
user.setUpdateBy(getLoginName());
|
return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
|
||||||
AuthorizationUtils.clearAllCachedAuthorizationInfo();
|
}
|
||||||
return toAjax(userService.updateUser(user));
|
else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
|
||||||
}
|
{
|
||||||
|
return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
|
||||||
@RequiresPermissions("system:user:resetPwd")
|
}
|
||||||
@GetMapping("/resetPwd/{userId}")
|
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
|
||||||
public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
|
{
|
||||||
{
|
return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
|
||||||
mmap.put("user", userService.selectUserById(userId));
|
}
|
||||||
return prefix + "/resetPwd";
|
user.setUpdateBy(getLoginName());
|
||||||
}
|
AuthorizationUtils.clearAllCachedAuthorizationInfo();
|
||||||
|
return toAjax(userService.updateUser(user));
|
||||||
@RequiresPermissions("system:user:resetPwd")
|
}
|
||||||
@Log(title = "重置密码", businessType = BusinessType.UPDATE)
|
|
||||||
@PostMapping("/resetPwd")
|
@RequiresPermissions("system:user:resetPwd")
|
||||||
@ResponseBody
|
@GetMapping("/resetPwd/{userId}")
|
||||||
public AjaxResult resetPwdSave(SysUser user)
|
public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||||
{
|
{
|
||||||
userService.checkUserAllowed(user);
|
mmap.put("user", userService.selectUserById(userId));
|
||||||
userService.checkUserDataScope(user.getUserId());
|
return prefix + "/resetPwd";
|
||||||
user.setSalt(ShiroUtils.randomSalt());
|
}
|
||||||
String realPassword = user.getPassword();
|
|
||||||
user.setPassword(passwordService.encryptPassword(user.getLoginName(), realPassword, user.getSalt()));
|
// TODO: The frontend expects a PUT request to '/resetPwd' with a JSON body. This endpoint uses POST and takes form data.
|
||||||
if (userService.resetUserPwd(user) > 0)
|
@RequiresPermissions("system:user:resetPwd")
|
||||||
{
|
@Log(title = "重置密码", businessType = BusinessType.UPDATE)
|
||||||
SysUser dbUser = userService.selectUserById(user.getUserId());
|
@PostMapping("/resetPwd")
|
||||||
if (dbUser!=null && StringUtils.isNotEmpty(dbUser.getEmail())){
|
@ResponseBody
|
||||||
TemplateMailUtil.sendTemplateMail(Collections.singletonList(dbUser.getEmail()),"密码重置", TemplateMailUtil.MailTemplate.PASSWORD_RESET, Dict.of("password", realPassword));
|
public AjaxResult resetPwdSave(SysUser user)
|
||||||
}
|
{
|
||||||
if (ShiroUtils.getUserId().longValue() == user.getUserId().longValue())
|
userService.checkUserAllowed(user);
|
||||||
{
|
userService.checkUserDataScope(user.getUserId());
|
||||||
setSysUser(dbUser);
|
user.setSalt(ShiroUtils.randomSalt());
|
||||||
}
|
String realPassword = user.getPassword();
|
||||||
|
user.setPassword(passwordService.encryptPassword(user.getLoginName(), realPassword, user.getSalt()));
|
||||||
return success();
|
if (userService.resetUserPwd(user) > 0)
|
||||||
}
|
{
|
||||||
return error();
|
SysUser dbUser = userService.selectUserById(user.getUserId());
|
||||||
}
|
if (dbUser!=null && StringUtils.isNotEmpty(dbUser.getEmail())){
|
||||||
|
TemplateMailUtil.sendTemplateMail(Collections.singletonList(dbUser.getEmail()),"密码重置", TemplateMailUtil.MailTemplate.PASSWORD_RESET, Dict.of("password", realPassword));
|
||||||
/**
|
}
|
||||||
* 进入授权角色页
|
if (ShiroUtils.getUserId().longValue() == user.getUserId().longValue())
|
||||||
*/
|
{
|
||||||
@RequiresPermissions("system:user:edit")
|
setSysUser(dbUser);
|
||||||
@GetMapping("/authRole/{userId}")
|
}
|
||||||
public String authRole(@PathVariable("userId") Long userId, ModelMap mmap)
|
|
||||||
{
|
return success();
|
||||||
SysUser user = userService.selectUserById(userId);
|
}
|
||||||
// 获取用户所属的角色列表
|
return error();
|
||||||
List<SysRole> roles = roleService.selectRolesByUserId(userId);
|
}
|
||||||
mmap.put("user", user);
|
|
||||||
mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
/**
|
||||||
return prefix + "/authRole";
|
* 进入授权角色页
|
||||||
}
|
*/
|
||||||
|
// TODO: The frontend expects a GET request to this URL that returns JSON data (user and roles), not a view name.
|
||||||
/**
|
@RequiresPermissions("system:user:edit")
|
||||||
* 用户授权角色
|
@GetMapping("/authRole/{userId}")
|
||||||
*/
|
public String authRole(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||||
@RequiresPermissions("system:user:edit")
|
{
|
||||||
@Log(title = "用户管理", businessType = BusinessType.GRANT)
|
SysUser user = userService.selectUserById(userId);
|
||||||
@PostMapping("/authRole/insertAuthRole")
|
// 获取用户所属的角色列表
|
||||||
@ResponseBody
|
List<SysRole> roles = roleService.selectRolesByUserId(userId);
|
||||||
public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
|
mmap.put("user", user);
|
||||||
{
|
mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
||||||
userService.checkUserDataScope(userId);
|
return prefix + "/authRole";
|
||||||
roleService.checkRoleDataScope(roleIds);
|
}
|
||||||
userService.insertUserAuth(userId, roleIds);
|
|
||||||
AuthorizationUtils.clearAllCachedAuthorizationInfo();
|
/**
|
||||||
return success();
|
* 用户授权角色
|
||||||
}
|
*/
|
||||||
|
// TODO: The frontend expects a PUT request to '/system/user/authRole'. This endpoint is at '/authRole/insertAuthRole' and uses POST.
|
||||||
@RequiresPermissions("system:user:remove")
|
@RequiresPermissions("system:user:edit")
|
||||||
@Log(title = "用户管理", businessType = BusinessType.DELETE)
|
@Log(title = "用户管理", businessType = BusinessType.GRANT)
|
||||||
@PostMapping("/remove")
|
@PostMapping("/authRole/insertAuthRole")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult remove(String ids)
|
public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
|
||||||
{
|
{
|
||||||
if (ArrayUtils.contains(Convert.toLongArray(ids), getUserId()))
|
userService.checkUserDataScope(userId);
|
||||||
{
|
roleService.checkRoleDataScope(roleIds);
|
||||||
return error("当前用户不能删除");
|
userService.insertUserAuth(userId, roleIds);
|
||||||
}
|
AuthorizationUtils.clearAllCachedAuthorizationInfo();
|
||||||
return toAjax(userService.deleteUserByIds(ids));
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// TODO: The frontend expects a DELETE request to '/system/user/{userIds}'. This endpoint is at '/remove' and uses POST.
|
||||||
* 校验用户名
|
@RequiresPermissions("system:user:remove")
|
||||||
*/
|
@Log(title = "用户管理", businessType = BusinessType.DELETE)
|
||||||
@PostMapping("/checkLoginNameUnique")
|
@PostMapping("/remove")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public boolean checkLoginNameUnique(SysUser user)
|
public AjaxResult remove(String ids)
|
||||||
{
|
{
|
||||||
return userService.checkLoginNameUnique(user);
|
if (ArrayUtils.contains(Convert.toLongArray(ids), getUserId()))
|
||||||
}
|
{
|
||||||
|
return error("当前用户不能删除");
|
||||||
/**
|
}
|
||||||
* 校验手机号码
|
return toAjax(userService.deleteUserByIds(ids));
|
||||||
*/
|
}
|
||||||
@PostMapping("/checkPhoneUnique")
|
|
||||||
@ResponseBody
|
/**
|
||||||
public boolean checkPhoneUnique(SysUser user)
|
* 校验用户名
|
||||||
{
|
*/
|
||||||
return userService.checkPhoneUnique(user);
|
@PostMapping("/checkLoginNameUnique")
|
||||||
}
|
@ResponseBody
|
||||||
|
public boolean checkLoginNameUnique(SysUser user)
|
||||||
/**
|
{
|
||||||
* 校验email邮箱
|
return userService.checkLoginNameUnique(user);
|
||||||
*/
|
}
|
||||||
@PostMapping("/checkEmailUnique")
|
|
||||||
@ResponseBody
|
/**
|
||||||
public boolean checkEmailUnique(SysUser user)
|
* 校验手机号码
|
||||||
{
|
*/
|
||||||
return userService.checkEmailUnique(user);
|
@PostMapping("/checkPhoneUnique")
|
||||||
}
|
@ResponseBody
|
||||||
|
public boolean checkPhoneUnique(SysUser user)
|
||||||
/**
|
{
|
||||||
* 用户状态修改
|
return userService.checkPhoneUnique(user);
|
||||||
*/
|
}
|
||||||
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
|
||||||
@RequiresPermissions("system:user:edit")
|
/**
|
||||||
@PostMapping("/changeStatus")
|
* 校验email邮箱
|
||||||
@ResponseBody
|
*/
|
||||||
public AjaxResult changeStatus(SysUser user)
|
@PostMapping("/checkEmailUnique")
|
||||||
{
|
@ResponseBody
|
||||||
userService.checkUserAllowed(user);
|
public boolean checkEmailUnique(SysUser user)
|
||||||
userService.checkUserDataScope(user.getUserId());
|
{
|
||||||
return toAjax(userService.changeStatus(user));
|
return userService.checkEmailUnique(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载部门列表树
|
* 用户状态修改
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("system:user:list")
|
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
||||||
@GetMapping("/deptTreeData")
|
@RequiresPermissions("system:user:edit")
|
||||||
@ResponseBody
|
@PostMapping("/changeStatus")
|
||||||
public List<Ztree> deptTreeData()
|
@ResponseBody
|
||||||
{
|
public AjaxResult changeStatus(SysUser user)
|
||||||
List<Ztree> ztrees = deptService.selectDeptTree(new SysDept());
|
{
|
||||||
return ztrees;
|
userService.checkUserAllowed(user);
|
||||||
}
|
userService.checkUserDataScope(user.getUserId());
|
||||||
|
return toAjax(userService.changeStatus(user));
|
||||||
/**
|
}
|
||||||
* 选择部门树
|
|
||||||
*
|
/**
|
||||||
* @param deptId 部门ID
|
* 加载部门列表树
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("system:user:list")
|
@RequiresPermissions("system:user:list")
|
||||||
@GetMapping("/selectDeptTree/{deptId}")
|
@GetMapping("/deptTreeData")
|
||||||
public String selectDeptTree(@PathVariable("deptId") Long deptId, ModelMap mmap)
|
@ResponseBody
|
||||||
{
|
public List<Ztree> deptTreeData()
|
||||||
SysDept value = deptService.selectDeptById(deptId);
|
{
|
||||||
mmap.put("dept", value==null?new SysDept():value);
|
List<Ztree> ztrees = deptService.selectDeptTree(new SysDept());
|
||||||
return prefix + "/deptTree";
|
return ztrees;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
// ----------------------VUE页面使用---------------------------
|
* 选择部门树
|
||||||
@RequiresPermissions("system:user:list")
|
*
|
||||||
@GetMapping("/list")
|
* @param deptId 部门ID
|
||||||
@ResponseBody
|
*/
|
||||||
public TableDataInfo listPage(SysUser user) {
|
@RequiresPermissions("system:user:list")
|
||||||
startPage();
|
@GetMapping("/selectDeptTree/{deptId}")
|
||||||
List<SysUser> list = userService.selectUserList(user);
|
public String selectDeptTree(@PathVariable("deptId") Long deptId, ModelMap mmap)
|
||||||
return getDataTable(list);
|
{
|
||||||
}
|
SysDept value = deptService.selectDeptById(deptId);
|
||||||
@RequiresPermissions("system:user:list")
|
mmap.put("dept", value==null?new SysDept():value);
|
||||||
@GetMapping("/{userId}")
|
return prefix + "/deptTree";
|
||||||
@ResponseBody
|
}
|
||||||
public AjaxResult query(@PathVariable("userId") Long userId) {
|
|
||||||
return success(userService.selectUserById(userId));
|
|
||||||
}
|
// ----------------------VUE页面使用---------------------------
|
||||||
|
@RequiresPermissions("system:user:list")
|
||||||
/**
|
@GetMapping("/list")
|
||||||
* 获取部门树列表
|
@ResponseBody
|
||||||
*/
|
public TableDataInfo listPage(SysUser user) {
|
||||||
@RequiresPermissions("system:user:list")
|
startPage();
|
||||||
@GetMapping("/deptTree")
|
List<SysUser> list = userService.selectUserList(user);
|
||||||
@ResponseBody
|
return getDataTable(list);
|
||||||
public AjaxResult deptTree(SysDept dept) {
|
}
|
||||||
return success(deptService.selectDeptTreeList(dept));
|
|
||||||
}
|
// TODO: The frontend 'getUser' call expects this endpoint to return not just the user, but also 'posts', 'roles', 'postIds', and 'roleIds' for the add/edit dialog.
|
||||||
|
/**
|
||||||
|
* 根据用户编号获取详细信息
|
||||||
|
*/
|
||||||
|
|
||||||
|
@GetMapping(value = { "/", "/{userId}" })
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
|
||||||
|
{
|
||||||
|
AjaxResult ajax = AjaxResult.success();
|
||||||
|
if (StringUtils.isNotNull(userId))
|
||||||
|
{
|
||||||
|
userService.checkUserDataScope(userId);
|
||||||
|
SysUser sysUser = userService.selectUserById(userId);
|
||||||
|
ajax.put(AjaxResult.DATA_TAG, sysUser);
|
||||||
|
List<SysPost> postList = postService.selectPostsByUserId(userId);
|
||||||
|
ajax.put("postIds", postList.stream().filter(SysPost::isFlag).map(SysPost::getPostId).collect(Collectors.toList()));
|
||||||
|
ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
|
||||||
|
}
|
||||||
|
List<SysRole> roles = roleService.selectRoleAll();
|
||||||
|
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
|
||||||
|
ajax.put("posts", postService.selectPostAll());
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取部门树列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("system:user:list")
|
||||||
|
@GetMapping("/deptTree")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult deptTree(SysDept dept) {
|
||||||
|
return success(deptService.selectDeptTreeList(dept));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 新增保存用户
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("system:user:add")
|
||||||
|
@Log(title = "用户管理", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping()
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult insertUser(@RequestBody @Validated SysUser user)
|
||||||
|
{
|
||||||
|
return addSave(user);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 修改保存用户
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("system:user:edit")
|
||||||
|
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping()
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult updateUser(@RequestBody @Validated SysUser user)
|
||||||
|
{
|
||||||
|
return editSave(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------新增的个人信息 业务处理---------------------------
|
||||||
|
/**
|
||||||
|
* 个人信息
|
||||||
|
*/
|
||||||
|
@GetMapping("/profile")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult profile()
|
||||||
|
{
|
||||||
|
SysUser user = getSysUser();
|
||||||
|
AjaxResult ajax = AjaxResult.success(user);
|
||||||
|
ajax.put("roleGroup", userService.selectUserRoleGroup(user.getUserId()));
|
||||||
|
ajax.put("postGroup", userService.selectUserPostGroup(user.getUserId()));
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改用户
|
||||||
|
*/
|
||||||
|
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping("/profile")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult updateProfile(@RequestBody SysUser user)
|
||||||
|
{
|
||||||
|
SysUser currentUser = getSysUser();
|
||||||
|
currentUser.setUserName(user.getUserName());
|
||||||
|
currentUser.setEmail(user.getEmail());
|
||||||
|
currentUser.setPhonenumber(user.getPhonenumber());
|
||||||
|
currentUser.setSex(user.getSex());
|
||||||
|
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
|
||||||
|
{
|
||||||
|
return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在");
|
||||||
|
}
|
||||||
|
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
|
||||||
|
{
|
||||||
|
return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在");
|
||||||
|
}
|
||||||
|
if (userService.updateUserInfo(currentUser) > 0)
|
||||||
|
{
|
||||||
|
setSysUser(currentUser);
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
return error();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置密码
|
||||||
|
*/
|
||||||
|
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping("/profile/updatePwd")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult updatePwd(String oldPassword, String newPassword)
|
||||||
|
{
|
||||||
|
SysUser user = getSysUser();
|
||||||
|
if (!passwordService.matches(user, oldPassword))
|
||||||
|
{
|
||||||
|
return error("修改密码失败,旧密码错误");
|
||||||
|
}
|
||||||
|
if (passwordService.matches(user, newPassword))
|
||||||
|
{
|
||||||
|
return error("新密码不能与旧密码相同");
|
||||||
|
}
|
||||||
|
user.setSalt(ShiroUtils.randomSalt());
|
||||||
|
user.setPassword(passwordService.encryptPassword(user.getLoginName(), newPassword, user.getSalt()));
|
||||||
|
user.setPwdUpdateDate(DateUtils.getNowDate());
|
||||||
|
if (userService.resetUserPwd(user) > 0)
|
||||||
|
{
|
||||||
|
setSysUser(userService.selectUserById(user.getUserId()));
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
return error("修改密码异常,请联系管理员");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 头像上传
|
||||||
|
*/
|
||||||
|
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
|
||||||
|
@PostMapping("/profile/avatar")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException
|
||||||
|
{
|
||||||
|
if (!file.isEmpty())
|
||||||
|
{
|
||||||
|
SysUser currentUser = getSysUser();
|
||||||
|
String avatar = FileUploadUtils.upload(ruoYiConfig.getAvatarPath(), file);
|
||||||
|
currentUser.setAvatar(avatar);
|
||||||
|
if (userService.updateUserInfo(currentUser) > 0)
|
||||||
|
{
|
||||||
|
setSysUser(currentUser);
|
||||||
|
return AjaxResult.success().put("imgUrl", avatar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return error();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue