mirror of https://gitee.com/stylefeng/roses
【8.0.5】【notice】重新提交通知代码
parent
f51498594e
commit
db233bff8a
|
@ -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;
|
package cn.stylefeng.roses.kernel.sys.modular.notice.controller;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
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.ResponseData;
|
||||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
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.ApiResource;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
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.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 cn.stylefeng.roses.kernel.sys.modular.notice.service.SysNoticeService;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
@ -44,8 +20,8 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
* 通知管理控制器
|
* 通知管理控制器
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/8 19:47
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@ApiResource(name = "通知管理")
|
@ApiResource(name = "通知管理")
|
||||||
|
@ -57,73 +33,82 @@ public class SysNoticeController {
|
||||||
/**
|
/**
|
||||||
* 添加通知管理
|
* 添加通知管理
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:44
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@PostResource(name = "添加通知管理", path = "/sysNotice/add")
|
@PostResource(name = "添加通知管理", path = "/sysNotice/add")
|
||||||
@ApiLog
|
public ResponseData<SysNotice> add(@RequestBody @Validated(SysNoticeRequest.add.class) SysNoticeRequest sysNoticeRequest) {
|
||||||
public ResponseData<?> add(@RequestBody @Validated(SysNoticeRequest.add.class) SysNoticeRequest sysNoticeParam) {
|
sysNoticeService.add(sysNoticeRequest);
|
||||||
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);
|
|
||||||
return new SuccessResponseData<>();
|
return new SuccessResponseData<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除通知管理
|
* 删除通知管理
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:54
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@PostResource(name = "删除通知管理", path = "/sysNotice/delete")
|
@PostResource(name = "删除通知管理", path = "/sysNotice/delete")
|
||||||
@ApiLog
|
public ResponseData<?> delete(@RequestBody @Validated(SysNoticeRequest.delete.class) SysNoticeRequest sysNoticeRequest) {
|
||||||
public ResponseData<?> delete(@RequestBody @Validated(SysNoticeRequest.delete.class) SysNoticeRequest sysNoticeParam) {
|
sysNoticeService.del(sysNoticeRequest);
|
||||||
sysNoticeService.del(sysNoticeParam);
|
|
||||||
return new SuccessResponseData<>();
|
return new SuccessResponseData<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看通知管理
|
* 批量删除通知管理
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 9:49
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@GetResource(name = "查看通知管理", path = "/sysNotice/detail")
|
@PostResource(name = "批量删除通知管理", path = "/sysNotice/batchDelete")
|
||||||
public ResponseData<SysNotice> detail(@Validated(SysNoticeRequest.detail.class) SysNoticeRequest sysNoticeParam) {
|
public ResponseData<?> batchDelete(@RequestBody @Validated(BaseRequest.batchDelete.class) SysNoticeRequest sysNoticeRequest) {
|
||||||
return new SuccessResponseData<>(sysNoticeService.detail(sysNoticeParam));
|
sysNoticeService.batchDelete(sysNoticeRequest);
|
||||||
|
return new SuccessResponseData<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询通知管理
|
* 编辑通知管理
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 21:23
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@GetResource(name = "查询通知管理", path = "/sysNotice/page")
|
@PostResource(name = "编辑通知管理", path = "/sysNotice/edit")
|
||||||
public ResponseData<PageResult<SysNotice>> page(SysNoticeRequest sysNoticeParam) {
|
public ResponseData<?> edit(@RequestBody @Validated(SysNoticeRequest.edit.class) SysNoticeRequest sysNoticeRequest) {
|
||||||
return new SuccessResponseData<>(sysNoticeService.findPage(sysNoticeParam));
|
sysNoticeService.edit(sysNoticeRequest);
|
||||||
|
return new SuccessResponseData<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知管理列表
|
* 查看通知管理详情
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:55
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@GetResource(name = "通知管理列表", path = "/sysNotice/list")
|
@GetResource(name = "查看通知管理详情", path = "/sysNotice/detail")
|
||||||
public ResponseData<List<SysNotice>> list(SysNoticeRequest sysNoticeParam) {
|
public ResponseData<SysNotice> detail(@Validated(SysNoticeRequest.detail.class) SysNoticeRequest sysNoticeRequest) {
|
||||||
return new SuccessResponseData<>(sysNoticeService.findList(sysNoticeParam));
|
return new SuccessResponseData<>(sysNoticeService.detail(sysNoticeRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取通知管理列表
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2024/01/12 16:06
|
||||||
|
*/
|
||||||
|
@GetResource(name = "获取通知管理列表", path = "/sysNotice/list")
|
||||||
|
public ResponseData<List<SysNotice>> list(SysNoticeRequest sysNoticeRequest) {
|
||||||
|
return new SuccessResponseData<>(sysNoticeService.findList(sysNoticeRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取通知管理列表(带分页)
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2024/01/12 16:06
|
||||||
|
*/
|
||||||
|
@GetResource(name = "获取通知管理列表(带分页)", path = "/sysNotice/page")
|
||||||
|
public ResponseData<PageResult<SysNotice>> page(SysNoticeRequest sysNoticeRequest) {
|
||||||
|
return new SuccessResponseData<>(sysNoticeService.findPage(sysNoticeRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
package cn.stylefeng.roses.kernel.sys.modular.notice.entity;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
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.ChineseDescription;
|
||||||
import cn.stylefeng.roses.kernel.rule.annotation.DictCodeFieldFormat;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import cn.stylefeng.roses.kernel.rule.annotation.SimpleFieldFormat;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import cn.stylefeng.roses.kernel.sys.api.format.UserNameFormatProcess;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知表
|
* 通知管理实例类
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/8 22:45
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
|
@TableName("sys_notice")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@TableName("sys_notice")
|
|
||||||
public class SysNotice extends BaseEntity {
|
public class SysNotice extends BaseEntity {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知id
|
* 主键
|
||||||
*/
|
*/
|
||||||
@TableId("notice_id")
|
@TableId(value = "notice_id", type = IdType.ASSIGN_ID)
|
||||||
@ChineseDescription("通知id")
|
@ChineseDescription("主键")
|
||||||
private Long noticeId;
|
private Long noticeId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,28 +44,6 @@ public class SysNotice extends BaseEntity {
|
||||||
@ChineseDescription("通知摘要")
|
@ChineseDescription("通知摘要")
|
||||||
private String noticeSummary;
|
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;
|
private String noticeContent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知范围
|
* 优先级,来自字典:high-高优先级,middle-中,low-低
|
||||||
*/
|
*/
|
||||||
@TableField("notice_scope")
|
@TableField("priority_level")
|
||||||
@ChineseDescription("通知范围")
|
@ChineseDescription("优先级,来自字典:high-高优先级,middle-中,low-低")
|
||||||
private String noticeScope;
|
private String priorityLevel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否删除:Y-已删除,N-未删除
|
* 开始时间
|
||||||
*/
|
*/
|
||||||
@TableField(value = "del_flag", fill = FieldFill.INSERT)
|
@TableField("notice_begin_time")
|
||||||
@ChineseDescription("是否删除:Y-已删除,N-未删除")
|
@ChineseDescription("开始时间")
|
||||||
@TableLogic
|
private Date noticeBeginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
@TableField("notice_end_time")
|
||||||
|
@ChineseDescription("结束时间")
|
||||||
|
private Date noticeEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通知范围,存用户id集合
|
||||||
|
*/
|
||||||
|
@TableField("notice_user_scope")
|
||||||
|
@ChineseDescription("通知范围,存用户id集合")
|
||||||
|
private Map<String, Object> 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<String, Object> expandField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除:Y-被删除,N-未删除
|
||||||
|
*/
|
||||||
|
@TableField("del_flag")
|
||||||
|
@ChineseDescription("是否删除:Y-被删除,N-未删除")
|
||||||
private String delFlag;
|
private String delFlag;
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
@SimpleFieldFormat(processClass = UserNameFormatProcess.class)
|
* 租户号
|
||||||
public Long getCreateUser() {
|
*/
|
||||||
return super.getCreateUser();
|
@TableField("tenant_id")
|
||||||
}
|
@ChineseDescription("租户号")
|
||||||
|
private Long tenantId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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;
|
package cn.stylefeng.roses.kernel.sys.modular.notice.mapper;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice;
|
import cn.stylefeng.roses.kernel.sys.modular.notice.entity.SysNotice;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知表 Mapper 接口
|
* 通知管理 Mapper 接口
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/8 22:45
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
public interface SysNoticeMapper extends BaseMapper<SysNotice> {
|
public interface SysNoticeMapper extends BaseMapper<SysNotice> {
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
||||||
|
|
||||||
}
|
|
|
@ -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<String, Object> noticeUserScope;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否发布:1-已发布,2-未发布
|
||||||
|
*/
|
||||||
|
@ChineseDescription("是否发布:1-已发布,2-未发布")
|
||||||
|
private Integer publishStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 乐观锁
|
||||||
|
*/
|
||||||
|
@ChineseDescription("乐观锁")
|
||||||
|
private Long versionFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拓展字段
|
||||||
|
*/
|
||||||
|
@ChineseDescription("拓展字段")
|
||||||
|
private Map<String, Object> 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<Long> batchDeleteIdList;
|
||||||
|
|
||||||
|
}
|
|
@ -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 {
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
package cn.stylefeng.roses.kernel.sys.modular.notice.service;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
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.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 com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知服务类
|
* 通知管理服务类
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/8 19:56
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
public interface SysNoticeService extends IService<SysNotice> {
|
public interface SysNoticeService extends IService<SysNotice> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加系统应用
|
* 新增通知管理
|
||||||
*
|
*
|
||||||
* @param sysNoticeRequest 添加参数
|
* @param sysNoticeRequest 请求参数
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:57
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
void add(SysNoticeRequest sysNoticeRequest);
|
void add(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除系统应用
|
* 删除通知管理
|
||||||
*
|
*
|
||||||
* @param sysNoticeRequest 删除参数
|
* @param sysNoticeRequest 请求参数
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:57
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
void del(SysNoticeRequest sysNoticeRequest);
|
void del(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑系统应用
|
* 批量删除通知管理
|
||||||
*
|
*
|
||||||
* @param sysNoticeRequest 编辑参数
|
* @param sysNoticeRequest 请求参数
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:58
|
* @since 2024/01/12 16:06
|
||||||
|
*/
|
||||||
|
void batchDelete(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑通知管理
|
||||||
|
*
|
||||||
|
* @param sysNoticeRequest 请求参数
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
void edit(SysNoticeRequest sysNoticeRequest);
|
void edit(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看系统应用
|
* 查询详情通知管理
|
||||||
*
|
*
|
||||||
* @param sysNoticeRequest 查看参数
|
* @param sysNoticeRequest 请求参数
|
||||||
* @return 系统应用
|
* @author fengshuonan
|
||||||
* @author liuhanqing
|
* @since 2024/01/12 16:06
|
||||||
* @since 2021/1/9 14:56
|
|
||||||
*/
|
*/
|
||||||
SysNotice detail(SysNoticeRequest sysNoticeRequest);
|
SysNotice detail(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询系统应用
|
* 获取通知管理列表
|
||||||
*
|
*
|
||||||
* @param sysNoticeRequest 查询参数
|
* @param sysNoticeRequest 请求参数
|
||||||
* @return 查询分页结果
|
* @return List<SysNotice> 返回结果
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 14:56
|
* @since 2024/01/12 16:06
|
||||||
*/
|
|
||||||
PageResult<SysNotice> findPage(SysNoticeRequest sysNoticeRequest);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 系统应用列表
|
|
||||||
*
|
|
||||||
* @param sysNoticeRequest 查询参数
|
|
||||||
* @return 系统应用列表
|
|
||||||
* @author liuhanqing
|
|
||||||
* @since 2021/1/9 14:56
|
|
||||||
*/
|
*/
|
||||||
List<SysNotice> findList(SysNoticeRequest sysNoticeRequest);
|
List<SysNotice> findList(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取通知管理分页列表
|
||||||
|
*
|
||||||
|
* @param sysNoticeRequest 请求参数
|
||||||
|
* @return PageResult<SysNotice> 返回结果
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2024/01/12 16:06
|
||||||
|
*/
|
||||||
|
PageResult<SysNotice> findPage(SysNoticeRequest sysNoticeRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
package cn.stylefeng.roses.kernel.sys.modular.notice.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.PageFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
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.db.api.pojo.page.PageResult;
|
||||||
import cn.stylefeng.roses.kernel.message.api.MessageApi;
|
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
|
||||||
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.sys.modular.notice.entity.SysNotice;
|
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.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 cn.stylefeng.roses.kernel.sys.modular.notice.service.SysNoticeService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
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.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通知表 服务实现类
|
* 通知管理业务实现层
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/8 22:45
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice> implements SysNoticeService {
|
public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice> implements SysNoticeService {
|
||||||
|
|
||||||
private static final String NOTICE_SCOPE_ALL = "all";
|
@Override
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MessageApi messageApi;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void add(SysNoticeRequest sysNoticeRequest) {
|
public void add(SysNoticeRequest sysNoticeRequest) {
|
||||||
SysNotice sysNotice = new SysNotice();
|
SysNotice sysNotice = new SysNotice();
|
||||||
|
|
||||||
// 拷贝属性
|
|
||||||
BeanUtil.copyProperties(sysNoticeRequest, sysNotice);
|
BeanUtil.copyProperties(sysNoticeRequest, sysNotice);
|
||||||
|
this.save(sysNotice);
|
||||||
// 没传递通知范围,则默认发给所有人
|
|
||||||
if (StrUtil.isBlank(sysNotice.getNoticeScope())) {
|
|
||||||
sysNotice.setNoticeScope(NOTICE_SCOPE_ALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果保存成功调用发送消息
|
|
||||||
if (this.save(sysNotice)) {
|
|
||||||
sendMessage(sysNotice);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void del(SysNoticeRequest sysNoticeRequest) {
|
public void del(SysNoticeRequest sysNoticeRequest) {
|
||||||
SysNotice sysNotice = this.querySysNoticeById(sysNoticeRequest);
|
SysNotice sysNotice = this.querySysNotice(sysNoticeRequest);
|
||||||
// 逻辑删除
|
this.removeById(sysNotice.getNoticeId());
|
||||||
sysNotice.setDelFlag(YesOrNotEnum.Y.getCode());
|
}
|
||||||
this.updateById(sysNotice);
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void batchDelete(SysNoticeRequest sysNoticeRequest) {
|
||||||
|
this.removeByIds(sysNoticeRequest.getBatchDeleteIdList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void edit(SysNoticeRequest sysNoticeRequest) {
|
public void edit(SysNoticeRequest sysNoticeRequest) {
|
||||||
SysNotice sysNotice = this.querySysNoticeById(sysNoticeRequest);
|
SysNotice sysNotice = this.querySysNotice(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);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新属性
|
|
||||||
BeanUtil.copyProperties(sysNoticeRequest, sysNotice);
|
BeanUtil.copyProperties(sysNoticeRequest, sysNotice);
|
||||||
|
this.updateById(sysNotice);
|
||||||
// 修改成功后发送信息
|
|
||||||
if (this.updateById(sysNotice)) {
|
|
||||||
sendMessage(sysNotice);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysNotice detail(SysNoticeRequest sysNoticeRequest) {
|
public SysNotice detail(SysNoticeRequest sysNoticeRequest) {
|
||||||
LambdaQueryWrapper<SysNotice> queryWrapper = this.createWrapper(sysNoticeRequest);
|
return this.querySysNotice(sysNoticeRequest);
|
||||||
return this.getOne(queryWrapper, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<SysNotice> findPage(SysNoticeRequest sysNoticeRequest) {
|
public PageResult<SysNotice> findPage(SysNoticeRequest sysNoticeRequest) {
|
||||||
LambdaQueryWrapper<SysNotice> wrapper = createWrapper(sysNoticeRequest);
|
LambdaQueryWrapper<SysNotice> wrapper = createWrapper(sysNoticeRequest);
|
||||||
Page<SysNotice> page = this.page(PageFactory.defaultPage(), wrapper);
|
Page<SysNotice> pageList = this.page(PageFactory.defaultPage(), wrapper);
|
||||||
return PageResultFactory.createPageResult(page);
|
return PageResultFactory.createPageResult(pageList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SysNotice> findList(SysNoticeRequest sysNoticeRequest) {
|
public List<SysNotice> findList(SysNoticeRequest sysNoticeRequest) {
|
||||||
LambdaQueryWrapper<SysNotice> wrapper = createWrapper(sysNoticeRequest);
|
LambdaQueryWrapper<SysNotice> wrapper = this.createWrapper(sysNoticeRequest);
|
||||||
return this.list(wrapper);
|
return this.list(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取通知管理
|
* 获取信息
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2021/1/9 16:56
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
private SysNotice querySysNoticeById(SysNoticeRequest sysNoticeRequest) {
|
private SysNotice querySysNotice(SysNoticeRequest sysNoticeRequest) {
|
||||||
SysNotice sysNotice = this.getById(sysNoticeRequest.getNoticeId());
|
SysNotice sysNotice = this.getById(sysNoticeRequest.getNoticeId());
|
||||||
if (ObjectUtil.isNull(sysNotice)) {
|
if (ObjectUtil.isEmpty(sysNotice)) {
|
||||||
throw new SysException(NoticeExceptionEnum.NOTICE_NOT_EXIST, sysNoticeRequest.getNoticeId());
|
throw new ServiceException(SysNoticeExceptionEnum.SYS_NOTICE_NOT_EXISTED);
|
||||||
}
|
}
|
||||||
return sysNotice;
|
return sysNotice;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建wrapper
|
* 创建查询wrapper
|
||||||
*
|
*
|
||||||
* @author liuhanqing
|
* @author fengshuonan
|
||||||
* @since 2020/1/9 16:16
|
* @since 2024/01/12 16:06
|
||||||
*/
|
*/
|
||||||
private LambdaQueryWrapper<SysNotice> createWrapper(SysNoticeRequest sysNoticeRequest) {
|
private LambdaQueryWrapper<SysNotice> createWrapper(SysNoticeRequest sysNoticeRequest) {
|
||||||
LambdaQueryWrapper<SysNotice> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysNotice> 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();
|
Long noticeId = sysNoticeRequest.getNoticeId();
|
||||||
|
|
||||||
// 通知标题
|
|
||||||
String noticeTitle = sysNoticeRequest.getNoticeTitle();
|
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<String, Object> noticeUserScope = sysNoticeRequest.getNoticeUserScope();
|
||||||
|
Integer publishStatus = sysNoticeRequest.getPublishStatus();
|
||||||
|
Long versionFlag = sysNoticeRequest.getVersionFlag();
|
||||||
|
Map<String, Object> 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.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;
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue