From 6c09cbd70388ae53ec593de253f69cfa1a3eeda7 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 06 二月 2021 15:41:25 +0800
Subject: [PATCH] 活动管理界面完善

---
 service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinServiceImpl.java |   65 ++++++++++++++++++++++++++------
 1 files changed, 52 insertions(+), 13 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..f52fd66 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.activityJoinLogger.info("鍙傚姞娲诲姩鎴愬姛锛歛ctivityId-{} uid-{}", 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,21 +253,37 @@
             for (LuckyActivityAwards award : awards) {
                 awardCount += award.getCount();
             }
-
         }
+
+        LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activityId);
+
+        //杩樺樊澶氬皯浜哄紑濂�
+        int difJoinnerCount = openInfo.getMinPersonCount() - (int) joinerCount;
+        difJoinnerCount = difJoinnerCount > 0 ? difJoinnerCount : 0;
+
+        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), 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);
             }
         }
+        //瓒呰繃浜嗗灏戜汉
+        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;
     }

--
Gitblit v1.8.0