cup 2 năm trước cách đây
mục cha
commit
60a78e61bc

+ 23 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -143,6 +143,29 @@ public class UserTicketController extends BaseApiController {
       }
       ticketAwardsLabelVOS.add(ticketAwardsLabelVO);
     }
+    if (CollectionUtils.isNotEmpty(ticketAwardsLabelVOS)) {
+      // 精度问题处理
+      int maxIndex = 0;
+      BigDecimal maxHitRate = BigDecimal.valueOf(100);
+      for (int i = 0; i < ticketAwardsLabelVOS.size(); i++) {
+        TicketAwardsLabelVO ticketAwardsLabelVO = ticketAwardsLabelVOS.get(i);
+        if (BigDecimal.ZERO.equals(ticketAwardsLabelVO.getHitRate())) {
+          ticketAwardsLabelVO.setHitRate(BigDecimal.valueOf(0.1));
+        }
+        if (ticketAwardsLabelVO.getHitRate().compareTo(ticketAwardsLabelVOS.get(maxIndex).getHitRate()) > 0) {
+          maxIndex = i;
+        }
+        maxHitRate = maxHitRate.subtract(ticketAwardsLabelVO.getHitRate());
+      }
+      if (maxHitRate.compareTo(BigDecimal.ZERO) > 0) {
+        TicketAwardsLabelVO ticketAwardsLabelVO = ticketAwardsLabelVOS.get(maxIndex);
+        ticketAwardsLabelVO.setHitRate(ticketAwardsLabelVO.getHitRate().subtract(maxHitRate));
+      } else {
+        TicketAwardsLabelVO ticketAwardsLabelVO = ticketAwardsLabelVOS.get(maxIndex);
+        ticketAwardsLabelVO.setHitRate(ticketAwardsLabelVO.getHitRate().add(maxHitRate));
+      }
+    }
+
     ticketBoxVO.setTicketAwardsLabelList(ticketAwardsLabelVOS);
 
     List<TicketAwardsPrizeVO> ticketAwardsPrizeVOS = ticketAwardsPrizeService.listPrizeVO(ticketBox.getBoxId());