From 5405154d6979f1b50ce2d881bb164b1acca80b6d Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 15 一月 2021 18:58:18 +0800 Subject: [PATCH] 修改相关bug --- service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java | 53 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 42 insertions(+), 11 deletions(-) diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java index ef28222..7f1f8a5 100644 --- a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java +++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java @@ -5,19 +5,20 @@ 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.pojo.DTO.mq.ActivityJoinMsgDTO; 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.LoggerUtil; import com.ks.lucky.util.factory.LuckyActivityUserWeightRecordFactory; +import com.ks.lucky.util.mq.CMQManager; import org.apache.dubbo.config.annotation.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -30,7 +31,7 @@ import java.util.Date; import java.util.List; -@Service(version = "1.0") +@Service(version = "1.0.0") public class LuckyActivityJoinServiceImpl implements LuckyActivityJoinService { @Resource @@ -49,10 +50,14 @@ private LuckyActivityAwardsMapper luckyActivityAwardsMapper; + @Resource + private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager; + + @Transactional(rollbackFor = Exception.class) @Validated @Override - public void join(Long activityId, Long appId, String uid, Integer weight, JoinInfo joinInfo) 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) { @@ -69,7 +74,7 @@ record.setCreateTime(new Date()); record.setJoinInfo(joinInfo.toString()); record.setUid(uid); - record.setUserType(LuckyActivityJoinRecord.USER_TYPE_REAL); + record.setUserType(userType); record.setWeight(weight); record.setCreateTime(new Date()); luckyActivityJoinRecordMapper.insertSelective(record); @@ -83,12 +88,20 @@ throw new LuckyActivityJoinException(1, "娣诲姞璁板綍鍑洪敊"); } + LoggerUtil.activityLogger.info("鍙傚姞娲诲姩鎴愬姛", activityId, uid); + + CMQManager.getInstance().publishActivityJoinMsg(ActivityJoinMsgDTO.create(record)); } @Override 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 @@ -178,10 +191,11 @@ } @Override - public List<ActivitySimpleUser> getJoinerList(Long activityId, 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.count = count; query.start = (page - 1) * count; @@ -193,6 +207,14 @@ } } return list; + } + + @Override + public long countJoiner(Long activityId, Integer userType) { + ActivityJoinRecordQuery query = new ActivityJoinRecordQuery(); + query.activityId = activityId; + query.userType = userType; + return luckyActivityJoinRecordMapper.count(query); } @Override @@ -223,6 +245,7 @@ ActivityDrawnProbabilityStatistic statistic = new ActivityDrawnProbabilityStatistic(); ActivityAwardQuery awardQuery = new ActivityAwardQuery(); awardQuery.activityId = activityId; + awardQuery.count = 100; //濂栭」鏁伴噺 int awardCount = 0; List<LuckyActivityAwards> awards = luckyActivityAwardsMapper.list(awardQuery); @@ -230,8 +253,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); @@ -241,7 +272,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); } } -- Gitblit v1.8.0