| | |
| | | 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.service.impl.AppManager; |
| | | 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; |
| | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Service(version = "1.0") |
| | | @Service(version = "1.0.0") |
| | | public class LuckyActivityJoinServiceImpl implements LuckyActivityJoinService { |
| | | |
| | | @Resource |
| | |
| | | |
| | | @Resource |
| | | private LuckyActivityAwardsMapper luckyActivityAwardsMapper; |
| | | |
| | | |
| | | @Resource |
| | | private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager; |
| | | |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | public LuckyActivityJoinRecord getJoinInfo(Long activityId, Long appId, String uid) { |
| | | LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid); |
| | | return record; |
| | | } |
| | | |
| | | @Override |
| | | public LuckyActivityJoinRecord getJoinRecord(Long id) { |
| | | return luckyActivityJoinRecordMapper.selectByPrimaryKey(id); |
| | | } |
| | | |
| | | @Override |
| | |
| | | ActivityDrawnProbabilityStatistic statistic = new ActivityDrawnProbabilityStatistic(); |
| | | ActivityAwardQuery awardQuery = new ActivityAwardQuery(); |
| | | awardQuery.activityId = activityId; |
| | | awardQuery.count = 100; |
| | | //奖项数量 |
| | | int awardCount = 0; |
| | | List<LuckyActivityAwards> awards = luckyActivityAwardsMapper.list(awardQuery); |
| | |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | | } |