🔧 简化 notice 模块的 VO
This commit is contained in:
parent
ce42bf7826
commit
27710435b2
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user