admin
2021-02-06 6c09cbd70388ae53ec593de253f69cfa1a3eeda7
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java
@@ -16,6 +16,7 @@
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.LoggerUtil;
import com.ks.lucky.util.factory.LuckyActivityUserWeightRecordFactory;
import com.ks.lucky.util.mq.CMQManager;
import org.apache.dubbo.config.annotation.Service;
@@ -56,7 +57,7 @@
    @Transactional(rollbackFor = Exception.class)
    @Validated
    @Override
    public void join(Long activityId, Long appId, String uid, Integer weight, JoinInfo joinInfo,int userType) throws LuckyActivityException, LuckyActivityJoinException {
    public void join(Long activityId, Long appId, String uid, Integer weight, JoinInfo joinInfo, int userType) throws LuckyActivityException, LuckyActivityJoinException {
        luckyActivityManager.canJoin(activityId);
        LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid);
        if (record != null) {
@@ -86,6 +87,8 @@
        } catch (ParamsException e) {
            throw new LuckyActivityJoinException(1, "添加记录出错");
        }
        LoggerUtil.activityJoinLogger.info("参加活动成功:activityId-{} uid-{}", activityId, uid);
        CMQManager.getInstance().publishActivityJoinMsg(ActivityJoinMsgDTO.create(record));
    }
@@ -188,11 +191,11 @@
    }
    @Override
    public List<ActivitySimpleUser> getJoinerList(Long activityId,Integer userType, int page, int count) {
    public List<ActivitySimpleUser> getJoinerList(Long activityId, Integer userType, int page, int count) {
        ActivityJoinRecordQuery query = new ActivityJoinRecordQuery();
        query.activityId = activityId;
        query.sortList = Arrays.asList(new String[]{"id asc"});
        query.userType=userType;
        query.userType = userType;
        query.count = count;
        query.start = (page - 1) * count;
@@ -207,10 +210,10 @@
    }
    @Override
    public long countJoiner(Long activityId,Integer userType) {
    public long countJoiner(Long activityId, Integer userType) {
        ActivityJoinRecordQuery query = new ActivityJoinRecordQuery();
        query.activityId = activityId;
        query.userType=userType;
        query.userType = userType;
        return luckyActivityJoinRecordMapper.count(query);
    }
@@ -258,21 +261,29 @@
        int difJoinnerCount = openInfo.getMinPersonCount() - (int) joinerCount;
        difJoinnerCount = difJoinnerCount > 0 ? difJoinnerCount : 0;
        joinerCount = joinerCount < openInfo.getMinPersonCount() ? (openInfo.getMinPersonCount()) : joinerCount;
        long joinerCountCompute = joinerCount < openInfo.getMinPersonCount() ? (openInfo.getMinPersonCount()) : joinerCount;
        //平均中奖概率
        BigDecimal averageProbability = new BigDecimal(awardCount).divide(new BigDecimal(joinerCount), 8, BigDecimal.ROUND_DOWN);
        BigDecimal averageProbability = new BigDecimal(awardCount).divide(new BigDecimal(joinerCountCompute), 8, BigDecimal.ROUND_DOWN);
        statistic.setAverageDrawnProbability(averageProbability);
        LuckyActivityJoinRecord record=null;
        if (!StringUtil.isNullOrEmpty(uid)) {
            query.appId = appId;
            query.uid = uid;
            LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid);
            record = luckyActivityJoinManager.getRecord(activityId, appId, uid);
            if (record != null) {
                //我的中奖概率
                BigDecimal myProbability = new BigDecimal(awardCount * record.getWeight()).divide(new BigDecimal(weight).add(new BigDecimal(difJoinnerCount)), 8, BigDecimal.ROUND_DOWN);
                statistic.setMyDrawnProbability(myProbability);
            }
        }
        //超过了多少人
        query = new ActivityJoinRecordQuery();
        query.activityId = activityId;
        query.maxWeight=record.getWeight();
        long lessCount = luckyActivityJoinRecordMapper.count(query);
        statistic.setExceedPersonPercent(new BigDecimal(lessCount).multiply(new BigDecimal(100).divide(new BigDecimal(joinerCount), 2, BigDecimal.ROUND_DOWN)));
        statistic.setActivityId(activityId);
        return statistic;
    }