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/LuckyActivityOpenServiceImpl.java |   52 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java
index 31df726..4bc7645 100644
--- a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java
+++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java
@@ -4,6 +4,7 @@
 import com.ks.lucky.mapper.LuckyActivityMapper;
 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.LuckyActivityOpenInfo;
 import com.ks.lucky.pojo.DTO.ActivityMQMsg;
 import com.ks.lucky.remote.service.LuckyActivityOpenService;
@@ -14,10 +15,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
 
 @Service(version = "1.0.0")
 public class LuckyActivityOpenServiceImpl implements LuckyActivityOpenService {
@@ -105,18 +105,49 @@
             throw new LuckyActivityAwardException(LuckyActivityAwardException.CODE_NOT_EXIST, "鏃犲椤逛俊鎭�");
         }
 
-        //鑾峰彇鐢ㄦ埛鏁版嵁
-        Map<String, Integer> data = luckyActivityJoinManager.getJoinData(activityId);
+
+        Set<String> drawnUserSet = new HashSet<>();
+
+        //铏氭嫙鐢ㄦ埛鍏堜腑濂�
+        Map<String, Integer> data = luckyActivityJoinManager.getJoinData(activityId, LuckyActivityJoinRecord.USER_TYPE_VIRTUAL);
+        for (LuckyActivityAwards awards : awardsList) {
+            if (awards.getRealDrawnPercent().compareTo(new BigDecimal(1)) >= 0) {
+                //瀹屽叏鐪熷疄鎯呭喌
+                continue;
+            }
+            BigDecimal virtualRate = new BigDecimal(1).subtract(awards.getRealDrawnPercent());
+            int count = virtualRate.multiply(new BigDecimal(awards.getCount())).setScale(0, RoundingMode.UP).intValue();
+            Set<String> uids = LuckyRunUtil.compute(data, count);
+            for (String uid : uids) {
+                data.remove(uid);
+            }
+            drawnUserSet.addAll(uids);
+            //淇濆瓨寮�濂栫粨鏋�
+            luckyActivityAwardResultManager.addRecord(uids, awards.getActivityId(), awards.getId());
+            //鍓╀綑濂栧搧鏁伴噺
+            awards.setCount(awards.getCount() - count);
+        }
+
+        //闄ゅ幓宸茬粡涓鐨勭敤鎴峰啀娆′腑濂�
+        data = luckyActivityJoinManager.getJoinData(activityId, null);
+        for (String uid : drawnUserSet) {
+            data.remove(uid);
+        }
+
         for (LuckyActivityAwards awards : awardsList) {
             //鑾峰彇涓鐢ㄦ埛ID
             Set<String> uids = LuckyRunUtil.compute(data, awards.getCount());
+            //绉婚櫎宸茬粡涓浜嗙殑鐢ㄦ埛
+            for (String uid : uids) {
+                data.remove(uid);
+            }
             //淇濆瓨寮�濂栫粨鏋�
             luckyActivityAwardResultManager.addRecord(uids, awards.getActivityId(), awards.getId());
         }
 
 
         //鏇存柊鐘舵��
-        luckyActivityManager.setState(activityId,LuckyActivity.STATE_PRE_OPENED,"棰勫紑濂栨垚鍔�");
+        luckyActivityManager.setState(activityId, LuckyActivity.STATE_PRE_OPENED, "棰勫紑濂栨垚鍔�");
 
         //娣诲姞娑堟伅
         CMQManager.getInstance().addActivityMsg(new ActivityMQMsg(activityId, ActivityMQMsg.TYPE_OPEN_SHOW, new Date()));
@@ -130,12 +161,7 @@
             throw new LuckyActivityException(1, "灏氭湭寮�濂�");
         }
 
-        LuckyActivity update = new LuckyActivity();
-        update.setId(activityId);
-        update.setUpdateTime(new Date());
-        update.setState(LuckyActivity.STATE_OPENED);
-        update.setStateRemarks("宸插紑濂�");
-        luckyActivityManager.updateSelectiveByPrimaryKey(update);
+        luckyActivityManager.setState(activityId, LuckyActivity.STATE_OPENED, "宸插紑濂�");
 
         //璁剧疆瀹為檯寮�濂栨椂闂�
         LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activityId);

--
Gitblit v1.8.0