|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|