From 7b265657b614dcff02322f808babc2732d3c476f Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sun, 3 Nov 2024 21:33:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BF=AE=E5=A4=8D=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=97=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/MessageReceivedWithMessageVo.java | 72 +++++++++++++++++++ .../dao/vo/system/message/MessageVo.java | 3 +- .../controller/MessageController.java | 14 ---- .../controller/MessageReceivedController.java | 46 ++++++++++-- .../bunny/services/mapper/MessageMapper.java | 9 --- .../mapper/MessageReceivedMapper.java | 21 +++++- .../service/MessageReceivedService.java | 26 ++++++- .../services/service/MessageService.java | 7 -- .../impl/MessageReceivedServiceImpl.java | 67 ++++++++++++++--- .../service/impl/MessageServiceImpl.java | 27 ------- .../main/resources/mapper/MessageMapper.xml | 63 ---------------- .../mapper/MessageReceivedMapper.xml | 72 +++++++++++++++++-- 12 files changed, 281 insertions(+), 146 deletions(-) create mode 100644 dao/src/main/java/cn/bunny/dao/vo/system/message/MessageReceivedWithMessageVo.java diff --git a/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageReceivedWithMessageVo.java b/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageReceivedWithMessageVo.java new file mode 100644 index 0000000..e78f413 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageReceivedWithMessageVo.java @@ -0,0 +1,72 @@ +package cn.bunny.dao.vo.system.message; + +import cn.bunny.dao.common.vo.BaseUserVo; +import com.alibaba.fastjson2.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "MessageReceivedWithMessageVo对象", title = "用户消息接收", description = "用户消息接收") +public class MessageReceivedWithMessageVo extends BaseUserVo { + + @Schema(name = "id", title = "消息接受id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private Long id; + + @Schema(name = "messageId", title = "消息id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private Long messageId; + + @Schema(name = "receivedUserId", title = "接收人用户ID") + private String receivedUserId; + + @Schema(name = "receivedUserNickname", title = "接收人用户昵称") + private String receivedUserNickname; + + @Schema(name = "messageTypeId", title = "消息类型id") + private String messageTypeId; + + @Schema(name = "messageType", title = "消息类型") + private String messageType; + + @Schema(name = "title", title = "消息标题") + private String title; + + @Schema(name = "sendUserId", title = "发送人用户ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private Long sendUserId; + + @Schema(name = "sendNickname", title = "发送人昵称") + private String sendNickname; + + @Schema(name = "cover", title = "封面") + private String cover; + + @Schema(name = "summary", title = "消息简介") + private String summary; + + @Schema(name = "content", title = "消息内容") + private String content; + + @Schema(name = "editorType", title = "编辑器类型") + private String editorType; + + @Schema(name = "status", title = "0:未读 1:已读") + private Boolean status; + + @Schema(name = "level", title = "消息等级") + private String level; + + @Schema(name = "extra", title = "消息等级详情") + private String extra; + +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageVo.java b/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageVo.java index 504ac1e..eb81df4 100644 --- a/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageVo.java +++ b/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageVo.java @@ -66,4 +66,5 @@ public class MessageVo extends BaseUserVo { @Schema(name = "extra", title = "消息等级详情") private String extra; -} \ No newline at end of file +} + diff --git a/service/src/main/java/cn/bunny/services/controller/MessageController.java b/service/src/main/java/cn/bunny/services/controller/MessageController.java index 7e25832..c6c8bbd 100644 --- a/service/src/main/java/cn/bunny/services/controller/MessageController.java +++ b/service/src/main/java/cn/bunny/services/controller/MessageController.java @@ -1,6 +1,5 @@ package cn.bunny.services.controller; -import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUserDto; import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.pojo.result.PageResult; @@ -35,19 +34,6 @@ public class MessageController { @Autowired private MessageService messageService; - @Operation(summary = "分页查询消息", description = "分页查询消息") - @GetMapping("getMessageList/{page}/{limit}") - public Mono>> getMessageList( - @Parameter(name = "page", description = "当前页", required = true) - @PathVariable("page") Integer page, - @Parameter(name = "limit", description = "每页记录数", required = true) - @PathVariable("limit") Integer limit, - MessageDto dto) { - Page pageParams = new Page<>(page, limit); - PageResult pageResult = messageService.getMessageList(pageParams, dto); - return Mono.just(Result.success(pageResult)); - } - @Operation(summary = "分页查询用户消息", description = "分页查询用户消息") @GetMapping("noManage/getUserMessageList/{page}/{limit}") public Mono>> getUserMessageList( diff --git a/service/src/main/java/cn/bunny/services/controller/MessageReceivedController.java b/service/src/main/java/cn/bunny/services/controller/MessageReceivedController.java index 26259ce..770c0e4 100644 --- a/service/src/main/java/cn/bunny/services/controller/MessageReceivedController.java +++ b/service/src/main/java/cn/bunny/services/controller/MessageReceivedController.java @@ -1,12 +1,18 @@ package cn.bunny.services.controller; import cn.bunny.dao.dto.system.message.MessageAddDto; +import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUpdateDto; +import cn.bunny.dao.entity.system.Message; +import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.Result; import cn.bunny.dao.pojo.result.ResultCodeEnum; +import cn.bunny.dao.vo.system.message.MessageReceivedWithMessageVo; import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; import cn.bunny.services.service.MessageReceivedService; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -31,6 +37,33 @@ public class MessageReceivedController { @Autowired private MessageReceivedService messageReceivedService; + @Operation(summary = "管理员管理用户消息接收分页查询", description = "管理员管理用户消息接收分页查询") + @GetMapping("getMessageReceivedList/{page}/{limit}") + public Mono>> getMessageReceivedList( + @Parameter(name = "page", description = "当前页", required = true) + @PathVariable("page") Integer page, + @Parameter(name = "limit", description = "每页记录数", required = true) + @PathVariable("limit") Integer limit, + MessageDto dto) { + Page pageParams = new Page<>(page, limit); + PageResult pageResult = messageReceivedService.getMessageReceivedList(pageParams, dto); + return Mono.just(Result.success(pageResult)); + } + + @Operation(summary = "管理员将用户接受消息标为已读", description = "管理员将用户接受消息标为已读") + @PutMapping("markMessageReceivedAsRead") + public Mono> markMessageReceivedAsRead(@RequestBody List ids) { + messageReceivedService.markMessageReceivedAsRead(ids); + return Mono.just(Result.success()); + } + + @Operation(summary = "管理删除用户接受的消息", description = "管理删除用户接受的消息") + @DeleteMapping("deleteMessageReceivedByIds") + public Mono> deleteMessageReceivedByIds(@RequestBody List ids) { + messageReceivedService.deleteMessageReceivedByIds(ids); + return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); + } + @Operation(summary = "根据消息id获取接收人信息", description = "根据消息id获取接收人信息") @GetMapping("noManage/getReceivedUserinfoByMessageId") public Mono>> getReceivedUserinfoByMessageId(Long messageId) { @@ -38,6 +71,13 @@ public class MessageReceivedController { return Mono.just(Result.success(voList)); } + @Operation(summary = "用户将消息标为已读", description = "用户将消息标为已读") + @PutMapping("noManage/updateUserMarkAsRead") + public Mono> updateUserMarkAsRead(@Valid @RequestBody List ids) { + messageReceivedService.updateUserMarkAsRead(ids); + return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); + } + @Operation(summary = "添加系统消息", description = "添加系统消息") @PostMapping("addMessage") public Mono> addMessage(@Valid @RequestBody MessageAddDto dto) { @@ -52,10 +92,4 @@ public class MessageReceivedController { return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); } - @Operation(summary = "用户将消息标为已读", description = "用户将消息标为已读") - @PutMapping("noManage/updateUserMarkAsRead") - public Mono> updateUserMarkAsRead(@Valid @RequestBody List ids) { - messageReceivedService.updateUserMarkAsRead(ids); - return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); - } } diff --git a/service/src/main/java/cn/bunny/services/mapper/MessageMapper.java b/service/src/main/java/cn/bunny/services/mapper/MessageMapper.java index 7b69e53..8caa2c4 100644 --- a/service/src/main/java/cn/bunny/services/mapper/MessageMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/MessageMapper.java @@ -1,6 +1,5 @@ package cn.bunny.services.mapper; -import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUserDto; import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.vo.system.message.MessageVo; @@ -23,14 +22,6 @@ import java.util.List; @Mapper public interface MessageMapper extends BaseMapper { - /** - * * 分页查询系统消息内容 - * - * @param pageParams 系统消息分页参数 - * @param dto 系统消息查询表单 - * @return 系统消息分页结果 - */ - IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MessageDto dto); /** * 物理删除系统消息 diff --git a/service/src/main/java/cn/bunny/services/mapper/MessageReceivedMapper.java b/service/src/main/java/cn/bunny/services/mapper/MessageReceivedMapper.java index 328e515..8278731 100644 --- a/service/src/main/java/cn/bunny/services/mapper/MessageReceivedMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/MessageReceivedMapper.java @@ -1,9 +1,15 @@ package cn.bunny.services.mapper; +import cn.bunny.dao.dto.system.message.MessageDto; +import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.entity.system.MessageReceived; +import cn.bunny.dao.vo.system.message.MessageReceivedWithMessageVo; import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,12 +24,21 @@ import java.util.List; @Mapper public interface MessageReceivedMapper extends BaseMapper { + /** + * * 用户消息接收管理分页查询 + * + * @param pageParams 系统消息分页参数 + * @param dto 系统消息查询表单 + * @return 系统消息分页结果 + */ + IPage selectListByMessageReceivedPage(@Param("page") Page pageParams, @Param("dto") MessageDto dto); + /** * 根据id批量删除 * - * @param userIds 发送用户ID + * @param ids 消息接受ids */ - void deleteBatchIdsWithPhysics(List userIds); + void deleteBatchIdsWithPhysics(List ids); /** * 根据消息Id物理删除 @@ -33,7 +48,7 @@ public interface MessageReceivedMapper extends BaseMapper { void deleteBatchIdsByMessageIdsWithPhysics(List ids); /** - * 根据发送者id批量删除 + * 根据消息id获取接收人信息 * * @param messageId 消息id * @return 消息接收人用户名等信息 diff --git a/service/src/main/java/cn/bunny/services/service/MessageReceivedService.java b/service/src/main/java/cn/bunny/services/service/MessageReceivedService.java index 10945dc..cc26ec4 100644 --- a/service/src/main/java/cn/bunny/services/service/MessageReceivedService.java +++ b/service/src/main/java/cn/bunny/services/service/MessageReceivedService.java @@ -1,9 +1,14 @@ package cn.bunny.services.service; import cn.bunny.dao.dto.system.message.MessageAddDto; +import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUpdateDto; +import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.entity.system.MessageReceived; +import cn.bunny.dao.pojo.result.PageResult; +import cn.bunny.dao.vo.system.message.MessageReceivedWithMessageVo; import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.validation.Valid; @@ -20,11 +25,25 @@ import java.util.List; public interface MessageReceivedService extends IService { /** - * 根据发送者id批量删除消息接受者 + * 管理员管理用户消息接收分页查询 * - * @param sendUserIds 发送用户ID + * @return 系统消息返回列表 */ - void deleteBatchIdsWithPhysics(List sendUserIds); + PageResult getMessageReceivedList(Page pageParams, MessageDto dto); + + /** + * 管理员将用户接受消息标为已读 + * + * @param ids 用户消息表id + */ + void markMessageReceivedAsRead(List ids); + + /** + * 管理删除用户接受的消息 + * + * @param ids 用户消息Id列表 + */ + void deleteMessageReceivedByIds(List ids); /** * 根据消息id获取接收人信息 @@ -54,4 +73,5 @@ public interface MessageReceivedService extends IService { * @param dto 更新表单 */ void updateMessage(@Valid MessageUpdateDto dto); + } diff --git a/service/src/main/java/cn/bunny/services/service/MessageService.java b/service/src/main/java/cn/bunny/services/service/MessageService.java index ae75ea3..e9c5e8b 100644 --- a/service/src/main/java/cn/bunny/services/service/MessageService.java +++ b/service/src/main/java/cn/bunny/services/service/MessageService.java @@ -1,6 +1,5 @@ package cn.bunny.services.service; -import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUserDto; import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.pojo.result.PageResult; @@ -21,12 +20,6 @@ import java.util.List; */ public interface MessageService extends IService { - /** - * * 获取系统消息列表 - * - * @return 系统消息返回列表 - */ - PageResult getMessageList(Page pageParams, MessageDto dto); /** * * 删除|批量删除系统消息类型 diff --git a/service/src/main/java/cn/bunny/services/service/impl/MessageReceivedServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/MessageReceivedServiceImpl.java index 5d7d548..0fb8bb7 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/MessageReceivedServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/MessageReceivedServiceImpl.java @@ -4,16 +4,21 @@ import cn.bunny.common.service.context.BaseContext; import cn.bunny.common.service.exception.BunnyException; import cn.bunny.dao.common.entity.BaseEntity; import cn.bunny.dao.dto.system.message.MessageAddDto; +import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUpdateDto; import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.entity.system.MessageReceived; +import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.ResultCodeEnum; +import cn.bunny.dao.vo.system.message.MessageReceivedWithMessageVo; import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; import cn.bunny.services.factory.UserFactory; import cn.bunny.services.mapper.MessageMapper; import cn.bunny.services.mapper.MessageReceivedMapper; import cn.bunny.services.mapper.UserMapper; import cn.bunny.services.service.MessageReceivedService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.validation.Valid; import org.springframework.beans.BeanUtils; @@ -40,9 +45,62 @@ public class MessageReceivedServiceImpl extends ServiceImpl getMessageReceivedList(Page pageParams, MessageDto dto) { + // 分页查询消息数据 + IPage page = baseMapper.selectListByMessageReceivedPage(pageParams, dto); + List voList = page.getRecords().stream().map(messageVo -> { + MessageReceivedWithMessageVo vo = new MessageReceivedWithMessageVo(); + BeanUtils.copyProperties(messageVo, vo); + + // 设置封面返回内容 + String cover = vo.getCover(); + cover = userFactory.checkGetUserAvatar(cover); + vo.setCover(cover); + return vo; + }).toList(); + return PageResult.builder().list(voList).pageNo(page.getCurrent()) + .pageSize(page.getSize()).total(page.getTotal()) + .build(); + } + + /** + * 管理员将用户接受消息标为已读 + * + * @param ids 用户消息表id + */ + @Override + public void markMessageReceivedAsRead(List ids) { + List messageReceivedList = ids.stream().map(id -> { + MessageReceived messageReceived = new MessageReceived(); + messageReceived.setId(id); + messageReceived.setStatus(true); + return messageReceived; + }).toList(); + updateBatchById(messageReceivedList); + } + + /** + * 管理删除用户接受的消息 + * + * @param ids 用户消息Id列表 + */ + @Override + public void deleteMessageReceivedByIds(List ids) { + baseMapper.deleteBatchIdsWithPhysics(ids); + } + /** * 根据消息id获取接收人信息 * @@ -171,13 +229,4 @@ public class MessageReceivedServiceImpl extends ServiceImpl sendUserIds) { - baseMapper.deleteBatchIdsWithPhysics(sendUserIds); - } } diff --git a/service/src/main/java/cn/bunny/services/service/impl/MessageServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/MessageServiceImpl.java index e2cf5b1..fdc51bd 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/MessageServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/MessageServiceImpl.java @@ -2,7 +2,6 @@ package cn.bunny.services.service.impl; import cn.bunny.common.service.context.BaseContext; import cn.bunny.common.service.exception.BunnyException; -import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.dto.system.message.MessageUserDto; import cn.bunny.dao.entity.system.Message; import cn.bunny.dao.entity.system.MessageReceived; @@ -44,32 +43,6 @@ public class MessageServiceImpl extends ServiceImpl impl @Autowired private MessageReceivedMapper messageReceivedMapper; - /** - * * 系统消息 服务实现类 - * - * @param pageParams 系统消息分页查询page对象 - * @param dto 系统消息分页查询对象 - * @return 查询分页系统消息返回对象 - */ - @Override - public PageResult getMessageList(Page pageParams, MessageDto dto) { - // 分页查询消息数据 - IPage page = baseMapper.selectListByPage(pageParams, dto); - List voList = page.getRecords().stream().map(messageVo -> { - MessageVo vo = new MessageVo(); - BeanUtils.copyProperties(messageVo, vo); - - // 设置封面返回内容 - String cover = vo.getCover(); - cover = userFactory.checkGetUserAvatar(cover); - vo.setCover(cover); - return vo; - }).toList(); - return PageResult.builder().list(voList).pageNo(page.getCurrent()) - .pageSize(page.getSize()).total(page.getTotal()) - .build(); - } - /** * 分页查询用户消息 * 查询用户消息关系表,找到当前用户所有的消息 diff --git a/service/src/main/resources/mapper/MessageMapper.xml b/service/src/main/resources/mapper/MessageMapper.xml index b22f09d..1d2bec9 100644 --- a/service/src/main/resources/mapper/MessageMapper.xml +++ b/service/src/main/resources/mapper/MessageMapper.xml @@ -26,69 +26,6 @@ id, create_time, update_time, create_user, update_user, is_deleted, title, send_user_id, message_type, content, cover, summary, editor_type, level,extra - - - + SELECT + message_received.status AS status, + message_received.received_user_id AS received_user_id, + message_received.id AS id, + message.id as message_id, + message.create_time, + message.update_time, + message.create_user, + message.update_user, + message.is_deleted, + message.title, + message.send_user_id, + message.content, + message.cover, + message.summary, + message.editor_type, + message.level, + message.extra, + message_type.message_name AS message_type, + message_type.id AS message_type_id, + received_user.nickname received_user_nickname, + create_user.username AS create_username, + update_user.username AS update_username, + send_user.nickname AS send_nickname + FROM + sys_message_received message_received + LEFT JOIN sys_user create_user ON create_user.id = message_received.create_user + LEFT JOIN sys_user update_user ON update_user.id = message_received.update_user + LEFT JOIN sys_user received_user ON message_received.received_user_id = received_user.id + LEFT JOIN sys_message message ON message_received.message_id = message.id + LEFT JOIN sys_user send_user ON send_user.id = message.send_user_id + LEFT JOIN sys_message_type message_type ON message_type.id = message.message_type + + message.is_deleted = 0 + + and message.title like CONCAT('%',#{dto.title},'%') + + + and send_user.nickname like CONCAT('%',#{dto.sendNickname},'%') + + + and message_type.message_type like CONCAT('%',#{dto.messageType},'%') + + + and message.content like CONCAT('%',#{dto.content},'%') + + + and message.editor_type = #{dto.editorType} + + + and message.level = #{dto.level} + + + and message.extra like CONCAT('%',#{dto.extra},'%') + + + and message_received.status = #{dto.status} + + + + + delete from sys_message_received where id in - + #{id} @@ -34,7 +98,7 @@ - +