From af6fcc2bafe2ca2e90079d96d0a0c6d8f7d3a80c Mon Sep 17 00:00:00 2001 From: JiaJu Zhuang <5152853@qq.com> Date: Sun, 13 Aug 2023 14:57:24 +0800 Subject: [PATCH] Complete team user code --- .../domain/api/model/DataSourceAccess.java | 6 + ...urceAccessComprehensivePageQueryParam.java | 9 +- .../access/DataSourceAccessCreatParam.java | 39 ++++++ .../access/DataSourceAccessSelector.java | 6 + .../api/param/team/TeamCreateParam.java | 37 +++++ .../api/param/team/TeamPageQueryParam.java | 19 +++ .../domain/api/param/team/TeamSelector.java | 23 +++ .../api/param/team/TeamUpdateParam.java | 35 +++++ .../TeamUserComprehensivePageQueryParam.java | 10 ++ .../param/team/user/TeamUserCreatParam.java | 29 ++++ .../api/param/user/UserCreateParam.java | 45 ++++++ .../UserPageQueryParam.java} | 16 +-- .../domain/api/param/user/UserSelector.java | 23 +++ .../api/param/user/UserUpdateParam.java | 51 +++++++ .../api/service/DataSourceAccessService.java | 7 +- .../domain/api/service/TeamService.java | 41 ++++++ .../domain/api/service/TeamUserService.java | 19 +++ .../domain/api/service/UserService.java | 14 +- .../converter/DataSourceAccessConverter.java | 14 ++ .../domain/core/converter/TeamConverter.java | 18 +++ .../core/converter/TeamUserConverter.java | 15 ++ .../domain/core/converter/UserConverter.java | 16 +++ .../impl/DataSourceAccessServiceImpl.java | 38 ++--- .../domain/core/impl/TeamServiceImpl.java | 54 +++++++ .../domain/core/impl/TeamUserServiceImpl.java | 27 +++- .../domain/core/impl/UserServiceImpl.java | 64 ++++++--- .../mapper/DataSourceAccessCustomMapper.java | 5 +- .../mapper/TeamUserCustomMapper.java | 3 +- .../mapper/DataSourceAccessCustomMapper.xml | 14 +- .../resources/mapper/TeamUserCustomMapper.xml | 13 +- .../main/resources/i18n/messages.properties | 4 +- .../resources/i18n/messages_en_US.properties | 4 +- .../resources/i18n/messages_zh_CN.properties | 4 +- .../tools/base/wrapper/result/PageResult.java | 19 +++ .../common/CommonAdminController.java | 46 ++++-- .../converter/CommonAdminConverter.java | 87 ++++++++++++ .../DataSourceAccessAdminController.java | 13 +- .../DataSourceAccessAdminConverter.java | 5 + .../controller/team/TeamAdminController.java | 19 ++- .../team/TeamDataSourceAdminController.java | 34 ++++- .../team/TeamUserAdminController.java | 31 +++- .../team/converter/TeamAdminConverter.java | 57 ++++++++ .../TeamDataSourcesAdminConverter.java | 49 +++++++ .../converter/TeamUserAdminConverter.java | 48 +++++++ .../TeamDataSourceBatchCreateRequest.java | 1 + .../team/request/TeamUpdateRequest.java | 6 - .../request/TeamUserBatchCreateRequest.java | 1 + .../team/vo/TeamDataSourcePageQueryVO.java | 7 + .../controller/user/UserAdminController.java | 22 +-- .../user/UserDataSourceAdminController.java | 36 +++-- .../user/UserTeamAdminController.java | 30 +++- .../user/converter/UserAdminConverter.java | 85 ++++++----- .../UserDataSourcesAdminConverter.java | 49 +++++++ .../converter/UserTeamAdminConverter.java | 37 +++++ .../request/CommonQueryRequest.java | 18 +++ .../api/controller/user/UserController.java | 132 ++++++++---------- 56 files changed, 1288 insertions(+), 266 deletions(-) create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessCreatParam.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamCreateParam.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamPageQueryParam.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamSelector.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamUpdateParam.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserCreatParam.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserCreateParam.java rename chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/{UserQueryParam.java => user/UserPageQueryParam.java} (53%) create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java create mode 100644 chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserUpdateParam.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/converter/CommonAdminConverter.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java create mode 100644 chat2db-server/chat2db-server-web/chat2db-server-common-api/src/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSourceAccess.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSourceAccess.java index e5c68cd3..91c094be 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSourceAccess.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/DataSourceAccess.java @@ -61,6 +61,12 @@ public class DataSourceAccess implements Serializable { @NotNull private Long dataSourceId; + /** + * 数据源 + */ + @NotNull + private DataSource dataSource; + /** * 授权类型 * diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessComprehensivePageQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessComprehensivePageQueryParam.java index cbc9c92b..78c5cd4f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessComprehensivePageQueryParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessComprehensivePageQueryParam.java @@ -18,7 +18,12 @@ public class DataSourceAccessComprehensivePageQueryParam extends PageQueryParam private Long dataSourceId; /** - * searchKey + * Query keywords for users or teams */ - private String searchKey; + private String userOrTeamSearchKey; + + /** + * Query keywords for data source + */ + private String dataSourceSearchKey; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessCreatParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessCreatParam.java new file mode 100644 index 00000000..13398978 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessCreatParam.java @@ -0,0 +1,39 @@ +package ai.chat2db.server.domain.api.param.datasource.access; + +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * Data Source Access + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class DataSourceAccessCreatParam { + /** + * 数据源id + */ + @NotNull + private Long dataSourceId; + + /** + * 授权类型 + * + * @see AccessObjectTypeEnum + */ + @NotNull + private String accessObjectType; + + /** + * 授权id,根据类型区分是用户还是团队 + */ + @NotNull + private Long accessObjectId; +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessSelector.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessSelector.java index 639ed62a..de59b6de 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessSelector.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/datasource/access/DataSourceAccessSelector.java @@ -20,4 +20,10 @@ public class DataSourceAccessSelector { * 授权对象 */ private Boolean accessObject; + + + /** + * 数据源 + */ + private Boolean dataSource; } 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 new file mode 100644 index 00000000..346e598e --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamCreateParam.java @@ -0,0 +1,37 @@ +package ai.chat2db.server.domain.api.param.team; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +public class TeamCreateParam { + /** + * 团队编码 + */ + @NotNull + private String code; + + /** + * 团队名称 + */ + @NotNull + private String name; + + /** + * 团队状态 + * + * @see ai.chat2db.server.domain.api.enums.ValidStatusEnum + */ + @NotNull + private String status; + + /** + * 团队描述 + */ + private String description; +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamPageQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamPageQueryParam.java new file mode 100644 index 00000000..6cef62c4 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamPageQueryParam.java @@ -0,0 +1,19 @@ +package ai.chat2db.server.domain.api.param.team; + +import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam; +import lombok.Data; + +/** + * page query + * + * @author Jiaju Zhuang + */ +@Data +public class TeamPageQueryParam extends PageQueryParam { + + /** + * searchKey + */ + private String searchKey; + +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamSelector.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamSelector.java new file mode 100644 index 00000000..a8252fe3 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamSelector.java @@ -0,0 +1,23 @@ +package ai.chat2db.server.domain.api.param.team; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * select + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TeamSelector { + /** + * empty + */ + private Boolean empty; + +} 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 new file mode 100644 index 00000000..eac5dddd --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/TeamUpdateParam.java @@ -0,0 +1,35 @@ +package ai.chat2db.server.domain.api.param.team; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * update + * + * @author Jiaju Zhuang + */ +@Data +public class TeamUpdateParam { + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * 团队名称 + */ + private String name; + + /** + * 团队状态 + * + * @see ai.chat2db.server.domain.api.enums.ValidStatusEnum + */ + private String status; + + /** + * 团队描述 + */ + private String description; +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserComprehensivePageQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserComprehensivePageQueryParam.java index 214c6156..26f47e4e 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserComprehensivePageQueryParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserComprehensivePageQueryParam.java @@ -27,4 +27,14 @@ public class TeamUserComprehensivePageQueryParam extends PageQueryParam { * @see ai.chat2db.server.domain.api.enums.RoleCodeEnum */ private String teamRoleCode; + + /** + * Query keywords for team + */ + private String teamSearchKey; + + /** + * Query keywords for user + */ + private String userSearchKey; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserCreatParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserCreatParam.java new file mode 100644 index 00000000..619fae38 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/team/user/TeamUserCreatParam.java @@ -0,0 +1,29 @@ +package ai.chat2db.server.domain.api.param.team.user; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * Team User + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class TeamUserCreatParam { + /** + * team id + */ + @NotNull + private Long teamId; + + /** + * user id + */ + private Long userId; +} 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 new file mode 100644 index 00000000..4556de81 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserCreateParam.java @@ -0,0 +1,45 @@ +package ai.chat2db.server.domain.api.param.user; + +import ai.chat2db.server.domain.api.enums.ValidStatusEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +public class UserCreateParam { + /** + * 用户名 + */ + @NotNull + private String userName; + + /** + * 密码 + */ + @NotNull + private String password; + + /** + * 昵称 + */ + @NotNull + private String nickName; + + /** + * 邮箱 + */ + @NotNull + private String email; + + /** + * 用户状态 + * + * @see ValidStatusEnum + */ + @NotNull + private String status; +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/UserQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserPageQueryParam.java similarity index 53% rename from chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/UserQueryParam.java rename to chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserPageQueryParam.java index ae471f57..bfe3ffb2 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/UserQueryParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserPageQueryParam.java @@ -1,16 +1,13 @@ -package ai.chat2db.server.domain.api.param; - -import java.io.Serial; +package ai.chat2db.server.domain.api.param.user; import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; /** - * 用户查询参数 + * * page query * * @author Jiaju Zhuang */ @@ -18,11 +15,10 @@ import lombok.experimental.SuperBuilder; @SuperBuilder @NoArgsConstructor @AllArgsConstructor -public class UserQueryParam extends PageQueryParam { - @Serial - private static final long serialVersionUID = 7341467383637825621L; +public class UserPageQueryParam extends PageQueryParam { + /** - * 用户名 + * searchKey */ - private String keyWord; + private String searchKey; } 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 new file mode 100644 index 00000000..babf2efb --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserSelector.java @@ -0,0 +1,23 @@ +package ai.chat2db.server.domain.api.param.user; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * select + * + * @author Jiaju Zhuang + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class UserSelector { + /** + * empty + */ + private Boolean empty; + +} 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 new file mode 100644 index 00000000..bac4bdf7 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/user/UserUpdateParam.java @@ -0,0 +1,51 @@ +package ai.chat2db.server.domain.api.param.user; + +import ai.chat2db.server.domain.api.enums.ValidStatusEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * create + * + * @author Jiaju Zhuang + */ +@Data +public class UserUpdateParam { + /** + * 主键 + */ + @NotNull + private Long id; + + /** + * 用户名 + */ + @NotNull + private String userName; + + /** + * 密码 + */ + @NotNull + private String password; + + /** + * 昵称 + */ + @NotNull + private String nickName; + + /** + * 邮箱 + */ + @NotNull + private String email; + + /** + * 用户状态 + * + * @see ValidStatusEnum + */ + @NotNull + private String status; +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceAccessService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceAccessService.java index 5791845e..5c974dec 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceAccessService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/DataSourceAccessService.java @@ -1,10 +1,11 @@ package ai.chat2db.server.domain.api.service; import ai.chat2db.server.domain.api.model.DataSourceAccess; -import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; 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.PageResult; import jakarta.validation.constraints.NotNull; @@ -25,14 +26,14 @@ public interface DataSourceAccessService { PageResult comprehensivePageQuery(DataSourceAccessComprehensivePageQueryParam param, DataSourceAccessSelector selector); + /** * Batch Create * * @param param * @return */ - ActionResult batchCreate(DataSourceAccessBatchCreatParam param); - + DataResult create(DataSourceAccessCreatParam param); /** * delete * diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamService.java index 57c82a9f..cfd55853 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamService.java @@ -3,7 +3,15 @@ package ai.chat2db.server.domain.api.service; import java.util.List; 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; +import ai.chat2db.server.domain.api.param.team.TeamSelector; +import ai.chat2db.server.domain.api.param.team.TeamUpdateParam; +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 jakarta.validation.constraints.NotNull; /** * team @@ -12,6 +20,15 @@ import ai.chat2db.server.tools.base.wrapper.result.ListResult; */ public interface TeamService { + /** + * Pagination query + * + * @param param + * @param selector + * @return + */ + PageResult pageQuery(TeamPageQueryParam param, TeamSelector selector); + /** * List Query Data * @@ -20,4 +37,28 @@ public interface TeamService { */ ListResult listQuery(List idList); + /** + * Create + * + * @param param + * @return + */ + DataResult create(TeamCreateParam param); + + /** + * update + * + * @param param + * @return + */ + DataResult update(TeamUpdateParam param); + + /** + * delete + * + * @param id + * @return + */ + ActionResult delete(@NotNull Long id); + } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamUserService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamUserService.java index 95636620..bc6d24a2 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamUserService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/TeamUserService.java @@ -2,8 +2,12 @@ package ai.chat2db.server.domain.api.service; import ai.chat2db.server.domain.api.model.TeamUser; import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam; +import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam; import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector; +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.PageResult; +import jakarta.validation.constraints.NotNull; /** * team user @@ -21,4 +25,19 @@ public interface TeamUserService { */ PageResult comprehensivePageQuery(TeamUserComprehensivePageQueryParam param, TeamUserSelector selector); + /** + * Create + * + * @param param + * @return + */ + DataResult create(TeamUserCreatParam param); + + /** + * delete + * + * @param id + * @return + */ + ActionResult delete(@NotNull Long id); } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/UserService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/UserService.java index f54323d7..1c98ca4f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/UserService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/UserService.java @@ -3,7 +3,11 @@ package ai.chat2db.server.domain.api.service; import java.util.List; import ai.chat2db.server.domain.api.model.User; -import ai.chat2db.server.domain.api.param.UserQueryParam; +import ai.chat2db.server.domain.api.param.user.UserCreateParam; +import ai.chat2db.server.domain.api.param.user.UserSelector; +import ai.chat2db.server.domain.api.param.user.UserPageQueryParam; +import ai.chat2db.server.domain.api.param.user.UserUpdateParam; +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; @@ -44,26 +48,26 @@ public interface UserService { * @param param * @return */ - PageResult queryPage(UserQueryParam param); + PageResult pageQuery(UserPageQueryParam param, UserSelector selector); /** * 更新用户信息 * @param user * @return */ - DataResult update(User user); + DataResult update(UserUpdateParam user); /** * 删除用户 * @param id * @return */ - DataResult delete(Long id); + ActionResult delete(Long id); /** * 创建一个用户 * @param user * @return */ - DataResult create(User user); + DataResult create(UserCreateParam user); } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/DataSourceAccessConverter.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/DataSourceAccessConverter.java index 1a330ecd..65bae69f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/DataSourceAccessConverter.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/DataSourceAccessConverter.java @@ -3,6 +3,7 @@ package ai.chat2db.server.domain.core.converter; import java.util.List; import ai.chat2db.server.domain.api.model.DataSourceAccess; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO; import lombok.extern.slf4j.Slf4j; import org.mapstruct.Mapper; @@ -46,6 +47,19 @@ public abstract class DataSourceAccessConverter { public abstract DataSourceAccessDO param2do(Long dataSourceId, Long accessObjectId, String accessObjectType, Long userId); + /** + * convert + * + * @param param + + * @return + */ + @Mappings({ + @Mapping(target = "createUserId", source = "userId"), + @Mapping(target = "modifiedUserId", source = "userId"), + }) + public abstract DataSourceAccessDO param2do(DataSourceAccessCreatParam param, Long userId); + /** * convert * 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 a8804da1..4fe82c87 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 @@ -4,6 +4,8 @@ import java.util.List; import java.util.Map; 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.TeamUpdateParam; import ai.chat2db.server.domain.api.service.TeamService; import ai.chat2db.server.domain.repository.entity.TeamDO; import ai.chat2db.server.tools.common.util.EasyCollectionUtils; @@ -37,6 +39,22 @@ public abstract class TeamConverter { */ public abstract List do2dto(List list); + /** + * convert + * + * @param param + * @return + */ + public abstract TeamDO param2do(TeamCreateParam param); + + /** + * convert + * + * @param param + * @return + */ + public abstract TeamDO param2do(TeamUpdateParam param); + /** * Fill in detailed information * diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamUserConverter.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamUserConverter.java index 6bc5223f..b4666d45 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamUserConverter.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/TeamUserConverter.java @@ -5,6 +5,7 @@ import java.util.Map; import ai.chat2db.server.domain.api.model.Environment; import ai.chat2db.server.domain.api.model.TeamUser; +import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam; import ai.chat2db.server.domain.api.service.EnvironmentService; import ai.chat2db.server.domain.repository.entity.TeamUserDO; import ai.chat2db.server.tools.common.util.EasyCollectionUtils; @@ -38,6 +39,20 @@ public abstract class TeamUserConverter { */ public abstract List do2dto(List list); + /** + * convert + * + * @param param + + * @return + */ + @Mappings({ + @Mapping(target = "createUserId", source = "userId"), + @Mapping(target = "modifiedUserId", source = "userId"), + }) + public abstract TeamUserDO param2do(TeamUserCreatParam 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/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 945f9cd3..8cc7ac0a 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 @@ -4,6 +4,8 @@ import java.util.List; import java.util.Map; import ai.chat2db.server.domain.api.model.User; +import ai.chat2db.server.domain.api.param.user.UserCreateParam; +import ai.chat2db.server.domain.api.param.user.UserUpdateParam; import ai.chat2db.server.domain.api.service.UserService; import ai.chat2db.server.domain.repository.entity.DbhubUserDO; import ai.chat2db.server.tools.common.util.EasyCollectionUtils; @@ -50,6 +52,20 @@ public abstract class UserConverter { */ public abstract DbhubUserDO dto2do(User user); + /** + * + * @param user + * @return + */ + public abstract DbhubUserDO param2do(UserCreateParam user); + + /** + * + * @param user + * @return + */ + public abstract DbhubUserDO param2do(UserUpdateParam user); + /** * 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/DataSourceAccessServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceAccessServiceImpl.java index 81a81463..e947595f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceAccessServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DataSourceAccessServiceImpl.java @@ -3,16 +3,13 @@ package ai.chat2db.server.domain.core.impl; import java.util.List; import java.util.Map; -import com.alibaba.fastjson2.JSON; - import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; import ai.chat2db.server.domain.api.model.DataSourceAccess; import ai.chat2db.server.domain.api.model.DataSourceAccessObject; import ai.chat2db.server.domain.api.model.Team; import ai.chat2db.server.domain.api.model.User; -import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; -import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessObjectParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; import ai.chat2db.server.domain.api.service.DataSourceAccessService; import ai.chat2db.server.domain.api.service.TeamService; @@ -22,10 +19,10 @@ import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO; import ai.chat2db.server.domain.repository.mapper.DataSourceAccessCustomMapper; import ai.chat2db.server.domain.repository.mapper.DataSourceAccessMapper; 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.PageResult; import ai.chat2db.server.tools.common.util.ContextUtils; import ai.chat2db.server.tools.common.util.EasyCollectionUtils; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; @@ -58,8 +55,11 @@ public class DataSourceAccessServiceImpl implements DataSourceAccessService { @Override public PageResult comprehensivePageQuery(DataSourceAccessComprehensivePageQueryParam param, DataSourceAccessSelector selector) { - IPage iPage = dataSourceAccessCustomMapper.comprehensivePageQuery( - new Page<>(param.getPageNo(), param.getPageSize()), param.getDataSourceId(), param.getSearchKey()); + Page page = new Page<>(param.getPageNo(), param.getPageSize()); + page.setSearchCount(param.getEnableReturnCount()); + IPage iPage = dataSourceAccessCustomMapper.comprehensivePageQuery(page, + param.getDataSourceId(), param.getUserOrTeamSearchKey(), + param.getDataSourceSearchKey()); List list = dataSourceAccessConverter.do2dto(iPage.getRecords()); @@ -69,25 +69,11 @@ public class DataSourceAccessServiceImpl implements DataSourceAccessService { } @Override - public ActionResult batchCreate(DataSourceAccessBatchCreatParam param) { - if (CollectionUtils.isEmpty(param.getAccessObjectList())) { - return ActionResult.isSuccess(); - } - for (DataSourceAccessObjectParam dataSourceAccessObjectParam : param.getAccessObjectList()) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(DataSourceAccessDO::getAccessObjectType, dataSourceAccessObjectParam.getType()); - queryWrapper.eq(DataSourceAccessDO::getDataSourceId, dataSourceAccessObjectParam.getId()); - DataSourceAccessDO query = dataSourceAccessMapper.selectOne(queryWrapper); - if (query != null) { - log.info("The data source already exists, no need to add it again,{}", - JSON.toJSONString(dataSourceAccessObjectParam)); - continue; - } - dataSourceAccessMapper.insert( - dataSourceAccessConverter.param2do(param.getDataSourceId(), dataSourceAccessObjectParam.getId(), - dataSourceAccessObjectParam.getType(), ContextUtils.getUserId())); - } - return ActionResult.isSuccess(); + public DataResult create(DataSourceAccessCreatParam param) { + DataSourceAccessDO data = dataSourceAccessConverter.param2do(param, ContextUtils.getUserId()); + + dataSourceAccessMapper.insert(data); + return DataResult.of(data.getId()); } @Override 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 d5b8a2fc..355bee32 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 @@ -3,15 +3,25 @@ package ai.chat2db.server.domain.core.impl; import java.util.List; 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; +import ai.chat2db.server.domain.api.param.team.TeamSelector; +import ai.chat2db.server.domain.api.param.team.TeamUpdateParam; import ai.chat2db.server.domain.api.service.TeamService; import ai.chat2db.server.domain.core.converter.TeamConverter; import ai.chat2db.server.domain.repository.entity.TeamDO; import ai.chat2db.server.domain.repository.mapper.TeamMapper; +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 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 lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /** @@ -39,4 +49,48 @@ public class TeamServiceImpl implements TeamService { List list = teamConverter.do2dto(dataList); return ListResult.of(list); } + + @Override + public PageResult pageQuery(TeamPageQueryParam param, TeamSelector selector) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(param.getSearchKey())) { + queryWrapper.and(wrapper -> wrapper.like(TeamDO::getCode, "%" + param.getSearchKey() + "%") + .or() + .like(TeamDO::getName, "%" + param.getSearchKey() + "%")); + } + Page page = new Page<>(param.getPageNo(), param.getPageSize()); + page.setSearchCount(param.getEnableReturnCount()); + IPage iPage = teamMapper.selectPage(page, queryWrapper); + List list = teamConverter.do2dto(iPage.getRecords()); + + fillData(list, selector); + + return PageResult.of(list, iPage.getTotal(), param); + } + + @Override + public DataResult create(TeamCreateParam param) { + TeamDO data = teamConverter.param2do(param); + teamMapper.insert(data); + return DataResult.of(data.getId()); + } + + @Override + public DataResult update(TeamUpdateParam param) { + TeamDO data = teamConverter.param2do(param); + teamMapper.updateById(data); + return DataResult.of(data.getId()); + } + + @Override + public ActionResult delete(Long id) { + teamMapper.deleteById(id); + return ActionResult.isSuccess(); + } + + private void fillData(List list, TeamSelector selector) { + if (CollectionUtils.isEmpty(list) || selector == null) { + return; + } + } } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamUserServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamUserServiceImpl.java index ee322778..a8ae4c2b 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamUserServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TeamUserServiceImpl.java @@ -4,6 +4,7 @@ import java.util.List; import ai.chat2db.server.domain.api.model.TeamUser; import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam; +import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam; import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector; import ai.chat2db.server.domain.api.service.TeamUserService; import ai.chat2db.server.domain.core.converter.TeamConverter; @@ -11,7 +12,11 @@ import ai.chat2db.server.domain.core.converter.TeamUserConverter; import ai.chat2db.server.domain.core.converter.UserConverter; import ai.chat2db.server.domain.repository.entity.TeamUserDO; import ai.chat2db.server.domain.repository.mapper.TeamUserCustomMapper; +import ai.chat2db.server.domain.repository.mapper.TeamUserMapper; +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.PageResult; +import ai.chat2db.server.tools.common.util.ContextUtils; import ai.chat2db.server.tools.common.util.EasyCollectionUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -35,6 +40,8 @@ public class TeamUserServiceImpl implements TeamUserService { @Resource private TeamUserCustomMapper teamUserCustomMapper; @Resource + private TeamUserMapper teamUserMapper; + @Resource private UserConverter userConverter; @Resource private TeamConverter teamConverter; @@ -42,8 +49,10 @@ public class TeamUserServiceImpl implements TeamUserService { @Override public PageResult comprehensivePageQuery(TeamUserComprehensivePageQueryParam param, TeamUserSelector selector) { - IPage iPage = teamUserCustomMapper.comprehensivePageQuery( - new Page<>(param.getPageNo(), param.getPageSize()), param.getTeamId(), param.getUserId(), + Page page = new Page<>(param.getPageNo(), param.getPageSize()); + page.setSearchCount(param.getEnableReturnCount()); + IPage iPage = teamUserCustomMapper.comprehensivePageQuery(page, param.getTeamId(), + param.getUserId(), param.getTeamRoleCode()); List list = teamUserConverter.do2dto(iPage.getRecords()); @@ -53,6 +62,20 @@ public class TeamUserServiceImpl implements TeamUserService { return PageResult.of(list, iPage.getTotal(), param); } + @Override + public DataResult create(TeamUserCreatParam param) { + TeamUserDO data = teamUserConverter.param2do(param, ContextUtils.getUserId()); + + teamUserMapper.insert(data); + return DataResult.of(data.getId()); + } + + @Override + public ActionResult delete(Long id) { + teamUserMapper.deleteById(id); + return ActionResult.isSuccess(); + } + private void fillData(List list, TeamUserSelector selector) { if (CollectionUtils.isEmpty(list) || selector == null) { return; 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 1d28cf32..8659c73f 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 @@ -3,12 +3,18 @@ package ai.chat2db.server.domain.core.impl; import java.util.List; import java.util.Objects; +import ai.chat2db.server.domain.api.enums.RoleCodeEnum; import ai.chat2db.server.domain.api.model.User; -import ai.chat2db.server.domain.api.param.UserQueryParam; +import ai.chat2db.server.domain.api.param.user.UserCreateParam; +import ai.chat2db.server.domain.api.param.user.UserPageQueryParam; +import ai.chat2db.server.domain.api.param.user.UserSelector; +import ai.chat2db.server.domain.api.param.user.UserUpdateParam; import ai.chat2db.server.domain.api.service.UserService; import ai.chat2db.server.domain.core.converter.UserConverter; import ai.chat2db.server.domain.repository.entity.DbhubUserDO; import ai.chat2db.server.domain.repository.mapper.DbhubUserMapper; +import ai.chat2db.server.tools.base.excption.BusinessException; +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; @@ -18,6 +24,7 @@ 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.StringUtils; import org.springframework.stereotype.Service; /** @@ -61,37 +68,56 @@ public class UserServiceImpl implements UserService { } @Override - public PageResult queryPage(UserQueryParam param) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - if (Objects.nonNull(param.getKeyWord())) { - query.like(DbhubUserDO::getUserName, param.getKeyWord()); + public PageResult pageQuery(UserPageQueryParam param, UserSelector selector) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StringUtils.isNotBlank(param.getSearchKey())) { + queryWrapper.and(wrapper -> wrapper.like(DbhubUserDO::getUserName, "%" + param.getSearchKey() + "%") + .or() + .like(DbhubUserDO::getNickName, "%" + param.getSearchKey() + "%") + .or() + .like(DbhubUserDO::getEmail, "%" + param.getSearchKey() + "%")); } + // Default not to query desktop accounts + queryWrapper.ne(DbhubUserDO::getId, RoleCodeEnum.DESKTOP.getDefaultUserId()); Page page = new Page<>(param.getPageNo(), param.getPageSize()); - page.setOptimizeCountSql(false); - IPage iPage = dbhubUserMapper.selectPage(page, query); + page.setSearchCount(param.getEnableReturnCount()); + IPage iPage = dbhubUserMapper.selectPage(page, queryWrapper); return PageResult.of(userConverter.do2dto(iPage.getRecords()), iPage.getTotal(), param); } @Override - public DataResult update(User user) { - DbhubUserDO dbhubUserDO = userConverter.dto2do(user); - if (Objects.nonNull(dbhubUserDO.getPassword())) { - String bcryptPassword = DigestUtil.bcrypt(dbhubUserDO.getPassword()); - dbhubUserDO.setPassword(bcryptPassword); + public DataResult update(UserUpdateParam user) { + if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(user.getId())) { + throw new BusinessException("user.canNotOperateSystemAccount"); } - int n = dbhubUserMapper.updateById(dbhubUserDO); - return DataResult.of(n == 1); + DbhubUserDO data = userConverter.param2do(user); + if (Objects.nonNull(data.getPassword())) { + String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); + data.setPassword(bcryptPassword); + } + + if (RoleCodeEnum.ADMIN.getDefaultUserId().equals(user.getId())) { + data.setStatus(null); + data.setEmail(null); + data.setUserName(null); + data.setRoleCode(null); + } + dbhubUserMapper.updateById(data); + return DataResult.of(data.getId()); } @Override - public DataResult delete(Long id) { - int n = dbhubUserMapper.deleteById(id); - return DataResult.of(n == 1); + public ActionResult delete(Long id) { + if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(id) || RoleCodeEnum.ADMIN.getDefaultUserId().equals(id)) { + throw new BusinessException("user.canNotOperateSystemAccount"); + } + dbhubUserMapper.deleteById(id); + return ActionResult.isSuccess(); } @Override - public DataResult create(User user) { - DbhubUserDO data = userConverter.dto2do(user); + public DataResult create(UserCreateParam user) { + DbhubUserDO data = userConverter.param2do(user); String bcryptPassword = DigestUtil.bcrypt(data.getPassword()); data.setPassword(bcryptPassword); dbhubUserMapper.insert(data); diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DataSourceAccessCustomMapper.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DataSourceAccessCustomMapper.java index fd4e30c2..42b821c9 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DataSourceAccessCustomMapper.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/DataSourceAccessCustomMapper.java @@ -1,7 +1,6 @@ package ai.chat2db.server.domain.repository.mapper; import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO; -import ai.chat2db.server.domain.repository.entity.DataSourceDO; import com.baomidou.mybatisplus.core.mapper.Mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; @@ -13,6 +12,8 @@ import org.apache.ibatis.annotations.Param; */ public interface DataSourceAccessCustomMapper extends Mapper { - IPage comprehensivePageQuery(IPage page, @Param("dataSourceId") Long dataSourceId, @Param("searchKey") String searchKey); + IPage comprehensivePageQuery(IPage page, @Param("dataSourceId") Long dataSourceId, + @Param("userOrTeamSearchKey") String userOrTeamSearchKey, + @Param("dataSourceSearchKey") String dataSourceSearchKey); } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TeamUserCustomMapper.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TeamUserCustomMapper.java index 0803f439..db758e39 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TeamUserCustomMapper.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/java/ai/chat2db/server/domain/repository/mapper/TeamUserCustomMapper.java @@ -1,6 +1,5 @@ package ai.chat2db.server.domain.repository.mapper; -import ai.chat2db.server.domain.repository.entity.DataSourceDO; import ai.chat2db.server.domain.repository.entity.TeamUserDO; import com.baomidou.mybatisplus.core.mapper.Mapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -13,6 +12,6 @@ import org.apache.ibatis.annotations.Param; */ public interface TeamUserCustomMapper extends Mapper { - IPage comprehensivePageQuery(IPage page, @Param("teamId") Long teamId, + IPage comprehensivePageQuery(IPage page, @Param("teamId") Long teamId, @Param("userId") Long userId, @Param("teamRoleCode") String teamRoleCode); } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DataSourceAccessCustomMapper.xml b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DataSourceAccessCustomMapper.xml index 94e73c2d..22c8c62f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DataSourceAccessCustomMapper.xml +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/DataSourceAccessCustomMapper.xml @@ -4,18 +4,24 @@ diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TeamUserCustomMapper.xml b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TeamUserCustomMapper.xml index fdc69167..797964f7 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TeamUserCustomMapper.xml +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-repository/src/main/resources/mapper/TeamUserCustomMapper.xml @@ -4,9 +4,12 @@ diff --git a/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages.properties b/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages.properties index ac3d4314..a1871dca 100644 --- a/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages.properties +++ b/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages.properties @@ -23,4 +23,6 @@ connection.ssh.error=SSH connection failed, please check the connection informat connection.driver.load.error=Failed to load driver class, please check the driver jar package # sqlResult sqlResult.rowNumber=Row Number -sqlResult.success=Execution successful \ No newline at end of file +sqlResult.success=Execution successful + +user.canNotOperateSystemAccount=System accounts cannot be operated \ No newline at end of file diff --git a/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_en_US.properties b/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_en_US.properties index 7e049f75..ed17ed94 100644 --- a/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_en_US.properties +++ b/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_en_US.properties @@ -21,4 +21,6 @@ connection.ssh.error=SSH connection failed, please check the connection informat connection.driver.load.error=Failed to load driver class, please check the driver jar package # sqlResult sqlResult.rowNumber=Row Number -sqlResult.success=Execution successful \ No newline at end of file +sqlResult.success=Execution successful + +user.canNotOperateSystemAccount=System accounts cannot be operated \ No newline at end of file diff --git a/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_zh_CN.properties b/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_zh_CN.properties index b3de56bc..8a08545c 100644 --- a/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_zh_CN.properties +++ b/chat2db-server/chat2db-server-start/src/main/resources/i18n/messages_zh_CN.properties @@ -20,4 +20,6 @@ connection.ssh.error=SSH 链接异常,请检查SSH配置 connection.driver.load.error=数据库驱动加载异常,请检查驱动配置 # sqlResult sqlResult.rowNumber=行号 -sqlResult.success=执行成功 \ No newline at end of file +sqlResult.success=执行成功 + +user.canNotOperateSystemAccount=不能操作系统账号 diff --git a/chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/wrapper/result/PageResult.java b/chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/wrapper/result/PageResult.java index f707a6ac..5f690e14 100644 --- a/chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/wrapper/result/PageResult.java +++ b/chat2db-server/chat2db-server-tools/chat2db-server-tools-base/src/main/java/ai/chat2db/server/tools/base/wrapper/result/PageResult.java @@ -272,6 +272,25 @@ public class PageResult implements Serializable, Result> { return pageResult; } + /** + * 将当前的类型转换成另外一个类型 + * + * @param mapper 转换的方法 + * @param 返回的类型 + * @return 分页返回对象 + */ + public ListResult mapToList(Function mapper) { + List returnData = hasData(this) ? getData().stream().map(mapper).collect(Collectors.toList()) + : Collections.emptyList(); + ListResult result = new ListResult<>(); + result.setSuccess(getSuccess()); + result.setErrorCode(getErrorCode()); + result.setErrorMessage(getErrorMessage()); + result.setTraceId(getTraceId()); + result.setData(returnData); + return result; + } + /** * 将当前的类型转换成另外一个类型 * 并且转换成web的类型 diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/CommonAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/CommonAdminController.java index dcc7ddc2..d5859640 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/CommonAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/CommonAdminController.java @@ -1,11 +1,19 @@ package ai.chat2db.server.admin.api.controller.common; -import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import java.util.List; + +import ai.chat2db.server.admin.api.controller.common.converter.CommonAdminConverter; import ai.chat2db.server.admin.api.controller.common.vo.TeamUserListVO; -import ai.chat2db.server.admin.api.controller.datasource.converter.DataSourceAdminConverter; -import ai.chat2db.server.domain.api.service.DataSourceService; -import ai.chat2db.server.tools.base.wrapper.result.web.WebPageResult; +import ai.chat2db.server.admin.api.controller.team.vo.SimpleTeamVO; +import ai.chat2db.server.admin.api.controller.user.vo.SimpleUserVO; +import ai.chat2db.server.common.api.controller.request.CommonQueryRequest; +import ai.chat2db.server.domain.api.param.team.TeamPageQueryParam; +import ai.chat2db.server.domain.api.param.user.UserPageQueryParam; +import ai.chat2db.server.domain.api.service.TeamService; +import ai.chat2db.server.domain.api.service.UserService; +import ai.chat2db.server.tools.base.wrapper.result.ListResult; +import com.google.common.collect.Lists; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.GetMapping; @@ -22,9 +30,11 @@ import org.springframework.web.bind.annotation.RestController; public class CommonAdminController { @Resource - private DataSourceService dataSourceService; + private UserService userService; @Resource - private DataSourceAdminConverter dataSourceAdminConverter; + private TeamService teamService; + @Resource + private CommonAdminConverter commonAdminConverter; /** * Fuzzy query of users or teams @@ -34,8 +44,18 @@ public class CommonAdminController { * @version 2.1.0 */ @GetMapping("/team_user/list") - public WebPageResult teamUserList(@Valid CommonPageQueryRequest request) { - return null; + public ListResult teamUserList(@Valid CommonQueryRequest request) { + UserPageQueryParam userPageQueryParam = commonAdminConverter.request2paramUser(request); + List result = Lists.newArrayList(); + result.addAll(userService.pageQuery(userPageQueryParam, null) + .mapToList(commonAdminConverter::dto2voTeamUser) + .getData()); + + TeamPageQueryParam teamPageQueryParam = commonAdminConverter.request2paramTeam(request); + result.addAll(teamService.pageQuery(teamPageQueryParam, null) + .mapToList(commonAdminConverter::dto2voTeamUser) + .getData()); + return ListResult.of(result); } /** @@ -46,8 +66,9 @@ public class CommonAdminController { * @version 2.1.0 */ @GetMapping("/user/list") - public WebPageResult userList(@Valid CommonPageQueryRequest request) { - return null; + public ListResult userList(@Valid CommonQueryRequest request) { + return userService.pageQuery(commonAdminConverter.request2paramUser(request), null) + .mapToList(commonAdminConverter::dto2voUser); } /** @@ -58,8 +79,9 @@ public class CommonAdminController { * @version 2.1.0 */ @GetMapping("/team/list") - public WebPageResult teamList(@Valid CommonPageQueryRequest request) { - return null; + public ListResult teamList(@Valid CommonQueryRequest request) { + return teamService.pageQuery(commonAdminConverter.request2paramTeam(request), null) + .mapToList(commonAdminConverter::dto2voTeam); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/converter/CommonAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/converter/CommonAdminConverter.java new file mode 100644 index 00000000..41b28795 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/common/converter/CommonAdminConverter.java @@ -0,0 +1,87 @@ +package ai.chat2db.server.admin.api.controller.common.converter; + +import ai.chat2db.server.admin.api.controller.common.vo.TeamUserListVO; +import ai.chat2db.server.admin.api.controller.team.vo.SimpleTeamVO; +import ai.chat2db.server.admin.api.controller.user.vo.SimpleUserVO; +import ai.chat2db.server.common.api.controller.request.CommonQueryRequest; +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.domain.api.model.Team; +import ai.chat2db.server.domain.api.model.User; +import ai.chat2db.server.domain.api.param.team.TeamPageQueryParam; +import ai.chat2db.server.domain.api.param.user.UserPageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring", imports = {AccessObjectTypeEnum.class}) +public abstract class CommonAdminConverter { + + /** + * conversion + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "pageSize", expression = "java(10)"), + }) + public abstract TeamPageQueryParam request2paramTeam(CommonQueryRequest request); + + /** + * conversion + * + * @param request + * @return + */ + @Mappings({ + @Mapping(target = "pageSize", expression = "java(10)"), + }) + public abstract UserPageQueryParam request2paramUser(CommonQueryRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract SimpleTeamVO dto2voTeam(Team dto); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract SimpleUserVO dto2voUser(User dto); + + /** + * conversion + * + * @param dto + * @return + */ + @Mappings({ + @Mapping(target = "type", expression = "java(AccessObjectTypeEnum.TEAM.getCode())"), + @Mapping(target = "code", source = "code"), + @Mapping(target = "name", source = "name"), + }) + public abstract TeamUserListVO dto2voTeamUser(Team dto); + + /** + * conversion + * + * @param dto + * @return + */ + @Mappings({ + @Mapping(target = "type", expression = "java(AccessObjectTypeEnum.USER.getCode())"), + @Mapping(target = "code", source = "userName"), + @Mapping(target = "name", source = "nickName"), + }) + public abstract TeamUserListVO dto2voTeamUser(User dto); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/DataSourceAccessAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/DataSourceAccessAdminController.java index 2160e56d..f23df0c2 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/DataSourceAccessAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/DataSourceAccessAdminController.java @@ -5,6 +5,7 @@ import ai.chat2db.server.admin.api.controller.datasource.converter.DataSourceAcc import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessPageQueryRequest; import ai.chat2db.server.admin.api.controller.datasource.vo.DataSourceAccessPageQueryVO; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; import ai.chat2db.server.domain.api.service.DataSourceAccessService; import ai.chat2db.server.tools.base.wrapper.result.ActionResult; @@ -59,8 +60,14 @@ public class DataSourceAccessAdminController { * @version 2.1.0 */ @PostMapping("/batch_create") - public ActionResult batchCreate(@RequestBody DataSourceAccessBatchCreateRequest request) { - return dataSourceAccessService.batchCreate(dataSourceAccessAdminConverter.request2param(request)); + public ActionResult batchCreate(@Valid @RequestBody DataSourceAccessBatchCreateRequest request) { + request.getAccessObjectList() + .forEach(accessObject -> dataSourceAccessService.create(DataSourceAccessCreatParam.builder() + .dataSourceId(request.getDataSourceId()) + .accessObjectId(accessObject.getId()) + .accessObjectType(accessObject.getType()) + .build())); + return ActionResult.isSuccess(); } /** @@ -71,7 +78,7 @@ public class DataSourceAccessAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return dataSourceAccessService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java index bcb1bce6..19839a21 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/datasource/converter/DataSourceAccessAdminConverter.java @@ -8,6 +8,8 @@ import ai.chat2db.server.domain.api.model.DataSourceAccess; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; /** * converter @@ -23,6 +25,9 @@ public abstract class DataSourceAccessAdminConverter { * @param request * @return */ + @Mappings({ + @Mapping(source = "searchKey", target = "userOrTeamSearchKey"), + }) public abstract DataSourceAccessComprehensivePageQueryParam request2param(DataSourceAccessPageQueryRequest request); /** diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamAdminController.java index c51e3d1b..1e1ef7e6 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamAdminController.java @@ -1,13 +1,16 @@ package ai.chat2db.server.admin.api.controller.team; +import ai.chat2db.server.admin.api.controller.team.converter.TeamAdminConverter; import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; import ai.chat2db.server.admin.api.controller.team.request.TeamCreateRequest; import ai.chat2db.server.admin.api.controller.team.request.TeamUpdateRequest; import ai.chat2db.server.admin.api.controller.team.vo.TeamPageQueryVO; +import ai.chat2db.server.domain.api.service.TeamService; 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.web.WebPageResult; +import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -25,6 +28,10 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/admin/team") @RestController public class TeamAdminController { + @Resource + private TeamService teamService; + @Resource + private TeamAdminConverter teamAdminConverter; /** * Pagination query @@ -35,7 +42,8 @@ public class TeamAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return null; + return teamService.pageQuery(teamAdminConverter.request2param(request), null) + .mapToWeb(teamAdminConverter::dto2vo); } /** @@ -47,8 +55,7 @@ public class TeamAdminController { */ @PostMapping("/create") public DataResult create(@RequestBody TeamCreateRequest request) { - return null; - + return teamService.create(teamAdminConverter.request2param(request)); } /** @@ -59,8 +66,8 @@ public class TeamAdminController { * @version 2.1.0 */ @PostMapping("/update") - public ActionResult update(@RequestBody TeamUpdateRequest request) { - return null; + public DataResult update(@RequestBody TeamUpdateRequest request) { + return teamService.update(teamAdminConverter.request2param(request)); } /** @@ -71,6 +78,6 @@ public class TeamAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return teamService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamDataSourceAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamDataSourceAdminController.java index 8ffd260c..149ec7d8 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamDataSourceAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamDataSourceAdminController.java @@ -1,12 +1,17 @@ package ai.chat2db.server.admin.api.controller.team; -import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.admin.api.controller.team.converter.TeamDataSourcesAdminConverter; import ai.chat2db.server.admin.api.controller.team.request.TeamDataSourceBatchCreateRequest; import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; +import ai.chat2db.server.domain.api.service.DataSourceAccessService; 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.web.WebPageResult; +import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -24,6 +29,14 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/admin/team/data_source") @RestController public class TeamDataSourceAdminController { + private static final DataSourceAccessSelector DATA_SOURCE_ACCESS_SELECTOR = DataSourceAccessSelector.builder() + .accessObject(Boolean.TRUE) + .build(); + + @Resource + private DataSourceAccessService dataSourceAccessService; + @Resource + private TeamDataSourcesAdminConverter teamDataSourcesAdminConverter; /** * Pagination query @@ -34,7 +47,9 @@ public class TeamDataSourceAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return null; + return dataSourceAccessService.comprehensivePageQuery(teamDataSourcesAdminConverter.request2param(request), + DATA_SOURCE_ACCESS_SELECTOR) + .mapToWeb(teamDataSourcesAdminConverter::dto2vo); } /** @@ -45,9 +60,14 @@ public class TeamDataSourceAdminController { * @version 2.1.0 */ @PostMapping("/batch_create") - public DataResult create(@RequestBody TeamDataSourceBatchCreateRequest request) { - return null; - + public ActionResult create(@Valid @RequestBody TeamDataSourceBatchCreateRequest request) { + request.getDataSourceIdList() + .forEach(dataSourceId -> dataSourceAccessService.create(DataSourceAccessCreatParam.builder() + .dataSourceId(dataSourceId) + .accessObjectId(request.getTeamId()) + .accessObjectType(AccessObjectTypeEnum.TEAM.getCode()) + .build())); + return ActionResult.isSuccess(); } /** @@ -58,6 +78,6 @@ public class TeamDataSourceAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return dataSourceAccessService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamUserAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamUserAdminController.java index 9073bd5b..bb788b03 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamUserAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/TeamUserAdminController.java @@ -1,12 +1,16 @@ package ai.chat2db.server.admin.api.controller.team; -import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.admin.api.controller.team.converter.TeamUserAdminConverter; import ai.chat2db.server.admin.api.controller.team.request.TeamUserBatchCreateRequest; import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam; +import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector; +import ai.chat2db.server.domain.api.service.TeamUserService; 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.web.WebPageResult; +import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -24,6 +28,14 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/admin/team/user") @RestController public class TeamUserAdminController { + private static final TeamUserSelector TEAM_USER_SELECTOR = TeamUserSelector.builder() + .user(Boolean.TRUE) + .build(); + + @Resource + private TeamUserService teamUserService; + @Resource + private TeamUserAdminConverter teamUserAdminConverter; /** * Pagination query @@ -34,7 +46,8 @@ public class TeamUserAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return null; + return teamUserService.comprehensivePageQuery(teamUserAdminConverter.request2param(request), TEAM_USER_SELECTOR) + .mapToWeb(teamUserAdminConverter::dto2vo); } /** @@ -45,9 +58,13 @@ public class TeamUserAdminController { * @version 2.1.0 */ @PostMapping("/batch_create") - public DataResult create(@RequestBody TeamUserBatchCreateRequest request) { - return null; - + public ActionResult create(@Valid @RequestBody TeamUserBatchCreateRequest request) { + request.getUserIdList() + .forEach(userId -> teamUserService.create(TeamUserCreatParam.builder() + .teamId(request.getTeamId()) + .userId(userId) + .build())); + return ActionResult.isSuccess(); } /** @@ -58,6 +75,6 @@ public class TeamUserAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return teamUserService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java new file mode 100644 index 00000000..9cbd9a16 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamAdminConverter.java @@ -0,0 +1,57 @@ +package ai.chat2db.server.admin.api.controller.team.converter; + +import ai.chat2db.server.admin.api.controller.team.request.TeamCreateRequest; +import ai.chat2db.server.admin.api.controller.team.request.TeamUpdateRequest; +import ai.chat2db.server.admin.api.controller.team.vo.TeamPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +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; +import ai.chat2db.server.domain.api.param.team.TeamUpdateParam; +import org.mapstruct.Mapper; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring",imports = {DataSourceKindEnum.class}) +public abstract class TeamAdminConverter { + + + /** + * conversion + * + * @param request + * @return + */ + public abstract TeamPageQueryParam request2param(CommonPageQueryRequest request); + + + /** + * conversion + * + * @param dto + * @return + */ + public abstract TeamPageQueryVO dto2vo(Team dto); + + + /** + * conversion + * + * @param request + * @return + */ + public abstract TeamCreateParam request2param(TeamCreateRequest request); + + + /** + * conversion + * + * @param request + * @return + */ + public abstract TeamUpdateParam request2param(TeamUpdateRequest request); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java new file mode 100644 index 00000000..451bf7e0 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamDataSourcesAdminConverter.java @@ -0,0 +1,49 @@ +package ai.chat2db.server.admin.api.controller.team.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.DataSourceAccess; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class}) +public abstract class TeamDataSourcesAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "dataSourceSearchKey"), + }) + public abstract DataSourceAccessComprehensivePageQueryParam request2param(CommonPageQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract TeamDataSourcePageQueryVO dto2vo(DataSourceAccess dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java new file mode 100644 index 00000000..4327e2e4 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/converter/TeamUserAdminConverter.java @@ -0,0 +1,48 @@ +package ai.chat2db.server.admin.api.controller.team.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.model.TeamUser; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring") +public abstract class TeamUserAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "userSearchKey"), + }) + public abstract TeamUserComprehensivePageQueryParam request2param(CommonPageQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract TeamUserPageQueryVO dto2vo(TeamUser dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java index 6c3f20f7..57eeaab9 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamDataSourceBatchCreateRequest.java @@ -23,6 +23,7 @@ public class TeamDataSourceBatchCreateRequest { /** * team id */ + @NotNull private Long teamId; diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java index 584fd05e..2a1a2b8a 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUpdateRequest.java @@ -16,12 +16,6 @@ public class TeamUpdateRequest { @NotNull private Long id; - /** - * 团队编码 - */ - @NotNull - private String code; - /** * 团队名称 */ diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java index 64a29215..42f1a75f 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/request/TeamUserBatchCreateRequest.java @@ -23,6 +23,7 @@ public class TeamUserBatchCreateRequest { /** * team id */ + @NotNull private Long teamId; /** diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java index 6a8a652a..7caa47de 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/team/vo/TeamDataSourcePageQueryVO.java @@ -2,6 +2,7 @@ package ai.chat2db.server.admin.api.controller.team.vo; import ai.chat2db.server.admin.api.controller.datasource.vo.SimpleDataSourceVO; +import jakarta.validation.constraints.NotNull; import lombok.Data; /** @@ -12,6 +13,12 @@ import lombok.Data; @Data public class TeamDataSourcePageQueryVO { + /** + * 主键 + */ + @NotNull + private Long id; + /** * team id */ 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 0c5bd94d..f94f70bf 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 @@ -1,12 +1,12 @@ package ai.chat2db.server.admin.api.controller.user; -import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; import ai.chat2db.server.admin.api.controller.user.converter.UserAdminConverter; 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.domain.api.service.DataSourceService; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +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; import ai.chat2db.server.tools.base.wrapper.result.web.WebPageResult; @@ -30,9 +30,9 @@ import org.springframework.web.bind.annotation.RestController; public class UserAdminController { @Resource - private DataSourceService dataSourceService; + private UserService userService; @Resource - private UserAdminConverter dataSourceAdminConverter; + private UserAdminConverter userAdminConverter; /** * Pagination query @@ -43,7 +43,8 @@ public class UserAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return null; + return userService.pageQuery(userAdminConverter.request2param(request), null) + .mapToWeb(userAdminConverter::dto2vo); } /** @@ -54,9 +55,8 @@ public class UserAdminController { * @version 2.1.0 */ @PostMapping("/create") - public DataResult create(@RequestBody UserCreateRequest request) { - return null; - + public DataResult create(@Valid @RequestBody UserCreateRequest request) { + return userService.create(userAdminConverter.request2param(request)); } /** @@ -67,8 +67,8 @@ public class UserAdminController { * @version 2.1.0 */ @PostMapping("/update") - public ActionResult update(@RequestBody UserUpdateRequest request) { - return null; + public DataResult update(@RequestBody UserUpdateRequest request) { + return userService.update(userAdminConverter.request2param(request)); } /** @@ -79,6 +79,6 @@ public class UserAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return userService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserDataSourceAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserDataSourceAdminController.java index 3b676f17..473f60b9 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserDataSourceAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserDataSourceAdminController.java @@ -1,12 +1,17 @@ package ai.chat2db.server.admin.api.controller.user; -import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; -import ai.chat2db.server.admin.api.controller.user.request.UserTeamBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.user.converter.UserDataSourcesAdminConverter; +import ai.chat2db.server.admin.api.controller.user.request.UserDataSourceBatchCreateRequest; import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; +import ai.chat2db.server.domain.api.service.DataSourceAccessService; 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.web.WebPageResult; +import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -24,6 +29,14 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/admin/user/data_source") @RestController public class UserDataSourceAdminController { + private static final DataSourceAccessSelector DATA_SOURCE_ACCESS_SELECTOR = DataSourceAccessSelector.builder() + .accessObject(Boolean.TRUE) + .build(); + + @Resource + private DataSourceAccessService dataSourceAccessService; + @Resource + private UserDataSourcesAdminConverter userDataSourcesAdminConverter; /** * Pagination query @@ -34,7 +47,9 @@ public class UserDataSourceAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return null; + return dataSourceAccessService.comprehensivePageQuery(userDataSourcesAdminConverter.request2param(request), + DATA_SOURCE_ACCESS_SELECTOR) + .mapToWeb(userDataSourcesAdminConverter::dto2vo); } /** @@ -45,9 +60,14 @@ public class UserDataSourceAdminController { * @version 2.1.0 */ @PostMapping("/batch_create") - public DataResult create(@RequestBody UserTeamBatchCreateRequest request) { - return null; - + public ActionResult create(@RequestBody UserDataSourceBatchCreateRequest request) { + request.getDataSourceIdList() + .forEach(dataSourceId -> dataSourceAccessService.create(DataSourceAccessCreatParam.builder() + .dataSourceId(dataSourceId) + .accessObjectId(request.getUserId()) + .accessObjectType(AccessObjectTypeEnum.USER.getCode()) + .build())); + return ActionResult.isSuccess(); } /** @@ -58,6 +78,6 @@ public class UserDataSourceAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return dataSourceAccessService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserTeamAdminController.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserTeamAdminController.java index 20a62d97..9888f3cf 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserTeamAdminController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/UserTeamAdminController.java @@ -1,12 +1,16 @@ package ai.chat2db.server.admin.api.controller.user; -import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.admin.api.controller.user.converter.UserTeamAdminConverter; import ai.chat2db.server.admin.api.controller.user.request.UserTeamBatchCreateRequest; import ai.chat2db.server.admin.api.controller.user.vo.UserTeamPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam; +import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector; +import ai.chat2db.server.domain.api.service.TeamUserService; 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.web.WebPageResult; +import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -24,6 +28,13 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/admin/user/team") @RestController public class UserTeamAdminController { + private static final TeamUserSelector TEAM_USER_SELECTOR = TeamUserSelector.builder() + .team(Boolean.TRUE) + .build(); + @Resource + private TeamUserService teamUserService; + @Resource + private UserTeamAdminConverter userTeamAdminConverter; /** * Pagination query @@ -34,7 +45,8 @@ public class UserTeamAdminController { */ @GetMapping("/page") public WebPageResult page(@Valid CommonPageQueryRequest request) { - return null; + return teamUserService.comprehensivePageQuery(userTeamAdminConverter.request2param(request), TEAM_USER_SELECTOR) + .mapToWeb(userTeamAdminConverter::dto2vo); } /** @@ -45,9 +57,13 @@ public class UserTeamAdminController { * @version 2.1.0 */ @PostMapping("/batch_create") - public DataResult create(@RequestBody UserTeamBatchCreateRequest request) { - return null; - + public ActionResult bacthCreate(@Valid @RequestBody UserTeamBatchCreateRequest request) { + request.getTeamIdList() + .forEach(teamId -> teamUserService.create(TeamUserCreatParam.builder() + .teamId(teamId) + .userId(request.getUserId()) + .build())); + return ActionResult.isSuccess(); } /** @@ -58,6 +74,6 @@ public class UserTeamAdminController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable Long id) { - return null; + return teamUserService.delete(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java index 409e0d59..c3c750c5 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserAdminConverter.java @@ -1,5 +1,13 @@ package ai.chat2db.server.admin.api.controller.user.converter; +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.model.User; +import ai.chat2db.server.domain.api.param.user.UserCreateParam; +import ai.chat2db.server.domain.api.param.user.UserPageQueryParam; +import ai.chat2db.server.domain.api.param.user.UserUpdateParam; import org.mapstruct.Mapper; /** @@ -10,49 +18,38 @@ import org.mapstruct.Mapper; @Mapper(componentModel = "spring") public abstract class UserAdminConverter { - ///** - // * conversion - // * - // * @param request - // * @return - // */ - //public abstract DataSourcePageQueryParam request2param(CommonPageQueryRequest request); - // - ///** - // * conversion - // * - // * @param request - // * @return - // */ - //public abstract DataSourcePageQueryParam request2paramAccess(CommonPageQueryRequest request); + /** + * conversion + * + * @param request + * @return + */ + public abstract UserPageQueryParam request2param(CommonPageQueryRequest request); - ///** - // * conversion - // * - // * @param dto - // * @return - // */ - //public abstract DataSourcePageQueryVO dto2vo(DataSource dto); - // - ///** - // * 参数转换 - // * - // * @param request - // * @return - // */ - //@Mappings({ - // @Mapping(source = "user", target = "userName") - //}) - //public abstract DataSourceCreateParam createReq2param(UserCreateRequest request); - // - ///** - // * 参数转换 - // * - // * @param request - // * @return - // */ - //@Mappings({ - // @Mapping(source = "user", target = "userName") - //}) - //public abstract DataSourceUpdateParam updateReq2param(DataSourceUpdateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract UserPageQueryVO dto2vo(User dto); + + + /** + * conversion + * + * @param request + * @return + */ + public abstract UserCreateParam request2param(UserCreateRequest request); + + + /** + * conversion + * + * @param request + * @return + */ + public abstract UserUpdateParam request2param(UserUpdateRequest request); } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java new file mode 100644 index 00000000..e9de9d50 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserDataSourcesAdminConverter.java @@ -0,0 +1,49 @@ +package ai.chat2db.server.admin.api.controller.user.converter; + +import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest; +import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.enums.DataSourceKindEnum; +import ai.chat2db.server.domain.api.model.DataSourceAccess; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam; +import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class}) +public abstract class UserDataSourcesAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "userOrTeamSearchKey"), + }) + public abstract DataSourceAccessComprehensivePageQueryParam request2param(CommonPageQueryRequest request); + + /** + * convert + * + * @param request + * @return + */ + public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract UserDataSourcePageQueryVO dto2vo(DataSourceAccess dto); + +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java new file mode 100644 index 00000000..850e718a --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-admin-api/src/main/java/ai/chat2db/server/admin/api/controller/user/converter/UserTeamAdminConverter.java @@ -0,0 +1,37 @@ +package ai.chat2db.server.admin.api.controller.user.converter; + +import ai.chat2db.server.admin.api.controller.user.vo.UserTeamPageQueryVO; +import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; +import ai.chat2db.server.domain.api.model.TeamUser; +import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +/** + * converter + * + * @author Jiaju Zhuang + */ +@Mapper(componentModel = "spring") +public abstract class UserTeamAdminConverter { + + /** + * convert + * + * @param request + * @return + */ + @Mappings({ + @Mapping(source = "searchKey", target = "teamSearchKey"), + }) + public abstract TeamUserComprehensivePageQueryParam request2param(CommonPageQueryRequest request); + + /** + * conversion + * + * @param dto + * @return + */ + public abstract UserTeamPageQueryVO dto2vo(TeamUser dto); +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-common-api/src/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java new file mode 100644 index 00000000..048b6c23 --- /dev/null +++ b/chat2db-server/chat2db-server-web/chat2db-server-common-api/src/main/java/ai/chat2db/server/common/api/controller/request/CommonQueryRequest.java @@ -0,0 +1,18 @@ + +package ai.chat2db.server.common.api.controller.request; + +import lombok.Data; + +/** + * Common query + * + * @author Jiaju Zhuang + */ +@Data +public class CommonQueryRequest { + + /** + * searchKey + */ + private String searchKey; +} diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/user/UserController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/user/UserController.java index 8ba60057..adfcd588 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/user/UserController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/user/UserController.java @@ -1,27 +1,7 @@ package ai.chat2db.server.web.api.controller.user; -import ai.chat2db.server.domain.api.model.User; -import ai.chat2db.server.domain.api.param.UserQueryParam; -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; -import ai.chat2db.server.tools.base.wrapper.result.PageResult; -import ai.chat2db.server.tools.base.wrapper.result.web.WebPageResult; -import ai.chat2db.server.web.api.controller.user.converter.UserWebConverter; -import ai.chat2db.server.web.api.controller.user.request.UserCreateRequest; -import ai.chat2db.server.web.api.controller.user.request.UserQueryRequest; -import ai.chat2db.server.web.api.controller.user.request.UserUpdateRequest; -import ai.chat2db.server.web.api.controller.user.vo.UserVO; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** @@ -31,60 +11,60 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/user") @RestController public class UserController { - - @Autowired - private UserService userService; - - @Autowired - private UserWebConverter userWebConverter; - - @GetMapping("/{id}") - public DataResult query(@PathVariable("id") Long id) { - return DataResult.of(userWebConverter.dto2vo(userService.query(id).getData())); - } - - @GetMapping("/list") - public WebPageResult list(UserQueryRequest request) { - UserQueryParam userQueryParam = new UserQueryParam(); - userQueryParam.setKeyWord(request.getKeyWord()); - userQueryParam.setPageNo(request.getPageNo()); - userQueryParam.setPageSize(request.getPageSize()); - PageResult pageResult = userService.queryPage(userQueryParam); - return WebPageResult.of(userWebConverter.dto2vo(pageResult.getData()), pageResult.getTotal(), request); - } - - /** - * 新增Key - * - * @param request - * @return - */ - @PostMapping("/create") - public DataResult create(@RequestBody UserCreateRequest request) { - return userService.create(userWebConverter.createRequest2dto(request)); - } - - /** - * 更新我的保存 - * - * @param request - * @return - */ - @RequestMapping(value = "/update",method = {RequestMethod.POST, RequestMethod.PUT}) - public ActionResult update(@RequestBody UserUpdateRequest request) { - DataResult result = userService.update(userWebConverter.updateRequest2dto(request)); - return ActionResult.isSuccess(); - } - - /** - * 删除我的保存 - * - * @param id - * @return - */ - @DeleteMapping("/{id}") - public ActionResult delete(@PathVariable("id") Long id) { - userService.delete(id); - return ActionResult.isSuccess(); - } + // + //@Autowired + //private UserService userService; + // + //@Autowired + //private UserWebConverter userWebConverter; + // + //@GetMapping("/{id}") + //public DataResult query(@PathVariable("id") Long id) { + // return DataResult.of(userWebConverter.dto2vo(userService.query(id).getData())); + //} + // + //@GetMapping("/list") + //public WebPageResult list(UserQueryRequest request) { + // UserQueryParam userQueryParam = new UserQueryParam(); + // userQueryParam.setKeyWord(request.getKeyWord()); + // userQueryParam.setPageNo(request.getPageNo()); + // userQueryParam.setPageSize(request.getPageSize()); + // PageResult pageResult = userService.queryPage(userQueryParam); + // return WebPageResult.of(userWebConverter.dto2vo(pageResult.getData()), pageResult.getTotal(), request); + //} + // + ///** + // * 新增Key + // * + // * @param request + // * @return + // */ + //@PostMapping("/create") + //public DataResult create(@RequestBody UserCreateRequest request) { + // return userService.create(userWebConverter.createRequest2dto(request)); + //} + // + ///** + // * 更新我的保存 + // * + // * @param request + // * @return + // */ + //@RequestMapping(value = "/update",method = {RequestMethod.POST, RequestMethod.PUT}) + //public ActionResult update(@RequestBody UserUpdateRequest request) { + // DataResult result = userService.update(userWebConverter.updateRequest2dto(request)); + // return ActionResult.isSuccess(); + //} + // + ///** + // * 删除我的保存 + // * + // * @param id + // * @return + // */ + //@DeleteMapping("/{id}") + //public ActionResult delete(@PathVariable("id") Long id) { + // userService.delete(id); + // return ActionResult.isSuccess(); + //} } \ No newline at end of file