From b00d6856b09909cc13b4585f0d4024ff1e014880 Mon Sep 17 00:00:00 2001 From: JiaJu Zhuang <5152853@qq.com> Date: Sat, 26 Aug 2023 14:15:26 +0800 Subject: [PATCH] Team Create Complete Fields --- .../chat2db/server/domain/api/model/User.java | 17 ++++++++++ .../domain/api/param/user/UserSelector.java | 4 +-- .../domain/core/converter/UserConverter.java | 14 ++++++-- .../domain/core/impl/UserServiceImpl.java | 27 +++++++++++++-- .../domain/repository/entity/DbhubUserDO.java | 10 ++++++ .../domain/repository/entity/TeamDO.java | 10 ++---- .../V2_1_0__支持环境、用户权限.sql | 5 ++- .../test/mybatis/MybatisGeneratorTest.java | 2 +- .../controller/user/UserAdminController.java | 7 +++- .../controller/user/vo/UserPageQueryVO.java | 34 +++++++++++++++++++ 10 files changed, 112 insertions(+), 18 deletions(-) diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/User.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/User.java index 67e31c21..2662063a 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/User.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/User.java @@ -1,5 +1,7 @@ package ai.chat2db.server.domain.api.model; +import java.util.Date; + import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.enums.ValidStatusEnum; import jakarta.validation.constraints.NotNull; @@ -62,4 +64,19 @@ public class User { */ @NotNull private String status; + + /** + * 修改时间 + */ + private Date gmtModified; + + /** + * 修改人用户id + */ + private Long modifiedUserId; + + /** + * 修改人用户 + */ + private User modifiedUser; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java index babf2efb..0f25ce93 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java @@ -16,8 +16,8 @@ import lombok.experimental.SuperBuilder; @AllArgsConstructor public class UserSelector { /** - * empty + * 修改人用户 */ - private Boolean empty; + private Boolean modifiedUser; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/UserConverter.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/UserConverter.java index 8cc7ac0a..3ca22755 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/UserConverter.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/UserConverter.java @@ -35,6 +35,9 @@ public abstract class UserConverter { * @param data * @return */ + @Mappings({ + @Mapping(target = "modifiedUser.id", source = "modifiedUserId"), + }) public abstract User do2dto(DbhubUserDO data); /** @@ -57,14 +60,21 @@ public abstract class UserConverter { * @param user * @return */ - public abstract DbhubUserDO param2do(UserCreateParam user); + @Mappings({ + @Mapping(target = "createUserId", source = "userId"), + @Mapping(target = "modifiedUserId", source = "userId"), + }) + public abstract DbhubUserDO param2do(UserCreateParam user, Long userId); /** * * @param user * @return */ - public abstract DbhubUserDO param2do(UserUpdateParam user); + @Mappings({ + @Mapping(target = "modifiedUserId", source = "userId"), + }) + public abstract DbhubUserDO param2do(UserUpdateParam user, 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/UserServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/UserServiceImpl.java index 5738a679..731c13f5 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 @@ -20,12 +20,15 @@ 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 ai.chat2db.server.tools.common.util.EasyCollectionUtils; import cn.hutool.crypto.digest.DigestUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -84,7 +87,10 @@ public class UserServiceImpl implements UserService { Page page = new Page<>(param.getPageNo(), param.getPageSize()); page.setSearchCount(param.getEnableReturnCount()); IPage iPage = dbhubUserMapper.selectPage(page, queryWrapper); - return PageResult.of(userConverter.do2dto(iPage.getRecords()), iPage.getTotal(), param); + List list = userConverter.do2dto(iPage.getRecords()); + + fillData(list, selector); + return PageResult.of(list, iPage.getTotal(), param); } @Override @@ -96,7 +102,7 @@ public class UserServiceImpl implements UserService { throw new ParamBusinessException("roleCode"); } - DbhubUserDO data = userConverter.param2do(param); + DbhubUserDO data = userConverter.param2do(param, ContextUtils.getUserId()); if (Objects.nonNull(data.getPassword())) { String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); data.setPassword(bcryptPassword); @@ -138,10 +144,25 @@ public class UserServiceImpl implements UserService { throw new ParamBusinessException("roleCode"); } - DbhubUserDO data = userConverter.param2do(param); + DbhubUserDO data = userConverter.param2do(param, ContextUtils.getUserId()); String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); data.setPassword(bcryptPassword); dbhubUserMapper.insert(data); return DataResult.of(data.getId()); } + + private void fillData(List list, UserSelector selector) { + if (CollectionUtils.isEmpty(list) || selector == null) { + return; + } + fillUser(list, selector); + } + + private void fillUser(List list, UserSelector selector) { + if (BooleanUtils.isNotTrue(selector.getModifiedUser())) { + return; + } + userConverter.fillDetail(EasyCollectionUtils.toList(list, User::getModifiedUser)); + } + } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/DbhubUserDO.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/DbhubUserDO.java index 6089ccbd..3e0504dc 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/DbhubUserDO.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/DbhubUserDO.java @@ -68,4 +68,14 @@ public class DbhubUserDO implements Serializable { * 用户状态 */ private String status; + + /** + * 创建人用户id + */ + private Long createUserId; + + /** + * 修改人用户id + */ + private Long modifiedUserId; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/TeamDO.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/TeamDO.java index a2ae0345..15e04221 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/TeamDO.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/entity/TeamDO.java @@ -1,11 +1,10 @@ package ai.chat2db.server.domain.repository.entity; -import java.io.Serializable; -import java.util.Date; - import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; import lombok.Getter; import lombok.Setter; @@ -65,11 +64,6 @@ public class TeamDO implements Serializable { */ private String status; - /** - * 角色编码 - */ - private String roleCode; - /** * 团队描述 */ diff --git a/chat2db-server/chat2db-server-start/src/main/resources/db/migration/V2_1_0__支持环境、用户权限.sql b/chat2db-server/chat2db-server-start/src/main/resources/db/migration/V2_1_0__支持环境、用户权限.sql index aca87e26..1a24e073 100644 --- a/chat2db-server/chat2db-server-start/src/main/resources/db/migration/V2_1_0__支持环境、用户权限.sql +++ b/chat2db-server/chat2db-server-start/src/main/resources/db/migration/V2_1_0__支持环境、用户权限.sql @@ -38,7 +38,11 @@ ALTER TABLE `dbhub_user` ALTER TABLE `dbhub_user` ADD `status` varchar(32) NOT NULL DEFAULT 'VALID' COMMENT '用户状态'; +ALTER TABLE `dbhub_user` + ADD `create_user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '创建人用户id'; +ALTER TABLE `dbhub_user` + ADD `modified_user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '修改人用户id'; update dbhub_user set role_code= 'DESKTOP',user_name='_desktop_default_user_name',password='_desktop_default_user_name',nick_name='桌面端用户' @@ -58,7 +62,6 @@ CREATE TABLE IF NOT EXISTS `team` `code` varchar(128) DEFAULT NOT NULL COMMENT '团队编码', `name` varchar(512) DEFAULT NULL COMMENT '团队名称', `status` varchar(32) NOT NULL DEFAULT 'VALID' COMMENT '团队状态', - `role_code` varchar(32) DEFAULT NULL COMMENT '角色编码', `description` text DEFAULT NULL COMMENT '团队描述', PRIMARY KEY (`id`) ) ENGINE = InnoDB diff --git a/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/mybatis/MybatisGeneratorTest.java b/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/mybatis/MybatisGeneratorTest.java index a7c738a9..ab944099 100644 --- a/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/mybatis/MybatisGeneratorTest.java +++ b/chat2db-server/chat2db-server-start/src/test/java/ai/chat2db/server/start/test/mybatis/MybatisGeneratorTest.java @@ -35,7 +35,7 @@ public class MybatisGeneratorTest extends BaseTest { //doGenerator(Lists.newArrayList("operation_saved")); //doGenerator(Lists.newArrayList("environment","data_source","team","team_dbhub_user","data_source_access", // "dbhub_user")); - doGenerator(Lists.newArrayList("data_source")); + doGenerator(Lists.newArrayList("dbhub_user","team")); } private void doGenerator(List tableList) { diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserAdminController.java index f94f70bf..ced4ebaa 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserAdminController.java @@ -6,6 +6,7 @@ import ai.chat2db.server.admin.api.controller.user.request.UserCreateRequest; import ai.chat2db.server.admin.api.controller.user.request.UserUpdateRequest; import ai.chat2db.server.admin.api.controller.user.vo.UserPageQueryVO; import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.param.user.UserSelector; import ai.chat2db.server.domain.api.service.UserService; import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.DataResult; @@ -29,6 +30,10 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class UserAdminController { + private static final UserSelector USER_SELECTOR= UserSelector.builder() + .modifiedUser(Boolean.TRUE) + .build(); + @Resource private UserService userService; @Resource @@ -43,7 +48,7 @@ public class UserAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return userService.pageQuery(userAdminConverter.request2param(request), null) + return userService.pageQuery(userAdminConverter.request2param(request), USER_SELECTOR) .mapToWeb(userAdminConverter::dto2vo); } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java index 490032b6..5ff1abaf 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/vo/UserPageQueryVO.java @@ -1,6 +1,10 @@ package ai.chat2db.server.admin.api.controller.user.vo; +import java.util.Date; + +import ai.chat2db.server.common.api.controller.vo.SimpleUserVO; +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.enums.ValidStatusEnum; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -36,4 +40,34 @@ public class UserPageQueryVO { * @see ValidStatusEnum */ private String status; + + /** + * 邮箱 + */ + @NotNull + private String email; + + /** + * 角色编码 + * + * @see RoleCodeEnum + */ + private String roleCode; + + + /** + * 修改时间 + */ + private Date gmtModified; + + /** + * 修改人用户id + */ + private Long modifiedUserId; + + /** + * 修改人用户 + */ + private SimpleUserVO modifiedUser; + }