Selaa lähdekoodia

更新系统消息

igl 1 vuosi sitten
vanhempi
commit
763c24de93

+ 2 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/DynamicContentDTO.java

@@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
-import java.util.Date;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -94,7 +94,7 @@ public class DynamicContentDTO implements Serializable {
   /**
    * 创建时间
    */
-  private Date createTime;
+  private LocalDateTime createTime;
 
   /**
    * 动态资源

+ 12 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/EvaluateDTO.java

@@ -6,6 +6,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 
 @Data
 @SuperBuilder
@@ -35,7 +36,7 @@ public class EvaluateDTO implements Serializable {
     private Long targetUserId;
 
     /**
-     * 操作类型:1-点赞;2-踩
+     * 操作类型:1-点赞;2-踩;3-动态评论
      */
     private Integer operaterType;
 
@@ -48,4 +49,14 @@ public class EvaluateDTO implements Serializable {
      * 内容标识
      */
     private Long contentId;
+
+    /**
+     * 类型 1:评论消息;2-点赞消息
+     */
+    private Integer type;
+
+    /**
+     * 时间
+     */
+    private LocalDateTime createTime;
 }

+ 3 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddDynamicCommentParam.java

@@ -43,4 +43,7 @@ public class AddDynamicCommentParam implements Serializable {
      */
     @NotNull(message = "状态:0-正常;1-屏蔽不能为空")
     private Integer status;
+
+    @NotNull(message = "动态/评论用户标识")
+    private Long targetUserId;
 }

+ 1 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddDynamicEvaluateRecordParam.java

@@ -42,5 +42,6 @@ public class AddDynamicEvaluateRecordParam implements Serializable {
     @NotNull(message = "内容标识不能为空")
     private Long contentId;
 
+    @NotNull(message = "动态/回复用户标识")
     private Long targetUserId;
 }

+ 9 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/DynamicCommentMapper.java

@@ -6,12 +6,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.chelvc.cloud.vehicle.api.dto.DynamicCommentDTO;
+import com.chelvc.cloud.vehicle.api.dto.EvaluateDTO;
 import com.chelvc.cloud.vehicle.server.entity.DynamicComment;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 动态评论Mapper接口
  *
@@ -41,4 +44,10 @@ public interface DynamicCommentMapper extends BaseMapper<DynamicComment> {
     int addComment(Long dynamicId);
 
     IPage<DynamicCommentDTO> queryAll(@Param("page") Page<DynamicCommentDTO> page, @Param(Constants.WRAPPER) QueryWrapper<DynamicComment> queryWrapper);
+
+    Integer queryNewInformNum(@Param("userId")Long userId);
+
+    Long selectTotalByUserId(@Param("userId") Long userId);
+
+    List<EvaluateDTO> selectEvaluateListByUserId(@Param("userId")Long userId, @Param("number")int number, @Param("size")int size);
 }

+ 8 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/DynamicComment.java

@@ -37,6 +37,10 @@ public class DynamicComment implements Entity<Long> {
      * 用户标识
      */
     private Long userId;
+    /**
+     * 目标用户标识
+     */
+    private Long targetUserId;
     /**
      * 父级评论(0表示为根评论)
      */
@@ -81,4 +85,8 @@ public class DynamicComment implements Entity<Long> {
      * 更新时间
      */
     private Date updateTime;
+    /**
+     * 标识:0-未读;1-已读
+     */
+    private Integer flag;
 }

+ 4 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/DynamicContent.java

@@ -9,7 +9,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 
 /**
  * 动态信息对象 dynamic_content
@@ -24,6 +24,7 @@ import java.util.Date;
 @TableName(autoResultMap = true)
 public class DynamicContent implements Entity<Long> {
 
+    private static final long serialVersionUID = -6655494945322604614L;
     /**
      * 主键
      */
@@ -77,9 +78,9 @@ public class DynamicContent implements Entity<Long> {
     /**
      * 创建时间
      */
-    private Date createTime;
+    private LocalDateTime createTime;
     /**
      * 更新时间
      */
-    private Date updateTime;
+    private LocalDateTime updateTime;
 }

+ 13 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/DynamicCommentService.java

@@ -3,9 +3,11 @@ package com.chelvc.cloud.vehicle.server.service;
 
 import com.chelvc.cloud.vehicle.api.constant.ExamineType;
 import com.chelvc.cloud.vehicle.api.dto.DynamicCommentDTO;
+import com.chelvc.cloud.vehicle.api.dto.EvaluateDTO;
 import com.chelvc.cloud.vehicle.api.param.AddDynamicCommentParam;
 import com.chelvc.cloud.vehicle.api.param.QueryDynamicCommentParam;
 import com.chelvc.framework.common.model.Pagination;
+import com.chelvc.framework.common.model.Paging;
 
 /**
  * 动态评论Service接口
@@ -64,4 +66,15 @@ public interface DynamicCommentService {
      * 查询评论信息
      */
     DynamicCommentDTO queryById(Long id);
+
+    /**
+     * 查看新消息
+     * @param userId
+     * @return
+     */
+    Integer queryNewInformNum(Long userId);
+
+    Pagination<EvaluateDTO> selectEvaluateListByUserId(Long userId, Paging paging);
+
+    void changeEvaluateInformFlag(Long userId);
 }

+ 0 - 5
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/DynamicEvaluateRecordService.java

@@ -2,9 +2,6 @@ package com.chelvc.cloud.vehicle.server.service;
 
 
 import com.chelvc.cloud.vehicle.api.dto.DynamicEvaluateRecordDTO;
-import com.chelvc.cloud.vehicle.api.dto.EvaluateDTO;
-import com.chelvc.framework.common.model.Pagination;
-import com.chelvc.framework.common.model.Paging;
 
 /**
  * 内容评价(点赞/踩)列Service接口
@@ -29,6 +26,4 @@ public interface DynamicEvaluateRecordService {
      * @param userId 用户id
      */
     void changeEvaluateInformFlag(Long userId);
-
-    Pagination<EvaluateDTO> selectEvaluateListByUserId(Long userId, Paging paging);
 }

