diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java index 5cb04b3..0e95e51 100644 --- a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java +++ b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java @@ -3,10 +3,8 @@ package cn.bunny.common.generator.generator; import cn.bunny.common.generator.entity.BaseField; import cn.bunny.common.generator.entity.BaseResultMap; import cn.bunny.common.generator.utils.GeneratorCodeUtils; -import cn.bunny.dao.dto.system.message.MessageDto; -import cn.bunny.dao.dto.system.message.MessageUpdateDto; +import cn.bunny.dao.dto.system.message.MessageReceivedDto; import cn.bunny.dao.entity.system.Message; -import cn.bunny.dao.vo.system.message.MessageVo; import com.baomidou.mybatisplus.annotation.TableName; import com.google.common.base.CaseFormat; import io.swagger.v3.oas.annotations.media.Schema; @@ -51,10 +49,10 @@ public class WebGeneratorCode { public static void main(String[] args) throws Exception { Class originalClass = Message.class; - Class dtoClass = MessageDto.class; - Class addDtoClass = MessageDto.class; - Class updateDtoClass = MessageUpdateDto.class; - Class voClass = MessageVo.class; + Class dtoClass = MessageReceivedDto.class; + Class addDtoClass = MessageReceivedDto.class; + // Class updateDtoClass = MessageUpdateDto.class; + // Class voClass = MessageVo.class; // 设置velocity资源加载器 Properties prop = new Properties(); diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageDto.java index a2dd14a..68f46b0 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageDto.java @@ -10,7 +10,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Builder -@Schema(name = "MessageDto对象", title = "系统消息", description = "系统消息") +@Schema(name = "MessageDto对象", title = "消息查询", description = "消息查询") public class MessageDto { @Schema(name = "title", title = "消息标题") @@ -22,19 +22,13 @@ public class MessageDto { @Schema(name = "messageType", title = "消息类型") private String messageType; - @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; + @Schema(name = "editorType", title = "编辑器类型") + private String editorType; + } diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageReceivedDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageReceivedDto.java new file mode 100644 index 0000000..52d5069 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageReceivedDto.java @@ -0,0 +1,39 @@ +package cn.bunny.dao.dto.system.message; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "MessageReceivedDto对象", title = "用户消息查询", description = "用户消息查询") +public class MessageReceivedDto { + + @Schema(name = "title", title = "消息标题") + private String title; + + @Schema(name = "sendNickname", title = "发送人用户昵称") + private String sendNickname; + + @Schema(name = "messageType", title = "消息类型") + private String messageType; + + @Schema(name = "level", title = "消息等级") + private String level; + + @Schema(name = "extra", title = "消息等级详情") + private String extra; + + @Schema(name = "status", title = "0:未读 1:已读") + private Boolean status; + + @Schema(name = "editorType", title = "编辑器类型") + private String editorType; + +} + + diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageReceivedUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageReceivedUpdateDto.java new file mode 100644 index 0000000..24a9474 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageReceivedUpdateDto.java @@ -0,0 +1,24 @@ +package cn.bunny.dao.dto.system.message; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "MessageReceivedDto对象", title = "用户消息查询", description = "用户消息查询") +public class MessageReceivedUpdateDto { + + @Schema(name = "ids", title = "消息接受id") + private List ids; + + @Schema(name = "status", title = "0:未读 1:已读") + private Boolean status; + +} diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageUpdateDto.java index 9a957ca..8c5b642 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/message/MessageUpdateDto.java @@ -58,9 +58,6 @@ public class MessageUpdateDto { @NotNull(message = "编辑器类型 不能为空") private String editorType; - @Schema(name = "status", title = "0:未读 1:已读") - private Boolean status; - @Schema(name = "level", title = "消息等级") private String level; diff --git a/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageDetailVo.java b/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageDetailVo.java new file mode 100644 index 0000000..4a97c9e --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/vo/system/message/MessageDetailVo.java @@ -0,0 +1,45 @@ +package cn.bunny.dao.vo.system.message; + +import cn.bunny.dao.common.vo.BaseUserVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Schema(name = "MessageDetailVo对象", title = "系统消息详情返回内容", description = "系统消息详情返回内容") +public class MessageDetailVo extends BaseUserVo { + + @Schema(name = "title", title = "消息标题") + private String title; + + @Schema(name = "sendUserId", title = "发送人用户ID") + private Long sendUserId; + + @Schema(name = "messageType", title = "sys:系统消息,user用户消息") + private String messageType; + + @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 = "level", title = "消息等级") + private String level; + + @Schema(name = "extra", title = "消息等级详情") + private String extra; + + @Schema(name = "sendNickname", title = "发送人昵称") + private String sendNickname; + +} \ No newline at end of file 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 index e78f413..6c761c7 100644 --- 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 @@ -26,12 +26,16 @@ public class MessageReceivedWithMessageVo extends BaseUserVo { private Long messageId; @Schema(name = "receivedUserId", title = "接收人用户ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) private String receivedUserId; @Schema(name = "receivedUserNickname", title = "接收人用户昵称") private String receivedUserNickname; @Schema(name = "messageTypeId", title = "消息类型id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) private String messageTypeId; @Schema(name = "messageType", title = "消息类型") 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 eb81df4..98aa8ea 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 @@ -3,11 +3,12 @@ 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.annotation.JsonProperty; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @EqualsAndHashCode(callSuper = true) @Data @AllArgsConstructor @@ -16,11 +17,13 @@ import lombok.*; @Schema(name = "MessageVo对象", title = "系统消息返回内容", description = "系统消息返回内容") public class MessageVo extends BaseUserVo { - @Schema(name = "messageReceivedId", title = "用户消息表id") - @JsonProperty("id") + @Schema(name = "receivedUserId", title = "接收人用户ID") @JsonFormat(shape = JsonFormat.Shape.STRING) @JSONField(serializeUsing = ToStringSerializer.class) - private Long messageReceivedId; + private List receivedUserId; + + @Schema(name = "receivedUserNickname", title = "接收人用户昵称") + private List receivedUserNickname; @Schema(name = "title", title = "消息标题") private String title; @@ -33,16 +36,12 @@ public class MessageVo extends BaseUserVo { @Schema(name = "sendNickname", title = "发送人昵称") private String sendNickname; - @Schema(name = "receivedUserId", title = "接收人用户ID") - private String receivedUserId; - - @Schema(name = "receivedUserNickname", title = "接收人用户昵称") - private String receivedUserNickname; - @Schema(name = "messageTypeId", title = "消息类型id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) private String messageTypeId; - @Schema(name = "messageType", title = "消息类型") + @Schema(name = "messageType", title = "sys:系统消息,user用户消息") private String messageType; @Schema(name = "cover", title = "封面") @@ -57,9 +56,6 @@ public class MessageVo extends BaseUserVo { @Schema(name = "editorType", title = "编辑器类型") private String editorType; - @Schema(name = "status", title = "0:未读 1:已读") - private Boolean status; - @Schema(name = "level", title = "消息等级") private String level; @@ -68,3 +64,5 @@ public class MessageVo extends BaseUserVo { } + + 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 c6c8bbd..864cece 100644 --- a/service/src/main/java/cn/bunny/services/controller/MessageController.java +++ b/service/src/main/java/cn/bunny/services/controller/MessageController.java @@ -1,17 +1,21 @@ package cn.bunny.services.controller; -import cn.bunny.dao.dto.system.message.MessageUserDto; +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.MessageUserVo; +import cn.bunny.dao.vo.system.message.MessageDetailVo; +import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; import cn.bunny.dao.vo.system.message.MessageVo; import cn.bunny.services.service.MessageService; 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; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Mono; @@ -34,37 +38,51 @@ public class MessageController { @Autowired private MessageService messageService; - @Operation(summary = "分页查询用户消息", description = "分页查询用户消息") - @GetMapping("noManage/getUserMessageList/{page}/{limit}") - public Mono>> getUserMessageList( + @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, - MessageUserDto dto) { + MessageDto dto) { Page pageParams = new Page<>(page, limit); - PageResult pageResult = messageService.getUserMessageList(pageParams, dto); + PageResult pageResult = messageService.getMessageList(pageParams, dto); return Mono.just(Result.success(pageResult)); } @Operation(summary = "根据消息id查询消息详情", description = "根据消息id查询消息详情") @GetMapping("noManage/getMessageDetailById") - public Mono> getMessageDetailById(Long id) { - MessageVo vo = messageService.getMessageDetailById(id); + public Mono> getMessageDetailById(Long id) { + MessageDetailVo vo = messageService.getMessageDetailById(id); return Mono.just(Result.success(vo)); } + @Operation(summary = "根据消息id获取接收人信息", description = "根据消息id获取接收人信息") + @GetMapping("noManage/getReceivedUserinfoByMessageId") + public Mono>> getReceivedUserinfoByMessageId(Long messageId) { + List voList = messageService.getReceivedUserinfoByMessageId(messageId); + return Mono.just(Result.success(voList)); + } + + @Operation(summary = "添加系统消息", description = "添加系统消息") + @PostMapping("addMessage") + public Mono> addMessage(@Valid @RequestBody MessageAddDto dto) { + messageService.addMessage(dto); + return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); + } + + @Operation(summary = "更新系统消息", description = "更新系统消息") + @PutMapping("updateMessage") + public Mono> updateMessage(@Valid @RequestBody MessageUpdateDto dto) { + messageService.updateMessage(dto); + return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); + } + @Operation(summary = "删除系统消息", description = "删除系统消息") @DeleteMapping("deleteMessage") public Mono> deleteMessage(@RequestBody List ids) { messageService.deleteMessage(ids); return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); } - - @Operation(summary = "用户删除消息", description = "用户删除消息") - @DeleteMapping("noManage/deleteUserMessageByIds") - public Mono> deleteUserMessageByIds(@RequestBody List ids) { - messageService.deleteUserMessageByIds(ids); - return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); - } } 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 770c0e4..884be84 100644 --- a/service/src/main/java/cn/bunny/services/controller/MessageReceivedController.java +++ b/service/src/main/java/cn/bunny/services/controller/MessageReceivedController.java @@ -1,14 +1,14 @@ 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.dto.system.message.MessageReceivedDto; +import cn.bunny.dao.dto.system.message.MessageReceivedUpdateDto; +import cn.bunny.dao.dto.system.message.MessageUserDto; 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.dao.vo.system.message.MessageUserVo; import cn.bunny.services.service.MessageReceivedService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -44,16 +44,16 @@ public class MessageReceivedController { @PathVariable("page") Integer page, @Parameter(name = "limit", description = "每页记录数", required = true) @PathVariable("limit") Integer limit, - MessageDto dto) { + MessageReceivedDto 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); + @PutMapping("updateMarkMessageReceived") + public Mono> updateMarkMessageReceived(@Valid @RequestBody MessageReceivedUpdateDto dto) { + messageReceivedService.updateMarkMessageReceived(dto); return Mono.just(Result.success()); } @@ -64,32 +64,30 @@ public class MessageReceivedController { return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); } - @Operation(summary = "根据消息id获取接收人信息", description = "根据消息id获取接收人信息") - @GetMapping("noManage/getReceivedUserinfoByMessageId") - public Mono>> getReceivedUserinfoByMessageId(Long messageId) { - List voList = messageReceivedService.getReceivedUserinfoByMessageId(messageId); - return Mono.just(Result.success(voList)); + @Operation(summary = "分页查询用户消息", description = "分页查询用户消息") + @GetMapping("noManage/getUserMessageList/{page}/{limit}") + public Mono>> getUserMessageList( + @Parameter(name = "page", description = "当前页", required = true) + @PathVariable("page") Integer page, + @Parameter(name = "limit", description = "每页记录数", required = true) + @PathVariable("limit") Integer limit, + MessageUserDto dto) { + Page pageParams = new Page<>(page, limit); + PageResult pageResult = messageReceivedService.getUserMessageList(pageParams, dto); + return Mono.just(Result.success(pageResult)); } @Operation(summary = "用户将消息标为已读", description = "用户将消息标为已读") - @PutMapping("noManage/updateUserMarkAsRead") - public Mono> updateUserMarkAsRead(@Valid @RequestBody List ids) { - messageReceivedService.updateUserMarkAsRead(ids); + @PutMapping("noManage/userMarkAsRead") + public Mono> userMarkAsRead(@Valid @RequestBody List ids) { + messageReceivedService.userMarkAsRead(ids); return Mono.just(Result.success(ResultCodeEnum.UPDATE_SUCCESS)); } - @Operation(summary = "添加系统消息", description = "添加系统消息") - @PostMapping("addMessage") - public Mono> addMessage(@Valid @RequestBody MessageAddDto dto) { - messageReceivedService.addMessage(dto); - return Mono.just(Result.success(ResultCodeEnum.ADD_SUCCESS)); + @Operation(summary = "用户删除消息", description = "用户删除消息") + @DeleteMapping("noManage/deleteUserMessageByIds") + public Mono> deleteUserMessageByIds(@RequestBody List ids) { + messageReceivedService.deleteUserMessageByIds(ids); + return Mono.just(Result.success(ResultCodeEnum.DELETE_SUCCESS)); } - - @Operation(summary = "更新系统消息", description = "更新系统消息") - @PutMapping("updateMessage") - public Mono> updateMessage(@Valid @RequestBody MessageUpdateDto dto) { - messageReceivedService.updateMessage(dto); - 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 8caa2c4..0b919a3 100644 --- a/service/src/main/java/cn/bunny/services/mapper/MessageMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/MessageMapper.java @@ -1,13 +1,14 @@ package cn.bunny.services.mapper; -import cn.bunny.dao.dto.system.message.MessageUserDto; +import cn.bunny.dao.dto.system.message.MessageDto; import cn.bunny.dao.entity.system.Message; -import cn.bunny.dao.vo.system.message.MessageVo; +import cn.bunny.dao.vo.system.message.MessageDetailVo; +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; @@ -22,6 +23,21 @@ import java.util.List; @Mapper public interface MessageMapper extends BaseMapper { + /** + * 根据消息id查询消息详情 + * + * @param id 消息id + * @return 消息返回对象 + */ + MessageDetailVo selectMessageVoById(Long id); + + /** + * 根据消息id获取接收人信息 + * + * @param messageId 消息id + * @return 消息接收人用户名等信息 + */ + List selectUserinfoListByMessageId(Long messageId); /** * 物理删除系统消息 @@ -31,20 +47,11 @@ public interface MessageMapper extends BaseMapper { void deleteBatchIdsWithPhysics(List ids); /** - * 根据消息所有包含匹配当前消息Id的列表 + * 分页查询发送消息 * - * @param pageParams 系统消息分页参数 - * @param dto 系统消息查询表单 - * @return 系统消息分页结果 + * @param pageParams 分页参数 + * @param dto 查询表单 + * @return 系统消息返回列表 */ - IPage selectListByPageWithMessageUserDto(@Param("page") Page pageParams, @Param("dto") MessageUserDto dto, @Param("userId") Long userId); - - /** - * 根据消息id查询消息详情 - * - * @param id 消息id - * @return 消息返回对象 - */ - MessageVo selectMessageVoById(Long id); - + IPage selectListByPage(Page pageParams, 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 8278731..aee5afb 100644 --- a/service/src/main/java/cn/bunny/services/mapper/MessageReceivedMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/MessageReceivedMapper.java @@ -1,10 +1,11 @@ package cn.bunny.services.mapper; -import cn.bunny.dao.dto.system.message.MessageDto; +import cn.bunny.dao.dto.system.message.MessageReceivedDto; +import cn.bunny.dao.dto.system.message.MessageUserDto; 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 cn.bunny.dao.vo.system.message.MessageUserVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -31,27 +32,28 @@ public interface MessageReceivedMapper extends BaseMapper { * @param dto 系统消息查询表单 * @return 系统消息分页结果 */ - IPage selectListByMessageReceivedPage(@Param("page") Page pageParams, @Param("dto") MessageDto dto); + IPage selectListByMessageReceivedPage(@Param("page") Page pageParams, @Param("dto") MessageReceivedDto dto); /** * 根据id批量删除 * - * @param ids 消息接受ids + * @param ids 主键ids */ void deleteBatchIdsWithPhysics(List ids); + /** + * 根据消息所有包含匹配当前消息Id的列表 + * + * @param pageParams 系统消息分页参数 + * @param dto 系统消息查询表单 + * @return 系统消息分页结果 + */ + IPage selectListByUserMessagePage(@Param("page") Page pageParams, @Param("dto") MessageUserDto dto, @Param("userId") Long userId); + /** * 根据消息Id物理删除 * * @param ids 消息id */ void deleteBatchIdsByMessageIdsWithPhysics(List ids); - - /** - * 根据消息id获取接收人信息 - * - * @param messageId 消息id - * @return 消息接收人用户名等信息 - */ - List selectUserinfoListByMessageId(Long messageId); } 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 cc26ec4..f978dec 100644 --- a/service/src/main/java/cn/bunny/services/service/MessageReceivedService.java +++ b/service/src/main/java/cn/bunny/services/service/MessageReceivedService.java @@ -1,13 +1,13 @@ 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.dto.system.message.MessageReceivedDto; +import cn.bunny.dao.dto.system.message.MessageReceivedUpdateDto; +import cn.bunny.dao.dto.system.message.MessageUserDto; 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 cn.bunny.dao.vo.system.message.MessageUserVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.validation.Valid; @@ -29,14 +29,14 @@ public interface MessageReceivedService extends IService { * * @return 系统消息返回列表 */ - PageResult getMessageReceivedList(Page pageParams, MessageDto dto); + PageResult getMessageReceivedList(Page pageParams, MessageReceivedDto dto); /** * 管理员将用户接受消息标为已读 * - * @param ids 用户消息表id + * @param dto 用户消息表单 */ - void markMessageReceivedAsRead(List ids); + void updateMarkMessageReceived(@Valid MessageReceivedUpdateDto dto); /** * 管理删除用户接受的消息 @@ -46,32 +46,25 @@ public interface MessageReceivedService extends IService { void deleteMessageReceivedByIds(List ids); /** - * 根据消息id获取接收人信息 + * 分页查询用户消息 * - * @param messageId 消息id - * @return 消息接收人用户名等信息 + * @param pageParams 系统消息返回列表 + * @param dto 查询表单 + * @return 分页结果 */ - List getReceivedUserinfoByMessageId(Long messageId); - - /** - * * 添加系统消息 - * - * @param dto 添加表单 - */ - void addMessage(@Valid MessageAddDto dto); + PageResult getUserMessageList(Page pageParams, MessageUserDto dto); /** * 用户将消息标为已读 * * @param ids 消息id列表 */ - void updateUserMarkAsRead(List ids); + void userMarkAsRead(List ids); /** - * * 更新系统消息 + * 用户删除消息 * - * @param dto 更新表单 + * @param ids 消息Id列表 */ - void updateMessage(@Valid MessageUpdateDto dto); - + void deleteUserMessageByIds(List ids); } 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 e9c5e8b..5571477 100644 --- a/service/src/main/java/cn/bunny/services/service/MessageService.java +++ b/service/src/main/java/cn/bunny/services/service/MessageService.java @@ -1,12 +1,16 @@ package cn.bunny.services.service; -import cn.bunny.dao.dto.system.message.MessageUserDto; +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.vo.system.message.MessageUserVo; +import cn.bunny.dao.vo.system.message.MessageDetailVo; +import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; import cn.bunny.dao.vo.system.message.MessageVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; import java.util.List; @@ -20,6 +24,35 @@ import java.util.List; */ public interface MessageService extends IService { + /** + * 根据消息id获取接收人信息 + * + * @param messageId 消息id + * @return 消息接收人用户名等信息 + */ + List getReceivedUserinfoByMessageId(Long messageId); + + /** + * 根据消息id查询消息详情 + * + * @param id 消息id + * @return 消息详情 + */ + MessageDetailVo getMessageDetailById(Long id); + + /** + * * 添加系统消息 + * + * @param dto 添加表单 + */ + void addMessage(@Valid MessageAddDto dto); + + /** + * * 更新系统消息 + * + * @param dto 更新表单 + */ + void updateMessage(@Valid MessageUpdateDto dto); /** * * 删除|批量删除系统消息类型 @@ -29,26 +62,11 @@ public interface MessageService extends IService { void deleteMessage(List ids); /** - * 分页查询用户消息 + * 分页查询发送消息 * - * @param pageParams 系统消息返回列表 + * @param pageParams 分页参数 * @param dto 查询表单 - * @return 分页结果 + * @return 系统消息返回列表 */ - PageResult getUserMessageList(Page pageParams, MessageUserDto dto); - - /** - * 根据消息id查询消息详情 - * - * @param id 消息id - * @return 消息详情 - */ - MessageVo getMessageDetailById(Long id); - - /** - * 用户删除消息 - * - * @param ids 消息Id列表 - */ - void deleteUserMessageByIds(List ids); + 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 0fb8bb7..499cc6d 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 @@ -2,22 +2,20 @@ package cn.bunny.services.service.impl; 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.dto.system.message.MessageReceivedDto; +import cn.bunny.dao.dto.system.message.MessageReceivedUpdateDto; +import cn.bunny.dao.dto.system.message.MessageUserDto; 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.dao.vo.system.message.MessageUserVo; 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.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.validation.Valid; @@ -40,12 +38,6 @@ import java.util.List; @Transactional public class MessageReceivedServiceImpl extends ServiceImpl implements MessageReceivedService { - @Autowired - private UserMapper userMapper; - - @Autowired - private MessageMapper messageMapper; - @Autowired private UserFactory userFactory; @@ -57,7 +49,7 @@ public class MessageReceivedServiceImpl extends ServiceImpl getMessageReceivedList(Page pageParams, MessageDto dto) { + public PageResult getMessageReceivedList(Page pageParams, MessageReceivedDto dto) { // 分页查询消息数据 IPage page = baseMapper.selectListByMessageReceivedPage(pageParams, dto); List voList = page.getRecords().stream().map(messageVo -> { @@ -78,14 +70,14 @@ public class MessageReceivedServiceImpl extends ServiceImpl ids) { - List messageReceivedList = ids.stream().map(id -> { + public void updateMarkMessageReceived(@Valid MessageReceivedUpdateDto dto) { + List messageReceivedList = dto.getIds().stream().map(id -> { MessageReceived messageReceived = new MessageReceived(); messageReceived.setId(id); - messageReceived.setStatus(true); + messageReceived.setStatus(dto.getStatus()); return messageReceived; }).toList(); updateBatchById(messageReceivedList); @@ -102,107 +94,33 @@ public class MessageReceivedServiceImpl extends ServiceImpl getReceivedUserinfoByMessageId(Long messageId) { - if (messageId == null) { - throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); - } - return baseMapper.selectUserinfoListByMessageId(messageId); - } + public PageResult getUserMessageList(Page pageParams, MessageUserDto dto) { + // 根据消息所有包含匹配当前消息Id的列表 + IPage page = baseMapper.selectListByUserMessagePage(pageParams, dto, BaseContext.getUserId()); + List voList = page.getRecords().stream().map(messageVo -> { + MessageUserVo vo = new MessageUserVo(); + BeanUtils.copyProperties(messageVo, vo); - /** - * 添加系统消息 - * 判断发送消息的接收人是否为空,如果为空默认是所有用户都是接受者 - * 之后要将消息的接受者要保存在,消息接收表中,在这之前是没有消息id的 - * 先要保存消息内容,之后获取到保存消息的id - * 将消息的id和接收者的id构建成map插入到消息接收表中 - * - * @param dto 系统消息添加 - */ - @Override - public void addMessage(@Valid MessageAddDto dto) { - // 如果发送人为空设置当前登录的人的ID - if (dto.getSendUserId() == null) dto.setSendUserId(BaseContext.getUserId()); - - // 设置封面返回内容 - String cover = dto.getCover(); - dto.setCover(userFactory.checkGetUserAvatar(cover)); - - // 先保存消息数据,之后拿到保存消息的id - Message message = new Message(); - BeanUtils.copyProperties(dto, message); - message.setMessageType(dto.getMessageTypeId().toString()); - messageMapper.insert(message); - - // 如果接收人为空默认接收全部人 - List receivedUserIds = dto.getReceivedUserIds(); - if (receivedUserIds.isEmpty()) { - receivedUserIds = userMapper.selectList(null).stream().map(BaseEntity::getId).toList(); - } - - // 从之前保存的消息中获取消息id,保存到消息接收表中 - List receivedList = receivedUserIds.stream().map(id -> { - MessageReceived messageReceived = new MessageReceived(); - messageReceived.setMessageId(message.getId()); - messageReceived.setReceivedUserId(id); - messageReceived.setStatus(false); - return messageReceived; + // 设置封面返回内容 + String cover = vo.getCover(); + cover = userFactory.checkGetUserAvatar(cover); + vo.setCover(cover); + return vo; }).toList(); - saveBatch(receivedList); - } - - - /** - * 更新系统消息 - * - * @param dto 系统消息更新 - */ - @Override - public void updateMessage(@Valid MessageUpdateDto dto) { - // 如果发送人为空设置当前登录的人的ID - Long sendUserId = dto.getSendUserId(); - if (sendUserId == null) dto.setSendUserId(BaseContext.getUserId()); - - // 如果接收人为空默认接收全部人 - List receivedUserIds = dto.getReceivedUserIds(); - if (receivedUserIds.isEmpty()) { - receivedUserIds = userMapper.selectList(null).stream().map(BaseEntity::getId).toList(); - } - - // 设置封面返回内容 - String cover = dto.getCover(); - dto.setCover(userFactory.checkGetUserAvatar(cover)); - - // 更新内容 - Message message = new Message(); - BeanUtils.copyProperties(dto, message); - message.setMessageType(dto.getMessageTypeId().toString()); - messageMapper.updateById(message); - - // 保存消息和用户之间关联数据 - List receivedList = receivedUserIds.stream().map(id -> { - MessageReceived messageReceived = new MessageReceived(); - messageReceived.setMessageId(dto.getId()); - messageReceived.setReceivedUserId(id); - - // 当更新的时当前消息用户表是否已读 - if (id.equals(dto.getReceivedUserId())) { - messageReceived.setStatus(dto.getStatus()); - } - return messageReceived; - }).toList(); - - // 删除这个消息id下所有用户消息关系内容 - baseMapper.deleteBatchIdsByMessageIdsWithPhysics(List.of(dto.getId())); - - // 插入接收者和消息表 - saveBatch(receivedList); + return PageResult.builder().list(voList).pageNo(page.getCurrent()) + .pageSize(page.getSize()).total(page.getTotal()) + .build(); } /** @@ -212,7 +130,7 @@ public class MessageReceivedServiceImpl extends ServiceImpl ids) { + public void userMarkAsRead(List ids) { // 判断ids是否为空 if (ids.isEmpty()) { throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); @@ -229,4 +147,28 @@ public class MessageReceivedServiceImpl extends ServiceImpl ids) { + // 判断ids是否为空 + if (ids.isEmpty()) { + throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); + } + + // 判断删除的是否是自己的消息 + List messageReceivedList = list(Wrappers.lambdaQuery().in(MessageReceived::getReceivedUserId, ids)); + messageReceivedList.forEach(messageReceived -> { + if (!messageReceived.getReceivedUserId().equals(BaseContext.getUserId())) { + throw new BunnyException(ResultCodeEnum.ILLEGAL_DATA_REQUEST); + } + }); + + // 根据当前用户id删除消息接受表中数据 + baseMapper.deleteBatchIdsWithPhysics(ids); + } + } 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 fdc51bd..1d16f0b 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,28 +2,38 @@ 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.MessageUserDto; +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.MessageUserVo; +import cn.bunny.dao.vo.system.message.MessageDetailVo; +import cn.bunny.dao.vo.system.message.MessageReceivedWithMessageVo; +import cn.bunny.dao.vo.system.message.MessageReceivedWithUserVo; import cn.bunny.dao.vo.system.message.MessageVo; 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 cn.bunny.services.service.MessageService; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -43,32 +53,46 @@ public class MessageServiceImpl extends ServiceImpl impl @Autowired private MessageReceivedMapper messageReceivedMapper; + @Autowired + private UserMapper userMapper; + + @Autowired + private MessageReceivedService messageReceivedService; + /** - * 分页查询用户消息 - * 查询用户消息关系表,找到当前用户所有的消息 - * 拿到用户消息关系表中数据只要MessageId - * 根据MessageId分页查询消息表 + * 分页查询发送消息 * - * @param pageParams 系统消息返回列表 - * @param dto 用户消息查询内容 - * @return 分页结果 + * @param pageParams 分页参数 + * @param dto 查询表单 + * @return 系统消息返回列表 */ @Override - public PageResult getUserMessageList(Page pageParams, MessageUserDto dto) { - // 根据消息所有包含匹配当前消息Id的列表 - IPage page = baseMapper.selectListByPageWithMessageUserDto(pageParams, dto, BaseContext.getUserId()); - List voList = page.getRecords().stream().map(messageVo -> { - MessageUserVo vo = new MessageUserVo(); - BeanUtils.copyProperties(messageVo, vo); + public PageResult getMessageList(Page pageParams, MessageDto dto) { + IPage page = baseMapper.selectListByPage(pageParams, dto); + List records = page.getRecords(); - // 设置封面返回内容 - String cover = vo.getCover(); - cover = userFactory.checkGetUserAvatar(cover); - vo.setCover(cover); - return vo; - }).toList(); + // 接受人昵称 + Map> receivedUserNicknameMap = records.stream() + .collect(Collectors.groupingBy( + MessageReceivedWithMessageVo::getId, + Collectors.mapping(MessageReceivedWithMessageVo::getReceivedUserNickname, Collectors.toList()))); - return PageResult.builder().list(voList).pageNo(page.getCurrent()) + // 接收人id + Map> receivedUserIdMap = records.stream() + .collect(Collectors.groupingBy( + MessageReceivedWithMessageVo::getId, + Collectors.mapping(messageWithMessageReceivedVo -> messageWithMessageReceivedVo.getId().toString(), Collectors.toList()))); + + List voList = records.stream() + .map(messageWithMessageReceivedVo -> { + MessageVo messageVo = new MessageVo(); + BeanUtils.copyProperties(messageWithMessageReceivedVo, messageVo); + messageVo.setReceivedUserNickname(receivedUserNicknameMap.get(messageWithMessageReceivedVo.getId())); + messageVo.setReceivedUserId(receivedUserIdMap.get(messageWithMessageReceivedVo.getId())); + return messageVo; + }).distinct().toList(); + + return PageResult.builder().list(voList).pageNo(page.getCurrent()) .pageSize(page.getSize()).total(page.getTotal()) .build(); } @@ -81,7 +105,7 @@ public class MessageServiceImpl extends ServiceImpl impl * @return 消息详情 */ @Override - public MessageVo getMessageDetailById(Long id) { + public MessageDetailVo getMessageDetailById(Long id) { // 将消息设为已读 MessageReceived messageReceived = new MessageReceived(); messageReceived.setReceivedUserId(BaseContext.getUserId()); @@ -99,19 +123,102 @@ public class MessageServiceImpl extends ServiceImpl impl } /** - * 用户删除消息 + * 根据消息id获取接收人信息 * - * @param ids 消息Id列表 + * @param messageId 消息id + * @return 消息接收人用户名等信息 */ @Override - public void deleteUserMessageByIds(List ids) { - // 判断ids是否为空 - if (ids.isEmpty()) { + public List getReceivedUserinfoByMessageId(Long messageId) { + if (messageId == null) { throw new BunnyException(ResultCodeEnum.REQUEST_IS_EMPTY); } + return baseMapper.selectUserinfoListByMessageId(messageId); + } - // 根据当前用户id删除消息接受表中数据 - messageReceivedMapper.deleteBatchIdsWithPhysics(ids); + /** + * 添加系统消息 + * 判断发送消息的接收人是否为空,如果为空默认是所有用户都是接受者 + * 之后要将消息的接受者要保存在,消息接收表中,在这之前是没有消息id的 + * 先要保存消息内容,之后获取到保存消息的id + * 将消息的id和接收者的id构建成map插入到消息接收表中 + * + * @param dto 系统消息添加 + */ + @Override + public void addMessage(@Valid MessageAddDto dto) { + // 如果发送人为空设置当前登录的人的ID + if (dto.getSendUserId() == null) dto.setSendUserId(BaseContext.getUserId()); + + // 设置封面返回内容 + String cover = dto.getCover(); + dto.setCover(userFactory.checkGetUserAvatar(cover)); + + // 先保存消息数据,之后拿到保存消息的id + Message message = new Message(); + BeanUtils.copyProperties(dto, message); + message.setMessageType(dto.getMessageTypeId().toString()); + save(message); + + // 如果接收人为空默认接收全部人 + List receivedUserIds = dto.getReceivedUserIds(); + if (receivedUserIds.isEmpty()) { + receivedUserIds = userMapper.selectList(null).stream().map(BaseEntity::getId).toList(); + } + + // 从之前保存的消息中获取消息id,保存到消息接收表中 + List receivedList = receivedUserIds.stream().map(id -> { + MessageReceived messageReceived = new MessageReceived(); + messageReceived.setMessageId(message.getId()); + messageReceived.setReceivedUserId(id); + messageReceived.setStatus(false); + return messageReceived; + }).toList(); + + messageReceivedService.saveBatch(receivedList); + } + + + /** + * 更新系统消息 + * + * @param dto 系统消息更新 + */ + @Override + public void updateMessage(@Valid MessageUpdateDto dto) { + // 如果发送人为空设置当前登录的人的ID + Long sendUserId = dto.getSendUserId(); + if (sendUserId == null) dto.setSendUserId(BaseContext.getUserId()); + + // 如果接收人为空默认接收全部人 + List receivedUserIds = dto.getReceivedUserIds(); + if (receivedUserIds.isEmpty()) { + receivedUserIds = userMapper.selectList(null).stream().map(BaseEntity::getId).toList(); + } + + // 设置封面返回内容 + String cover = dto.getCover(); + dto.setCover(userFactory.checkGetUserAvatar(cover)); + + // 更新内容 + Message message = new Message(); + BeanUtils.copyProperties(dto, message); + message.setMessageType(dto.getMessageTypeId().toString()); + baseMapper.updateById(message); + + // 保存消息和用户之间关联数据 + List receivedList = receivedUserIds.stream().map(id -> { + MessageReceived messageReceived = new MessageReceived(); + messageReceived.setMessageId(dto.getId()); + messageReceived.setReceivedUserId(id); + return messageReceived; + }).toList(); + + // 删除这个消息id下所有用户消息关系内容 + messageReceivedMapper.deleteBatchIdsByMessageIdsWithPhysics(List.of(dto.getId())); + + // 插入接收者和消息表 + messageReceivedService.saveBatch(receivedList); } /** @@ -123,10 +230,10 @@ public class MessageServiceImpl extends ServiceImpl impl */ @Override public void deleteMessage(List ids) { - // 物理删除消息表数据 + // 根据消息id物理删除 baseMapper.deleteBatchIdsWithPhysics(ids); - // 根据消息Id物理删除接受者消息 + // 根据消息Id物理删除用户消息表 messageReceivedMapper.deleteBatchIdsByMessageIdsWithPhysics(ids); } } diff --git a/service/src/main/resources/mapper/MessageMapper.xml b/service/src/main/resources/mapper/MessageMapper.xml index 1d2bec9..77a3090 100644 --- a/service/src/main/resources/mapper/MessageMapper.xml +++ b/service/src/main/resources/mapper/MessageMapper.xml @@ -26,41 +26,63 @@ 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.id, + message.create_time, + message.update_time, + message.create_user, + message.update_user, + message.is_deleted, message.title, + message.send_user_id, + send_user.nickname AS send_nickname, + message.content, message.cover, message.summary, + message.editor_type, message.level, message.extra, - message.update_time, + message_received.received_user_id AS received_user_id, message_received.id AS message_received_id, - message_received.status AS status, - message_type.message_type AS message_type + 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 FROM sys_message message - LEFT JOIN sys_user create_user ON create_user.id = message.create_user - LEFT JOIN sys_user update_user ON update_user.id = message.update_user + LEFT JOIN sys_message_received message_received ON message.id = message_received.message_id LEFT JOIN sys_message_type message_type ON message_type.id = message.message_type - INNER JOIN sys_message_received message_received ON message_received.received_user_id = #{userId} - AND message.id = message_received.message_id + 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 received_user.id = message_received.received_user_id + LEFT JOIN sys_user send_user ON send_user.id = message.send_user_id message.is_deleted = 0 - - and message_received.status = #{dto.status} + + and message.title like CONCAT('%',#{dto.title},'%') + + + and send_user.nickname like CONCAT('%',#{dto.sendNickname},'%') and message_type.message_type = #{dto.messageType} - - and message.title like CONCAT('%',#{dto.title},'%') + + and message.editor_type = #{dto.editorType} + + + and message.level = #{dto.level} + + + and message.extra like CONCAT('%',#{dto.extra},'%') - SELECT message.*, send_user.nickname AS send_nickname FROM sys_message message @@ -80,4 +102,16 @@ + + + diff --git a/service/src/main/resources/mapper/MessageReceivedMapper.xml b/service/src/main/resources/mapper/MessageReceivedMapper.xml index f84bf81..af6229d 100644 --- a/service/src/main/resources/mapper/MessageReceivedMapper.xml +++ b/service/src/main/resources/mapper/MessageReceivedMapper.xml @@ -50,7 +50,7 @@ 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 + message_received.is_deleted = 0 and message.title like CONCAT('%',#{dto.title},'%') @@ -58,10 +58,7 @@ 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_type.message_type = #{dto.messageType} and message.editor_type = #{dto.editorType} @@ -98,16 +95,37 @@ - - + SELECT + message.id, + message.title, + message.cover, + message.summary, + message.level, + message.extra, + message.update_time, + message_received.id AS message_received_id, + message_received.status AS status, + message_type.message_type AS message_type + FROM sys_message message + LEFT JOIN sys_user create_user ON create_user.id = message.create_user + LEFT JOIN sys_user update_user ON update_user.id = message.update_user + LEFT JOIN sys_message_type message_type ON message_type.id = message.message_type + INNER JOIN sys_message_received message_received ON message_received.received_user_id = #{userId} + AND message.id = message_received.message_id + + message.is_deleted = 0 + + and message_received.status = #{dto.status} + + + and message_type.message_type = #{dto.messageType} + + + and message.title like CONCAT('%',#{dto.title},'%') + +