diff --git a/pom.xml b/pom.xml index 4c1cc0b7..255d28d7 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,7 @@ zayac-admin-system zayac-admin-generator zayac-admin-common + zayac-admin-account diff --git a/zayac-admin-account/pom.xml b/zayac-admin-account/pom.xml new file mode 100644 index 00000000..290b3ed5 --- /dev/null +++ b/zayac-admin-account/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + com.zayac + zayac-admin + ${revision} + + + zayac-admin-account + 后台账号相关组件 + + + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springframework.boot + spring-boot-starter-amqp + + + com.zayac + zayac-admin-system + + + + \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/enums/AccountTypeEnum.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/enums/AccountTypeEnum.java new file mode 100644 index 00000000..7aa2c572 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/enums/AccountTypeEnum.java @@ -0,0 +1,33 @@ +package com.zayac.admin.system.enums; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import top.continew.starter.data.mybatis.plus.base.IBaseEnum; + +@Getter +@RequiredArgsConstructor +public enum AccountTypeEnum implements IBaseEnum { + /** + * 开云 + */ + KY(0, "开云"), + + /** + * 华体会 + */ + HTH(1, "华体会"), + + /** + * 九游 + */ + JY(2, "九游"), + + /** + * 爱体育 + */ + ATY(3, "爱体育"), + ; + + private final Integer value; + private final String description; +} diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/mapper/AccountMapper.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/mapper/AccountMapper.java new file mode 100644 index 00000000..0a27e293 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/mapper/AccountMapper.java @@ -0,0 +1,13 @@ +package com.zayac.admin.system.mapper; + +import com.zayac.admin.system.model.entity.AccountDO; +import top.continew.starter.data.mybatis.plus.base.BaseMapper; + + +/** +* 账号 Mapper +* +* @author zayac +* @since 2024/05/10 20:44 +*/ +public interface AccountMapper extends BaseMapper {} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/AccountDO.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/AccountDO.java new file mode 100644 index 00000000..d68281ec --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/AccountDO.java @@ -0,0 +1,65 @@ +package com.zayac.admin.system.model.entity; + +import java.io.Serial; + +import com.zayac.admin.common.enums.DisEnableStatusEnum; +import com.zayac.admin.system.enums.AccountTypeEnum; +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.TableName; + +import top.continew.starter.extension.crud.model.entity.BaseDO; + +/** + * 账号实体 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Data +@TableName("sys_account") +public class AccountDO extends BaseDO { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 账号昵称 + */ + private String nickname; + + /** + * 账号 + */ + private String username; + + /** + * 密码 + */ + private String password; + + /** + * 账号类型(0:开云,1:华体会,2:九游,3:爱游戏) + */ + private AccountTypeEnum type; + + /** + * headers + */ + private String headers; + + /** + * 状态(1:启用;2:禁用) + */ + private DisEnableStatusEnum status; + + /** + * 对应平台的url + */ + private String url; + + /** + * 用户ID + */ + private Long userId; +} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/UserDO.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/UserDO.java index f8009584..db27efc4 100644 --- a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/UserDO.java +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/entity/UserDO.java @@ -102,4 +102,32 @@ public class UserDO extends BaseDO { * 部门 ID */ private Long deptId; + + /** + * 是否需要消息通知 + */ + private DisEnableStatusEnum needNotify; + /** + * telegram机器人token + */ + private String botToken; + /** + * telegram_ids 以逗号分割,判断是否有权限使用机器人 + */ + private String telegramIds; + + /** + * 注册新增的目标群组id + */ + private Long groupId; + + /** + * 定时报数的目标群组id + */ + private Long countGroupId; + + /** + * 消息发送的个人id + */ + private Long chatId; } diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/query/AccountQuery.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/query/AccountQuery.java new file mode 100644 index 00000000..3fc2e708 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/query/AccountQuery.java @@ -0,0 +1,54 @@ +package com.zayac.admin.system.model.query; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.continew.starter.data.core.annotation.Query; +import top.continew.starter.data.core.enums.QueryType; + +/** + * 账号查询条件 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Data +@Schema(description = "账号查询条件") +public class AccountQuery implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 账号昵称 + */ + @Schema(description = "账号昵称") + @Query(type = QueryType.EQ) + private String name; + + /** + * 账号 + */ + @Schema(description = "账号") + @Query(type = QueryType.EQ) + private String username; + + /** + * 账号类型(0:开云,1:华体会,2:九游,3:爱游戏) + */ + @Schema(description = "账号类型(0:开云,1:华体会,2:九游,3:爱游戏)") + @Query(type = QueryType.EQ) + private Boolean type; + + /** + * 状态(1:启用;2:禁用) + */ + @Schema(description = "状态(1:启用;2:禁用)") + @Query(type = QueryType.EQ) + private Integer status; +} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/AccountReq.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/AccountReq.java new file mode 100644 index 00000000..e466f657 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/AccountReq.java @@ -0,0 +1,64 @@ +package com.zayac.admin.system.model.req; + +import java.io.Serial; +import java.time.LocalDateTime; + +import jakarta.validation.constraints.*; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import org.hibernate.validator.constraints.Length; + +import top.continew.starter.extension.crud.model.req.BaseReq; + +/** + * 创建或修改账号信息 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Data +@Schema(description = "创建或修改账号信息") +public class AccountReq extends BaseReq { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 账号昵称 + */ + @Schema(description = "账号昵称") + @Length(max = 60, message = "账号昵称长度不能超过 {max} 个字符") + private String name; + + /** + * 账号 + */ + @Schema(description = "账号") + @NotBlank(message = "账号不能为空") + @Length(max = 20, message = "账号长度不能超过 {max} 个字符") + private String username; + + /** + * 账号类型(0:开云,1:华体会,2:九游,3:爱游戏) + */ + @Schema(description = "账号类型(0:开云,1:华体会,2:九游,3:爱游戏)") + @NotNull(message = "账号类型(0:开云,1:华体会,2:九游,3:爱游戏)不能为空") + private Boolean type; + + /** + * 状态(1:启用;2:禁用) + */ + @Schema(description = "状态(1:启用;2:禁用)") + @NotNull(message = "状态(1:启用;2:禁用)不能为空") + private Integer status; + + /** + * 对应平台的url + */ + @Schema(description = "对应平台的url") + @Length(max = 100, message = "对应平台的url长度不能超过 {max} 个字符") + private String url; +} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/UserReq.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/UserReq.java index 0739ec09..b6161903 100644 --- a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/UserReq.java +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/req/UserReq.java @@ -77,6 +77,45 @@ public class UserReq extends BaseReq { @Length(max = 255, message = "邮箱长度不能超过 {max} 个字符") private String email; + /** + * botToken + */ + @Schema(description = "机器人token", example = "1234567890:AAGzq1Tgtr_ZejU7bv0mab14xOwi0_64d0w") + @Length(max = 64, message = "botToken不能超过 {max} 个字符") + private String botToken; + + + /** + * 注册新增通知群组ID + */ + @Schema(description = "注册新增通知群组ID", example = "-1234522455730") + private Long groupId; + + /** + * 报数群组ID + */ + @Schema(description = "报数群组ID", example = "-1234522455730") + private Long countGroupId; + + /** + * 私聊消息ID + */ + @Schema(description = "邮箱", example = "123456789") + private Long chatId; + + /** + * 用户telegram + */ + @Schema(description = "telegram", example = "6054562838") + private List telegramIds; + + /** + * 是否启用消息通知 + */ + @Schema(description = "消息通知状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1") + @NotNull(message = "消息通知非法") + private DisEnableStatusEnum needNotify; + /** * 手机号码 */ diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/AccountDetailResp.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/AccountDetailResp.java new file mode 100644 index 00000000..74311fc9 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/AccountDetailResp.java @@ -0,0 +1,83 @@ +package com.zayac.admin.system.model.resp; + +import java.io.Serial; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; + +import top.continew.starter.extension.crud.model.resp.BaseDetailResp; + +/** + * 账号详情信息 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Data +@ExcelIgnoreUnannotated +@Schema(description = "账号详情信息") +public class AccountDetailResp extends BaseDetailResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 账号昵称 + */ + @Schema(description = "账号昵称") + @ExcelProperty(value = "账号昵称") + private String name; + + /** + * 账号 + */ + @Schema(description = "账号") + @ExcelProperty(value = "账号") + private String username; + + /** + * 密码 + */ + @Schema(description = "密码") + @ExcelProperty(value = "密码") + private String password; + + /** + * 账号类型(0:开云,1:华体会,2:九游,3:爱游戏) + */ + @Schema(description = "账号类型(0:开云,1:华体会,2:九游,3:爱游戏)") + @ExcelProperty(value = "账号类型(0:开云,1:华体会,2:九游,3:爱游戏)") + private Boolean type; + + /** + * headers + */ + @Schema(description = "headers") + @ExcelProperty(value = "headers") + private String headers; + + /** + * 状态(1:启用;2:禁用) + */ + @Schema(description = "状态(1:启用;2:禁用)") + @ExcelProperty(value = "状态(1:启用;2:禁用)") + private Integer status; + + /** + * 对应平台的url + */ + @Schema(description = "对应平台的url") + @ExcelProperty(value = "对应平台的url") + private String url; + + /** + * 用户ID + */ + @Schema(description = "用户ID") + @ExcelProperty(value = "用户ID") + private Long userId; +} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/AccountResp.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/AccountResp.java new file mode 100644 index 00000000..9974d150 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/AccountResp.java @@ -0,0 +1,69 @@ +package com.zayac.admin.system.model.resp; + +import java.io.Serial; +import java.time.LocalDateTime; + +import com.zayac.admin.common.enums.DisEnableStatusEnum; +import com.zayac.admin.system.enums.AccountTypeEnum; +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import top.continew.starter.extension.crud.model.resp.BaseResp; + +/** + * 账号信息 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Data +@Schema(description = "账号信息") +public class AccountResp extends BaseResp { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 账号昵称 + */ + @Schema(description = "账号昵称", example = "ky1线") + private String nickname; + + /** + * 账号 + */ + @Schema(description = "账号", example = "ky3tg107001") + private String username; + + /** + * 平台(0:开云,1:华体会,2:九游,3:爱游戏) + */ + @Schema(description = "平台(0:开云,1:华体会,2:九游,3:爱游戏)", type = "Integer", allowableValues = {"0", "1", "2", "3", "4"}, example = "1") + private AccountTypeEnum type; + + /** + * headers + */ + @Schema(description = "headers",type = "JSON") + private String headers; + + /** + * 状态(1:启用;2:禁用) + */ + @Schema(description = "状态(1:启用;2:禁用)") + private DisEnableStatusEnum status; + + /** + * 对应平台的url + */ + @Schema(description = "平台地址") + private String url; + + + /** + * 用户ID + */ + @Schema(description = "用户ID") + private Long userId; +} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserDetailResp.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserDetailResp.java index bb93c0ea..ed50ee34 100644 --- a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserDetailResp.java +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserDetailResp.java @@ -148,6 +148,43 @@ public class UserDetailResp extends BaseDetailResp { @ExcelProperty(value = "角色") private String roleNames; + /** + * telegram的bot_token + */ + @Schema(description = "telegram bot_token", example = "bot:xxxx") + private String botToken; + + /** + * 注册新增消息通知群组id + */ + @Schema(description = "注册消息通知群组", example = "bot:xxxx") + private Long groupId; + + /** + * 报数消息通知群组id + */ + @Schema(description = "报数消息通知群组", example = "bot:xxxx") + private Long countGroupId; + + /** + * 聊天消息id + */ + @Schema(description = "聊天消息", example = "bot:xxxx") + private Long chatId; + + /** + * telegram ID 列表 + */ + @Schema(description = "telegram ID 列表", example = "6054562838") + private List telegramIds; + + /** + * 是否需要消息通知 + */ + @Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1") + private DisEnableStatusEnum needNotify; + + @Override public Boolean getDisabled() { return this.getIsSystem() || Objects.equals(this.getId(), LoginHelper.getUserId()); diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserResp.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserResp.java index 05597819..0ba37530 100644 --- a/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserResp.java +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/model/resp/UserResp.java @@ -30,6 +30,7 @@ import top.continew.starter.security.mask.annotation.JsonMask; import top.continew.starter.security.mask.enums.MaskType; import java.io.Serial; +import java.util.List; import java.util.Objects; /** @@ -114,6 +115,43 @@ public class UserResp extends BaseDetailResp { @Schema(description = "所属部门", example = "测试部") private String deptName; + /** + * telegram的bot_token + */ + @Schema(description = "telegram bot_token", example = "bot:xxxx") + private String botToken; + + /** + * 注册新增消息通知群组 + */ + @Schema(description = "注册消息通知群组", example = "bot:xxxx") + private String groupId; + + /** + * 报数消息通知群组id + */ + @Schema(description = "报数消息通知群组", example = "bot:xxxx") + private String countGroupId; + + /** + * 聊天消息id + */ + @Schema(description = "聊天消息", example = "bot:xxxx") + private String chatId; + + /** + * 用户telegram + */ + @Schema(description = "telegram", example = "6054562838") + private List telegramIds; + + /** + * 是否需要发送消息通知 + */ + @Schema(description = "状态(1:启用;2:禁用)", type = "Integer", allowableValues = {"1", "2"}, example = "1") + private DisEnableStatusEnum needNotify; + + @Override public Boolean getDisabled() { return this.getIsSystem() || Objects.equals(this.getId(), LoginHelper.getUserId()); diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/service/AccountService.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/service/AccountService.java new file mode 100644 index 00000000..ed063a23 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/service/AccountService.java @@ -0,0 +1,16 @@ +package com.zayac.admin.system.service; + +import com.zayac.admin.system.model.query.AccountQuery; +import com.zayac.admin.system.model.req.AccountReq; +import com.zayac.admin.system.model.resp.AccountDetailResp; +import com.zayac.admin.system.model.resp.AccountResp; +import top.continew.starter.extension.crud.service.BaseService; + + +/** + * 账号业务接口 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +public interface AccountService extends BaseService {} \ No newline at end of file diff --git a/zayac-admin-system/src/main/java/com/zayac/admin/system/service/impl/AccountServiceImpl.java b/zayac-admin-system/src/main/java/com/zayac/admin/system/service/impl/AccountServiceImpl.java new file mode 100644 index 00000000..f478a4a0 --- /dev/null +++ b/zayac-admin-system/src/main/java/com/zayac/admin/system/service/impl/AccountServiceImpl.java @@ -0,0 +1,25 @@ +package com.zayac.admin.system.service.impl; + +import com.zayac.admin.system.mapper.AccountMapper; +import com.zayac.admin.system.model.entity.AccountDO; +import com.zayac.admin.system.model.query.AccountQuery; +import com.zayac.admin.system.model.req.AccountReq; +import com.zayac.admin.system.model.resp.AccountDetailResp; +import com.zayac.admin.system.model.resp.AccountResp; +import com.zayac.admin.system.service.AccountService; +import lombok.RequiredArgsConstructor; + +import org.springframework.stereotype.Service; + +import top.continew.starter.extension.crud.service.impl.BaseServiceImpl; + + +/** + * 账号业务实现 + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Service +@RequiredArgsConstructor +public class AccountServiceImpl extends BaseServiceImpl implements AccountService {} \ No newline at end of file diff --git a/zayac-admin-webapi/src/main/java/com/zayac/admin/webapi/system/AccountController.java b/zayac-admin-webapi/src/main/java/com/zayac/admin/webapi/system/AccountController.java new file mode 100644 index 00000000..65e95798 --- /dev/null +++ b/zayac-admin-webapi/src/main/java/com/zayac/admin/webapi/system/AccountController.java @@ -0,0 +1,27 @@ +package com.zayac.admin.webapi.system; + +import com.zayac.admin.system.model.query.AccountQuery; +import com.zayac.admin.system.model.req.AccountReq; +import com.zayac.admin.system.model.resp.AccountDetailResp; +import com.zayac.admin.system.model.resp.AccountResp; +import com.zayac.admin.system.service.AccountService; +import top.continew.starter.extension.crud.enums.Api; + +import io.swagger.v3.oas.annotations.tags.Tag; + +import org.springframework.web.bind.annotation.*; + +import top.continew.starter.extension.crud.annotation.CrudRequestMapping; +import top.continew.starter.extension.crud.controller.BaseController; + + +/** + * 账号管理 API + * + * @author zayac + * @since 2024/05/10 20:44 + */ +@Tag(name = "账号管理 API") +@RestController +@CrudRequestMapping(value = "/system/account", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT}) +public class AccountController extends BaseController {} \ No newline at end of file diff --git a/zayac-admin-webapi/src/main/resources/config/application.yml b/zayac-admin-webapi/src/main/resources/config/application.yml index 172971de..e4359abf 100644 --- a/zayac-admin-webapi/src/main/resources/config/application.yml +++ b/zayac-admin-webapi/src/main/resources/config/application.yml @@ -1,9 +1,9 @@ --- ### 项目配置 project: # 名称 - name: ContiNew Admin + name: Zayac Admin # 应用名称 - app-name: continew-admin + app-name: zayac-admin # 版本 version: 3.1.0-SNAPSHOT # 描述 @@ -12,8 +12,8 @@ project: base-package: com.zayac ## 作者信息配置 contact: - name: Charles7c - email: charles7c@126.com + name: zayac + email: stupidzayac@gmail.com url: https://blog.charles7c.top/about/me ## 许可协议信息配置 license: diff --git a/zayac-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql b/zayac-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql index 0172d2a8..d2698e15 100644 --- a/zayac-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql +++ b/zayac-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql @@ -82,6 +82,12 @@ CREATE TABLE IF NOT EXISTS `sys_user` ( `is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据', `pwd_reset_time` datetime DEFAULT NULL COMMENT '最后一次修改密码时间', `dept_id` bigint(20) NOT NULL COMMENT '部门ID', + `need_notify` tinyint(1) UNSIGNED NOT NULL DEFAULT 2 COMMENT '是否启用消息通知(1:启用;2:禁用)', + `bot_token` varchar(100) DEFAULT NULL COMMENT 'telegram机器人token', + `telegram_ids` varchar(255) DEFAULT NULL COMMENT '以逗号分割', + `group_id` varchar(100) DEFAULT NULL COMMENT '注册新增的目标群组id', + `count_group_id` varchar(100) DEFAULT NULL COMMENT '定时报数的目标群组id', + `chat_id` varchar(100) DEFAULT NULL COMMENT '消息发送的个人id', `create_user` bigint(20) DEFAULT NULL COMMENT '创建人', `create_time` datetime NOT NULL COMMENT '创建时间', `update_user` bigint(20) DEFAULT NULL COMMENT '修改人',