+ 57 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicCommentServiceImpl.java

@@ -15,6 +15,7 @@ import com.chelvc.cloud.vehicle.api.constant.ExamineType;
 import com.chelvc.cloud.vehicle.api.constant.RecordType;
 import com.chelvc.cloud.vehicle.api.dto.DynamicCommentDTO;
 import com.chelvc.cloud.vehicle.api.dto.DynamicEvaluateRecordDTO;
+import com.chelvc.cloud.vehicle.api.dto.EvaluateDTO;
 import com.chelvc.cloud.vehicle.api.param.AddDynamicCommentParam;
 import com.chelvc.cloud.vehicle.api.param.QueryAdminDynamicParam;
 import com.chelvc.cloud.vehicle.api.param.QueryDynamicCommentParam;
@@ -91,7 +92,7 @@ public class DynamicCommentServiceImpl implements DynamicCommentService,
             List<UserDTO> users = this.userService.listUsers(userIds);
             Map<Long, UserDTO> map = users.stream().collect(Collectors.toMap(UserDTO::getId, user -> user));
             records.forEach(e -> {
-                e.setUserDTO(map == null ? new UserDTO() : map.get(e.getUserId()));
+                e.setUserDTO(map.get(e.getUserId()));
                 DynamicEvaluateRecordDTO dto = service.queryOperaterType(e.getId(),
                         userId, RecordType.COMMENT.getValue());
                 if (dto == null) {
@@ -273,4 +274,59 @@ public class DynamicCommentServiceImpl implements DynamicCommentService,
         }
         return ObjectUtils.copying(dynamicComment, DynamicCommentDTO.class);
     }
+
+    @Override
+    public Integer queryNewInformNum(Long userId) {
+        return baseMapper.queryNewInformNum(userId);
+    }
+
+    @Override
+    public Pagination<EvaluateDTO> selectEvaluateListByUserId(Long userId, Paging paging) {
+        int pageNum = (paging.getNumber() - 1) * paging.getSize();
+        if(pageNum < 0){
+            return null;
+        }
+        Long total = baseMapper.selectTotalByUserId(userId);
+        List<EvaluateDTO> copy = baseMapper.selectEvaluateListByUserId(userId, pageNum, paging.getSize());
+        if (copy != null && copy.size() > 0) {
+            for (EvaluateDTO evaluateDTO : copy) {
+                Integer contentType = evaluateDTO.getContentType();
+                if (contentType == 1) {
+                    evaluateDTO.setDynamicContentDTO(dynamicContentService.queryById(evaluateDTO.getContentId(),
+                            evaluateDTO.getUserId()));
+                } else {
+                    DynamicCommentDTO dynamicCommentDTO = queryById(evaluateDTO.getContentId());
+                    if (dynamicCommentDTO != null) {
+                        evaluateDTO.setDynamicContentDTO(dynamicContentService.queryById(dynamicCommentDTO.getDynamicId(), evaluateDTO.getUserId()));
+                    }
+                    evaluateDTO.setDynamicCommentDTO(dynamicCommentDTO);
+                }
+            }
+        }
+        return Pagination.<EvaluateDTO>builder().total(total).pages(getPage((long) paging.getSize(), total))
+                .records(copy).build();
+    }
+
+    @Override
+    public void changeEvaluateInformFlag(Long userId) {
+        dynamicEvaluateRecordService.changeEvaluateInformFlag(userId);
+        LambdaUpdateWrapper<DynamicComment> lwq = Wrappers.lambdaUpdate();
+        lwq.eq(DynamicComment::getTargetUserId, userId);
+        lwq.eq(DynamicComment::getFlag, 0);
+        lwq.set(DynamicComment::getFlag, 1);
+        baseMapper.update(null, lwq);
+    }
+
+    public long getPage(Long size, Long total){
+        if (size == 0L) {
+            return 0L;
+        } else {
+            long pages = total / size;
+            if (total % size != 0L) {
+                ++pages;
+            }
+
+            return pages;
+        }
+    }
 }

