mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	🔧 简化 notice 模块的 VO
This commit is contained in:
		@@ -4,17 +4,16 @@ import cn.hutool.core.lang.Assert;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.convert.notice.NoticeConvert;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.service.notice.NoticeService;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Parameter;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Operation;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Parameter;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import org.springframework.security.access.prepost.PreAuthorize;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
@@ -39,16 +38,16 @@ public class NoticeController {
 | 
			
		||||
    @PostMapping("/create")
 | 
			
		||||
    @Operation(summary = "创建通知公告")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:notice:create')")
 | 
			
		||||
    public CommonResult<Long> createNotice(@Valid @RequestBody NoticeCreateReqVO reqVO) {
 | 
			
		||||
        Long noticeId = noticeService.createNotice(reqVO);
 | 
			
		||||
    public CommonResult<Long> createNotice(@Valid @RequestBody NoticeSaveReqVO createReqVO) {
 | 
			
		||||
        Long noticeId = noticeService.createNotice(createReqVO);
 | 
			
		||||
        return success(noticeId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update")
 | 
			
		||||
    @Operation(summary = "修改通知公告")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:notice:update')")
 | 
			
		||||
    public CommonResult<Boolean> updateNotice(@Valid @RequestBody NoticeUpdateReqVO reqVO) {
 | 
			
		||||
        noticeService.updateNotice(reqVO);
 | 
			
		||||
    public CommonResult<Boolean> updateNotice(@Valid @RequestBody NoticeSaveReqVO updateReqVO) {
 | 
			
		||||
        noticeService.updateNotice(updateReqVO);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -64,8 +63,9 @@ public class NoticeController {
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @Operation(summary = "获取通知公告列表")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:notice:query')")
 | 
			
		||||
    public CommonResult<PageResult<NoticeRespVO>> getNoticePage(@Validated NoticePageReqVO reqVO) {
 | 
			
		||||
        return success(NoticeConvert.INSTANCE.convertPage(noticeService.getNoticePage(reqVO)));
 | 
			
		||||
    public CommonResult<PageResult<NoticeRespVO>> getNoticePage(@Validated NoticePageReqVO pageReqVO) {
 | 
			
		||||
        PageResult<NoticeDO> pageResult = noticeService.getNoticePage(pageReqVO);
 | 
			
		||||
        return success(BeanUtils.toBean(pageResult, NoticeRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/get")
 | 
			
		||||
@@ -73,7 +73,8 @@ public class NoticeController {
 | 
			
		||||
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('system:notice:query')")
 | 
			
		||||
    public CommonResult<NoticeRespVO> getNotice(@RequestParam("id") Long id) {
 | 
			
		||||
        return success(NoticeConvert.INSTANCE.convert(noticeService.getNotice(id)));
 | 
			
		||||
        NoticeDO notice = noticeService.getNotice(id);
 | 
			
		||||
        return success(BeanUtils.toBean(notice, NoticeRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/push")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.module.system.controller.admin.notice.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - 通知公告创建 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
public class NoticeCreateReqVO extends NoticeBaseVO {
 | 
			
		||||
}
 | 
			
		||||
@@ -2,18 +2,28 @@ package cn.iocoder.yudao.module.system.controller.admin.notice.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - 通知公告信息 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
public class NoticeRespVO extends NoticeBaseVO {
 | 
			
		||||
public class NoticeRespVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "通知公告序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "公告标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "小博主")
 | 
			
		||||
    private String title;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "公告类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "小博主")
 | 
			
		||||
    private Integer type;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "公告内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "半生编码")
 | 
			
		||||
    private String content;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
 | 
			
		||||
    private LocalDateTime createTime;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,12 +7,13 @@ import javax.validation.constraints.NotBlank;
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
import javax.validation.constraints.Size;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 通知公告 Base VO,提供给添加、修改、详细的子 VO 使用
 | 
			
		||||
 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 | 
			
		||||
 */
 | 
			
		||||
@Schema(description = "管理后台 - 通知公告创建/修改 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class NoticeBaseVO {
 | 
			
		||||
public class NoticeSaveReqVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "岗位公告编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
 | 
			
		||||
    @NotNull(message = "岗位公告编号不能为空")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "公告标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "小博主")
 | 
			
		||||
    @NotBlank(message = "公告标题不能为空")
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.module.system.controller.admin.notice.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - 岗位公告更新 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
public class NoticeUpdateReqVO extends NoticeBaseVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "岗位公告编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
 | 
			
		||||
    @NotNull(message = "岗位公告编号不能为空")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.module.system.convert.notice;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface NoticeConvert {
 | 
			
		||||
 | 
			
		||||
    NoticeConvert INSTANCE = Mappers.getMapper(NoticeConvert.class);
 | 
			
		||||
 | 
			
		||||
    PageResult<NoticeRespVO> convertPage(PageResult<NoticeDO> page);
 | 
			
		||||
 | 
			
		||||
    NoticeRespVO convert(NoticeDO bean);
 | 
			
		||||
 | 
			
		||||
    NoticeDO convert(NoticeUpdateReqVO bean);
 | 
			
		||||
 | 
			
		||||
    NoticeDO convert(NoticeCreateReqVO bean);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,9 +1,8 @@
 | 
			
		||||
package cn.iocoder.yudao.module.system.service.notice;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -12,29 +11,29 @@ import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
 | 
			
		||||
public interface NoticeService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建岗位公告公告
 | 
			
		||||
     * 创建通知公告
 | 
			
		||||
     *
 | 
			
		||||
     * @param reqVO 岗位公告公告信息
 | 
			
		||||
     * @return 岗位公告公告编号
 | 
			
		||||
     * @param createReqVO 通知公告
 | 
			
		||||
     * @return 编号
 | 
			
		||||
     */
 | 
			
		||||
    Long createNotice(NoticeCreateReqVO reqVO);
 | 
			
		||||
    Long createNotice(NoticeSaveReqVO createReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新岗位公告公告
 | 
			
		||||
     * 更新通知公告
 | 
			
		||||
     *
 | 
			
		||||
     * @param reqVO 岗位公告公告信息
 | 
			
		||||
     * @param reqVO 通知公告
 | 
			
		||||
     */
 | 
			
		||||
    void updateNotice(NoticeUpdateReqVO reqVO);
 | 
			
		||||
    void updateNotice(NoticeSaveReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除岗位公告公告信息
 | 
			
		||||
     * 删除通知公告
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 岗位公告公告编号
 | 
			
		||||
     * @param id 编号
 | 
			
		||||
     */
 | 
			
		||||
    void deleteNotice(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得岗位公告公告分页列表
 | 
			
		||||
     * 获得通知公告分页列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param reqVO 分页条件
 | 
			
		||||
     * @return 部门分页列表
 | 
			
		||||
@@ -42,10 +41,10 @@ public interface NoticeService {
 | 
			
		||||
    PageResult<NoticeDO> getNoticePage(NoticePageReqVO reqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得岗位公告公告信息
 | 
			
		||||
     * 获得通知公告
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 岗位公告公告编号
 | 
			
		||||
     * @return 岗位公告公告信息
 | 
			
		||||
     * @param id 编号
 | 
			
		||||
     * @return 通知公告
 | 
			
		||||
     */
 | 
			
		||||
    NoticeDO getNotice(Long id);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.module.system.service.notice;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.convert.notice.NoticeConvert;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.mysql.notice.NoticeMapper;
 | 
			
		||||
import com.google.common.annotations.VisibleForTesting;
 | 
			
		||||
@@ -27,18 +26,18 @@ public class NoticeServiceImpl implements NoticeService {
 | 
			
		||||
    private NoticeMapper noticeMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long createNotice(NoticeCreateReqVO reqVO) {
 | 
			
		||||
        NoticeDO notice = NoticeConvert.INSTANCE.convert(reqVO);
 | 
			
		||||
    public Long createNotice(NoticeSaveReqVO createReqVO) {
 | 
			
		||||
        NoticeDO notice = BeanUtils.toBean(createReqVO, NoticeDO.class);
 | 
			
		||||
        noticeMapper.insert(notice);
 | 
			
		||||
        return notice.getId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateNotice(NoticeUpdateReqVO reqVO) {
 | 
			
		||||
    public void updateNotice(NoticeSaveReqVO updateReqVO) {
 | 
			
		||||
        // 校验是否存在
 | 
			
		||||
        validateNoticeExists(reqVO.getId());
 | 
			
		||||
        validateNoticeExists(updateReqVO.getId());
 | 
			
		||||
        // 更新通知公告
 | 
			
		||||
        NoticeDO updateObj = NoticeConvert.INSTANCE.convert(reqVO);
 | 
			
		||||
        NoticeDO updateObj = BeanUtils.toBean(updateReqVO, NoticeDO.class);
 | 
			
		||||
        noticeMapper.updateById(updateObj);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,8 @@ package cn.iocoder.yudao.module.system.service.notice;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeCreateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeUpdateReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.controller.admin.notice.vo.NoticeSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.dataobject.notice.NoticeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.system.dal.mysql.notice.NoticeMapper;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
@@ -72,14 +71,15 @@ class NoticeServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testCreateNotice_success() {
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        NoticeCreateReqVO reqVO = randomPojo(NoticeCreateReqVO.class);
 | 
			
		||||
        NoticeSaveReqVO reqVO = randomPojo(NoticeSaveReqVO.class)
 | 
			
		||||
                .setId(null); // 避免 id 被赋值
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        Long noticeId = noticeService.createNotice(reqVO);
 | 
			
		||||
        // 校验插入属性是否正确
 | 
			
		||||
        assertNotNull(noticeId);
 | 
			
		||||
        NoticeDO notice = noticeMapper.selectById(noticeId);
 | 
			
		||||
        assertPojoEquals(reqVO, notice);
 | 
			
		||||
        assertPojoEquals(reqVO, notice, "id");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@@ -89,7 +89,7 @@ class NoticeServiceImplTest extends BaseDbUnitTest {
 | 
			
		||||
        noticeMapper.insert(dbNoticeDO);
 | 
			
		||||
 | 
			
		||||
        // 准备更新参数
 | 
			
		||||
        NoticeUpdateReqVO reqVO = randomPojo(NoticeUpdateReqVO.class, o -> o.setId(dbNoticeDO.getId()));
 | 
			
		||||
        NoticeSaveReqVO reqVO = randomPojo(NoticeSaveReqVO.class, o -> o.setId(dbNoticeDO.getId()));
 | 
			
		||||
 | 
			
		||||
        // 更新
 | 
			
		||||
        noticeService.updateNotice(reqVO);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user