Browse Source

销毁排行添加外部数据

sunkean 3 years ago
parent
commit
8d7cff751b

+ 37 - 0
src/main/java/com/izouma/nineth/domain/RecordRank.java

@@ -0,0 +1,37 @@
+package com.izouma.nineth.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class RecordRank{
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "hibernate_sequence")
+    private Long id;
+
+    @ApiModelProperty("用户名称")
+    private String nickname;
+
+    @ApiModelProperty("头像")
+    private String avatar;
+
+    @ApiModelProperty("数量")
+    private int num;
+
+    @ApiModelProperty("稀有度")
+    private String rare;
+
+    @ApiModelProperty("盲盒id")
+    private Long blindBoxId;
+
+}

+ 0 - 17
src/main/java/com/izouma/nineth/dto/DestroyRecordRankDTO.java

@@ -1,17 +0,0 @@
-package com.izouma.nineth.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class DestroyRecordRankDTO {
-
-    private String nickname;
-
-    private String avatar;
-
-    private int num;
-}

+ 13 - 0
src/main/java/com/izouma/nineth/repo/RecordRankRepo.java

@@ -0,0 +1,13 @@
+package com.izouma.nineth.repo;
+
+import com.izouma.nineth.domain.RecordRank;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import java.util.List;
+
+public interface RecordRankRepo extends JpaRepository<RecordRank, Long>, JpaSpecificationExecutor<RecordRank> {
+
+    List<RecordRank> findAllByBlindBoxIdAndRare(Long blindBoxId, String rare);
+
+}

+ 15 - 3
src/main/java/com/izouma/nineth/service/DestroyRecordService.java

@@ -3,18 +3,21 @@ package com.izouma.nineth.service;
 import com.alibaba.fastjson.JSONArray;
 import com.izouma.nineth.config.Constants;
 import com.izouma.nineth.domain.DestroyRecord;
+import com.izouma.nineth.domain.RecordRank;
 import com.izouma.nineth.domain.SysConfig;
-import com.izouma.nineth.dto.DestroyRecordRankDTO;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.DestroyRecordRepo;
+import com.izouma.nineth.repo.RecordRankRepo;
 import com.izouma.nineth.repo.SysConfigRepo;
 import com.izouma.nineth.utils.JpaUtils;
 import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 
@@ -26,11 +29,13 @@ public class DestroyRecordService {
 
     private DestroyRecordRepo destroyRecordRepo;
 
+    private RecordRankRepo recordRankRepo;
+
     public Page<DestroyRecord> all(PageQuery pageQuery) {
         return destroyRecordRepo.findAll(JpaUtils.toSpecification(pageQuery, DestroyRecord.class), JpaUtils.toPageRequest(pageQuery));
     }
 
-    public List<DestroyRecordRankDTO> destroyRecordRank(String rare) {
+    public List<RecordRank> destroyRecordRank(String rare) {
         String not = null;
         if (Constants.Rarity.SSR.equals(rare)) {
             not = "%" + Constants.Rarity.U + " #%";
@@ -49,6 +54,13 @@ public class DestroyRecordService {
         List<Map<String, String>> map = destroyRecordRepo.destroyRecordRank(blindBoxId, "%" + rare + " #%", not);
         JSONArray jsonArray = new JSONArray();
         jsonArray.addAll(map);
-        return jsonArray.toJavaList(DestroyRecordRankDTO.class);
+        List<RecordRank> recordRanks = jsonArray.toJavaList(RecordRank.class);
+        List<RecordRank> dbRecordRanks = recordRankRepo.findAllByBlindBoxIdAndRare(blindBoxId, rare);
+        if (CollectionUtils.isEmpty(dbRecordRanks)) {
+            return recordRanks;
+        }
+        recordRanks.addAll(dbRecordRanks);
+        recordRanks.sort(Comparator.comparingInt(RecordRank::getNum).reversed());
+        return recordRanks;
     }
 }

+ 2 - 2
src/main/java/com/izouma/nineth/web/DestroyRecordController.java

@@ -1,7 +1,7 @@
 package com.izouma.nineth.web;
 
 import com.izouma.nineth.domain.DestroyRecord;
-import com.izouma.nineth.dto.DestroyRecordRankDTO;
+import com.izouma.nineth.domain.RecordRank;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.DestroyRecordRepo;
@@ -67,7 +67,7 @@ public class DestroyRecordController extends BaseController {
     }
 
     @GetMapping("/rank/{rare}")
-    public List<DestroyRecordRankDTO> destroyRecordRank(@PathVariable String rare) {
+    public List<RecordRank> destroyRecordRank(@PathVariable String rare) {
         return destroyRecordService.destroyRecordRank(rare);
     }
 }