diff --git a/db/2pigxx.sql b/db/2pigxx.sql
index 63a0b309a..e1ff670f2 100644
--- a/db/2pigxx.sql
+++ b/db/2pigxx.sql
@@ -562,6 +562,7 @@ INSERT INTO `sys_public_param` VALUES (5, '租户默认角色编码', 'TENANT_DE
INSERT INTO `sys_public_param` VALUES (6, '租户默认角色名称', 'TENANT_DEFAULT_ROLENAME', '租户默认角色', '0', '', ' ', ' ', '2020-05-12 04:06:19', NULL, '2', '1', '0', 1);
INSERT INTO `sys_public_param` VALUES (7, '表前缀', 'GEN_TABLE_PREFIX', 'tb_', '0', '', ' ', ' ', '2020-05-12 04:23:04', NULL, '9', '1', '0', 1);
INSERT INTO `sys_public_param` VALUES (8, '接口文档不显示的字段', 'GEN_HIDDEN_COLUMNS', 'tenant_id', '0', '', ' ', ' ', '2020-05-12 04:25:19', NULL, '9', '1', '0', 1);
+INSERT INTO `sys_public_param` VALUES (9, '注册用户默认角色', 'USER_DEFAULT_ROLE', 'GENERAL_USER', '0', NULL, ' ', ' ', '2022-03-31 16:52:24', NULL, '2', '1', '0', 1);
COMMIT;
-- ----------------------------
@@ -590,6 +591,7 @@ CREATE TABLE `sys_role` (
-- ----------------------------
BEGIN;
INSERT INTO `sys_role` VALUES (1, '管理员', 'ROLE_ADMIN', '管理员', '3', '2', ' ', ' ', '2017-10-29 15:45:51', '2022-01-25 18:21:23', '0', 1);
+INSERT INTO `sys_role` VALUES (2, '普通用户', 'GENERAL_USER', '普通用户', '3', NULL, ' ', ' ', '2022-03-31 17:03:15', NULL, '0', 1);
COMMIT;
-- ----------------------------
diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/exception/ErrorCodes.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/exception/ErrorCodes.java
new file mode 100644
index 000000000..172eb2835
--- /dev/null
+++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/exception/ErrorCodes.java
@@ -0,0 +1,93 @@
+package com.pig4cloud.pigx.common.core.exception;
+
+/**
+ * 错误编码
+ *
+ * @author lengleng
+ * @date 2022/3/30
+ */
+public interface ErrorCodes {
+
+ /**
+ * 系统编码错误
+ */
+ String SYS_PARAM_CONFIG_ERROR = "sys.param.config.error";
+
+ /**
+ * 系统内置参数不能删除
+ */
+ String SYS_PARAM_DELETE_SYSTEM = "sys.param.delete.system";
+
+ /**
+ * 用户已存在
+ */
+ String SYS_USER_USERNAME_EXISTING = "sys.user.username.existing";
+
+ /**
+ * 用户原密码错误,修改失败
+ */
+ String SYS_USER_UPDATE_PASSWORDERROR = "sys.user.update.passwordError";
+
+ /**
+ * 用户信息为空
+ */
+ String SYS_USER_USERINFO_EMPTY = "sys.user.userInfo.empty";
+
+ /**
+ * 获取当前用户信息失败
+ */
+ String SYS_USER_QUERY_ERROR = "sys.user.query.error";
+
+ String SYS_USER_IMPORT_SUCCEED = "sys.user.import.succeed";
+
+ /**
+ * 部门名称不存在
+ */
+ String SYS_DEPT_DEPTNAME_INEXISTENCE = "sys.dept.deptName.inexistence";
+
+ /**
+ * 岗位名称不存在
+ */
+ String SYS_POST_POSTNAME_INEXISTENCE = "sys.post.postName.inexistence";
+
+ /**
+ * 岗位名称或编码已经存在
+ */
+ String SYS_POST_NAMEORCODE_EXISTING = "sys.post.nameOrCode.existing";
+
+ /**
+ * 角色名称不存在
+ */
+ String SYS_ROLE_ROLENAME_INEXISTENCE = "sys.role.roleName.inexistence";
+
+ /**
+ * 角色名或角色编码已经存在
+ */
+ String SYS_ROLE_NAMEORCODE_EXISTING = "sys.role.nameOrCode.existing";
+
+ /**
+ * 菜单存在下级节点 删除失败
+ */
+ String SYS_MENU_DELETE_EXISTING = "sys.menu.delete.existing";
+
+ /**
+ * 系统内置字典不允许删除
+ */
+ String SYS_DICT_DELETE_SYSTEM = "sys.dict.delete.system";
+
+ /**
+ * 系统内置字典不能修改
+ */
+ String SYS_DICT_UPDATE_SYSTEM = "sys.dict.update.system";
+
+ /**
+ * 验证码发送频繁
+ */
+ String SYS_APP_SMS_OFTEN = "sys.app.sms.often";
+
+ /**
+ * 手机号未注册
+ */
+ String SYS_APP_PHONE_UNREGISTERED = "sys.app.phone.unregistered";
+
+}
diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/MsgUtils.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/MsgUtils.java
new file mode 100644
index 000000000..9ee192ce3
--- /dev/null
+++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/MsgUtils.java
@@ -0,0 +1,37 @@
+package com.pig4cloud.pigx.common.core.util;
+
+import lombok.experimental.UtilityClass;
+import org.springframework.context.MessageSource;
+
+import java.util.Locale;
+
+/**
+ * i18n 工具类
+ *
+ * @author lengleng
+ * @date 2022/3/30
+ */
+@UtilityClass
+public class MsgUtils {
+
+ /**
+ * 通过code 获取中文错误信息
+ * @param code
+ * @return
+ */
+ public String getMessage(String code) {
+ MessageSource messageSource = SpringContextHolder.getBean("messageSource");
+ return messageSource.getMessage(code, null, Locale.CHINA);
+ }
+
+ /**
+ * 通过code 和参数获取中文错误信息
+ * @param code
+ * @return
+ */
+ public String getMessage(String code, Object... objects) {
+ MessageSource messageSource = SpringContextHolder.getBean("messageSource");
+ return messageSource.getMessage(code, objects, Locale.CHINA);
+ }
+
+}
diff --git a/pigx-common/pigx-common-core/src/main/resources/i18n/messages_zh_CN.properties b/pigx-common/pigx-common-core/src/main/resources/i18n/messages_zh_CN.properties
index e69de29bb..974780564 100644
--- a/pigx-common/pigx-common-core/src/main/resources/i18n/messages_zh_CN.properties
+++ b/pigx-common/pigx-common-core/src/main/resources/i18n/messages_zh_CN.properties
@@ -0,0 +1,24 @@
+sys.user.update.passwordError=\u539F\u5BC6\u7801\u9519\u8BEF\uFF0C\u4FEE\u6539\u5931\u8D25
+sys.user.query.error=\u83B7\u53D6\u5F53\u524D\u7528\u6237\u4FE1\u606F\u5931\u8D25
+sys.user.import.succeed=\u7528\u6237\u5BFC\u5165\u6210\u529F\uFF0C\u9ED8\u8BA4\u5BC6\u7801\u4E3A\u624B\u673A\u53F7
+sys.user.username.existing={0} \u7528\u6237\u540D\u5DF2\u5B58\u5728
+sys.user.userInfo.empty={0} \u7528\u6237\u4FE1\u606F\u4E3A\u7A7A
+
+sys.dept.deptName.inexistence={0} \u90E8\u95E8\u540D\u79F0\u4E0D\u5B58\u5728
+
+sys.post.postName.inexistence={0} \u5C97\u4F4D\u540D\u79F0\u4E0D\u5B58\u5728
+sys.post.nameOrCode.existing={0} {1} \u5C97\u4F4D\u540D\u6216\u5C97\u4F4D\u7F16\u7801\u5DF2\u7ECF\u5B58\u5728
+
+sys.role.roleName.inexistence={0} \u89D2\u8272\u540D\u79F0\u4E0D\u5B58\u5728
+sys.role.nameOrCode.existing={0} {1} \u89D2\u8272\u540D\u6216\u89D2\u8272\u7F16\u7801\u5DF2\u7ECF\u5B58\u5728
+
+sys.param.delete.system=\u7CFB\u7EDF\u5185\u7F6E\u53C2\u6570\u4E0D\u80FD\u5220\u9664
+sys.param.config.error={0} \u7CFB\u7EDF\u53C2\u6570\u914D\u7F6E\u9519\u8BEF
+
+sys.menu.delete.existing=\u83DC\u5355\u542B\u6709\u4E0B\u7EA7\u4E0D\u80FD\u5220\u9664
+
+sys.app.sms.often=\u9A8C\u8BC1\u7801\u53D1\u9001\u8FC7\u9891\u7E41
+sys.app.phone.unregistered={0} \u624B\u673A\u53F7\u672A\u6CE8\u518C
+
+sys.dict.delete.system=\u7CFB\u7EDF\u5185\u7F6E\u5B57\u5178\u9879\u76EE\u4E0D\u80FD\u5220\u9664
+sys.dict.update.system=\u7CFB\u7EDF\u5185\u7F6E\u5B57\u5178\u9879\u76EE\u4E0D\u80FD\u4FEE\u6539
diff --git a/pigx-common/pigx-common-job/src/main/java/com/pig4cloud/pigx/common/job/properties/XxlExecutorProperties.java b/pigx-common/pigx-common-job/src/main/java/com/pig4cloud/pigx/common/job/properties/XxlExecutorProperties.java
index cb3824e45..eb2e2e6b4 100644
--- a/pigx-common/pigx-common-job/src/main/java/com/pig4cloud/pigx/common/job/properties/XxlExecutorProperties.java
+++ b/pigx-common/pigx-common-job/src/main/java/com/pig4cloud/pigx/common/job/properties/XxlExecutorProperties.java
@@ -28,9 +28,9 @@ public class XxlExecutorProperties {
private String ip;
/**
- * 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
+ * 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9099,单机部署多个执行器时,注意要配置不同执行器端口;
*/
- private Integer port = 0;
+ private Integer port = 9099;
/**
* 执行器通讯TOKEN [选填]:非空时启用;
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java
new file mode 100644
index 000000000..c674ec178
--- /dev/null
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java
@@ -0,0 +1,41 @@
+package com.pig4cloud.pigx.admin.controller;
+
+import com.pig4cloud.pigx.admin.api.dto.UserDTO;
+import com.pig4cloud.pigx.admin.service.SysUserService;
+import com.pig4cloud.pigx.common.core.util.R;
+import com.pig4cloud.pigx.common.log.annotation.SysLog;
+import com.pig4cloud.pigx.common.security.annotation.Inner;
+import lombok.RequiredArgsConstructor;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author lengleng
+ * @date 2022/3/30
+ *
+ * 客户端注册功能 register.user = false
+ */
+@RestController
+@RequestMapping("/register")
+@RequiredArgsConstructor
+@ConditionalOnProperty(name = "register.user", matchIfMissing = true)
+public class RegisterController {
+
+ private final SysUserService userService;
+
+ /**
+ * 注册用户
+ * @param userDto 用户信息
+ * @return success/false
+ */
+ @Inner(value = false)
+ @SysLog("注册用户")
+ @PostMapping("/user")
+ public R registerUser(@RequestBody UserDTO userDto) {
+ return userService.registerUser(userDto);
+ }
+
+}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java
index 308250c44..e174f3acb 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java
@@ -26,6 +26,8 @@ import com.pig4cloud.pigx.admin.api.dto.UserDTO;
import com.pig4cloud.pigx.admin.api.entity.SysUser;
import com.pig4cloud.pigx.admin.api.vo.UserExcelVO;
import com.pig4cloud.pigx.admin.service.SysUserService;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.RequestExcel;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
@@ -64,7 +66,7 @@ public class SysUserController {
public R info(@PathVariable String username) {
SysUser user = userService.getOne(Wrappers.query().lambda().eq(SysUser::getUsername, username));
if (user == null) {
- return R.failed(null, String.format("用户信息为空 %s", username));
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, username));
}
return R.ok(userService.findUserInfo(user));
}
@@ -78,7 +80,7 @@ public class SysUserController {
String username = SecurityUtils.getUser().getUsername();
SysUser user = userService.getOne(Wrappers.query().lambda().eq(SysUser::getUsername, username));
if (user == null) {
- return R.failed(null, "获取当前用户信息失败");
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_QUERY_ERROR));
}
return R.ok(userService.findUserInfo(user));
}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java
index 4bcbcc1ff..ac38eba8d 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java
@@ -110,4 +110,11 @@ public interface SysUserService extends IService {
*/
R importUser(List excelVOList, BindingResult bindingResult);
+ /**
+ * 注册用户
+ * @param userDto 用户信息
+ * @return success/false
+ */
+ R registerUser(UserDTO userDto);
+
}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java
index 82dfdd456..cf85d076c 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/MobileServiceImpl.java
@@ -27,6 +27,8 @@ import com.pig4cloud.pigx.admin.service.MobileService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -63,7 +65,7 @@ public class MobileServiceImpl implements MobileService {
if (CollUtil.isEmpty(userList)) {
log.info("手机号未注册:{}", mobile);
- return R.ok(Boolean.FALSE, "手机号未注册");
+ return R.ok(Boolean.FALSE, MsgUtils.getMessage(ErrorCodes.SYS_APP_PHONE_UNREGISTERED, mobile));
}
Object codeObj = redisTemplate.opsForValue()
@@ -71,7 +73,7 @@ public class MobileServiceImpl implements MobileService {
if (codeObj != null) {
log.info("手机号验证码未过期:{},{}", mobile, codeObj);
- return R.ok(Boolean.FALSE, "验证码发送过频繁");
+ return R.ok(Boolean.FALSE, MsgUtils.getMessage(ErrorCodes.SYS_APP_SMS_OFTEN));
}
String code = RandomUtil.randomNumbers(Integer.parseInt(SecurityConstants.CODE_SIZE));
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java
index 0ffb6dc69..c9a1a2da0 100755
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java
@@ -24,6 +24,8 @@ import com.pig4cloud.pigx.admin.service.SysDictItemService;
import com.pig4cloud.pigx.admin.service.SysDictService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.enums.DictTypeEnum;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
@@ -54,7 +56,7 @@ public class SysDictItemServiceImpl extends ServiceImpl impl
SysDict dict = this.getById(id);
// 系统内置
if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystemFlag())) {
- return R.failed("系统内置字典不能删除");
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_DICT_DELETE_SYSTEM));
}
baseMapper.deleteById(id);
@@ -74,7 +76,7 @@ public class SysDictServiceImpl extends ServiceImpl impl
SysDict sysDict = this.getById(dict.getId());
// 系统内置
if (DictTypeEnum.SYSTEM.getType().equals(sysDict.getSystemFlag())) {
- return R.failed("系统内置字典不能修改");
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_DICT_UPDATE_SYSTEM));
}
return R.ok(this.updateById(dict));
}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java
index 48317ffa1..792a2d8de 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java
@@ -34,6 +34,8 @@ import com.pig4cloud.pigx.admin.service.SysMenuService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.enums.MenuTypeEnum;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
@@ -78,7 +80,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl
// 查询父节点为当前节点的节点
List menuList = this.list(Wrappers.query().lambda().eq(SysMenu::getParentId, id));
if (CollUtil.isNotEmpty(menuList)) {
- return R.failed("菜单含有下级不能删除");
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_MENU_DELETE_EXISTING));
}
sysRoleMenuMapper.delete(Wrappers.query().lambda().eq(SysRoleMenu::getMenuId, id));
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java
index 31b82e6d8..c4c7027da 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPostServiceImpl.java
@@ -24,6 +24,8 @@ import com.pig4cloud.pigx.admin.api.entity.SysPost;
import com.pig4cloud.pigx.admin.api.vo.PostExcelVO;
import com.pig4cloud.pigx.admin.mapper.SysPostMapper;
import com.pig4cloud.pigx.admin.service.SysPostService;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.vo.ErrorMessage;
import org.springframework.stereotype.Service;
@@ -66,7 +68,8 @@ public class SysPostServiceImpl extends ServiceImpl impl
|| excel.getPostCode().equals(post.getPostCode()));
if (existPost) {
- errorMsg.add(String.format("%s %s 岗位名或岗位编码已经存在", excel.getPostName(), excel.getPostCode()));
+ errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_NAMEORCODE_EXISTING, excel.getPostName(),
+ excel.getPostCode()));
}
// 数据合法情况
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java
index 24070c101..b35d2d691 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java
@@ -24,6 +24,8 @@ import com.pig4cloud.pigx.admin.mapper.SysPublicParamMapper;
import com.pig4cloud.pigx.admin.service.SysPublicParamService;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.enums.DictTypeEnum;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
@@ -64,7 +66,7 @@ public class SysPublicParamServiceImpl extends ServiceImpl impl
|| excel.getRoleCode().equals(sysRole.getRoleCode()));
if (existRole) {
- errorMsg.add(String.format("%s %s 角色名或角色编码已经存在", excel.getRoleName(), excel.getRoleDesc()));
+ errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_NAMEORCODE_EXISTING, excel.getRoleName(),
+ excel.getRoleCode()));
}
// 数据合法情况
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java
index 229e8dcd9..804b10ce5 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java
@@ -36,8 +36,11 @@ import com.pig4cloud.pigx.admin.mapper.SysUserPostMapper;
import com.pig4cloud.pigx.admin.service.*;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
+import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
+import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.data.datascope.DataScope;
+import com.pig4cloud.pigx.common.data.resolver.ParamResolver;
import com.pig4cloud.pigx.common.excel.vo.ErrorMessage;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -50,10 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
import java.time.LocalDateTime;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -91,12 +91,14 @@ public class SysUserServiceImpl extends ServiceImpl impl
sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
baseMapper.insert(sysUser);
// 保存用户岗位信息
- userDto.getPost().stream().map(postId -> {
- SysUserPost userPost = new SysUserPost();
- userPost.setUserId(sysUser.getUserId());
- userPost.setPostId(postId);
- return userPost;
- }).forEach(sysUserPostMapper::insert);
+ Optional.ofNullable(userDto.getPost()).ifPresent(posts -> {
+ posts.stream().map(postId -> {
+ SysUserPost userPost = new SysUserPost();
+ userPost.setUserId(sysUser.getUserId());
+ userPost.setPostId(postId);
+ return userPost;
+ }).forEach(sysUserPostMapper::insert);
+ });
List userRoleList = userDto.getRole().stream().map(roleId -> {
SysUserRole userRole = new SysUserRole();
userRole.setUserId(sysUser.getUserId());
@@ -172,7 +174,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
UserVO userVO = baseMapper.getUserVoByUsername(userDto.getUsername());
if (!ENCODER.matches(userDto.getPassword(), userVO.getPassword())) {
log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername());
- return R.failed("原密码错误,修改个人信息失败");
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR));
}
SysUser sysUser = new SysUser();
@@ -283,14 +285,14 @@ public class SysUserServiceImpl extends ServiceImpl impl
.anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername()));
if (exsitUserName) {
- errorMsg.add(String.format("%s 用户名已存在", excel.getUsername()));
+ errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername()));
}
// 判断输入的部门名称列表是否合法
Optional deptOptional = deptList.stream()
.filter(dept -> excel.getDeptName().equals(dept.getName())).findFirst();
if (!deptOptional.isPresent()) {
- errorMsg.add(String.format("%s 部门名称不存在", excel.getDeptName()));
+ errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptName()));
}
// 判断输入的角色名称列表是否合法
@@ -300,7 +302,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
.collect(Collectors.toList());
if (roleCollList.size() != roleNameList.size()) {
- errorMsg.add(String.format("%s 角色名称不存在", excel.getRoleNameList()));
+ errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList()));
}
// 数据合法情况
@@ -317,7 +319,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
if (CollUtil.isNotEmpty(errorMessageList)) {
return R.failed(errorMessageList);
}
- return R.ok(null, "用户导入成功,默认密码为手机号");
+ return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED));
}
/**
@@ -341,4 +343,31 @@ public class SysUserServiceImpl extends ServiceImpl impl
this.saveUser(userDTO);
}
+ /**
+ * 注册用户 赋予用户默认角色
+ * @param userDto 用户信息
+ * @return success/false
+ */
+ @Override
+ public R registerUser(UserDTO userDto) {
+ // 判断用户名是否存在
+ SysUser sysUser = this.getOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, userDto.getUsername()));
+ if (sysUser != null) {
+ String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername());
+ return R.failed(message);
+ }
+
+ // 获取默认角色编码
+ String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE");
+ // 默认角色
+ SysRole sysRole = sysRoleService.getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole));
+
+ if (sysRole == null) {
+ return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_PARAM_CONFIG_ERROR, "USER_DEFAULT_ROLE"));
+ }
+
+ userDto.setRole(Collections.singletonList(sysRole.getRoleId()));
+ return R.ok(saveUser(userDto));
+ }
+
}
diff --git a/pigx-visual/pigx-codegen/src/main/resources/template/Entity.java.vm b/pigx-visual/pigx-codegen/src/main/resources/template/Entity.java.vm
index 64ba13d41..8305a6aa7 100755
--- a/pigx-visual/pigx-codegen/src/main/resources/template/Entity.java.vm
+++ b/pigx-visual/pigx-codegen/src/main/resources/template/Entity.java.vm
@@ -17,9 +17,8 @@
package ${package}.${moduleName}.entity;
-#if($dbType != "mysql")
+
import com.baomidou.mybatisplus.annotation.IdType;
-#end
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -52,11 +51,7 @@ public class ${className} extends Model<${className}> {
* $column.comments
*/
#if($column.columnName == $pk.columnName)
-#if($dbType == "mysql")
- @TableId
-#else
@TableId(type = IdType.ASSIGN_ID)
-#end
#end
@ApiModelProperty(value="$column.comments"#if($column.hidden),hidden=$column.hidden#end)
private $column.attrType $column.lowerAttrName;