+ 0 - 30
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicEvaluateRecordServiceImpl.java

@@ -3,13 +3,10 @@ package com.chelvc.cloud.vehicle.server.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.api.constant.ActionType;
 import com.chelvc.cloud.vehicle.api.constant.RecordType;
-import com.chelvc.cloud.vehicle.api.dto.DynamicCommentDTO;
 import com.chelvc.cloud.vehicle.api.dto.DynamicEvaluateRecordDTO;
-import com.chelvc.cloud.vehicle.api.dto.EvaluateDTO;
 import com.chelvc.cloud.vehicle.api.param.AddDynamicEvaluateRecordParam;
 import com.chelvc.cloud.vehicle.server.dao.DynamicEvaluateRecordMapper;
 import com.chelvc.cloud.vehicle.server.entity.DynamicEvaluateRecord;
@@ -18,8 +15,6 @@ import com.chelvc.cloud.vehicle.server.service.DynamicContentService;
 import com.chelvc.cloud.vehicle.server.service.DynamicEvaluateRecordService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
 import com.chelvc.framework.common.function.Executor;
-import com.chelvc.framework.common.model.Pagination;
-import com.chelvc.framework.common.model.Paging;
 import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.RequiredArgsConstructor;
@@ -120,31 +115,6 @@ public class DynamicEvaluateRecordServiceImpl extends ServiceImpl<DynamicEvaluat
         baseMapper.update(null, lwq);
     }
 
