admin
2020-12-22 478e6722fd36bf9b5d8608c8cca2000190da5496
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java
@@ -5,16 +5,15 @@
import com.ks.lucky.exception.LuckyActivityJoinException;
import com.ks.lucky.mapper.LuckyActivityAwardsMapper;
import com.ks.lucky.mapper.LuckyActivityJoinRecordMapper;
import com.ks.lucky.pojo.DO.LuckyActivity;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.pojo.DO.LuckyActivityJoinRecord;
import com.ks.lucky.pojo.DO.LuckyActivityUserWeightRecord;
import com.ks.lucky.pojo.DO.*;
import com.ks.lucky.pojo.DTO.*;
import com.ks.lucky.query.ActivityAwardQuery;
import com.ks.lucky.query.ActivityJoinRecordQuery;
import com.ks.lucky.remote.service.LuckyActivityJoinService;
import com.ks.lucky.remote.service.LuckyActivityOpenService;
import com.ks.lucky.service.impl.LuckyActivityJoinManager;
import com.ks.lucky.service.impl.LuckyActivityManager;
import com.ks.lucky.service.impl.LuckyActivityOpenInfoManager;
import com.ks.lucky.service.impl.LuckyActivityUserWeightRecordManager;
import com.ks.lucky.util.factory.LuckyActivityUserWeightRecordFactory;
import org.apache.dubbo.config.annotation.Service;
@@ -46,6 +45,10 @@
    @Resource
    private LuckyActivityAwardsMapper luckyActivityAwardsMapper;
    @Resource
    private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager;
    @Transactional(rollbackFor = Exception.class)
@@ -227,6 +230,7 @@
        ActivityDrawnProbabilityStatistic statistic = new ActivityDrawnProbabilityStatistic();
        ActivityAwardQuery awardQuery = new ActivityAwardQuery();
        awardQuery.activityId = activityId;
        awardQuery.count = 100;
        //奖项数量
        int awardCount = 0;
        List<LuckyActivityAwards> awards = luckyActivityAwardsMapper.list(awardQuery);
@@ -234,8 +238,16 @@
            for (LuckyActivityAwards award : awards) {
                awardCount += award.getCount();
            }
        }
        LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activityId);
        //还差多少人开奖
        int difJoinnerCount = openInfo.getMinPersonCount() - (int) joinerCount;
        difJoinnerCount = difJoinnerCount > 0 ? difJoinnerCount : 0;
        joinerCount = joinerCount < openInfo.getMinPersonCount() ? (openInfo.getMinPersonCount()) : joinerCount;
        //平均中奖概率
        BigDecimal averageProbability = new BigDecimal(awardCount).divide(new BigDecimal(joinerCount), 8, BigDecimal.ROUND_DOWN);
        statistic.setAverageDrawnProbability(averageProbability);
@@ -245,7 +257,7 @@
            LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid);
            if (record != null) {
                //我的中奖概率
                BigDecimal myProbability = new BigDecimal(awardCount * record.getWeight()).divide(new BigDecimal(weight), 8, BigDecimal.ROUND_DOWN);
                BigDecimal myProbability = new BigDecimal(awardCount * record.getWeight()).divide(new BigDecimal(weight).add(new BigDecimal(difJoinnerCount)), 8, BigDecimal.ROUND_DOWN);
                statistic.setMyDrawnProbability(myProbability);
            }
        }