记得上下班打卡 | git大法好,push需谨慎

Commit 4649bae8 authored by jiangxiulong's avatar jiangxiulong

积分抽奖

parent e1395b99
......@@ -38,6 +38,7 @@ public class SweetConstant {
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO = "sweet:integralActivity:DrawInfo:drawId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LOCK = "sweet:integralActivity:lock:userId:";
public static final String REDIS_KEY_SWEET_LUCKY_DRAW_NUM = "sweet:integralActivity:luckyDrawNum:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_TOTAL_PRIZE_NUM = "sweet:integralActivity:totalPrizeNum:activityId:";
// 答题活动
public final static String REDIS_KEY_SWEET_ANSWER_PHONE = "sweet:answer:phone:";
// 城市投票活动
......
......@@ -157,11 +157,14 @@ public class SweetIntegralActivityPrizeRelationServiceImpl extends ServiceImpl<S
.in(SweetIntegralActivityPrize::getPrizeType, Arrays.asList(3,4))
);
List<IntegralActivityPrizeVo> prizeList2 = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
activityPrizes2.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
int totalPrizeNum = 0;
for (SweetIntegralActivityPrize prize : activityPrizes2) {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(prize);
prizeList2.add(copy);
});
integralActivityVo.setPrizeList2(prizeList2);
int prizeNum = sweetRedisAdminUtils.getIntegralActivityPrizeNum(integralActivityId, prize.getPrizeId());
totalPrizeNum += prizeNum;
}
sweetRedisAdminUtils.setIntegralActivityTotalPrizeNum(integralActivityId, totalPrizeNum);
sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo);
}
......
......@@ -248,10 +248,15 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
.in(SweetIntegralActivityPrize::getPrizeType, Arrays.asList(3,4))
);
List<IntegralActivityPrizeVo> prizeList2 = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
activityPrizes2.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
int totalPrizeNum = 0;
for (SweetIntegralActivityPrize prize : activityPrizes2) {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(prize);
prizeList2.add(copy);
});
int prizeNum = sweetRedisAdminUtils.getIntegralActivityPrizeNum(integralActivityId, prize.getPrizeId());
totalPrizeNum += prizeNum;
}
sweetRedisAdminUtils.setIntegralActivityTotalPrizeNum(integralActivityId, totalPrizeNum);
integralActivityVo.setPrizeList2(prizeList2);
sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo);
......
......@@ -42,6 +42,19 @@ public class SweetRedisAdminUtils {
redisDataSourceUtil.getRedisSweetUtil().decr(redisKey, num);
}
public int getIntegralActivityPrizeNum(String integralActivityId, String prizeId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
.concat(SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID)
.concat(prizeId);
Object obj = redisDataSourceUtil.getRedisSweetUtil().get(redisKey);
if (null == obj) {
return 0;
} else {
return (int) obj;
}
}
public void setIntegralActivityDraw(LinkedList<IntegralActivityDrawVo> sweetIntegralActivityDraws, String integralActivityId, String userId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER
.concat(integralActivityId)
......@@ -57,4 +70,10 @@ public class SweetRedisAdminUtils {
info.setReceivingStatus(2);
redisDataSourceUtil.getRedisSweetUtil().set(redisKeyDraw, info);
}
public void setIntegralActivityTotalPrizeNum(String integralActivityId, int totalPrizeNum) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_TOTAL_PRIZE_NUM
.concat(integralActivityId);
redisDataSourceUtil.getRedisSweetUtil().set(redisKey, totalPrizeNum);
}
}
......@@ -442,7 +442,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
BigDecimal prizeNumBig = BigDecimal.valueOf(prizeNum);
// 概率
int luckyDrawNum = redisDataUtils.getLuckyDrawNum(integralActivityId);
BigDecimal multiply = prizeNumBig.divide(BigDecimal.valueOf(estimatedNum - luckyDrawNum)).multiply(BigDecimal.valueOf(100));
BigDecimal multiply = prizeNumBig.divide(BigDecimal.valueOf(estimatedNum - luckyDrawNum), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
// 对比大小
if (multiply.compareTo(randomBig) >= 0) {
return true; // 大于等于随机数中实物
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment