bravo-pool-batchGen-第一个用对比值选出的数组,其余的在新手pool里随机
This commit is contained in:
@@ -87,7 +87,21 @@ public class BravoPoolService {
|
||||
BravoGiftConfig partitionConfig = config.getRatioByPartitionId(partitionId);
|
||||
BravoPool pool = selectPool(config, partitionConfig, uid, poolType, poolList);
|
||||
|
||||
buildPool(config, uid, userPool, pool, poolNum);
|
||||
List<BravoPool> batchPoolList = new ArrayList<>();
|
||||
if (poolNum > 1){
|
||||
int extraPoolNum = poolNum - 1;
|
||||
List<BravoPool> extraPoolList = poolType.getType() == BravoPoolTypeEnum.NEW_USER_POOL.getType()? poolList:
|
||||
bravoPoolMapper.selectList(Wrappers.<BravoPool>lambdaQuery()
|
||||
.eq(BravoPool::getType, BravoPoolTypeEnum.NEW_USER_POOL.getType()));
|
||||
Collections.shuffle(extraPoolList);
|
||||
extraPoolList = extraPoolList.stream().limit(extraPoolNum).collect(Collectors.toList());
|
||||
batchPoolList.addAll(extraPoolList);
|
||||
}
|
||||
batchPoolList.add(0, pool);
|
||||
|
||||
List<BravoResult> batchResultList = batchPoolList.stream().map(p->buildPool(config, uid, p))
|
||||
.flatMap(List::stream).collect(Collectors.toList());
|
||||
userPool.addAll(batchResultList);
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
@@ -98,7 +112,7 @@ public class BravoPoolService {
|
||||
}
|
||||
}
|
||||
|
||||
private void buildPool(BravoGiftConfig config, Long uid, RQueue<BravoResult> userPool, BravoPool pool, int poolNum) {
|
||||
private List<BravoResult> buildPool(BravoGiftConfig config, Long uid, BravoPool pool) {
|
||||
List<BravoPool.BravoPoolItem> poolItemList = pool.getItemList().stream().filter(item->item.getNum()>0).collect(Collectors.toList());
|
||||
List<BigDecimal> winList = buildWinList(poolItemList);
|
||||
BigDecimal[] poolArray = new BigDecimal[config.getPoolSize()];
|
||||
@@ -120,20 +134,12 @@ public class BravoPoolService {
|
||||
log.info("[bravo] genPool buildPool uid {}, winIndexList {}", uid, JSON.toJSONString(winIndexList));
|
||||
}
|
||||
|
||||
List<BravoResult> poolList = Arrays.stream(poolArray).map(output->{
|
||||
return Arrays.stream(poolArray).map(output->{
|
||||
BravoResult result = new BravoResult();
|
||||
result.setPoolId(pool.getId());
|
||||
result.setOutput(output);
|
||||
return result;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
List<BravoResult> batchPoolList = new ArrayList<>();
|
||||
for (int i = 0; i < poolNum; i++) {
|
||||
Collections.shuffle(poolList);
|
||||
batchPoolList.addAll(poolList);
|
||||
log.info("[bravo] genPool buildPool uid {}, batch {} poolList {}", uid, i, JSON.toJSONString(poolList));
|
||||
}
|
||||
userPool.addAll(batchPoolList);
|
||||
}
|
||||
|
||||
private List<BigDecimal> buildWinList(List<BravoPool.BravoPoolItem> poolItemList) {
|
||||
|
Reference in New Issue
Block a user