|
|
@@ -0,0 +1,170 @@
|
|
|
+package com.storlead.message.controller;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+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.storlead.frame.auth.util.LoginUserUtil;
|
|
|
+import com.storlead.frame.core.assemble.Result;
|
|
|
+import com.storlead.message.enums.MessageTypeEnum;
|
|
|
+import com.storlead.message.pojo.dto.MessageDTO;
|
|
|
+import com.storlead.message.pojo.dto.MessageTestDTO;
|
|
|
+import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
|
|
|
+import com.storlead.message.pojo.vo.MessageDetailVO;
|
|
|
+import com.storlead.message.pojo.vo.MessageNoReadTotalVO;
|
|
|
+import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
|
|
|
+import com.storlead.message.service.InsideMessageSendLogService;
|
|
|
+import com.storlead.sales.customer.service.MessageAssembleService;
|
|
|
+import io.swagger.annotations.*;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @program: sp-sales-platform
|
|
|
+ * @description:
|
|
|
+ * @author: chenkq
|
|
|
+ * @create: 2024-04-19 16:36
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("/sys/inside/message")
|
|
|
+@Api(tags = "消息系统: 站内消息相关接口")
|
|
|
+public class MessageApiController {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private InsideMessageSendLogService messageSendLogService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MessageAssembleService assembleService;
|
|
|
+
|
|
|
+ @PostMapping(value = "/testMessage")
|
|
|
+ @ApiOperation(value = "测试客户消息" )
|
|
|
+ @ApiResponses({
|
|
|
+ @ApiResponse(code = 200, message = "", response = MessageDetailVO.class)
|
|
|
+ })
|
|
|
+ public Result<?> testMessage(MessageTestDTO dto) {
|
|
|
+ assembleService.sendCustomerEventMessages(dto.getDataId(),dto.getEventCode(),dto.getToUserIds());
|
|
|
+ return Result.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping(value = "/getMessageTypes")
|
|
|
+ @ApiOperation(value = "获取分类" )
|
|
|
+ @ApiResponses({
|
|
|
+ @ApiResponse(code = 200, message = "", response = MessageDetailVO.class)
|
|
|
+ })
|
|
|
+ public Result<?> getMessageTypes(MessageTestDTO dto) {
|
|
|
+ assembleService.sendCustomerEventMessages(dto.getDataId(),dto.getEventCode(),dto.getToUserIds());
|
|
|
+ return Result.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping(value = "/pageList")
|
|
|
+ @ApiOperation(value = "获取当前用户的站内消息" )
|
|
|
+ @ApiResponses({
|
|
|
+ @ApiResponse(code = 200, message = "", response = MessageDetailVO.class)
|
|
|
+ })
|
|
|
+ public Result<?> getMessage(MessageDTO dto) {
|
|
|
+ Page<InsideMessageSendLogEntity> page = new Page<>(dto.getPageIndex(),dto.getPageSize());
|
|
|
+ QueryWrapper<InsideMessageSendLogEntity> queryWrapper = new QueryWrapper();
|
|
|
+ queryWrapper.eq("mlog.receiver_user_id", LoginUserUtil.getCurrentUserId());
|
|
|
+ if (Objects.nonNull(dto.getMessageType())) {
|
|
|
+ queryWrapper.eq("mr.message_type",dto.getMessageType());
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(dto.getIsRead())) {
|
|
|
+ queryWrapper.eq("mlog.is_read",dto.getIsRead());
|
|
|
+ queryWrapper.eq("mlog.is_read",dto.getIsRead());
|
|
|
+ }
|
|
|
+ queryWrapper.eq("mlog.is_delete",Integer.valueOf(0));
|
|
|
+ queryWrapper.orderByAsc("mlog.is_read");
|
|
|
+ queryWrapper.orderByDesc("mlog.id");
|
|
|
+ IPage<MessageDetailVO> pageList = messageSendLogService.queryListMessageLog(page,queryWrapper);
|
|
|
+ return Result.ok(pageList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping(value = "/read")
|
|
|
+ @ApiOperation(value = "更新为已读" )
|
|
|
+ public Result<?> updateStatus(Long [] messageLogIds) {
|
|
|
+ if (Objects.isNull(messageLogIds) || messageLogIds.length == 0) {
|
|
|
+ return Result.error("参数错误");
|
|
|
+ }
|
|
|
+ LambdaUpdateWrapper<InsideMessageSendLogEntity> updateWrapper = new LambdaUpdateWrapper();
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getId,messageLogIds);
|
|
|
+ updateWrapper.eq(InsideMessageSendLogEntity::getIsDelete,Integer.valueOf(0));
|
|
|
+ updateWrapper.set(InsideMessageSendLogEntity::getIsRead,1);
|
|
|
+ return Result.ok(messageSendLogService.update(updateWrapper));
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping(value = "/readAll")
|
|
|
+ @ApiOperation(value = "更新为已读" )
|
|
|
+ public Result<?> readAll(@ApiParam(value = "") Integer messageType) {
|
|
|
+ LambdaUpdateWrapper<InsideMessageSendLogEntity> updateWrapper = new LambdaUpdateWrapper();
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getReceiverUserId,LoginUserUtil.getCurrentUserId());
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getIsDelete,Integer.valueOf(0));
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getIsRead,Integer.valueOf(0));
|
|
|
+ if (Objects.nonNull(messageType)) {
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getMessageType,messageType);
|
|
|
+ }
|
|
|
+ updateWrapper.set(InsideMessageSendLogEntity::getIsRead,1);
|
|
|
+ return Result.ok(messageSendLogService.update(updateWrapper));
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping(value = "/cleanAll")
|
|
|
+ @ApiOperation(value = "清除消息" )
|
|
|
+ public Result<?> cleanAll(MessageDTO dto) {
|
|
|
+ LambdaUpdateWrapper<InsideMessageSendLogEntity> updateWrapper = new LambdaUpdateWrapper();
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getReceiverUserId,LoginUserUtil.getCurrentUserId());
|
|
|
+ if (Objects.nonNull(dto.getMessageType())) {
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getMessageType,dto.getMessageType());
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(dto.getIsRead())) {
|
|
|
+ updateWrapper.in(InsideMessageSendLogEntity::getIsRead,dto.getIsRead());
|
|
|
+ }
|
|
|
+ updateWrapper.eq(InsideMessageSendLogEntity::getIsDelete,Integer.valueOf(0));
|
|
|
+ updateWrapper.set(InsideMessageSendLogEntity::getIsDelete,1);
|
|
|
+ return Result.ok(messageSendLogService.update(updateWrapper));
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping(value = "/getMessageCount")
|
|
|
+ @ApiOperation(value = "获取未读消息数" )
|
|
|
+ public Result<?> getMessageCount(MessageDTO dto) {
|
|
|
+ QueryWrapper<InsideMessageSendLogEntity> queryWrapper = new QueryWrapper();
|
|
|
+ queryWrapper.eq("mlog.receiver_user_id", LoginUserUtil.getCurrentUserId());
|
|
|
+ queryWrapper.eq("mlog.is_read",0);
|
|
|
+ if (Objects.nonNull(dto.getMessageType())) {
|
|
|
+ queryWrapper.eq("mr.message_type",dto.getMessageType());
|
|
|
+ }
|
|
|
+ queryWrapper.eq("mlog.is_delete",Integer.valueOf(0));
|
|
|
+ MessageNoReadTotalVO countMap = messageSendLogService.countNoReadtotal(queryWrapper);
|
|
|
+ return Result.ok(countMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping(value = "/getNoReadCount")
|
|
|
+ @ApiOperation(value = "获取未读消息数" )
|
|
|
+ public Result<?> getNoReadCount(MessageDTO dto) {
|
|
|
+ QueryWrapper<InsideMessageSendLogEntity> queryWrapper = new QueryWrapper();
|
|
|
+ queryWrapper.eq("mlog.receiver_user_id", LoginUserUtil.getCurrentUserId());
|
|
|
+ queryWrapper.eq("mlog.is_read",0);
|
|
|
+ List<String> types = new ArrayList<>();
|
|
|
+ if (Objects.nonNull(dto.getMessageType())) {
|
|
|
+ queryWrapper.eq("mlog.message_type",dto.getMessageType());
|
|
|
+ types.add(dto.getMessageType());
|
|
|
+ }
|
|
|
+ queryWrapper.eq("mlog.is_delete",Integer.valueOf(0));
|
|
|
+ List<MessageTypeReadStateVO> statuVOS = messageSendLogService.getCountNoReadCount(queryWrapper);
|
|
|
+
|
|
|
+ List<MessageTypeReadStateVO> readStatels = MessageTypeEnum.getMessageTypeReadStatels(types);
|
|
|
+ Map<Integer, Integer> statuMap = statuVOS.stream()
|
|
|
+ .collect(Collectors.toMap(MessageTypeReadStateVO::getMessageType, MessageTypeReadStateVO::getStateNumber));
|
|
|
+ for (MessageTypeReadStateVO readState : readStatels) {
|
|
|
+ readState.setStateNumber(statuMap.getOrDefault(readState.getMessageType(),0));
|
|
|
+ }
|
|
|
+ return Result.ok(readStatels);
|
|
|
+ }
|
|
|
+}
|