feat: 通知公告临时提交

通知公告临时提交
This commit is contained in:
胡少翔
2024-09-12 18:08:02 +08:00
parent fa77b5cb8c
commit 9c765bda24
11 changed files with 110 additions and 5 deletions

View File

@@ -14,6 +14,7 @@ import com.youlai.boot.system.service.DictService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -73,7 +74,7 @@ public class DictController {
@PostMapping
@PreAuthorize("@ss.hasPerm('sys:dict:add')")
@RepeatSubmit
public Result<?> saveDict(@RequestBody DictForm formData) {
public Result<?> saveDict(@Valid @RequestBody DictForm formData) {
boolean result = dictService.saveDict(formData);
return Result.judge(result);
}

View File

@@ -120,4 +120,11 @@ public class NoticeController {
noticeStatusService.readAll();
return Result.success();
}
@Operation(summary = "获取我的通知公告")
@GetMapping("/my/page")
public PageResult<NoticeVO> getMyNoticePage(NoticeQuery queryParams) {
IPage<NoticeVO> result = noticeService.getMyNoticePage(queryParams);
return PageResult.success(result);
}
}

View File

@@ -1,8 +1,12 @@
package com.youlai.boot.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.NoticeStatus;
import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticeStatusVO;
import com.youlai.boot.system.model.vo.NoticeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -23,4 +27,12 @@ public interface NoticeStatusMapper extends BaseMapper<NoticeStatus> {
* @return 公告列表
*/
List<NoticeStatusVO> listUnreadNotices(@Param("userId")Long userId);
/**
* 分页获取我的通知公告
* @param page 分页对象
* @param queryParams 查询参数
* @return 通知公告分页列表
*/
IPage<NoticeVO> getMyNoticePage(Page<NoticeVO> page, @Param("queryParams") NoticeQuery queryParams);
}

View File

@@ -28,4 +28,7 @@ public class NoticeQuery extends BasePageQuery {
@Schema(description = "发布时间")
private List<String> releaseTime;
@Schema(description = "查询人ID")
private Long userId;
}

View File

@@ -1,8 +1,11 @@
package com.youlai.boot.system.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 用户公告状态VO
*
@@ -13,12 +16,25 @@ import lombok.Data;
@Schema(description = "用户公告状态VO")
public class NoticeStatusVO {
@Schema(description = "公告ID")
@Schema(description = "通知ID")
private Long id;
@Schema(description = "公告标题")
@Schema(description = "通知标题")
private String title;
@Schema(description = "通知类型")
private String noticeTypeLabel;
@Schema(description = "发布人")
private String releaseBy;
@Schema(description = "优先级(0-低 1-中 2-高)")
private Integer priority;
@Schema(description = "发布时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime releaseTime;
@Schema(description = "是否已读")
private Integer readStatus;

View File

@@ -86,4 +86,11 @@ public interface NoticeService extends IService<Notice> {
* @return 通知公告详情
*/
NoticeDetailVO getReadNoticeDetail(Long id);
/**
* 获取我的通知公告分页列表
* @param queryParams 查询参数
* @return 通知公告分页列表
*/
IPage<NoticeVO> getMyNoticePage(NoticeQuery queryParams);
}

View File

@@ -1,8 +1,12 @@
package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.NoticeStatus;
import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticeStatusVO;
import com.youlai.boot.system.model.vo.NoticeVO;
import java.util.List;
@@ -25,4 +29,12 @@ public interface NoticeStatusService extends IService<NoticeStatus> {
* @return 是否成功
*/
boolean readAll();
/**
* 分页获取我的通知公告
* @param page 分页对象
* @param queryParams 查询参数
* @return 通知公告分页列表
*/
IPage<NoticeVO> getMyNoticePage(Page<NoticeVO> page, NoticeQuery queryParams);
}

View File

@@ -20,6 +20,7 @@ import com.youlai.boot.system.model.entity.NoticeStatus;
import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.form.NoticeForm;
import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticeStatusVO;
import com.youlai.boot.system.model.vo.NoticeVO;
import com.youlai.boot.system.model.vo.NoticeDetailVO;
import com.youlai.boot.system.service.NoticeService;
@@ -262,5 +263,16 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
return noticeDetailVO;
}
/**
* 获取当前登录用户的通知公告列表
* @param queryParams 查询参数
* @return 通知公告分页列表
*/
@Override
public IPage<NoticeVO> getMyNoticePage(NoticeQuery queryParams) {
Long userId = SecurityUtils.getUserId();
queryParams.setUserId(userId);
return noticeStatusService.getMyNoticePage(new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),queryParams);
}
}

View File

@@ -1,11 +1,15 @@
package com.youlai.boot.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.core.security.util.SecurityUtils;
import com.youlai.boot.system.mapper.NoticeStatusMapper;
import com.youlai.boot.system.model.entity.NoticeStatus;
import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticeStatusVO;
import com.youlai.boot.system.model.vo.NoticeVO;
import com.youlai.boot.system.service.NoticeStatusService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -48,5 +52,16 @@ public class NoticeStatusServiceImpl extends ServiceImpl<NoticeStatusMapper, Not
return this.update(updateWrapper);
}
/**
* 分页获取我的通知公告
* @param page 分页对象
* @param queryParams 查询参数
* @return 通知公告分页列表
*/
@Override
public IPage<NoticeVO> getMyNoticePage(Page<NoticeVO> page, NoticeQuery queryParams) {
return this.getBaseMapper().getMyNoticePage(new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),queryParams);
}
}

View File

@@ -12,8 +12,6 @@ import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.common.enums.ContactType;
import com.youlai.boot.common.model.Option;
import com.youlai.boot.platform.mail.service.MailService;
import com.youlai.boot.platform.sms.service.SmsService;
import com.youlai.boot.module.mail.service.MailService;
import com.youlai.boot.module.sms.service.SmsService;
import com.youlai.boot.system.model.entity.User;

View File

@@ -20,4 +20,26 @@
sn.release_time DESC
</select>
<select id="getMyNoticePage" resultType="com.youlai.boot.system.model.vo.NoticeVO">
SELECT
sn.id,
sn.title,
sn.release_by,
sn.priority,
sn.release_time,
sns.read_status
FROM
sys_notice sn
LEFT JOIN
sys_notice_status sns
ON
sn.id = sns.notice_id
<where>
<if test="queryParams.userId != null">
sns.user_id = #{queryParams.userId}
</if>
</where>
ORDER BY
sn.release_time DESC
</select>
</mapper>