Explorar el Código

Merge branch 'dev' of xiongzhu/raex_back into master

sunkean hace 3 años
padre
commit
80b2c370ee

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

@@ -0,0 +1,17 @@
+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;
+}

+ 6 - 0
src/main/java/com/izouma/nineth/repo/DestroyRecordRepo.java

@@ -7,10 +7,16 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Map;
 
 public interface DestroyRecordRepo extends JpaRepository<DestroyRecord, Long>, JpaSpecificationExecutor<DestroyRecord> {
     @Query("update DestroyRecord t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    @Query(nativeQuery = true, value = "SELECT user.avatar avatar,user.nickname nickname,sum( destroy_record.record ) num FROM destroy_record LEFT JOIN user ON destroy_record.user_id = user.id WHERE destroy_record.asset_id IN ( SELECT asset.id FROM asset LEFT JOIN blind_box_item ON asset.collection_id = blind_box_item.collection_id where blind_box_item.blind_box_id = ?1 )" +
+            "and destroy_record.name like ?2 and destroy_record.name not like ?3 GROUP BY destroy_record.user_id ORDER BY sum( destroy_record.record ) DESC")
+    List<Map<String, String>> destroyRecordRank(Long blindBoxId, String rare, String not);
 }

+ 34 - 0
src/main/java/com/izouma/nineth/service/DestroyRecordService.java

@@ -1,20 +1,54 @@
 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.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.SysConfigRepo;
 import com.izouma.nineth.utils.JpaUtils;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 @Service
 @AllArgsConstructor
 public class DestroyRecordService {
 
+    private final SysConfigRepo sysConfigRepo;
+
     private DestroyRecordRepo destroyRecordRepo;
 
     public Page<DestroyRecord> all(PageQuery pageQuery) {
         return destroyRecordRepo.findAll(JpaUtils.toSpecification(pageQuery, DestroyRecord.class), JpaUtils.toPageRequest(pageQuery));
     }
+
+    public List<DestroyRecordRankDTO> destroyRecordRank(String rare) {
+        String not = null;
+        if (Constants.Rarity.SSR.equals(rare)) {
+            not = "%" + Constants.Rarity.U + " #%";
+        }
+        if (Constants.Rarity.SR.equals(rare)) {
+            not = "%" + Constants.Rarity.SSR + " #%";
+        }
+        if (Constants.Rarity.U.equals(rare)) {
+            not = "%" + Constants.Rarity.SR + " #%";
+        }
+        SysConfig sysConfig = sysConfigRepo.findByName(Constants.Rarity.ACTIVITY_RANK_ID).orElseThrow(new BusinessException("请先配置盲盒id"));
+        if (StringUtil.isBlank(sysConfig.getValue())) {
+            throw new BusinessException("请先配置盲盒id");
+        }
+        Long blindBoxId = Long.parseLong(sysConfig.getValue());
+        List<Map<String, String>> map = destroyRecordRepo.destroyRecordRank(blindBoxId, "%" + rare + " #%", not);
+        JSONArray jsonArray = new JSONArray();
+        jsonArray.addAll(map);
+        return jsonArray.toJavaList(DestroyRecordRankDTO.class);
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.izouma.nineth.web;
 
 import com.izouma.nineth.domain.DestroyRecord;
+import com.izouma.nineth.dto.DestroyRecordRankDTO;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.DestroyRecordRepo;
@@ -64,5 +65,10 @@ public class DestroyRecordController extends BaseController {
         pageQuery.getQuery().put("userId", SecurityUtils.getAuthenticatedUser().getId());
         return destroyRecordService.all(pageQuery);
     }
+
+    @GetMapping("/rank/{rare}")
+    public List<DestroyRecordRankDTO> destroyRecordRank(@PathVariable String rare) {
+        return destroyRecordService.destroyRecordRank(rare);
+    }
 }