Browse Source

发送信息

wangqifan 3 years ago
parent
commit
fe3b3e56c8

+ 2 - 0
src/main/java/com/izouma/nineth/config/RedisKeys.java

@@ -54,4 +54,6 @@ public class RedisKeys {
     public static final String DRAW_BLIND_BOX = "drawBlindBox::";
 
     public static final String COLLECTION_NUMBER = "collectionNumber::";
+
+    public static final String USER_CHECKOUT_TIME = "tIdAccId::";
 }

+ 2 - 0
src/main/java/com/izouma/nineth/domain/netease/Team.java

@@ -41,5 +41,7 @@ public class Team extends BaseEntityNoID {
 
     @Transient
     private boolean inTeam;
+    @Transient
+    private Long    unread;
 
 }

+ 6 - 1
src/main/java/com/izouma/nineth/repo/Netease/NeteaseMessageRepo.java → src/main/java/com/izouma/nineth/repo/netease/NeteaseMessageRepo.java

@@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.time.LocalDateTime;
 import java.util.List;
 
 public interface NeteaseMessageRepo extends JpaRepository<NeteaseMessage, Long>, JpaSpecificationExecutor<NeteaseMessage> {
@@ -15,6 +16,10 @@ public interface NeteaseMessageRepo extends JpaRepository<NeteaseMessage, Long>,
     @Transactional
     void softDelete(Long id);
 
-    @Query(value = "select * from netease_message n where n.to_id = ?1 and n.ope = ?2 order by n.created_at desc limit 100",nativeQuery = true)
+    @Query(value = "select * from netease_message n where n.to_id = ?1 and n.ope = ?2 order by n.created_at desc limit 100", nativeQuery = true)
     List<NeteaseMessage> findAllByToIdAndOpe(String toId, Integer ope);
+
+    Long countAllByToIdAndOpeAndCreatedAtAfter(String toId, Integer ope, LocalDateTime createdAt);
+
+    Long countAllByToIdAndOpe(String toId, Integer ope);
 }

+ 1 - 1
src/main/java/com/izouma/nineth/repo/Netease/TeamRepo.java → src/main/java/com/izouma/nineth/repo/netease/TeamRepo.java

@@ -1,4 +1,4 @@
-package com.izouma.nineth.repo.Netease;
+package com.izouma.nineth.repo.netease;
 
 import com.izouma.nineth.domain.netease.Team;
 import org.springframework.data.jpa.repository.JpaRepository;

+ 1 - 4
src/main/java/com/izouma/nineth/service/netease/NeteaseMessageService.java

@@ -6,17 +6,14 @@ import com.izouma.nineth.domain.User;
 import com.izouma.nineth.domain.netease.NeteaseMessage;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.exception.BusinessException;
-import com.izouma.nineth.repo.UserRepo;
 import com.izouma.nineth.repo.netease.NeteaseMessageRepo;
+import com.izouma.nineth.repo.UserRepo;
 import com.izouma.nineth.utils.JpaUtils;
 import lombok.AllArgsConstructor;
-import net.bytebuddy.agent.builder.AgentBuilder;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
-import java.sql.Timestamp;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 @Service

+ 28 - 5
src/main/java/com/izouma/nineth/service/netease/TeamService.java

@@ -2,20 +2,23 @@ package com.izouma.nineth.service.netease;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.izouma.nineth.config.RedisKeys;
 import com.izouma.nineth.domain.netease.Team;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.exception.BusinessException;
-import com.izouma.nineth.repo.Netease.TeamRepo;
-import com.izouma.nineth.service.netease.NeteaseUserService;
+import com.izouma.nineth.repo.netease.NeteaseMessageRepo;
+import com.izouma.nineth.repo.netease.TeamRepo;
+import com.izouma.nineth.utils.DateTimeUtils;
 import com.izouma.nineth.utils.JpaUtils;
 import com.izouma.nineth.utils.SecurityUtils;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
-import java.lang.reflect.Member;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -25,8 +28,10 @@ import java.util.Map;
 @AllArgsConstructor
 public class TeamService {
 
-    private TeamRepo           teamRepo;
-    private NeteaseUserService neteaseUserService;
+    private TeamRepo                      teamRepo;
+    private NeteaseUserService            neteaseUserService;
+    private RedisTemplate<String, Object> redisTemplate;
+    private NeteaseMessageRepo            neteaseMessageRepo;
 
     public Page<Team> all(PageQuery pageQuery) {
         Long userId = SecurityUtils.getAuthenticatedUser().getId();
@@ -47,6 +52,7 @@ public class TeamService {
                     }
                 }
             }
+            team.setUnread(getUnreadCount(userId.toString(), team.getTid().toString()));
             team.setInTeam(inTeam);
             newContent.add(team);
         });
@@ -96,4 +102,21 @@ public class TeamService {
         team.setMembers(members);
         return teamRepo.save(team);
     }
+
+    public void checkout(String accid, String tid) {
+        Long ts = DateTimeUtils.toTimestamp(LocalDateTime.now());
+        redisTemplate.opsForValue().set(RedisKeys.USER_CHECKOUT_TIME + accid + ":" + tid, ts);
+    }
+
+    public Long getUnreadCount(String accid, String tid) {
+        Long ts = (Long) redisTemplate.opsForValue().get(RedisKeys.USER_CHECKOUT_TIME + accid + ":" + tid);
+        Long unreadCount = 0L;
+        if (ts != null) {
+            LocalDateTime localDateTime = DateTimeUtils.toLocalDateTime(ts);
+            unreadCount = neteaseMessageRepo.countAllByToIdAndOpeAndCreatedAtAfter(tid, 1, localDateTime);
+        } else {
+            unreadCount = neteaseMessageRepo.countAllByToIdAndOpe(tid, 1);
+        }
+        return unreadCount;
+    }
 }

+ 0 - 0
src/main/java/com/izouma/nineth/web/Netease/NeteaseMessageController.java → src/main/java/com/izouma/nineth/web/netease/NeteaseMessageController.java


+ 2 - 3
src/main/java/com/izouma/nineth/web/Netease/TeamController.java → src/main/java/com/izouma/nineth/web/netease/TeamController.java

@@ -1,4 +1,4 @@
-package com.izouma.nineth.web.Netease;
+package com.izouma.nineth.web.netease;
 
 import com.izouma.nineth.service.netease.TeamService;
 import com.izouma.nineth.web.BaseController;
@@ -6,7 +6,7 @@ import com.izouma.nineth.domain.netease.Team;
 
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.exception.BusinessException;
-import com.izouma.nineth.repo.Netease.TeamRepo;
+import com.izouma.nineth.repo.netease.TeamRepo;
 import com.izouma.nineth.utils.excel.ExcelUtils;
 
 import lombok.AllArgsConstructor;
@@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.Collections;
 import java.util.List;
 
 @RestController

+ 2 - 2
src/test/java/com/izouma/nineth/service/UserServiceTest.java

@@ -249,8 +249,8 @@ public class UserServiceTest extends ApplicationTests {
     public void sendMessage() {
         NeteaseMessage neteaseMessage = new NeteaseMessage();
         neteaseMessage.setFromId("9859");
-        neteaseMessage.setToId("9850");
-        neteaseMessage.setOpe(0);
+        neteaseMessage.setToId("7807550605");
+        neteaseMessage.setOpe(1);
         neteaseMessage.setType(0);
         Map<String, Object> body = new HashMap<>();
         body.put("msg", "这是一条测试消息");