diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/controller/SysNoticeController.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/controller/SysNoticeController.java index e522ed5ef..44f4a897d 100644 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/controller/SysNoticeController.java +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/controller/SysNoticeController.java @@ -1,38 +1,14 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ package cn.stylefeng.roses.kernel.sys.modular.notice.controller; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; -import cn.stylefeng.roses.kernel.rule.annotation.ApiLog; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice; -import cn.stylefeng.roses.kernel.sys.modular.notice.pojo.SysNoticeRequest; +import cn.stylefeng.roses.kernel.sys.modular.notice.pojo.request.SysNoticeRequest; import cn.stylefeng.roses.kernel.sys.modular.notice.service.SysNoticeService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; @@ -44,8 +20,8 @@ import java.util.List; /** * 通知管理控制器 * - * @author liuhanqing - * @since 2021/1/8 19:47 + * @author fengshuonan + * @since 2024/01/12 16:06 */ @RestController @ApiResource(name = "通知管理") @@ -57,73 +33,82 @@ public class SysNoticeController { /** * 添加通知管理 * - * @author liuhanqing - * @since 2021/1/9 14:44 + * @author fengshuonan + * @since 2024/01/12 16:06 */ @PostResource(name = "添加通知管理", path = "/sysNotice/add") - @ApiLog - public ResponseData add(@RequestBody @Validated(SysNoticeRequest.add.class) SysNoticeRequest sysNoticeParam) { - sysNoticeService.add(sysNoticeParam); - return new SuccessResponseData<>(); - } - - /** - * 编辑通知管理 - * - * @author liuhanqing - * @since 2021/1/9 14:54 - */ - @PostResource(name = "编辑通知管理", path = "/sysNotice/edit") - @ApiLog - public ResponseData edit(@RequestBody @Validated(SysNoticeRequest.edit.class) SysNoticeRequest sysNoticeParam) { - sysNoticeService.edit(sysNoticeParam); + public ResponseData add(@RequestBody @Validated(SysNoticeRequest.add.class) SysNoticeRequest sysNoticeRequest) { + sysNoticeService.add(sysNoticeRequest); return new SuccessResponseData<>(); } /** * 删除通知管理 * - * @author liuhanqing - * @since 2021/1/9 14:54 + * @author fengshuonan + * @since 2024/01/12 16:06 */ @PostResource(name = "删除通知管理", path = "/sysNotice/delete") - @ApiLog - public ResponseData delete(@RequestBody @Validated(SysNoticeRequest.delete.class) SysNoticeRequest sysNoticeParam) { - sysNoticeService.del(sysNoticeParam); + public ResponseData delete(@RequestBody @Validated(SysNoticeRequest.delete.class) SysNoticeRequest sysNoticeRequest) { + sysNoticeService.del(sysNoticeRequest); return new SuccessResponseData<>(); } /** - * 查看通知管理 + * 批量删除通知管理 * - * @author liuhanqing - * @since 2021/1/9 9:49 + * @author fengshuonan + * @since 2024/01/12 16:06 */ - @GetResource(name = "查看通知管理", path = "/sysNotice/detail") - public ResponseData detail(@Validated(SysNoticeRequest.detail.class) SysNoticeRequest sysNoticeParam) { - return new SuccessResponseData<>(sysNoticeService.detail(sysNoticeParam)); + @PostResource(name = "批量删除通知管理", path = "/sysNotice/batchDelete") + public ResponseData batchDelete(@RequestBody @Validated(BaseRequest.batchDelete.class) SysNoticeRequest sysNoticeRequest) { + sysNoticeService.batchDelete(sysNoticeRequest); + return new SuccessResponseData<>(); } /** - * 查询通知管理 + * 编辑通知管理 * - * @author liuhanqing - * @since 2021/1/9 21:23 + * @author fengshuonan + * @since 2024/01/12 16:06 */ - @GetResource(name = "查询通知管理", path = "/sysNotice/page") - public ResponseData> page(SysNoticeRequest sysNoticeParam) { - return new SuccessResponseData<>(sysNoticeService.findPage(sysNoticeParam)); + @PostResource(name = "编辑通知管理", path = "/sysNotice/edit") + public ResponseData edit(@RequestBody @Validated(SysNoticeRequest.edit.class) SysNoticeRequest sysNoticeRequest) { + sysNoticeService.edit(sysNoticeRequest); + return new SuccessResponseData<>(); } /** - * 通知管理列表 + * 查看通知管理详情 * - * @author liuhanqing - * @since 2021/1/9 14:55 + * @author fengshuonan + * @since 2024/01/12 16:06 */ - @GetResource(name = "通知管理列表", path = "/sysNotice/list") - public ResponseData> list(SysNoticeRequest sysNoticeParam) { - return new SuccessResponseData<>(sysNoticeService.findList(sysNoticeParam)); + @GetResource(name = "查看通知管理详情", path = "/sysNotice/detail") + public ResponseData detail(@Validated(SysNoticeRequest.detail.class) SysNoticeRequest sysNoticeRequest) { + return new SuccessResponseData<>(sysNoticeService.detail(sysNoticeRequest)); + } + + /** + * 获取通知管理列表 + * + * @author fengshuonan + * @since 2024/01/12 16:06 + */ + @GetResource(name = "获取通知管理列表", path = "/sysNotice/list") + public ResponseData> list(SysNoticeRequest sysNoticeRequest) { + return new SuccessResponseData<>(sysNoticeService.findList(sysNoticeRequest)); + } + + /** + * 获取通知管理列表(带分页) + * + * @author fengshuonan + * @since 2024/01/12 16:06 + */ + @GetResource(name = "获取通知管理列表(带分页)", path = "/sysNotice/page") + public ResponseData> page(SysNoticeRequest sysNoticeRequest) { + return new SuccessResponseData<>(sysNoticeService.findPage(sysNoticeRequest)); } } diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/entity/SysNotice.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/entity/SysNotice.java index 1d3dc97e2..9d212e51a 100644 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/entity/SysNotice.java +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/entity/SysNotice.java @@ -1,56 +1,33 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ package cn.stylefeng.roses.kernel.sys.modular.notice.entity; import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; -import cn.stylefeng.roses.kernel.rule.annotation.DictCodeFieldFormat; -import cn.stylefeng.roses.kernel.rule.annotation.SimpleFieldFormat; -import cn.stylefeng.roses.kernel.sys.api.format.UserNameFormatProcess; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; +import java.util.Map; /** - * 通知表 + * 通知管理实例类 * - * @author liuhanqing - * @since 2021/1/8 22:45 + * @author fengshuonan + * @since 2024/01/12 16:06 */ +@TableName("sys_notice") @Data @EqualsAndHashCode(callSuper = true) -@TableName("sys_notice") public class SysNotice extends BaseEntity { /** - * 通知id + * 主键 */ - @TableId("notice_id") - @ChineseDescription("通知id") + @TableId(value = "notice_id", type = IdType.ASSIGN_ID) + @ChineseDescription("主键") private Long noticeId; /** @@ -67,28 +44,6 @@ public class SysNotice extends BaseEntity { @ChineseDescription("通知摘要") private String noticeSummary; - /** - * 通知优先级 - */ - @TableField(value = "priority_level") - @ChineseDescription("通知优先级") - @DictCodeFieldFormat(dictTypeCode = "priority_level") - private String priorityLevel; - - /** - * 通知开始时间 - */ - @TableField(value = "notice_begin_time") - @ChineseDescription("通知开始时间") - private Date noticeBeginTime; - - /** - * 通知结束时间 - */ - @TableField(value = "notice_end_time") - @ChineseDescription("通知结束时间") - private Date noticeEndTime; - /** * 通知内容 */ @@ -97,24 +52,66 @@ public class SysNotice extends BaseEntity { private String noticeContent; /** - * 通知范围 + * 优先级,来自字典:high-高优先级,middle-中,low-低 */ - @TableField("notice_scope") - @ChineseDescription("通知范围") - private String noticeScope; + @TableField("priority_level") + @ChineseDescription("优先级,来自字典:high-高优先级,middle-中,low-低") + private String priorityLevel; /** - * 是否删除:Y-已删除,N-未删除 + * 开始时间 */ - @TableField(value = "del_flag", fill = FieldFill.INSERT) - @ChineseDescription("是否删除:Y-已删除,N-未删除") - @TableLogic + @TableField("notice_begin_time") + @ChineseDescription("开始时间") + private Date noticeBeginTime; + + /** + * 结束时间 + */ + @TableField("notice_end_time") + @ChineseDescription("结束时间") + private Date noticeEndTime; + + /** + * 通知范围,存用户id集合 + */ + @TableField("notice_user_scope") + @ChineseDescription("通知范围,存用户id集合") + private Map noticeUserScope; + + /** + * 是否发布:1-已发布,2-未发布 + */ + @TableField("publish_status") + @ChineseDescription("是否发布:1-已发布,2-未发布") + private Integer publishStatus; + + /** + * 乐观锁 + */ + @TableField("version_flag") + @ChineseDescription("乐观锁") + private Long versionFlag; + + /** + * 拓展字段 + */ + @TableField("expand_field") + @ChineseDescription("拓展字段") + private Map expandField; + + /** + * 是否删除:Y-被删除,N-未删除 + */ + @TableField("del_flag") + @ChineseDescription("是否删除:Y-被删除,N-未删除") private String delFlag; - @Override - @SimpleFieldFormat(processClass = UserNameFormatProcess.class) - public Long getCreateUser() { - return super.getCreateUser(); - } + /** + * 租户号 + */ + @TableField("tenant_id") + @ChineseDescription("租户号") + private Long tenantId; } diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/enums/SysNoticeExceptionEnum.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/enums/SysNoticeExceptionEnum.java new file mode 100644 index 000000000..7eb7d6c5b --- /dev/null +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/enums/SysNoticeExceptionEnum.java @@ -0,0 +1,36 @@ +package cn.stylefeng.roses.kernel.sys.modular.notice.enums; + +import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; +import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum; +import lombok.Getter; + +/** + * 通知管理异常相关枚举 + * + * @author fengshuonan + * @since 2024/01/12 16:06 + */ +@Getter +public enum SysNoticeExceptionEnum implements AbstractExceptionEnum { + + /** + * 查询结果不存在 + */ + SYS_NOTICE_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"); + + /** + * 错误编码 + */ + private final String errorCode; + + /** + * 提示用户信息 + */ + private final String userTip; + + SysNoticeExceptionEnum(String errorCode, String userTip) { + this.errorCode = errorCode; + this.userTip = userTip; + } + +} diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/exceptions/NoticeExceptionEnum.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/exceptions/NoticeExceptionEnum.java deleted file mode 100644 index 5b687557f..000000000 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/exceptions/NoticeExceptionEnum.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ -package cn.stylefeng.roses.kernel.sys.modular.notice.exceptions; - -import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; -import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum; -import cn.stylefeng.roses.kernel.sys.api.constants.SysConstants; -import lombok.Getter; - -/** - * 通知管理相关异常枚举 - * - * @author liuhanqing - * @since 2021/1/9 16:11 - */ -@Getter -public enum NoticeExceptionEnum implements AbstractExceptionEnum { - - /** - * 通知不存在 - */ - NOTICE_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SysConstants.SYS_EXCEPTION_STEP_CODE + "41", "通知不存在,id为:{}"), - - /** - * 通知范围不允许修改 - */ - NOTICE_SCOPE_NOT_EDIT(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + SysConstants.SYS_EXCEPTION_STEP_CODE + "42", "通知范围不允许修改"); - - /** - * 错误编码 - */ - private final String errorCode; - - /** - * 提示用户信息 - */ - private final String userTip; - - NoticeExceptionEnum(String errorCode, String userTip) { - this.errorCode = errorCode; - this.userTip = userTip; - } - -} diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/mapper/SysNoticeMapper.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/mapper/SysNoticeMapper.java index 8803a480c..d244ec2ec 100644 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/mapper/SysNoticeMapper.java +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/mapper/SysNoticeMapper.java @@ -1,37 +1,13 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ package cn.stylefeng.roses.kernel.sys.modular.notice.mapper; import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** - * 通知表 Mapper 接口 + * 通知管理 Mapper 接口 * - * @author liuhanqing - * @since 2021/1/8 22:45 + * @author fengshuonan + * @since 2024/01/12 16:06 */ public interface SysNoticeMapper extends BaseMapper { diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/SysNoticeRequest.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/SysNoticeRequest.java deleted file mode 100644 index 16f7da20e..000000000 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/SysNoticeRequest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ -package cn.stylefeng.roses.kernel.sys.modular.notice.pojo; - -import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; -import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.util.Date; - -/** - * 系统通知参数 - * - * @author liuhanqing - * @since 2021/1/8 21:53 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class SysNoticeRequest extends BaseRequest { - - /** - * 通知id - */ - @NotNull(message = "noticeId不能为空", groups = {edit.class, delete.class, detail.class}) - @ChineseDescription("通知id") - private Long noticeId; - - /** - * 通知标题 - */ - @NotBlank(message = "通知标题不能为空", groups = {add.class, edit.class}) - @ChineseDescription("通知标题") - private String noticeTitle; - - /** - * 通知摘要 - */ - @ChineseDescription("通知摘要") - private String noticeSummary; - - /** - * 通知优先级 - */ - @ChineseDescription("通知优先级") - private String priorityLevel; - - - /** - * 通知开始时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ChineseDescription("通知开始时间") - private Date noticeBeginTime; - - - /** - * 通知结束时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ChineseDescription("通知结束时间") - private Date noticeEndTime; - - /** - * 通知内容 - */ - @ChineseDescription("通知内容") - @NotBlank(message = "通知内容不能为空", groups = {add.class, edit.class}) - private String noticeContent; - - /** - * 通知范围 - */ - @ChineseDescription("通知范围") - private String noticeScope; - -} diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/request/SysNoticeRequest.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/request/SysNoticeRequest.java new file mode 100644 index 000000000..e62cb973f --- /dev/null +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/request/SysNoticeRequest.java @@ -0,0 +1,113 @@ +package cn.stylefeng.roses.kernel.sys.modular.notice.pojo.request; + +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.Map; + +/** + * 通知管理封装类 + * + * @author fengshuonan + * @since 2024/01/12 16:06 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysNoticeRequest extends BaseRequest { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = {edit.class, delete.class}) + @ChineseDescription("主键") + private Long noticeId; + + /** + * 通知标题 + */ + @NotBlank(message = "通知标题不能为空", groups = {add.class, edit.class}) + @ChineseDescription("通知标题") + private String noticeTitle; + + /** + * 通知摘要 + */ + @ChineseDescription("通知摘要") + private String noticeSummary; + + /** + * 通知内容 + */ + @ChineseDescription("通知内容") + private String noticeContent; + + /** + * 优先级,来自字典:high-高优先级,middle-中,low-低 + */ + @NotBlank(message = "优先级,来自字典:high-高优先级,middle-中,low-低不能为空", groups = {add.class, edit.class}) + @ChineseDescription("优先级,来自字典:high-高优先级,middle-中,low-低") + private String priorityLevel; + + /** + * 开始时间 + */ + @ChineseDescription("开始时间") + private String noticeBeginTime; + + /** + * 结束时间 + */ + @ChineseDescription("结束时间") + private String noticeEndTime; + + /** + * 通知范围,存用户id集合 + */ + @ChineseDescription("通知范围,存用户id集合") + private Map noticeUserScope; + + /** + * 是否发布:1-已发布,2-未发布 + */ + @ChineseDescription("是否发布:1-已发布,2-未发布") + private Integer publishStatus; + + /** + * 乐观锁 + */ + @ChineseDescription("乐观锁") + private Long versionFlag; + + /** + * 拓展字段 + */ + @ChineseDescription("拓展字段") + private Map expandField; + + /** + * 是否删除:Y-被删除,N-未删除 + */ + @NotBlank(message = "是否删除:Y-被删除,N-未删除不能为空", groups = {add.class, edit.class}) + @ChineseDescription("是否删除:Y-被删除,N-未删除") + private String delFlag; + + /** + * 租户号 + */ + @ChineseDescription("租户号") + private Long tenantId; + + + /** + * 批量删除用的id集合 + */ + @NotNull(message = "批量删除id集合不能为空", groups = batchDelete.class) + @ChineseDescription("批量删除用的id集合") + private List batchDeleteIdList; + +} diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/response/SysNoticeVo.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/response/SysNoticeVo.java new file mode 100644 index 000000000..d17f188cf --- /dev/null +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/pojo/response/SysNoticeVo.java @@ -0,0 +1,17 @@ +package cn.stylefeng.roses.kernel.sys.modular.notice.pojo.response; + +import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 通知管理返回值封装 + * + * @author fengshuonan + * @since 2024/01/12 16:06 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysNoticeVo extends SysNotice { + +} diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/SysNoticeService.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/SysNoticeService.java index c6a7e7d60..c9fa3709f 100644 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/SysNoticeService.java +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/SysNoticeService.java @@ -1,99 +1,83 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ package cn.stylefeng.roses.kernel.sys.modular.notice.service; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice; -import cn.stylefeng.roses.kernel.sys.modular.notice.pojo.SysNoticeRequest; +import cn.stylefeng.roses.kernel.sys.modular.notice.pojo.request.SysNoticeRequest; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** - * 通知服务类 + * 通知管理服务类 * - * @author liuhanqing - * @since 2021/1/8 19:56 + * @author fengshuonan + * @since 2024/01/12 16:06 */ public interface SysNoticeService extends IService { /** - * 添加系统应用 + * 新增通知管理 * - * @param sysNoticeRequest 添加参数 - * @author liuhanqing - * @since 2021/1/9 14:57 + * @param sysNoticeRequest 请求参数 + * @author fengshuonan + * @since 2024/01/12 16:06 */ void add(SysNoticeRequest sysNoticeRequest); /** - * 删除系统应用 + * 删除通知管理 * - * @param sysNoticeRequest 删除参数 - * @author liuhanqing - * @since 2021/1/9 14:57 + * @param sysNoticeRequest 请求参数 + * @author fengshuonan + * @since 2024/01/12 16:06 */ void del(SysNoticeRequest sysNoticeRequest); /** - * 编辑系统应用 + * 批量删除通知管理 * - * @param sysNoticeRequest 编辑参数 - * @author liuhanqing - * @since 2021/1/9 14:58 + * @param sysNoticeRequest 请求参数 + * @author fengshuonan + * @since 2024/01/12 16:06 + */ + void batchDelete(SysNoticeRequest sysNoticeRequest); + + /** + * 编辑通知管理 + * + * @param sysNoticeRequest 请求参数 + * @author fengshuonan + * @since 2024/01/12 16:06 */ void edit(SysNoticeRequest sysNoticeRequest); /** - * 查看系统应用 + * 查询详情通知管理 * - * @param sysNoticeRequest 查看参数 - * @return 系统应用 - * @author liuhanqing - * @since 2021/1/9 14:56 + * @param sysNoticeRequest 请求参数 + * @author fengshuonan + * @since 2024/01/12 16:06 */ SysNotice detail(SysNoticeRequest sysNoticeRequest); /** - * 查询系统应用 + * 获取通知管理列表 * - * @param sysNoticeRequest 查询参数 - * @return 查询分页结果 - * @author liuhanqing - * @since 2021/1/9 14:56 - */ - PageResult findPage(SysNoticeRequest sysNoticeRequest); - - /** - * 系统应用列表 - * - * @param sysNoticeRequest 查询参数 - * @return 系统应用列表 - * @author liuhanqing - * @since 2021/1/9 14:56 + * @param sysNoticeRequest 请求参数 + * @return List 返回结果 + * @author fengshuonan + * @since 2024/01/12 16:06 */ List findList(SysNoticeRequest sysNoticeRequest); + /** + * 获取通知管理分页列表 + * + * @param sysNoticeRequest 请求参数 + * @return PageResult 返回结果 + * @author fengshuonan + * @since 2024/01/12 16:06 + */ + PageResult findPage(SysNoticeRequest sysNoticeRequest); + } diff --git a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/impl/SysNoticeServiceImpl.java b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/impl/SysNoticeServiceImpl.java index d810290e4..5f0ad581e 100644 --- a/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/impl/SysNoticeServiceImpl.java +++ b/kernel-s-system/system-business-portal/src/main/java/cn/stylefeng/roses/kernel/sys/modular/notice/service/impl/SysNoticeServiceImpl.java @@ -1,218 +1,130 @@ -/* - * Copyright [2020-2030] [https://www.stylefeng.cn] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Guns源码头部的版权声明。 - * 3.请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns - * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns - * 6.若您的项目无法满足以上几点,可申请商业授权 - */ package cn.stylefeng.roses.kernel.sys.modular.notice.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; -import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; -import cn.stylefeng.roses.kernel.message.api.MessageApi; -import cn.stylefeng.roses.kernel.message.api.enums.MessageBusinessTypeEnum; -import cn.stylefeng.roses.kernel.message.api.pojo.request.MessageSendRequest; -import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; -import cn.stylefeng.roses.kernel.sys.api.exception.SysException; +import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice; -import cn.stylefeng.roses.kernel.sys.modular.notice.exceptions.NoticeExceptionEnum; +import cn.stylefeng.roses.kernel.sys.modular.notice.enums.SysNoticeExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.notice.mapper.SysNoticeMapper; -import cn.stylefeng.roses.kernel.sys.modular.notice.pojo.SysNoticeRequest; +import cn.stylefeng.roses.kernel.sys.modular.notice.pojo.request.SysNoticeRequest; import cn.stylefeng.roses.kernel.sys.modular.notice.service.SysNoticeService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.util.Date; import java.util.List; +import java.util.Map; /** - * 通知表 服务实现类 + * 通知管理业务实现层 * - * @author liuhanqing - * @since 2021/1/8 22:45 + * @author fengshuonan + * @since 2024/01/12 16:06 */ @Service public class SysNoticeServiceImpl extends ServiceImpl implements SysNoticeService { - private static final String NOTICE_SCOPE_ALL = "all"; - - @Resource - private MessageApi messageApi; - - @Override + @Override public void add(SysNoticeRequest sysNoticeRequest) { SysNotice sysNotice = new SysNotice(); - - // 拷贝属性 BeanUtil.copyProperties(sysNoticeRequest, sysNotice); - - // 没传递通知范围,则默认发给所有人 - if (StrUtil.isBlank(sysNotice.getNoticeScope())) { - sysNotice.setNoticeScope(NOTICE_SCOPE_ALL); - } - - // 如果保存成功调用发送消息 - if (this.save(sysNotice)) { - sendMessage(sysNotice); - } + this.save(sysNotice); } @Override public void del(SysNoticeRequest sysNoticeRequest) { - SysNotice sysNotice = this.querySysNoticeById(sysNoticeRequest); - // 逻辑删除 - sysNotice.setDelFlag(YesOrNotEnum.Y.getCode()); - this.updateById(sysNotice); + SysNotice sysNotice = this.querySysNotice(sysNoticeRequest); + this.removeById(sysNotice.getNoticeId()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchDelete(SysNoticeRequest sysNoticeRequest) { + this.removeByIds(sysNoticeRequest.getBatchDeleteIdList()); } @Override public void edit(SysNoticeRequest sysNoticeRequest) { - SysNotice sysNotice = this.querySysNoticeById(sysNoticeRequest); - - // 通知范围不允许修改, 如果通知范围不同抛出异常 - if (!sysNoticeRequest.getNoticeScope().equals(sysNotice.getNoticeScope())) { - throw new SysException(NoticeExceptionEnum.NOTICE_SCOPE_NOT_EDIT); - } - - // 获取通知范围,如果为空则设置为all - String noticeScope = sysNotice.getNoticeScope(); - if (StrUtil.isBlank(noticeScope)) { - sysNoticeRequest.setNoticeScope(NOTICE_SCOPE_ALL); - } - - // 更新属性 + SysNotice sysNotice = this.querySysNotice(sysNoticeRequest); BeanUtil.copyProperties(sysNoticeRequest, sysNotice); - - // 修改成功后发送信息 - if (this.updateById(sysNotice)) { - sendMessage(sysNotice); - } + this.updateById(sysNotice); } @Override public SysNotice detail(SysNoticeRequest sysNoticeRequest) { - LambdaQueryWrapper queryWrapper = this.createWrapper(sysNoticeRequest); - return this.getOne(queryWrapper, false); + return this.querySysNotice(sysNoticeRequest); } @Override public PageResult findPage(SysNoticeRequest sysNoticeRequest) { LambdaQueryWrapper wrapper = createWrapper(sysNoticeRequest); - Page page = this.page(PageFactory.defaultPage(), wrapper); - return PageResultFactory.createPageResult(page); + Page pageList = this.page(PageFactory.defaultPage(), wrapper); + return PageResultFactory.createPageResult(pageList); } @Override public List findList(SysNoticeRequest sysNoticeRequest) { - LambdaQueryWrapper wrapper = createWrapper(sysNoticeRequest); + LambdaQueryWrapper wrapper = this.createWrapper(sysNoticeRequest); return this.list(wrapper); } /** - * 获取通知管理 + * 获取信息 * - * @author liuhanqing - * @since 2021/1/9 16:56 + * @author fengshuonan + * @since 2024/01/12 16:06 */ - private SysNotice querySysNoticeById(SysNoticeRequest sysNoticeRequest) { + private SysNotice querySysNotice(SysNoticeRequest sysNoticeRequest) { SysNotice sysNotice = this.getById(sysNoticeRequest.getNoticeId()); - if (ObjectUtil.isNull(sysNotice)) { - throw new SysException(NoticeExceptionEnum.NOTICE_NOT_EXIST, sysNoticeRequest.getNoticeId()); + if (ObjectUtil.isEmpty(sysNotice)) { + throw new ServiceException(SysNoticeExceptionEnum.SYS_NOTICE_NOT_EXISTED); } return sysNotice; } /** - * 创建wrapper + * 创建查询wrapper * - * @author liuhanqing - * @since 2020/1/9 16:16 + * @author fengshuonan + * @since 2024/01/12 16:06 */ private LambdaQueryWrapper createWrapper(SysNoticeRequest sysNoticeRequest) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - // 按时间倒序排列 - queryWrapper.orderByDesc(BaseEntity::getCreateTime); - - // 查询未删除状态的 - queryWrapper.eq(SysNotice::getDelFlag, YesOrNotEnum.N.getCode()); - - if (ObjectUtil.isEmpty(sysNoticeRequest)) { - return queryWrapper; - } - - // 通知id Long noticeId = sysNoticeRequest.getNoticeId(); - - // 通知标题 String noticeTitle = sysNoticeRequest.getNoticeTitle(); + String noticeSummary = sysNoticeRequest.getNoticeSummary(); + String noticeContent = sysNoticeRequest.getNoticeContent(); + String priorityLevel = sysNoticeRequest.getPriorityLevel(); + String noticeBeginTime = sysNoticeRequest.getNoticeBeginTime(); + String noticeEndTime = sysNoticeRequest.getNoticeEndTime(); + Map noticeUserScope = sysNoticeRequest.getNoticeUserScope(); + Integer publishStatus = sysNoticeRequest.getPublishStatus(); + Long versionFlag = sysNoticeRequest.getVersionFlag(); + Map expandField = sysNoticeRequest.getExpandField(); + String delFlag = sysNoticeRequest.getDelFlag(); + Long tenantId = sysNoticeRequest.getTenantId(); - // 拼接sql 条件 + queryWrapper.eq(ObjectUtil.isNotNull(noticeId), SysNotice::getNoticeId, noticeId); queryWrapper.like(ObjectUtil.isNotEmpty(noticeTitle), SysNotice::getNoticeTitle, noticeTitle); - queryWrapper.eq(ObjectUtil.isNotEmpty(noticeId), SysNotice::getNoticeId, noticeId); + queryWrapper.like(ObjectUtil.isNotEmpty(noticeSummary), SysNotice::getNoticeSummary, noticeSummary); + queryWrapper.like(ObjectUtil.isNotEmpty(noticeContent), SysNotice::getNoticeContent, noticeContent); + queryWrapper.like(ObjectUtil.isNotEmpty(priorityLevel), SysNotice::getPriorityLevel, priorityLevel); + queryWrapper.eq(ObjectUtil.isNotNull(noticeBeginTime), SysNotice::getNoticeBeginTime, noticeBeginTime); + queryWrapper.eq(ObjectUtil.isNotNull(noticeEndTime), SysNotice::getNoticeEndTime, noticeEndTime); + queryWrapper.eq(ObjectUtil.isNotNull(noticeUserScope), SysNotice::getNoticeUserScope, noticeUserScope); + queryWrapper.eq(ObjectUtil.isNotNull(publishStatus), SysNotice::getPublishStatus, publishStatus); + queryWrapper.eq(ObjectUtil.isNotNull(versionFlag), SysNotice::getVersionFlag, versionFlag); + queryWrapper.eq(ObjectUtil.isNotNull(expandField), SysNotice::getExpandField, expandField); + queryWrapper.like(ObjectUtil.isNotEmpty(delFlag), SysNotice::getDelFlag, delFlag); + queryWrapper.eq(ObjectUtil.isNotNull(tenantId), SysNotice::getTenantId, tenantId); return queryWrapper; } - /** - * 发送消息 - * - * @author fengshuonan - * @since 2021/2/8 19:30 - */ - private void sendMessage(SysNotice sysNotice) { - MessageSendRequest message = new MessageSendRequest(); - - // 消息标题 - message.setMessageTitle(sysNotice.getNoticeTitle()); - - // 消息内容 - message.setMessageContent(sysNotice.getNoticeContent()); - - // 消息优先级 - message.setPriorityLevel(sysNotice.getPriorityLevel()); - - // 消息发送范围 - message.setReceiveUserIds(sysNotice.getNoticeScope()); - - // 消息业务类型 - message.setBusinessType(MessageBusinessTypeEnum.SYS_NOTICE.getCode()); - message.setBusinessTypeValue(MessageBusinessTypeEnum.SYS_NOTICE.getName()); - - message.setBusinessId(sysNotice.getNoticeId()); - message.setMessageSendTime(new Date()); - - try { - messageApi.sendMessage(message); - } catch (Exception exception) { - // 发送失败打印异常 - log.error("发送消息失败:", exception); - } - } - }