From 19e0653f5f8ef04891ae7c5f2fdf83dab52347f2 Mon Sep 17 00:00:00 2001 From: JiaJu Zhuang <5152853@qq.com> Date: Sun, 13 Aug 2023 15:37:34 +0800 Subject: [PATCH] Complete team user code --- .../chat2db/server/domain/api/model/Team.java | 1 + .../api/param/team/TeamCreateParam.java | 9 +++++ .../api/param/team/TeamUpdateParam.java | 7 ++++ .../api/param/user/UserCreateParam.java | 9 +++++ .../api/param/user/UserUpdateParam.java | 15 +++++---- .../domain/core/converter/TeamConverter.java | 11 +++++-- .../domain/core/impl/TeamServiceImpl.java | 20 +++++++++-- .../domain/core/impl/UserServiceImpl.java | 33 +++++++++++++++---- .../convertor/BusinessExceptionConvertor.java | 3 +- .../main/resources/i18n/messages.properties | 2 ++ .../resources/i18n/messages_en_US.properties | 2 ++ .../resources/i18n/messages_zh_CN.properties | 2 ++ .../DataAlreadyExistsBusinessException.java | 27 +++++++++++++++ .../team/request/TeamCreateRequest.java | 8 +++++ .../team/request/TeamUpdateRequest.java | 8 +++++ .../user/request/UserCreateRequest.java | 10 ++++++ .../user/request/UserUpdateRequest.java | 15 +++++---- 17 files changed, 159 insertions(+), 23 deletions(-) create mode 100644 chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/exception/DataAlreadyExistsBusinessException.java diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Team.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Team.java index 4a8e772b..9c6814e5 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Team.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Team.java @@ -53,6 +53,7 @@ public class Team implements Serializable { /** * 角色编码 */ + @NotNull private String roleCode; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamCreateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamCreateParam.java index 346e598e..f8a3f39e 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamCreateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamCreateParam.java @@ -30,6 +30,15 @@ public class TeamCreateParam { @NotNull private String status; + + /** + * 角色编码 + * + * @see ai.chat2db.server.domain.api.enums.RoleCodeEnum + */ + @NotNull + private String roleCode; + /** * 团队描述 */ diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamUpdateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamUpdateParam.java index eac5dddd..047c05a2 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamUpdateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamUpdateParam.java @@ -28,6 +28,13 @@ public class TeamUpdateParam { */ private String status; + /** + * 角色编码 + * + * @see ai.chat2db.server.domain.api.enums.RoleCodeEnum + */ + private String roleCode; + /** * 团队描述 */ diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserCreateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserCreateParam.java index 4556de81..eb75caea 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserCreateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserCreateParam.java @@ -1,5 +1,6 @@ package ai.chat2db.server.domain.api.param.user; +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.enums.ValidStatusEnum; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -35,6 +36,14 @@ public class UserCreateParam { @NotNull private String email; + /** + * 角色编码 + * + * @see RoleCodeEnum + */ + @NotNull + private String roleCode; + /** * 用户状态 * diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserUpdateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserUpdateParam.java index bac4bdf7..1b6358cb 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserUpdateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserUpdateParam.java @@ -1,5 +1,6 @@ package ai.chat2db.server.domain.api.param.user; +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.enums.ValidStatusEnum; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -17,12 +18,6 @@ public class UserUpdateParam { @NotNull private Long id; - /** - * 用户名 - */ - @NotNull - private String userName; - /** * 密码 */ @@ -41,6 +36,14 @@ public class UserUpdateParam { @NotNull private String email; + + /** + * 角色编码 + * + * @see RoleCodeEnum + */ + private String roleCode; + /** * 用户状态 * diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamConverter.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamConverter.java index 4fe82c87..ec8c02bd 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamConverter.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamConverter.java @@ -45,7 +45,11 @@ public abstract class TeamConverter { * @param param * @return */ - public abstract TeamDO param2do(TeamCreateParam param); + @Mappings({ + @Mapping(target = "createUserId", source = "userId"), + @Mapping(target = "modifiedUserId", source = "userId"), + }) + public abstract TeamDO param2do(TeamCreateParam param, Long userId); /** * convert @@ -53,7 +57,10 @@ public abstract class TeamConverter { * @param param * @return */ - public abstract TeamDO param2do(TeamUpdateParam param); + @Mappings({ + @Mapping(target = "modifiedUserId", source = "userId"), + }) + public abstract TeamDO param2do(TeamUpdateParam param, Long userId); /** * Fill in detailed information diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamServiceImpl.java index 355bee32..d2511818 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamServiceImpl.java @@ -2,6 +2,7 @@ package ai.chat2db.server.domain.core.impl; import java.util.List; +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.model.Team; import ai.chat2db.server.domain.api.param.team.TeamCreateParam; import ai.chat2db.server.domain.api.param.team.TeamPageQueryParam; @@ -15,6 +16,9 @@ import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.tools.base.wrapper.result.ListResult; import ai.chat2db.server.tools.base.wrapper.result.PageResult; +import ai.chat2db.server.tools.common.exception.DataAlreadyExistsBusinessException; +import ai.chat2db.server.tools.common.exception.ParamBusinessException; +import ai.chat2db.server.tools.common.util.ContextUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -70,14 +74,26 @@ public class TeamServiceImpl implements TeamService { @Override public DataResult create(TeamCreateParam param) { - TeamDO data = teamConverter.param2do(param); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TeamDO::getCode, param.getCode()); + Page page = new Page<>(1, 1); + page.setSearchCount(false); + IPage iPage = teamMapper.selectPage(page, queryWrapper); + if (CollectionUtils.isNotEmpty(iPage.getRecords())) { + throw new DataAlreadyExistsBusinessException("code", param.getCode()); + } + if (RoleCodeEnum.DESKTOP.getCode().equals(param.getRoleCode())) { + throw new ParamBusinessException("roleCode"); + } + + TeamDO data = teamConverter.param2do(param, ContextUtils.getUserId()); teamMapper.insert(data); return DataResult.of(data.getId()); } @Override public DataResult update(TeamUpdateParam param) { - TeamDO data = teamConverter.param2do(param); + TeamDO data = teamConverter.param2do(param, ContextUtils.getUserId()); teamMapper.updateById(data); return DataResult.of(data.getId()); } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/UserServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/UserServiceImpl.java index 8659c73f..5738a679 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/UserServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/UserServiceImpl.java @@ -18,6 +18,8 @@ import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.tools.base.wrapper.result.ListResult; import ai.chat2db.server.tools.base.wrapper.result.PageResult; +import ai.chat2db.server.tools.common.exception.DataAlreadyExistsBusinessException; +import ai.chat2db.server.tools.common.exception.ParamBusinessException; import cn.hutool.crypto.digest.DigestUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -86,17 +88,21 @@ public class UserServiceImpl implements UserService { } @Override - public DataResult update(UserUpdateParam user) { - if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(user.getId())) { + public DataResult update(UserUpdateParam param) { + if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(param.getId())) { throw new BusinessException("user.canNotOperateSystemAccount"); } - DbhubUserDO data = userConverter.param2do(user); + if (RoleCodeEnum.DESKTOP.getCode().equals(param.getRoleCode())) { + throw new ParamBusinessException("roleCode"); + } + + DbhubUserDO data = userConverter.param2do(param); if (Objects.nonNull(data.getPassword())) { String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); data.setPassword(bcryptPassword); } - if (RoleCodeEnum.ADMIN.getDefaultUserId().equals(user.getId())) { + if (RoleCodeEnum.ADMIN.getDefaultUserId().equals(param.getId())) { data.setStatus(null); data.setEmail(null); data.setUserName(null); @@ -116,8 +122,23 @@ public class UserServiceImpl implements UserService { } @Override - public DataResult create(UserCreateParam user) { - DbhubUserDO data = userConverter.param2do(user); + public DataResult create(UserCreateParam param) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.and(wrapper -> wrapper.eq(DbhubUserDO::getUserName, param.getUserName()) + .or() + .eq(DbhubUserDO::getEmail, param.getEmail())); + Page page = new Page<>(1, 1); + page.setSearchCount(false); + IPage iPage = dbhubUserMapper.selectPage(page, queryWrapper); + if (CollectionUtils.isNotEmpty(iPage.getRecords())) { + throw new DataAlreadyExistsBusinessException("userName or email", + param.getUserName() + " or " + param.getEmail()); + } + if (RoleCodeEnum.DESKTOP.getCode().equals(param.getRoleCode())) { + throw new ParamBusinessException("roleCode"); + } + + DbhubUserDO data = userConverter.param2do(param); String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); data.setPassword(bcryptPassword); dbhubUserMapper.insert(data); diff --git a/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/exception/convertor/BusinessExceptionConvertor.java b/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/exception/convertor/BusinessExceptionConvertor.java index 6c031aca..6ab373b7 100644 --- a/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/exception/convertor/BusinessExceptionConvertor.java +++ b/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/exception/convertor/BusinessExceptionConvertor.java @@ -14,6 +14,7 @@ public class BusinessExceptionConvertor implements ExceptionConvertor