增加用户昵称字段

master
toesbieya 6 years ago
parent cd9b08dbe4
commit 1873d34bbf
  1. 3
      java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysUser.java
  2. 1
      java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/filter/SecurityFilter.java
  3. 3
      java/cloud/nacos-config/jxc-gateway.yml
  4. 10
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/aspect/RestExceptionAspect.java
  5. 2
      java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/util/ThreadUtil.java
  6. 15
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/controller/AccountController.java
  7. 35
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/service/AccountService.java
  8. 2
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/LoginSuccessInfo.java
  9. 6
      java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/RegisterParam.java
  10. 4
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/PurchaseInboundController.java
  11. 4
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/PurchaseOrderController.java
  12. 4
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/SellOrderController.java
  13. 4
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/controller/SellOutboundController.java
  14. 8
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/PurchaseInboundService.java
  15. 8
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/PurchaseOrderService.java
  16. 8
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/SellOrderService.java
  17. 8
      java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/service/SellOutboundService.java
  18. 6
      java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/controller/ManageController.java
  19. 2
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/RoleController.java
  20. 14
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/controller/UserController.java
  21. 3
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/UserSearch.java
  22. 45
      java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/UserService.java
  23. 10
      java/local/src/main/java/cn/toesbieya/jxc/aspect/RestExceptionAspect.java
  24. 2
      java/local/src/main/java/cn/toesbieya/jxc/config/WebConfig.java
  25. 15
      java/local/src/main/java/cn/toesbieya/jxc/controller/AccountController.java
  26. 4
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseInboundController.java
  27. 4
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseOrderController.java
  28. 4
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOrderController.java
  29. 4
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOutboundController.java
  30. 6
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/ManageController.java
  31. 2
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/RoleController.java
  32. 14
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/UserController.java
  33. 3
      java/local/src/main/java/cn/toesbieya/jxc/interceptor/SecurityInterceptor.java
  34. 3
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysUser.java
  35. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/LoginSuccessInfo.java
  36. 6
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/RegisterParam.java
  37. 3
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/UserSearch.java
  38. 33
      java/local/src/main/java/cn/toesbieya/jxc/service/AccountService.java
  39. 8
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseInboundService.java
  40. 8
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseOrderService.java
  41. 8
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOrderService.java
  42. 8
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOutboundService.java
  43. 45
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysUserService.java
  44. 2
      java/local/src/main/java/cn/toesbieya/jxc/util/ThreadUtil.java
  45. 10
      vue/src/api/account/index.js
  46. 2
      vue/src/config/index.js
  47. 2
      vue/src/store/module/socket.js
  48. 38
      vue/src/view/app/login/RegisterForm.vue
  49. 49
      vue/src/view/system/user/component/EditDialog.vue
  50. 23
      vue/src/view/system/user/indexPage.vue
  51. 12
      vue/src/view/userCenter/component/UserCard.vue

@ -8,7 +8,8 @@ import java.io.Serializable;
public class SysUser implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String loginName;
private String nickName;
private String pwd;
private Integer role;
private String avatar;