-    @Override
-    public Pagination<EvaluateDTO> selectEvaluateListByUserId(Long userId, Paging paging) {
-        Page<DynamicEvaluateRecord> page = this.lambdaQuery()
-                .eq(DynamicEvaluateRecord::getTargetUserId, userId)
-                .orderByAsc(DynamicEvaluateRecord::getCreateTime).page(DatabaseContextHolder.page(paging));
-        List<DynamicEvaluateRecord> dynamicEvaluateRecords = page.getRecords();
-        List<EvaluateDTO> copy = ObjectUtils.copying(dynamicEvaluateRecords, EvaluateDTO.class);
-        if (copy != null && copy.size() > 0) {
-            for (EvaluateDTO evaluateDTO : copy) {
-                Integer contentType = evaluateDTO.getContentType();
-                if (contentType == 1) {
-                    evaluateDTO.setDynamicContentDTO(iDynamicContentService.queryById(evaluateDTO.getContentId(),
-                            evaluateDTO.getUserId()));
-                } else {
-                    DynamicCommentDTO dynamicCommentDTO = iDynamicCommentService.queryById(evaluateDTO.getContentId());
-                    if (dynamicCommentDTO != null) {
-                        evaluateDTO.setDynamicContentDTO(iDynamicContentService.queryById(dynamicCommentDTO.getDynamicId(), evaluateDTO.getUserId()));
-                    }
-                    evaluateDTO.setDynamicCommentDTO(dynamicCommentDTO);
-                }
-            }
-        }
-        return DatabaseContextHolder.pagination(page, copy);
-    }
-
     /**
      * 判断该用户是否有点赞/踩记录,点击新增记录,取消删除记录
      *

+ 4 - 9
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/InformServiceImpl.java

@@ -15,18 +15,13 @@ import org.springframework.stereotype.Service;
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
 @DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.InformService.class)
 public class InformServiceImpl implements InformService {
-
     private final IOmsOrderOperateHistoryService omsOrderOperateHistoryService;
-
     private final DynamicEvaluateRecordService dynamicEvaluateRecordService;
-
     private final UserCouponService userCouponService;
-
     private final OmsOrderPayHistoryService omsOrderPayHistoryService;
-
     private final CommentService commentService;
-
     private final IOmsOrderReturnApplyService omsOrderReturnApplyService;
+    private final DynamicCommentService dynamicCommentService;
 
     @Override
     public Pagination<OmsOrderOperateHistoryDTO> selectOmsOrderOperateHistoryListByUserId(Long userId, Paging paging) {
@@ -45,14 +40,14 @@ public class InformServiceImpl implements InformService {
             case COMMENT:
                 commentService.changeCommentInformFlag(userId);
             case EVALUATE:
-                dynamicEvaluateRecordService.changeEvaluateInformFlag(userId);
+                dynamicCommentService.changeEvaluateInformFlag(userId);
         }
     }
 
     @Override
     public NewInformDTO getNewInform(Long userId) {
         NewInformDTO newInformDTO = new NewInformDTO();
-        Integer evaluate = dynamicEvaluateRecordService.queryNewInformNum(userId);
+        Integer evaluate = dynamicCommentService.queryNewInformNum(userId);
         newInformDTO.setEvaluate(evaluate);
         Integer order = omsOrderOperateHistoryService.queryNewInformNum(userId);
         newInformDTO.setOrder(order);
@@ -85,7 +80,7 @@ public class InformServiceImpl implements InformService {
 
     @Override
     public Pagination<EvaluateDTO> selectEvaluateListByUserId(Long userId, Paging paging) {
-        return dynamicEvaluateRecordService.selectEvaluateListByUserId(userId, paging);
+        return dynamicCommentService.selectEvaluateListByUserId(userId, paging);
     }
 
     @Override

+ 2 - 2
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserInviteServiceImpl.java

@@ -118,11 +118,11 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
     public TeamDTO teamList(TeamInvitePageParam param, Long userId) {
         TeamDTO dto = new TeamDTO();
         Paging paging = param.getPaging();
-        int pageNum = (paging.getIndex() - 1) * paging.getNumber();
+        int pageNum = (paging.getNumber() - 1) * paging.getSize();
         if(pageNum < 0){
             return dto;
         }
-        List<TeamDetailsDTO> records = baseMapper.teamList(param.getType(), pageNum, paging.getNumber(), userId);
+        List<TeamDetailsDTO> records = baseMapper.teamList(param.getType(), pageNum, paging.getSize(), userId);
         if(CollectionUtils.isEmpty(records)){
             return dto;
         }

+ 49 - 0
vehicle-server/src/main/resources/mapper/DynamicCommentMapper.xml

@@ -35,4 +35,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         dynamic_comment t1
         ${ew.getCustomSqlSegment}
     </select>
+
+    <select id="queryNewInformNum" parameterType="java.lang.Long" resultType="java.lang.Integer">
+        select SUM(z.a) from (
+            select count(c.id) as a from dynamic_comment c where c.target_user_id = #{userId} and c.flag = 0
+            union all
+            select count(e.id) from dynamic_evaluate_record e where e.target_user_id = #{userId} and e.flag = 0
+        ) as z
+    </select>
+
+    <select id="selectTotalByUserId" parameterType="java.lang.Long" resultType="java.lang.Long">
+        select SUM(z.a) from (
+            select count(c.id) as a from dynamic_comment c where c.target_user_id = #{userId}
+            union all
+            select count(e.id) from dynamic_evaluate_record e where e.target_user_id = #{userId}
+        ) as z
+    </select>
+
+    <select id="selectEvaluateListByUserId" resultType="com.chelvc.cloud.vehicle.api.dto.EvaluateDTO">
+        SELECT
+            c.id AS id,
+            c.user_id AS userId,
+            c.target_user_id AS targetUserId,
+            3 AS operaterType,
+            1 AS contentType,
+            c.dynamic_id AS contentId,
+            1 AS type,
+            c.create_time AS createTime
+        FROM
+            dynamic_comment c
+        WHERE
+            c.target_user_id = #{userId}
+        UNION ALL
+        SELECT
+            e.id AS id,
+            e.user_id AS userId,
+            e.target_user_id AS targetUserId,
+            e.operater_type AS operaterType,
+            e.content_type AS contentType,
+            e.content_id AS contentId,
+            2 AS type,
+            e.create_time AS createTime
+        FROM
+            dynamic_evaluate_record e
+        WHERE
+            e.target_user_id = #{userId}
+        ORDER BY
+            createTime DESC
+        limit #{number}, #{size}
+    </select>
 </mapper>