diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/vo/LoginByUsernameVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/vo/LoginByUsernameVO.java index 1bcb3cd5f..fd20c76be 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/vo/LoginByUsernameVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/vo/LoginByUsernameVO.java @@ -17,14 +17,14 @@ public class LoginByUsernameVO { * 用户名 */ @NotEmpty(message = "用户名不能为空") - @ApiModelProperty("用户名") + @ApiModelProperty(value = "用户名", required = true) private String username; /** * 用户密码 */ @NotEmpty(message = "用户密码不能为空") - @ApiModelProperty("用户密码") + @ApiModelProperty(value = "用户密码", required = true) private String password; /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/UserNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/UserNoticeController.java index 912511aeb..57133cc27 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/UserNoticeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/UserNoticeController.java @@ -26,7 +26,7 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ -@Api(tags = "用户所有通知") +@Api(tags = "用户消息通知") @RestController @RequiredArgsConstructor @RequestMapping("/rest/v1/user-notices") @@ -52,4 +52,17 @@ public class UserNoticeController extends XktBaseController { return R.ok(userNoticeService.appTypePage(BeanUtil.toBean(pageVO, UserNoticeAppTypePageDTO.class))); } + @ApiOperation(value = "APP - 全部已读", httpMethod = "PUT", response = R.class) + @PutMapping("/app/read/all") + public R appAllRead() { + return R.ok(userNoticeService.appBatchRead()); + } + + @ApiOperation(value = "APP - 未读的分类,点击进入分类列表时调用变为已读", httpMethod = "PUT", response = R.class) + @PutMapping("/app/read/type/{targetNoticeType}") + public R appTypeRead(@PathVariable Integer targetNoticeType) { + return R.ok(userNoticeService.appTypeRead(targetNoticeType)); + } + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userNotice/UserNoticeAppListResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userNotice/UserNoticeAppListResVO.java index a7bc02b5f..96d705f13 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userNotice/UserNoticeAppListResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userNotice/UserNoticeAppListResVO.java @@ -27,7 +27,5 @@ public class UserNoticeAppListResVO { private Date createTime; @ApiModelProperty(value = "是否已读 0未读 1已读") private Integer readStatus; - @ApiModelProperty(value = "公告状态 0不提醒 1提醒") - private Integer remindStatus; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/userNotice/UserNoticeAppListResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/userNotice/UserNoticeAppListResDTO.java index 406641afa..402952fa0 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/userNotice/UserNoticeAppListResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/userNotice/UserNoticeAppListResDTO.java @@ -27,7 +27,5 @@ public class UserNoticeAppListResDTO { private Date createTime; @ApiModelProperty(value = "是否已读 0未读 1已读") private Integer readStatus; - @ApiModelProperty(value = "公告状态 0不提醒 1提醒") - private Integer remindStatus; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IUserNoticeService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IUserNoticeService.java index e49eb7435..7f2079052 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IUserNoticeService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IUserNoticeService.java @@ -35,4 +35,19 @@ public interface IUserNoticeService { * @return List */ Page appTypePage(UserNoticeAppTypePageDTO pageDTO); + + /** + * app 全部已读 + * + * @return Integer + */ + Integer appBatchRead(); + + /** + * app 某一个具体分类已读 + * + * @param targetNoticeType type + * @return + */ + Integer appTypeRead(Integer targetNoticeType); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/UserNoticeServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/UserNoticeServiceImpl.java index 0d04303da..e94eae53f 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/UserNoticeServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/UserNoticeServiceImpl.java @@ -1,15 +1,21 @@ package com.ruoyi.xkt.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.page.Page; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.xkt.domain.UserNotice; import com.ruoyi.xkt.dto.userNotice.*; import com.ruoyi.xkt.enums.UserNoticeType; import com.ruoyi.xkt.mapper.UserNoticeMapper; import com.ruoyi.xkt.service.IUserNoticeService; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -81,4 +87,50 @@ public class UserNoticeServiceImpl implements IUserNoticeService { return Page.convert(new PageInfo<>(list)); } + /** + * app 全部已读 + * + * @return Integer + */ + @Override + @Transactional + public Integer appBatchRead() { + Long userId = SecurityUtils.getUserIdSafe(); + if (ObjectUtils.isEmpty(userId)) { + throw new ServiceException("用户未登录,请先登录!", HttpStatus.ERROR); + } + List unReadList = this.userNoticeMapper.selectList(new LambdaQueryWrapper() + .eq(UserNotice::getUserId, userId).eq(UserNotice::getReadStatus, 0) + .eq(UserNotice::getDelFlag, Constants.UNDELETED)); + if (CollectionUtils.isEmpty(unReadList)) { + return 0; + } + unReadList.forEach(x -> x.setReadStatus(1)); + return this.userNoticeMapper.updateById(unReadList).size(); + } + + /** + * app 某一个具体分类已读 + * + * @param targetNoticeType type + * @return + */ + @Override + @Transactional + public Integer appTypeRead(Integer targetNoticeType) { + Long userId = SecurityUtils.getUserIdSafe(); + if (ObjectUtils.isEmpty(userId)) { + throw new ServiceException("用户未登录,请先登录!", HttpStatus.ERROR); + } + List unReadList = this.userNoticeMapper.selectList(new LambdaQueryWrapper() + .eq(UserNotice::getUserId, userId).eq(UserNotice::getReadStatus, 0) + .eq(UserNotice::getTargetNoticeType, targetNoticeType) + .eq(UserNotice::getDelFlag, Constants.UNDELETED)); + if (CollectionUtils.isEmpty(unReadList)) { + return 0; + } + unReadList.forEach(x -> x.setReadStatus(1)); + return this.userNoticeMapper.updateById(unReadList).size(); + } + } diff --git a/xkt/src/main/resources/mapper/UserNoticeMapper.xml b/xkt/src/main/resources/mapper/UserNoticeMapper.xml index e0877269b..58bde4263 100644 --- a/xkt/src/main/resources/mapper/UserNoticeMapper.xml +++ b/xkt/src/main/resources/mapper/UserNoticeMapper.xml @@ -34,25 +34,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" un.target_notice_type, n.notice_content, un.create_time, - un.read_status, - CASE - un.target_notice_type - WHEN 1 THEN - uns.sys_msg_notice - WHEN 2 THEN - uns.order_notice - WHEN 3 THEN - uns.focus_notice - WHEN 4 THEN - uns.favorite_notice - END AS remindStatus + un.read_status FROM user_notice un - LEFT JOIN user_notice_setting uns ON un.user_id = uns.user_id LEFT JOIN notice n ON un.notice_id = n.id WHERE - un.del_flag = 0 - AND un.user_id = #{userId} + un.del_flag = 0 AND un.user_id = #{userId} + ORDER BY + un.target_notice_type