Ver Fonte

按照盲盒稀有度查询库存

sunkean há 3 anos atrás
pai
commit
d7171f3529

+ 3 - 0
src/main/java/com/izouma/nineth/repo/BlindBoxItemRepo.java

@@ -46,4 +46,7 @@ public interface BlindBoxItemRepo extends JpaRepository<BlindBoxItem, Long>, Jpa
     @Modifying
     @Transactional
     void increaseStockAndDecreaseSale(Long id, int num);
+
+    @Query(nativeQuery = true, value = "select CONCAT(sum(stock),'/',sum(total))from blind_box_item where blind_box_id = ?1 and name like ?2 AND NAME NOT LIKE ?3")
+    String getBlindBoxRare(Long blindBoxId, String rare, String not);
 }

+ 24 - 0
src/main/java/com/izouma/nineth/service/BlindBoxItemService.java

@@ -5,18 +5,42 @@ import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.PageWrapper;
 import com.izouma.nineth.repo.BlindBoxItemRepo;
 import com.izouma.nineth.utils.JpaUtils;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+
 @Service
 @AllArgsConstructor
 public class BlindBoxItemService {
 
     private BlindBoxItemRepo blindBoxItemRepo;
 
+    private final String SSR = "SSR";
+    private final String SR = "SR";
+    private final String U = "U";
+
     @Cacheable(value = "blindBoxList", key = "#pageQuery.hashCode()")
     public PageWrapper<BlindBoxItem> all(PageQuery pageQuery) {
         return PageWrapper.of(blindBoxItemRepo.findAll(JpaUtils.toSpecification(pageQuery, BlindBoxItem.class), JpaUtils.toPageRequest(pageQuery)));
     }
+
+    public HashMap<String, String> getBlindBoxRare(Long blindBoxId) {
+        HashMap<String, String> rare = new HashMap<>();
+        String ssr = blindBoxItemRepo.getBlindBoxRare(blindBoxId, "%" + SSR + "%", "%" + U + "%");
+        if (StringUtil.isNotBlank(ssr)) {
+            rare.put(SSR, ssr);
+        }
+        String sr = blindBoxItemRepo.getBlindBoxRare(blindBoxId, "%" + SR + "%", "%" + SSR + "%");
+        if (StringUtil.isNotBlank(sr)) {
+            rare.put(SR, sr);
+        }
+        String u = blindBoxItemRepo.getBlindBoxRare(blindBoxId, "%" + U + "%", "%" + SR + "%");
+        if (StringUtil.isNotBlank(u)) {
+            rare.put(U, u);
+        }
+        return rare;
+    }
 }

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

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.List;
 
 @RestController
@@ -57,5 +58,10 @@ public class BlindBoxItemController extends BaseController {
         List<BlindBoxItem> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
+
+    @GetMapping("/rare/{blindBoxId}")
+    public HashMap<String, String> getBlindBoxRare(@PathVariable Long blindBoxId) {
+        return blindBoxItemService.getBlindBoxRare(blindBoxId);
+    }
 }