chunping 3 éve
szülő
commit
ea56d6e524

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/TicketAwards.java

@@ -42,7 +42,7 @@ public class TicketAwards implements Serializable {
    * 奖项顺序
    */
   @TableField("sort")
-  private String sort;
+  private Integer sort;
 
   /**
    * 奖项数量

+ 23 - 6
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -27,6 +27,7 @@ import com.qs.mp.common.enums.TicketPkgStatusEnum;
 import com.qs.mp.common.enums.TicketPrizeTypeEnum;
 import com.qs.mp.common.enums.TicketStatusEnum;
 import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -205,6 +206,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
         ticketPackageList.add(ticketPackage);
 
         List<PkgAwards> pkgAwardsList = pkgAwardsMap.get(key);
+        LogUtil.debug(logger, "第{0}包盲票奖项数量为{1}", new Object[]{pkgCnt, pkgAwardsList});
         List<Ticket> ticketList = new ArrayList<>();
         for (int j = 1; j <= pkgUnit; j++) {
           ticketCnt += 1;
@@ -215,6 +217,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
               iterator.remove();
             }
           }
+          LogUtil.debug(logger, "开始生成第{0}包、第{1}盲票", new Object[]{pkgCnt, j});
           int random = getPrizeIndex(pkgAwardsList);
           PkgAwards pkgAwards = pkgAwardsList.get(random);
           pkgAwards.setQuantity(pkgAwards.getQuantity() - 1);
@@ -266,11 +269,11 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
     for (PkgAwards p : prizes) {
       sumWeight += p.getQuantity();
     }
-
+    LogUtil.info(logger, "sumWeight:{0}", sumWeight);
     //产生随机数
     double randomNumber;
     randomNumber = Math.random();
-
+    LogUtil.debug(logger, "随机数:" + randomNumber);
     //根据随机数在所有奖品分布的区域并确定所抽奖品
     double d1 = 0;
     double d2 = 0;
@@ -281,12 +284,13 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
       } else {
         d1 += Double.parseDouble(String.valueOf(prizes.get(i - 1).getQuantity())) / sumWeight;
       }
+      LogUtil.debug(logger, "prize:{0},区间 d1:{1}, d2:{2}", new Object[]{JSONObject.toJSONString(prizes.get(i)), d1, d2} );
       if (randomNumber > d1 && randomNumber <= d2) {
         random = i;
         break;
       }
     }
-
+    LogUtil.debug(logger, "抽中序号:{0}", new Object[]{random});
     return random;
   }
 
@@ -313,7 +317,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
   }
 
   @Data
-  private class PkgAwards {
+  private static class PkgAwards {
 
     private String awardsId;
 
@@ -325,18 +329,31 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
     /**
      * 奖项顺序
      */
-    private String sort;
+    private Integer sort;
 
     /**
      * 奖项数量
      */
     private Integer quantity;
 
-    PkgAwards(String awardsId, String name, String sort, Integer quantity) {
+    PkgAwards(String awardsId, String name, Integer sort, Integer quantity) {
       this.awardsId = awardsId;
       this.name = name;
       this.sort = sort;
       this.quantity = quantity;
     }
   }
+
+  public static void main(String[] args) {
+    List<PkgAwards> prizes = new ArrayList<>();
+    prizes.add(new PkgAwards("1", "一等奖", 1, 1));
+    prizes.add(new PkgAwards("2", "二等奖", 2, 2));
+    prizes.add(new PkgAwards("3", "三等奖", 3, 3));
+    prizes.add(new PkgAwards("4", "四等奖", 4, 4));
+    TicketBoxServiceImpl boxService = new TicketBoxServiceImpl();
+    for (int i = 0 ; i < 10; i ++ ) {
+      int random = boxService.getPrizeIndex(prizes);
+      System.out.println(random);
+    }
+  }
 }