diff --git a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java index 259ac06695..5b877e9327 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java @@ -3,6 +3,8 @@ package io.dataease.controller.sys; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import io.dataease.auth.api.dto.CurrentUserDto; +import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; import io.dataease.controller.sys.base.BaseGridRequest; @@ -73,4 +75,18 @@ public class SysUserController { public void adminUpdatePwd(@RequestBody SysUserPwdRequest request){ sysUserService.adminUpdatePwd(request); } + + + @ApiOperation("个人信息") + @PostMapping("/personInfo") + public CurrentUserDto personInfo() { + CurrentUserDto user = AuthUtils.getUser(); + return user; + } + + @ApiOperation("更新个人信息") + @PostMapping("/updatePersonInfo") + public void updatePersonInfo(@RequestBody SysUserCreateRequest request){ + sysUserService.updatePersonInfo(request); + } } diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java index 096eb96511..9f6e448efc 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -1,5 +1,6 @@ package io.dataease.service.sys; +import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.base.domain.SysUser; import io.dataease.base.domain.SysUserExample; import io.dataease.base.domain.SysUsersRolesExample; @@ -9,6 +10,7 @@ import io.dataease.base.mapper.SysUsersRolesMapper; import io.dataease.base.mapper.ext.ExtSysUserMapper; import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.commons.constants.AuthConstants; +import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.CodingUtil; import io.dataease.controller.sys.base.BaseGridRequest; @@ -89,6 +91,22 @@ public class SysUserService { deleteUserRoles(user.getUserId());//先删除用户角色关联 saveUserRoles(user.getUserId(), request.getRoleIds());//再插入角色关联 return sysUserMapper.updateByPrimaryKey(user); + + } + + /** + * 用户修改个人信息 + * @param request + * @return + */ + @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId") + @Transactional + public int updatePersonInfo(SysUserCreateRequest request){ + SysUser user = BeanUtils.copyBean(new SysUser(), request); + long now = System.currentTimeMillis(); + user.setUpdateTime(now); + return sysUserMapper.updateByPrimaryKeySelective(user); + } @@ -107,20 +125,16 @@ public class SysUserService { */ @CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #request.userId") public int updatePwd(SysUserPwdRequest request) { - if (!StringUtils.equals(request.getPassword(), request.getRepeatPassword())){ - throw new RuntimeException("两次密码不一致"); - } - SysUser temp = new SysUser(); - temp.setUserId(request.getUserId()); - SysUser user = findOne(temp); + CurrentUserDto user = AuthUtils.getUser(); + if (ObjectUtils.isEmpty(user)) { throw new RuntimeException("用户不存在"); } - if (!StringUtils.equals(request.getPassword(), user.getPassword())){ + if (!StringUtils.equals(CodingUtil.md5(request.getPassword()), user.getPassword())){ throw new RuntimeException("密码错误"); } SysUser sysUser = new SysUser(); - sysUser.setUserId(request.getUserId()); + sysUser.setUserId(user.getUserId()); sysUser.setPassword(CodingUtil.md5(request.getNewPassword())); return sysUserMapper.updateByPrimaryKeySelective(sysUser); } diff --git a/frontend/src/api/system/user.js b/frontend/src/api/system/user.js index 228fc1152f..fc23d2b260 100644 --- a/frontend/src/api/system/user.js +++ b/frontend/src/api/system/user.js @@ -1,5 +1,8 @@ import request from '@/utils/request' const pathMap = { + userUpdatePwdPath: '/api/user/updatePwd/', + personInfoPath: '/api/user/personInfo/', + piupdatePath: '/api/user/updatePersonInfo/', queryPath: '/api/user/userGrid/', deletePath: '/api/user/delete/', createPath: '/api/user/create', @@ -55,4 +58,27 @@ export const editStatus = (data) => { }) } -export default { editPassword, delUser, editUser, addUser, userLists, editStatus } +export const persionInfo = () => { + return request({ + url: pathMap.personInfoPath, + method: 'post' + }) +} + +export const updatePerson = (data) => { + return request({ + url: pathMap.piupdatePath, + method: 'post', + data + }) +} + +export const updatePersonPwd = (data) => { + return request({ + url: pathMap.userUpdatePwdPath, + method: 'post', + data + }) +} + +export default { editPassword, delUser, editUser, addUser, userLists, editStatus, persionInfo, updatePerson, updatePersonPwd } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 36af4a74d1..c23e548dc0 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -406,7 +406,7 @@ export default { special_characters_are_not_supported: '不支持特殊字符', mobile_number_format_is_incorrect: '手机号码格式不正确', email_format_is_incorrect: '邮箱格式不正确', - password_format_is_incorrect: '有效密码:8-30位,英文大小写字母+数字+特殊字符(可选)', + password_format_is_incorrect: '有效密码:6-30位,英文大小写字母+数字+特殊字符(可选)', old_password: '旧密码', new_password: '新密码', repeat_password: '确认密码', diff --git a/frontend/src/layout/components/Topbar.vue b/frontend/src/layout/components/Topbar.vue index edd91a3092..07ea10fd2b 100644 --- a/frontend/src/layout/components/Topbar.vue +++ b/frontend/src/layout/components/Topbar.vue @@ -37,9 +37,46 @@ - + + + + {{ name }} + + + + + 个人信息 + + + 重置密码 + + + + Docs + + + + 关于 + + + 退出 + + + + + @@ -113,7 +150,8 @@ export default { }, ...mapGetters([ 'avatar', - 'permission_routes' + 'permission_routes', + 'name' ]) }, @@ -222,5 +260,21 @@ export default { } diff --git a/frontend/src/styles/topbar.scss b/frontend/src/styles/topbar.scss index ec107d7126..7ec0df9ab1 100644 --- a/frontend/src/styles/topbar.scss +++ b/frontend/src/styles/topbar.scss @@ -87,6 +87,14 @@ height: 40px; border-radius: 10px; } + .de-user-avatar { + cursor: pointer; + height: 40px; + border-radius: 10px; + span { + color: #ffffff; + } + } .el-icon-caret-bottom { cursor: pointer; diff --git a/frontend/src/views/system/user/personPwd.vue b/frontend/src/views/system/user/personPwd.vue new file mode 100644 index 0000000000..690177c209 --- /dev/null +++ b/frontend/src/views/system/user/personPwd.vue @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + 保存 + + + + + + + diff --git a/frontend/src/views/system/user/privateForm.vue b/frontend/src/views/system/user/privateForm.vue new file mode 100644 index 0000000000..10459104cc --- /dev/null +++ b/frontend/src/views/system/user/privateForm.vue @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + 启用 + 停用 + + + + + + + + + + + + + + + + + + + +