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