@ -67,6 +67,7 @@ public class SecurityFilter {
//没有权限
if (!ResourceConfig.authority(user, requestUrl)) {
log.warn("权限拦截,访问路径:{},用户:{}", requestUrl, user.getNickName());
return responseJSON(response, R.noPermission());
}

@ -62,4 +62,5 @@ spring:
- /account/login
- /account/logout
- /account/register
- /account/checkName
- /account/checkLoginName
- /account/checkNickName

@ -11,7 +11,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@ -36,6 +38,14 @@ public class RestExceptionAspect {
return R.fail("请求方法有误");
}
//校验不通过
@ExceptionHandler(MethodArgumentNotValidException.class)
public R handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String error = bindingResult.getFieldErrors().get(0).getDefaultMessage();
return R.fail(error);
}
//@RequestParam没有匹配到值
@ExceptionHandler(MissingServletRequestParameterException.class)
public R handle(MissingServletRequestParameterException e) {

@ -19,7 +19,7 @@ public class ThreadUtil {
RecUserAction
.builder()
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.ip(IpUtil.getIp(request))
.url(request.getServletPath())
.build();

@ -69,13 +69,22 @@ public class AccountController {
return R.success("校验通过");
}
@GetMapping("checkName")
public R checkName(@RequestParam(required = false) Integer id, @RequestParam String name) {
@GetMapping("checkLoginName")
public R checkLoginName(@RequestParam(required = false) Integer id, @RequestParam String name) {
if (StringUtils.isEmpty(name)) {
return R.success();
}
return R.success(service.checkName(name, id) ? "该用户名已存在" : null);
return R.success(service.isLoginNameExist(name, id) ? "该登录名已存在" : null);
}
@GetMapping("checkNickName")
public R checkNickName(@RequestParam(required = false) Integer id, @RequestParam String name) {
if (StringUtils.isEmpty(name)) {
return R.success();
}
return R.success(service.isNickNameExist(name, id) ? "该昵称已存在" : null);
}
private String validateUpdatePwdParam(PasswordUpdateParam vo) {

@ -52,7 +52,7 @@ public class AccountService {
SysUser user = userMapper.selectOne(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, param.getUsername())
.eq(SysUser::getLoginName, param.getUsername())
.eq(SysUser::getPwd, param.getPassword())
);
@ -138,7 +138,7 @@ public class AccountService {
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.ip(ip)
.login(true)
.time(now)
@ -154,7 +154,7 @@ public class AccountService {
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.ip(ip)
.login(false)
.time(System.currentTimeMillis())
@ -168,13 +168,18 @@ public class AccountService {
public R register(RegisterParam param) {
String name = param.getUsername();
String nick = param.getNick();
if (checkName(name, null)) {
return R.fail("该用户名称已存在");
if (isLoginNameExist(name, null)) {
return R.fail("该登录名已存在");
}
if (isNickNameExist(nick, null)) {
return R.fail("该昵称已存在");
}
SysUser user = new SysUser();
user.setName(name);
user.setLoginName(name);
user.setNickName(nick);
user.setPwd(param.getPassword());
user.setRole(1);
user.setDept(1);
@ -224,13 +229,23 @@ public class AccountService {
return R.fail("上传头像失败");
}
//用户名重复时返回true
public boolean checkName(String name, Integer id) {
//登录名重复时返回true
public boolean isLoginNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getLoginName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;
}
//用户昵称重复时返回true
public boolean isNickNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, name)
.eq(SysUser::getNickName, name)
.ne(id != null, SysUser::getId, id)
);
return num == null || num.equals(0);
return num != null && num > 0;
}
}

@ -20,7 +20,7 @@ public class LoginSuccessInfo {
public LoginSuccessInfo(SysUser user) {
this.id = user.getId();
this.name = user.getName();
this.name = user.getNickName();
this.avatar = user.getAvatar();
this.admin = user.isAdmin();
}

@ -3,9 +3,15 @@ package cn.toesbieya.jxc.account.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class RegisterParam extends LoginParam {
@NotNull(message = "昵称不能为空")
@Length(max = 100, message = "昵称太长了")
private String nick;
}

@ -56,7 +56,7 @@ public class PurchaseInboundController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -84,7 +84,7 @@ public class PurchaseInboundController {
if (isFirst) {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}
return service.commit(vo);

@ -67,7 +67,7 @@ public class PurchaseOrderController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
vo.setFinish(DocFinishEnum.TO_BE_STARTED.getCode());
@ -97,7 +97,7 @@ public class PurchaseOrderController {
if (isFirst) {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}

@ -61,7 +61,7 @@ public class SellOrderController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -91,7 +91,7 @@ public class SellOrderController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}

@ -56,7 +56,7 @@ public class SellOutboundController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -85,7 +85,7 @@ public class SellOutboundController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}
return service.commit(vo);

@ -136,7 +136,7 @@ public class PurchaseInboundService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -166,7 +166,7 @@ public class PurchaseInboundService {
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseInbound::getVid, user.getId())
.set(BizPurchaseInbound::getVname, user.getName())
.set(BizPurchaseInbound::getVname, user.getNickName())
.set(BizPurchaseInbound::getVtime, now)
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -232,7 +232,7 @@ public class PurchaseInboundService {
BizDocHistory
.builder()
.pid(id).type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()).uname(user.getName())
.uid(user.getId()).uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now).info(info)
@ -258,7 +258,7 @@ public class PurchaseInboundService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -128,7 +128,7 @@ public class PurchaseOrderService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -152,7 +152,7 @@ public class PurchaseOrderService {
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseOrder::getVid, user.getId())
.set(BizPurchaseOrder::getVname, user.getName())
.set(BizPurchaseOrder::getVname, user.getNickName())
.set(BizPurchaseOrder::getVtime, now)
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -165,7 +165,7 @@ public class PurchaseOrderService {
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
@ -192,7 +192,7 @@ public class PurchaseOrderService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -131,7 +131,7 @@ public class SellOrderService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -155,7 +155,7 @@ public class SellOrderService {
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOrder::getVid, user.getId())
.set(BizSellOrder::getVname, user.getName())
.set(BizSellOrder::getVname, user.getNickName())
.set(BizSellOrder::getVtime, now)
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -168,7 +168,7 @@ public class SellOrderService {
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
@ -195,7 +195,7 @@ public class SellOrderService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -139,7 +139,7 @@ public class SellOutboundService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -168,7 +168,7 @@ public class SellOutboundService {
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOutbound::getVid, user.getId())
.set(BizSellOutbound::getVname, user.getName())
.set(BizSellOutbound::getVname, user.getNickName())
.set(BizSellOutbound::getVtime, now)
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -236,7 +236,7 @@ public class SellOutboundService {
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
@ -263,7 +263,7 @@ public class SellOutboundService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -58,7 +58,7 @@ public class ManageController {
if (isFirstCreate) setAddInfo(user, msg);
msg.setPid(user.getId());
msg.setPname(user.getName());
msg.setPname(user.getNickName());
msg.setPtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_PUBLISHED);
@ -72,7 +72,7 @@ public class ManageController {
UserVo user = SessionUtil.get();
msg.setWid(user.getId());
msg.setWname(user.getName());
msg.setWname(user.getNickName());
msg.setWtime(System.currentTimeMillis());
return service.withdraw(msg);
@ -86,7 +86,7 @@ public class ManageController {
private void setAddInfo(SysUser user, Msg msg) {
msg.setId(null);
msg.setCid(user.getId());
msg.setCname(user.getName());
msg.setCname(user.getNickName());
msg.setCtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_DRAFT);
}

@ -37,7 +37,7 @@ public class RoleController {
role.setId(null);
role.setCid(user.getId());
role.setCname(user.getName());
role.setCname(user.getNickName());
role.setCtime(System.currentTimeMillis());
return service.add(role);

@ -59,7 +59,7 @@ public class UserController {
return R.fail("参数错误");
}
RecUserAction action = ThreadUtil.getAction();
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
List<String> names = users.stream().map(SysUser::getLoginName).collect(Collectors.toList());
action.setAction("踢出用户:【" + String.join(",", names) + "】");
return service.kick(users);
@ -67,7 +67,7 @@ public class UserController {
@PostMapping("resetPwd")
public R resetPwd(@RequestBody SysUser user) {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
if (user.getId() == null || StringUtils.isEmpty(user.getLoginName())) {
return R.fail("参数错误");
}
return service.resetPwd(user);
@ -75,14 +75,20 @@ public class UserController {
private String validateUserCreateParam(SysUser user) {
if (user.getId() != null) return "创建失败,参数错误";
if (StringUtils.isEmpty(user.getName())) return "创建失败,用户名称不能为空";
if (StringUtils.isEmpty(user.getLoginName())
||StringUtils.isEmpty(user.getNickName())) {
return "创建失败,用户名称不能为空";
}
if (user.getRole() == null) return "创建失败,用户角色不能为空";
return null;
}
private String validateUserUpdateParam(SysUser user) {
if (user.getId() == null) return "修改失败,参数错误";
if (StringUtils.isEmpty(user.getName())) return "修改失败,用户名称不能为空";
if (StringUtils.isEmpty(user.getLoginName())
||StringUtils.isEmpty(user.getNickName())) {
return "创建失败,用户名称不能为空";
}
if (user.getRole() == null) return "修改失败,用户角色不能为空";
return null;
}

@ -10,7 +10,8 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
public class UserSearch extends BaseSearch {
private Integer id;
private String name;
private String loginName;
private String nickName;
private String role;
private Long startTime;
private Long endTime;

@ -36,7 +36,8 @@ public class UserService {
public PageResult<UserVo> search(UserSearch vo) {
Integer id = vo.getId();
String name = vo.getName();
String loginName = vo.getLoginName();
String nickName = vo.getNickName();
String roleIds = vo.getRole();
Boolean enable = vo.getEnable();
Long startTime = vo.getStartTime();
@ -46,7 +47,8 @@ public class UserService {
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::isAdmin, false)
.eq(id != null, SysUser::getId, id)
.like(!StringUtils.isEmpty(name), SysUser::getName, name)
.like(!StringUtils.isEmpty(loginName), SysUser::getLoginName, loginName)
.like(!StringUtils.isEmpty(nickName), SysUser::getNickName, nickName)
.inSql(!StringUtils.isEmpty(roleIds), SysUser::getRole, roleIds)
.eq(enable != null, SysUser::isEnable, enable)
.ge(startTime != null, SysUser::getCtime, startTime)
@ -107,10 +109,13 @@ public class UserService {
return new PageResult<>(pageResult.getTotal(), result);
}
@UserAction("'添加用户:'+#user.name")
@UserAction("'添加用户:'+#user.loginName")
public R add(SysUser user) {
if (isNameExist(user.getName(), null)) {
return R.fail("该用户名称已存在");
if (isLoginNameExist(user.getLoginName(), null)) {
return R.fail("该登录名已存在");
}
if (isNickNameExist(user.getNickName(), null)) {
return R.fail("该用户昵称已存在");
}
user.setId(null);
@ -121,19 +126,19 @@ public class UserService {
return R.success("添加成功");
}
@UserAction("'修改用户:'+#user.name")
@UserAction("'修改用户:'+#user.loginName")
public R update(SysUser user) {
Integer id = user.getId();
String name = user.getName();
String name = user.getNickName();
if (isNameExist(name, id)) {
return R.fail("该用户称已存在");
if (isNickNameExist(name, id)) {
return R.fail("该用户称已存在");
}
userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getName, name)
.set(SysUser::getNickName, name)
.set(SysUser::getRole, user.getRole())
.set(SysUser::getDept, user.getDept())
.set(SysUser::isEnable, user.isEnable())
@ -143,7 +148,7 @@ public class UserService {
return R.success("修改成功");
}
@UserAction("'删除用户:'+#user.name")
@UserAction("'删除用户:'+#user.loginName")
@Transactional(rollbackFor = Exception.class)
public R del(SysUser user) {
int rows = userMapper.delete(
@ -168,7 +173,7 @@ public class UserService {
return R.success("踢出成功");
}
@UserAction("'重置用户密码:'+#user.name")
@UserAction("'重置用户密码:'+#user.loginName")
public R resetPwd(SysUser user) {
int rows = userMapper.update(
null,
@ -179,11 +184,21 @@ public class UserService {
return rows > 0 ? R.success() : R.fail("重置失败,未匹配到用户");
}
//用户名重复时返回true
private boolean isNameExist(String name, Integer id) {
//登录名重复时返回true
private boolean isLoginNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getLoginName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;
}
//用户昵称重复时返回true
private boolean isNickNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, name)
.eq(SysUser::getNickName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;

@ -10,7 +10,9 @@ import cn.toesbieya.jxc.util.WebUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@ -37,6 +39,14 @@ public class RestExceptionAspect {
return R.fail("请求方法有误");
}
//校验不通过
@ExceptionHandler(MethodArgumentNotValidException.class)
public R handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
String error = bindingResult.getFieldErrors().get(0).getDefaultMessage();
return R.fail(error);
}
//@RequestParam没有匹配到值
@ExceptionHandler(MissingServletRequestParameterException.class)
public R handle(MissingServletRequestParameterException e) {

@ -36,7 +36,7 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
String[] exclude = {"/test/**", "/account/login", "/account/logout", "/account/register", "/account/checkName", "/error"};
String[] exclude = {"/test/**", "/account/login", "/account/logout", "/account/register", "/account/checkLoginName", "/account/checkNickName", "/error"};
addInterceptor(registry, new SecurityInterceptor(), exclude);
}

@ -68,13 +68,22 @@ public class AccountController {
return R.success("校验通过");
}
@GetMapping("checkName")
public R checkName(@RequestParam(required = false) Integer id, @RequestParam String name) {
@GetMapping("checkLoginName")
public R checkLoginName(@RequestParam(required = false) Integer id, @RequestParam String name) {
if (StringUtils.isEmpty(name)) {
return R.success();
}
return R.success(service.checkName(name, id) ? "该用户名已存在" : null);
return R.success(service.isLoginNameExist(name, id) ? "该登录名已存在" : null);
}
@GetMapping("checkNickName")
public R checkNickName(@RequestParam(required = false) Integer id, @RequestParam String name) {
if (StringUtils.isEmpty(name)) {
return R.success();
}
return R.success(service.isNickNameExist(name, id) ? "该昵称已存在" : null);
}
private String validateUpdatePwdParam(PasswordUpdateParam vo) {

@ -55,7 +55,7 @@ public class PurchaseInboundController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -83,7 +83,7 @@ public class PurchaseInboundController {
if (isFirst) {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}
return service.commit(vo);

@ -60,7 +60,7 @@ public class PurchaseOrderController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -89,7 +89,7 @@ public class PurchaseOrderController {
if (isFirst) {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}

@ -61,7 +61,7 @@ public class SellOrderController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -91,7 +91,7 @@ public class SellOrderController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}

@ -56,7 +56,7 @@ public class SellOutboundController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
vo.setStatus(DocStatusEnum.DRAFT.getCode());
@ -85,7 +85,7 @@ public class SellOutboundController {
UserVo user = SessionUtil.get();
vo.setCid(user.getId());
vo.setCname(user.getName());
vo.setCname(user.getNickName());
vo.setCtime(System.currentTimeMillis());
}
return service.commit(vo);

@ -57,7 +57,7 @@ public class ManageController {
if (isFirstCreate) setAddInfo(user, msg);
msg.setPid(user.getId());
msg.setPname(user.getName());
msg.setPname(user.getNickName());
msg.setPtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_PUBLISHED);
@ -71,7 +71,7 @@ public class ManageController {
UserVo user = SessionUtil.get();
msg.setWid(user.getId());
msg.setWname(user.getName());
msg.setWname(user.getNickName());
msg.setWtime(System.currentTimeMillis());
return service.withdraw(msg);
@ -85,7 +85,7 @@ public class ManageController {
private void setAddInfo(UserVo user, Msg msg) {
msg.setId(null);
msg.setCid(user.getId());
msg.setCname(user.getName());
msg.setCname(user.getNickName());
msg.setCtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_DRAFT);
}

@ -37,7 +37,7 @@ public class RoleController {
role.setId(null);
role.setCid(user.getId());
role.setCname(user.getName());
role.setCname(user.getNickName());
role.setCtime(System.currentTimeMillis());
return service.add(role);

@ -59,7 +59,7 @@ public class UserController {
return R.fail("参数错误");
}
RecUserAction action = ThreadUtil.getAction();
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
List<String> names = users.stream().map(SysUser::getLoginName).collect(Collectors.toList());
action.setAction("踢出用户:【" + String.join(",", names) + "】");
return service.kick(users);
@ -67,7 +67,7 @@ public class UserController {
@PostMapping("resetPwd")
public R resetPwd(@RequestBody SysUser user) {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
if (user.getId() == null || StringUtils.isEmpty(user.getLoginName())) {
return R.fail("参数错误");
}
return service.resetPwd(user);
@ -75,14 +75,20 @@ public class UserController {
private String validateUserCreateParam(SysUser user) {
if (user.getId() != null) return "创建失败,参数错误";
if (StringUtils.isEmpty(user.getName())) return "创建失败,用户名称不能为空";
if (StringUtils.isEmpty(user.getLoginName())
||StringUtils.isEmpty(user.getNickName())) {
return "创建失败,用户名称不能为空";
}
if (user.getRole() == null) return "创建失败,用户角色不能为空";
return null;
}
private String validateUserUpdateParam(SysUser user) {
if (user.getId() == null) return "修改失败,参数错误";
if (StringUtils.isEmpty(user.getName())) return "修改失败,用户名称不能为空";
if (StringUtils.isEmpty(user.getLoginName())
||StringUtils.isEmpty(user.getNickName())) {
return "创建失败,用户名称不能为空";
}
if (user.getRole() == null) return "修改失败,用户角色不能为空";
return null;
}

@ -15,7 +15,6 @@ public class SecurityInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getServletPath();
String ip = IpUtil.getIp(request);
UserVo user = SessionUtil.get(request);
if (user == null) {
@ -26,7 +25,7 @@ public class SecurityInterceptor implements HandlerInterceptor {
if (!PermissionModule.authority(user, url)) {
WebUtil.responseJson(response, R.noPermission());
log.warn("权限拦截,访问路径:{},用户:{},IP:{}", url, user.getName(), ip);
log.warn("权限拦截,访问路径:{},用户:{}", url, user.getNickName());
ThreadUtil.clearAll();
return false;
}

@ -9,7 +9,8 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class SysUser {
private Integer id;
private String name;
private String loginName;
private String nickName;
private String pwd;
private Integer role;
private String avatar;

@ -20,7 +20,7 @@ public class LoginSuccessInfo {
public LoginSuccessInfo(SysUser user) {
this.id = user.getId();
this.name = user.getName();
this.name = user.getNickName();
this.avatar = user.getAvatar();
this.admin = user.isAdmin();
}

@ -3,9 +3,15 @@ package cn.toesbieya.jxc.model.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class RegisterParam extends LoginParam {
@NotNull(message = "昵称不能为空")
@Length(max = 100, message = "昵称太长了")
private String nick;
}

@ -9,7 +9,8 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
public class UserSearch extends BaseSearch {
private Integer id;
private String name;
private String loginName;
private String nickName;
private String role;
private Long startTime;
private Long endTime;

@ -41,7 +41,7 @@ public class AccountService {
SysUser user = userMapper.selectOne(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, param.getUsername())
.eq(SysUser::getLoginName, param.getUsername())
.eq(SysUser::getPwd, param.getPassword())
);
@ -127,7 +127,7 @@ public class AccountService {
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.ip(ip)
.login(true)
.time(now)
@ -143,7 +143,7 @@ public class AccountService {
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.ip(ip)
.login(false)
.time(System.currentTimeMillis())
@ -157,13 +157,18 @@ public class AccountService {
public R register(RegisterParam param) {
String name = param.getUsername();
String nick = param.getNick();
if (checkName(name, null)) {
return R.fail("该用户名称已存在");
if (isLoginNameExist(name, null)) {
return R.fail("该登录名已存在");
}
if (isNickNameExist(nick, null)) {
return R.fail("该昵称已存在");
}
SysUser user = new SysUser();
user.setName(name);
user.setLoginName(name);
user.setNickName(param.getNick());
user.setPwd(param.getPassword());
user.setRole(1);
user.setDept(1);
@ -213,11 +218,21 @@ public class AccountService {
return R.fail("上传头像失败");
}
//用户名重复时返回true
public boolean checkName(String name, Integer id) {
//登录名重复时返回true
public boolean isLoginNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getLoginName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;
}
//用户昵称重复时返回true
public boolean isNickNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, name)
.eq(SysUser::getNickName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;

@ -136,7 +136,7 @@ public class BizPurchaseInboundService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -166,7 +166,7 @@ public class BizPurchaseInboundService {
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseInbound::getVid, user.getId())
.set(BizPurchaseInbound::getVname, user.getName())
.set(BizPurchaseInbound::getVname, user.getNickName())
.set(BizPurchaseInbound::getVtime, now)
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -233,7 +233,7 @@ public class BizPurchaseInboundService {
BizDocHistory
.builder()
.pid(id).type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()).uname(user.getName())
.uid(user.getId()).uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now).info(info)
@ -259,7 +259,7 @@ public class BizPurchaseInboundService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -129,7 +129,7 @@ public class BizPurchaseOrderService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -153,7 +153,7 @@ public class BizPurchaseOrderService {
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseOrder::getVid, user.getId())
.set(BizPurchaseOrder::getVname, user.getName())
.set(BizPurchaseOrder::getVname, user.getNickName())
.set(BizPurchaseOrder::getVtime, now)
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -166,7 +166,7 @@ public class BizPurchaseOrderService {
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
@ -193,7 +193,7 @@ public class BizPurchaseOrderService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -133,7 +133,7 @@ public class BizSellOrderService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -157,7 +157,7 @@ public class BizSellOrderService {
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOrder::getVid, user.getId())
.set(BizSellOrder::getVname, user.getName())
.set(BizSellOrder::getVname, user.getNickName())
.set(BizSellOrder::getVtime, now)
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -170,7 +170,7 @@ public class BizSellOrderService {
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
@ -197,7 +197,7 @@ public class BizSellOrderService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -141,7 +141,7 @@ public class BizSellOutboundService {
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())
@ -170,7 +170,7 @@ public class BizSellOutboundService {
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOutbound::getVid, user.getId())
.set(BizSellOutbound::getVname, user.getName())
.set(BizSellOutbound::getVname, user.getNickName())
.set(BizSellOutbound::getVtime, now)
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
@ -237,7 +237,7 @@ public class BizSellOutboundService {
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
@ -264,7 +264,7 @@ public class BizSellOutboundService {
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.DRAFT.getCode())
.time(System.currentTimeMillis())

@ -36,7 +36,8 @@ public class SysUserService {
public PageResult<UserVo> search(UserSearch vo) {
Integer id = vo.getId();
String name = vo.getName();
String loginName = vo.getLoginName();
String nickName = vo.getNickName();
String roleIds = vo.getRole();
Boolean enable = vo.getEnable();
Long startTime = vo.getStartTime();
@ -46,7 +47,8 @@ public class SysUserService {
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::isAdmin, false)
.eq(id != null, SysUser::getId, id)
.like(!StringUtils.isEmpty(name), SysUser::getName, name)
.like(!StringUtils.isEmpty(loginName), SysUser::getLoginName, loginName)
.like(!StringUtils.isEmpty(nickName), SysUser::getNickName, nickName)
.inSql(!StringUtils.isEmpty(roleIds), SysUser::getRole, roleIds)
.eq(enable != null, SysUser::isEnable, enable)
.ge(startTime != null, SysUser::getCtime, startTime)
@ -107,10 +109,13 @@ public class SysUserService {
return new PageResult<>(pageResult.getTotal(), result);
}
@UserAction("'添加用户:'+#user.name")
@UserAction("'添加用户:'+#user.loginName")
public R add(SysUser user) {
if (isNameExist(user.getName(), null)) {
return R.fail("该用户名称已存在");
if (isLoginNameExist(user.getLoginName(), null)) {
return R.fail("该登录名已存在");
}
if (isNickNameExist(user.getNickName(), null)) {
return R.fail("该用户昵称已存在");
}
user.setId(null);
@ -121,19 +126,19 @@ public class SysUserService {
return R.success("添加成功");
}
@UserAction("'修改用户:'+#user.name")
@UserAction("'修改用户:'+#user.loginName")
public R update(SysUser user) {
Integer id = user.getId();
String name = user.getName();
String name = user.getNickName();
if (isNameExist(name, id)) {
return R.fail("该用户称已存在");
if (isNickNameExist(name, id)) {
return R.fail("该用户称已存在");
}
userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getName, name)
.set(SysUser::getNickName, name)
.set(SysUser::getRole, user.getRole())
.set(SysUser::getDept, user.getDept())
.set(SysUser::isEnable, user.isEnable())
@ -143,7 +148,7 @@ public class SysUserService {
return R.success("修改成功");
}
@UserAction("'删除用户:'+#user.name")
@UserAction("'删除用户:'+#user.loginName")
@Transactional(rollbackFor = Exception.class)
public R del(SysUser user) {
int rows = userMapper.delete(
@ -168,7 +173,7 @@ public class SysUserService {
return R.success("踢出成功");
}
@UserAction("'重置用户密码:'+#user.name")
@UserAction("'重置用户密码:'+#user.loginName")
public R resetPwd(SysUser user) {
int rows = userMapper.update(
null,
@ -179,11 +184,21 @@ public class SysUserService {
return rows > 0 ? R.success() : R.fail("重置失败,未匹配到用户");
}
//用户名重复时返回true
private boolean isNameExist(String name, Integer id) {
//登录名重复时返回true
private boolean isLoginNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getLoginName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;
}
//用户昵称重复时返回true
private boolean isNickNameExist(String name, Integer id) {
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, name)
.eq(SysUser::getNickName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;

@ -16,7 +16,7 @@ public class ThreadUtil {
RecUserAction userAction = RecUserAction.builder()
.uid(user.getId())
.uname(user.getName())
.uname(user.getNickName())
.ip(IpUtil.getIp(request))
.url(request.getServletPath())
.build();

@ -16,8 +16,14 @@ export const updateAvatar = new GetApi(
export const validate = new GetApi(`/account/validate`, pwd => ({params: {pwd}}))
export const checkName = new GetApi(
`/account/checkName`,
export const checkLoginName = new GetApi(
`/account/checkLoginName`,
(name, id) => ({params: {name, id}}),
p => p.then(({data}) => data)
)
export const checkNickName = new GetApi(
`/account/checkNickName`,
(name, id) => ({params: {name, id}}),
p => p.then(({data}) => data)
)

@ -24,7 +24,7 @@ module.exports = {
useMock: false,
//socket连接地址
socketUrl: isDev ? 'http://localhost:12580' : 'https://toesbieya.cn:12580',
socketUrl: isDev ? 'http://localhost:12580' : 'https://toesbieya.cn',
//侧边栏顶上的logo地址
sidebarLogoUrl: 'https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png',

@ -32,7 +32,7 @@ const actions = {
}
function initSocket({id, token}) {
return new SocketIO(socketUrl, {query: {id, token}})
return new SocketIO(socketUrl, {query: {id, token}, transports: ['websocket']})
}
function defaultEventBind(socket, {state, commit, dispatch}) {

@ -4,7 +4,14 @@
<span class="svg-container">
<v-icon icon="svg-user"/>
</span>
<el-input ref="username" v-model="form.username" :maxlength="20" placeholder="请输入用户名"/>
<el-input ref="username" v-model="form.username" :maxlength="20" placeholder="请输入登陆名称"/>
</el-form-item>
<el-form-item prop="nick">
<span class="svg-container">
<v-icon icon="svg-user"/>
</span>
<el-input v-model="form.nick" :maxlength="100" placeholder="请输入昵称"/>
</el-form-item>
<el-form-item prop="pwd">
@ -47,7 +54,7 @@
<script>
import md5 from "js-md5"
import {register, checkName} from "@/api/account"
import {register, checkLoginName, checkNickName} from "@/api/account"
import {debounce} from "@/util"
import {elSuccess} from "@/util/message"
@ -55,9 +62,15 @@ export default {
name: "RegisterForm",
data() {
const validateName = debounce((r, v, c) => {
checkName
.request(this.form.username)
const validateLoginName = debounce((r, v, c) => {
checkLoginName
.request(this.form.username, this.form.id)
.then(({msg}) => msg ? c(msg) : c())
.catch(e => c(e))
}, 300)
const validateNickName = debounce((r, v, c) => {
checkNickName
.request(this.form.nick, this.form.id)
.then(({msg}) => msg ? c(msg) : c())
.catch(e => c(e))
}, 300)
@ -67,13 +80,18 @@ export default {
return {
form: {
username: '',
nick: '',
pwd: '',
repwd: ''
},
rules: {
username: [
{required: true, message: '请输入用户名', trigger: 'change'},
{validator: validateName, trigger: 'change'}
{required: true, message: '请输入登陆名称', trigger: 'change'},
{validator: validateLoginName, trigger: 'change'}
],
nick: [
{required: true, message: '请输入昵称', trigger: 'change'},
{validator: validateNickName, trigger: 'change'}
],
pwd: [
{required: true, message: '请输入密码', trigger: 'change'},
@ -95,7 +113,11 @@ export default {
this.$refs.form.validate(valid => {
if (!valid) return
this.loading = true
register.request({username: this.form.username, password: md5(this.form.pwd)})
register.request({
username: this.form.username,
nick: this.form.nick,
password: md5(this.form.pwd)
})
.then(() => {
elSuccess('注册成功')
this.$router.push('/login')

@ -1,8 +1,11 @@
<template>
<form-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open">
<abstract-form :model="form" :rules="rules" label-width="75px" size="">
<el-form-item label="名 称" prop="name">
<el-input v-model="form.name" :readonly="!canEdit" maxlength="20"/>
<abstract-form :model="form" :rules="rules" label-width="90px" size="">
<el-form-item label="登录名" prop="loginName">
<el-input v-model="form.loginName" :readonly="!!form.id || !canEdit" maxlength="20"/>
</el-form-item>
<el-form-item label="昵 称" prop="nickName">
<el-input v-model="form.nickName" :readonly="!canEdit" maxlength="100"/>
</el-form-item>
<el-form-item label="角 色" prop="role">
<role-selector
@ -41,7 +44,7 @@ import AbstractForm from "@/component/AbstractForm"
import DepartmentSelector from "./DepartmentSelector"
import FormDialog from '@/component/FormDialog'
import RoleSelector from './RoleSelector'
import {checkName} from "@/api/account"
import {checkLoginName, checkNickName} from "@/api/account"
import {add, update} from "@/api/system/user"
import {isEmpty, debounce} from '@/util'
import {elConfirm} from "@/util/message"
@ -60,9 +63,15 @@ export default {
},
data() {
const validateName = debounce((r, v, c) => {
checkName
.request(this.form.name, this.form.id)
const validateLoginName = debounce((r, v, c) => {
checkLoginName
.request(this.form.loginName, this.form.id)
.then(({msg}) => msg ? c(msg) : c())
.catch(e => c(e))
}, 300)
const validateNickName = debounce((r, v, c) => {
checkNickName
.request(this.form.nickName, this.form.id)
.then(({msg}) => msg ? c(msg) : c())
.catch(e => c(e))
}, 300)
@ -70,7 +79,8 @@ export default {
loading: false,
form: {
id: null,
name: null,
loginName: null,
nickName: null,
role: null,
roleName: null,
dept: null,
@ -78,9 +88,13 @@ export default {
enable: false
},
rules: {
name: [
{required: true, message: '用户名称不能为空', trigger: 'change'},
{validator: validateName, trigger: 'change'}
loginName: [
{required: true, message: '登录名不能为空', trigger: 'change'},
{validator: validateLoginName, trigger: 'change'}
],
nickName: [
{required: true, message: '昵称不能为空', trigger: 'change'},
{validator: validateNickName, trigger: 'change'}
],
role: [{required: true, message: '用户角色不能为空', trigger: 'change'}],
dept: [{required: true, message: '用户部门不能为空', trigger: 'change'}]
@ -104,9 +118,9 @@ export default {
confirmMessage() {
switch (this.type) {
case 'add':
return `确认添加新的用户【${this.form.name}】?`
return `确认添加新的用户【${this.form.loginName}】?`
case 'edit':
return `确认提交对【${this.data.name}】作出的修改?`
return `确认提交对【${this.data.loginName}】作出的修改?`
default:
return ''
}
@ -130,7 +144,8 @@ export default {
clearForm() {
this.form.id = null
this.form.name = null
this.form.loginName = null
this.form.nickName = null
this.form.role = null
this.form.roleName = null
this.form.dept = null
@ -148,11 +163,9 @@ export default {
if (this.loading) return
this.$refs.form.validate(v => {
if (!v) return
elConfirm(this.confirmMessage)
.then(() => {
this.loading = true
return this.type === 'add' ? add.request(this.form) : update.request(this.form)
})
const promise = this.type === 'add' ? add.request(this.form) : update.request(this.form)
promise
.then(({msg}) => this.$emit('success', msg))
.finally(() => this.loading = false)
})

@ -2,7 +2,10 @@
<el-card v-loading="config.operating">
<search-form>
<search-form-item label="用户名">
<el-input v-model="searchForm.name" clearable maxlength="100"/>
<el-input v-model="searchForm.loginName" clearable maxlength="20"/>
</search-form-item>
<search-form-item label="昵 称">
<el-input v-model="searchForm.nickName" clearable maxlength="100"/>
</search-form-item>
<search-form-item label="角 色">
<role-selector v-model="searchForm.role"/>
@ -47,7 +50,8 @@
@click.stop="() => previewAvatar(row.avatar)"
>
</el-table-column>
<el-table-column align="center" label="用户名" prop="name" show-overflow-tooltip/>
<el-table-column align="center" label="登陆名" prop="loginName" show-overflow-tooltip/>
<el-table-column align="center" label="昵称" prop="nickName" show-overflow-tooltip/>
<el-table-column align="center" label="角 色" show-overflow-tooltip>
<template v-slot="{row}">
{{ row.admin === true ? '超级管理员' : row.roleName }}
@ -100,7 +104,8 @@ export default {
data() {
return {
searchForm: {
name: '',
loginName: '',
nickName: '',
role: null,
enable: null
},
@ -149,10 +154,10 @@ export default {
resetPwd() {
if (isEmpty(this.row)) return elError('请选择要重置密码的用户')
if (this.config.operating) return
elConfirm(`确定重置用户【${this.row.name}】的密码?`)
elConfirm(`确定重置用户【${this.row.loginName}】的密码?`)
.then(() => {
this.config.operating = true
return resetPwd.request({id: this.row.id, name: this.row.name})
return resetPwd.request({id: this.row.id, loginName: this.row.loginName})
})
.then(({msg}) => {
elSuccess(msg)
@ -164,10 +169,10 @@ export default {
del() {
if (isEmpty(this.row)) return elError('请选择要删除的用户')
if (this.config.operating) return
elConfirm(`确定删除用户【${this.row.name}】?`)
elConfirm(`确定删除用户【${this.row.loginName}】?`)
.then(() => {
this.config.operating = true
return del.request({id: this.row.id, name: this.row.name})
return del.request({id: this.row.id, LoginName: this.row.loginName})
})
.then(({msg}) => {
elSuccess(msg)
@ -180,10 +185,10 @@ export default {
if (isEmpty(this.row)) return elError('请选择要踢出的用户')
if (!this.row.online) return elError('只有在线用户才可以踢出')
if (this.config.operating) return
elConfirm(`确定踢出用户【${this.row.name}】?`)
elConfirm(`确定踢出用户【${this.row.loginName}】?`)
.then(() => {
this.config.operating = true
return kick.request([{id: this.row.id, name: this.row.name}])
return kick.request([{id: this.row.id, LoginName: this.row.loginName}])
})
.then(() => {
elSuccess('踢出成功')

@ -3,16 +3,20 @@
<el-avatar :size="200" :src="avatar" icon="el-icon-user-solid" @click.native="uploadAvatarDialog=true"/>
<ul class="user-info">
<li>登录账号
<li>
用户昵称
<div class="user-right">{{ name }}</div>
</li>
<li>所属部门
<li>
所属部门
<div class="user-right">{{ deptName }}</div>
</li>
<li>用户角色
<li>
用户角色
<div class="user-right">{{ roleName }}</div>
</li>
<li>安全设置
<li>
安全设置
<div class="user-right"><a @click="modifyPasswordDialog=true">修改密码</a></div>
</li>
</ul>

Loading…
Cancel
Save