From 6a04a56f18965f97ea7c467a303f217c9a8abe92 Mon Sep 17 00:00:00 2001 From: lijiaqi Date: Mon, 23 Oct 2023 13:28:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=85=AC=E5=91=8A=E4=B8=AD?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A2=AB=E9=80=9A=E7=9F=A5=E4=BA=BA=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=B7=B2=E7=BB=8F=E6=9F=A5=E7=9C=8B=E8=AF=A5=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=88=E7=B1=BB=E4=BC=BC?= =?UTF-8?q?=E6=B5=99=E6=94=BF=E9=92=89=E7=9A=84=E5=B7=B2=E8=AF=BB=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E5=A5=BD=E5=AE=9E=E7=8E=B0=E7=9A=84=E8=AF=9D?= =?UTF-8?q?=E8=AE=A9=E6=8E=A5=E6=94=B6=E4=BA=BA=E9=82=A3=E9=87=8C=E5=8A=A0?= =?UTF-8?q?=E4=B8=AA=E3=80=90=E5=B7=B2=E9=98=85=E3=80=91=E7=9A=84=E6=8C=89?= =?UTF-8?q?=E9=92=AE=EF=BC=8C=E5=8F=91=E5=B8=83=E4=BA=BA=E9=82=A3=E9=87=8C?= =?UTF-8?q?=E8=83=BD=E7=9C=8B=E5=88=B0=E8=B0=81=E7=82=B9=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ydool/common/gen/Generator.java | 2 +- .../controller/NoticeController.java | 23 ++++++++++- .../com/ydool/integrated/dto/NoticeDto.java | 11 ++++++ .../ydool/integrated/dto/NoticeUserDto.java | 13 +++++++ .../ydool/integrated/entity/NoticeUser.java | 32 +++++++++++++++ .../integrated/mapper/NoticeUserMapper.java | 18 +++++++++ .../integrated/service/NoticeUserService.java | 39 +++++++++++++++++++ .../integrated/wrapper/NoticeUserWrapper.java | 31 +++++++++++++++ .../integrated/wrapper/NoticeWrapper.java | 25 ++++++++++++ src/main/resources/application.yml | 4 +- 10 files changed, 193 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/ydool/integrated/dto/NoticeUserDto.java create mode 100644 src/main/java/com/ydool/integrated/entity/NoticeUser.java create mode 100644 src/main/java/com/ydool/integrated/mapper/NoticeUserMapper.java create mode 100644 src/main/java/com/ydool/integrated/service/NoticeUserService.java create mode 100644 src/main/java/com/ydool/integrated/wrapper/NoticeUserWrapper.java diff --git a/src/main/java/com/ydool/common/gen/Generator.java b/src/main/java/com/ydool/common/gen/Generator.java index c0473d2..c848140 100644 --- a/src/main/java/com/ydool/common/gen/Generator.java +++ b/src/main/java/com/ydool/common/gen/Generator.java @@ -27,7 +27,7 @@ public class Generator { public static void main(String[] args) { //表名 - String tableName = "t_integrated_meeting_user"; + String tableName = "t_integrated_notice_user"; //表前缀 String tablePrefix = "t_integrated_"; //作者— diff --git a/src/main/java/com/ydool/integrated/controller/NoticeController.java b/src/main/java/com/ydool/integrated/controller/NoticeController.java index b3bb93d..9d55ab7 100644 --- a/src/main/java/com/ydool/integrated/controller/NoticeController.java +++ b/src/main/java/com/ydool/integrated/controller/NoticeController.java @@ -8,7 +8,9 @@ import com.ydool.common.base.BaseController; import com.ydool.common.constant.UrlConstant; import com.ydool.common.data.dto.AjaxResult; import com.ydool.integrated.dto.DocumentDto; +import com.ydool.integrated.dto.NoticeDto; import com.ydool.integrated.service.NoticeService; +import com.ydool.integrated.service.NoticeUserService; import com.ydool.integrated.vo.IdsVo; import com.ydool.integrated.vo.NoticeVo; import io.swagger.annotations.Api; @@ -27,6 +29,9 @@ public class NoticeController extends BaseController { @Autowired private NoticeService noticeService; + @Autowired + private NoticeUserService noticeUserService; + /** * 保存通知 * @@ -95,7 +100,7 @@ public class NoticeController extends BaseController { @ApiOperation(value = "详情") @ApiOperationSupport( responses = @DynamicResponseParameters(properties = { - @DynamicParameter(name = "data", dataTypeClass = DocumentDto.class) + @DynamicParameter(name = "data", dataTypeClass = NoticeDto.class) }), order = 5 ) public AjaxResult noticeDetails(String id) { @@ -123,11 +128,25 @@ public class NoticeController extends BaseController { }) @ApiOperationSupport( responses = @DynamicResponseParameters(properties = { - @DynamicParameter(name = "data", dataTypeClass = DocumentDto.class) + @DynamicParameter(name = "data", dataTypeClass = NoticeDto.class) }), order = 6 ) public AjaxResult noticePages(String value, String column, String orderBy, String type,Boolean isUrgent) { return noticeService.noticePages(getPage(), value, column, orderBy,type,isUrgent); } + + + /** + * 已阅 + * @param id + * @return + */ + @GetMapping(value = "read") + @ApiOperation(value = "已阅") + @ApiImplicitParam(name = "id", value = "Id") + @ApiOperationSupport(order = 7) + public AjaxResult readNotice(String id) { + return noticeUserService.readNotice(id); + } } diff --git a/src/main/java/com/ydool/integrated/dto/NoticeDto.java b/src/main/java/com/ydool/integrated/dto/NoticeDto.java index 036bb13..1314679 100644 --- a/src/main/java/com/ydool/integrated/dto/NoticeDto.java +++ b/src/main/java/com/ydool/integrated/dto/NoticeDto.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + @EqualsAndHashCode(callSuper = true) @Data public class NoticeDto extends Notice { @@ -16,4 +18,13 @@ public class NoticeDto extends Notice { @ApiModelProperty(value = "更新人") private String updatedName; + + @ApiModelProperty(value = "已读人员") + private List readUserList; + + @ApiModelProperty(value = "是否已阅") + private Boolean isRead; + + @ApiModelProperty(value = "是否创建人") + private Boolean isCreated; } diff --git a/src/main/java/com/ydool/integrated/dto/NoticeUserDto.java b/src/main/java/com/ydool/integrated/dto/NoticeUserDto.java new file mode 100644 index 0000000..d1e9b12 --- /dev/null +++ b/src/main/java/com/ydool/integrated/dto/NoticeUserDto.java @@ -0,0 +1,13 @@ +package com.ydool.integrated.dto; + +import com.ydool.integrated.entity.NoticeUser; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class NoticeUserDto extends NoticeUser { + @ApiModelProperty(value = "接收人") + private String userName; +} diff --git a/src/main/java/com/ydool/integrated/entity/NoticeUser.java b/src/main/java/com/ydool/integrated/entity/NoticeUser.java new file mode 100644 index 0000000..09ce2fa --- /dev/null +++ b/src/main/java/com/ydool/integrated/entity/NoticeUser.java @@ -0,0 +1,32 @@ +package com.ydool.integrated.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ydool.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +/** + *

+ * 通知管理阅读人员表 + *

+ * + * @author zhouyuan + * @since 2023-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_integrated_notice_user") +@ApiModel(value="NoticeUser对象", description="通知管理阅读人员表") +public class NoticeUser extends BaseEntity{ + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "接收人") + private String userId; + + @ApiModelProperty(value = "通知管理id") + private String noticeId; + +} diff --git a/src/main/java/com/ydool/integrated/mapper/NoticeUserMapper.java b/src/main/java/com/ydool/integrated/mapper/NoticeUserMapper.java new file mode 100644 index 0000000..2c2d16d --- /dev/null +++ b/src/main/java/com/ydool/integrated/mapper/NoticeUserMapper.java @@ -0,0 +1,18 @@ +package com.ydool.integrated.mapper; + +import com.ydool.integrated.entity.NoticeUser; +import com.github.yulichang.base.MPJBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知管理阅读人员表 Mapper 接口 + *

+ * + * @author zhouyuan + * @since 2023-10-23 + */ +@Mapper +public interface NoticeUserMapper extends MPJBaseMapper { + +} diff --git a/src/main/java/com/ydool/integrated/service/NoticeUserService.java b/src/main/java/com/ydool/integrated/service/NoticeUserService.java new file mode 100644 index 0000000..d592381 --- /dev/null +++ b/src/main/java/com/ydool/integrated/service/NoticeUserService.java @@ -0,0 +1,39 @@ +package com.ydool.integrated.service; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydool.common.base.BaseService; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.integrated.entity.NoticeUser; +import com.ydool.integrated.mapper.NoticeUserMapper; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知管理阅读人员表 服务类 + *

+ * + * @author zhouyuan + * @since 2023-10-23 + */ +@Service +public class NoticeUserService extends BaseService { + + public AjaxResult readNotice(String id) { + + int count = count(new QueryWrapper() + .lambda() + .eq(NoticeUser::getNoticeId, id) + .eq(NoticeUser::getUserId, StpUtil.getLoginIdAsString()) + ); + if (count > 0) { + return AjaxResult.fail("已经阅读过了"); + } + NoticeUser noticeUser = new NoticeUser(); + noticeUser.setNoticeId(id); + noticeUser.setUserId(StpUtil.getLoginIdAsString()); + save(noticeUser); + return AjaxResult.ok().msg("阅读成功"); + } +} + diff --git a/src/main/java/com/ydool/integrated/wrapper/NoticeUserWrapper.java b/src/main/java/com/ydool/integrated/wrapper/NoticeUserWrapper.java new file mode 100644 index 0000000..7ed37c1 --- /dev/null +++ b/src/main/java/com/ydool/integrated/wrapper/NoticeUserWrapper.java @@ -0,0 +1,31 @@ +package com.ydool.integrated.wrapper; + +import cn.hutool.core.util.ObjUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.ydool.common.base.BaseWrapper; +import com.ydool.integrated.dto.NoticeUserDto; + +import com.ydool.integrated.entity.NoticeUser; +import com.ydool.system.entity.User; +import com.ydool.system.service.impl.UserServiceImpl; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.AfterMapping; +import org.mapstruct.Mapper; +import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface NoticeUserWrapper extends BaseWrapper { + + NoticeUserWrapper INSTANCE = Mappers.getMapper(NoticeUserWrapper.class); + + + @AfterMapping + default void setOtherField(@Param("obj") NoticeUser obj, @MappingTarget @Param("dto") NoticeUserDto dto) { + UserServiceImpl userService = SpringUtil.getBean(UserServiceImpl.class); + User user = userService.getById(obj.getUserId()); + if(ObjUtil.isNotNull(user)){ + dto.setUserName(user.getUserName()); + } + } +} diff --git a/src/main/java/com/ydool/integrated/wrapper/NoticeWrapper.java b/src/main/java/com/ydool/integrated/wrapper/NoticeWrapper.java index 0e6f7c3..c63b34f 100644 --- a/src/main/java/com/ydool/integrated/wrapper/NoticeWrapper.java +++ b/src/main/java/com/ydool/integrated/wrapper/NoticeWrapper.java @@ -1,12 +1,16 @@ package com.ydool.integrated.wrapper; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.extra.spring.SpringUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydool.common.base.BaseWrapper; import com.ydool.integrated.dto.NoticeDto; import com.ydool.integrated.entity.Notice; +import com.ydool.integrated.entity.NoticeUser; +import com.ydool.integrated.service.NoticeUserService; import com.ydool.system.entity.User; import com.ydool.system.service.impl.UserServiceImpl; import org.apache.ibatis.annotations.Param; @@ -40,6 +44,27 @@ public interface NoticeWrapper extends BaseWrapper { dto.setUserList(JSONUtil.toJsonStr(users)); } } + + NoticeUserService noticeUserService = SpringUtil.getBean(NoticeUserService.class); + List noticeUsers = noticeUserService.list(new QueryWrapper() + .lambda() + .eq(NoticeUser::getNoticeId, obj.getId()) + ); + + if (CollUtil.isNotEmpty(noticeUsers)) { + if (noticeUsers.stream().anyMatch(noticeUser -> noticeUser.getUserId().equals(StpUtil.getLoginIdAsString()))) { + dto.setIsRead(true); + } + dto.setReadUserList(NoticeUserWrapper.INSTANCE.toDto(noticeUsers)); + }else { + dto.setIsRead(false); + dto.setReadUserList(null); + } + + if (obj.getCreatedId().equals(StpUtil.getLoginIdAsString())) { + dto.setIsCreated(true); + } } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 88827bb..8b9bb38 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -64,8 +64,8 @@ spring: thymeleaf: prefix: classpath:/html/ suffix: .html - jackson: - default-property-inclusion: non_null +# jackson: +# default-property-inclusion: non_null main: allow-circular-references: true