From d6df4ca797ee1c6ce8fa78768f5425f187734bd9 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 18 一月 2021 18:44:08 +0800
Subject: [PATCH] 外网部署参数修改

---
 service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardResultManager.java |   82 +++++++++++++++++++++++++++++++++-------
 1 files changed, 67 insertions(+), 15 deletions(-)

diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardResultManager.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardResultManager.java
index b4fc569..d228d0a 100644
--- a/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardResultManager.java
+++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardResultManager.java
@@ -4,6 +4,7 @@
 import com.google.gson.Gson;
 import com.ks.app.entity.AppAlipayInfoWithBLOBs;
 import com.ks.app.entity.AppInfo;
+import com.ks.app.util.AlipayAppUtil;
 import com.ks.lucky.exception.LuckyActivityAwardException;
 import com.ks.lucky.exception.LuckyActivityAwardResultException;
 import com.ks.lucky.exception.LuckyMQException;
@@ -14,10 +15,13 @@
 import com.ks.lucky.pojo.DO.LuckyActivityAwards;
 import com.ks.lucky.pojo.DO.LuckyMQ;
 import com.ks.lucky.pojo.DTO.ActivityAwardParams;
+import com.ks.lucky.pojo.DTO.RedPackage;
 import com.ks.lucky.pojo.DTO.mq.ActivityDrawnMsgDTO;
 import com.ks.lucky.query.ActivityAwardResultQuery;
 import com.ks.lucky.service.LuckyMQService;
 import com.ks.lucky.util.Constant;
+import com.ks.lucky.util.LoggerUtil;
+import com.ks.lucky.util.RedPackageUtil;
 import com.ks.lucky.util.mq.CMQManager;
 import com.ks.lucky.util.mq.LuckyMQFactory;
 import org.slf4j.Logger;
@@ -37,9 +41,8 @@
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+import java.math.RoundingMode;
+import java.util.*;
 
 /**
  * 濂栭」绠$悊
@@ -64,6 +67,9 @@
     @Resource
     private LuckyMQService luckyMQService;
 
+    @Resource
+    private LuckyActivityAwardResultManager luckyActivityAwardResultManager;
+
 
     /**
      * 娣诲姞璁板綍
@@ -74,6 +80,29 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public void addRecord(Set<String> uids, Long activityId, long awardId) {
+        LuckyActivityAwards award = luckyActivityAwardManager.getAwardDetail(awardId);
+        Map<String, BigDecimal> moneyMap = new HashMap<>();
+        //璁$畻姣忎釜浜虹殑鏀粯瀹濈孩鍖呴噾棰�
+        if (award.getActivityAwardParams().getType() == ActivityAwardParams.ActivityAwardTypeEnum.alipayRedPackage) {
+            switch (award.getAwardWay()) {
+                //闅忔満
+                case LuckyActivityAwards.AWARD_WAY_RANDOM:
+                    RedPackage redPackage = new RedPackage(award.getActivityAwardParams().getRedPackage().doubleValue(), award.getCount());
+                    for (String uid : uids) {
+                        double money = RedPackageUtil.getRandomPackage(redPackage);
+                        moneyMap.put(uid, new BigDecimal(money));
+                    }
+                    break;
+                //骞冲垎
+                case LuckyActivityAwards.AWARD_WAY_DIVIDE:
+                    BigDecimal permoney = award.getActivityAwardParams().getRedPackage().divide(new BigDecimal(award.getCount()), 2, RoundingMode.FLOOR);
+                    for (String uid : uids) {
+                        moneyMap.put(uid, permoney);
+                    }
+                    break;
+            }
+        }
+
 
         for (String uidStr : uids) {
             long appId = Long.parseLong(uidStr.split("#")[0]);
@@ -92,6 +121,7 @@
             LuckyActivityAwardResultExtra extra = new LuckyActivityAwardResultExtra();
             extra.setAwardResultId(result.getId());
             extra.setCreateTime(new Date());
+            extra.setRedPackage(moneyMap.get(uidStr));
             luckyActivityAwardResultExtraMapper.insertSelective(extra);
 
             //娣诲姞閫氱煡
@@ -114,12 +144,14 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public void sendAward(LuckyActivityAwardResult result, LuckyActivityAwardResultExtra extra) throws LuckyActivityAwardException, LuckyActivityAwardResultException {
+        //鍔犺閿�
+        luckyActivityAwardResultMapper.selectByPrimaryKeyForUpdate(result.getId());
         LuckyActivityAwards awards = luckyActivityAwardManager.getAwardDetail(result.getAwardId());
         if (awards == null) {
             throw new LuckyActivityAwardException(LuckyActivityAwardException.CODE_NOT_EXIST, "濂栭」涓嶅瓨鍦�");
         }
         String paramsStr = awards.getAwardParams();
-        ActivityAwardParams params = new Gson().fromJson(paramsStr, ActivityAwardParams.class);
+        ActivityAwardParams params = ActivityAwardParams.getBean(paramsStr);
         AppInfo app = appManager.getAppDetail(result.getAppId());
 
         if (params.getType() == ActivityAwardParams.ActivityAwardTypeEnum.alipayRedPackage) {
@@ -133,7 +165,6 @@
                 throw new LuckyActivityAwardResultException(LuckyActivityAwardResultException.CODE_PARAMS_NOT_ENOUGH, "鍙傛暟涓嶅畬鏁达紝缂哄皯alipayUid涓巖edPackage鍙傛暟");
             }
 
-
             String orderId = alipayInfo.getAlipayAppId() + "_award_" + result.getId();
             BigDecimal money = extra.getRedPackage();
             String alipayUid = extra.getAlipyUid();
@@ -145,15 +176,13 @@
             } catch (AlipayApiException e) {
                 throw new LuckyActivityAwardResultException(1, e.getErrMsg());
             }
+            luckyActivityAwardResultManager.setResultReceived(result.getId());
 
-            LuckyActivityAwardResult update = new LuckyActivityAwardResult();
-            update.setId(result.getId());
-            update.setState(LuckyActivityAwardResult.STATE_RECIEVED);
-            update.setStateDesc("宸查鍙�");
-            update.setUpdateTime(new Date());
         } else if (params.getType() == ActivityAwardParams.ActivityAwardTypeEnum.wxRedPackage) {
             //TODO 寰俊鍙戠孩鍖�
         }
+
+        //鍒犻櫎閫氱煡
 
 
     }
@@ -163,11 +192,7 @@
      * 鍙戞敮浠樺疂绾㈠寘
      */
     private void sendAlipayRedPackage(String outBizNo, String alipayUid, String orderTitle, BigDecimal money, AppAlipayInfoWithBLOBs alipayInfo) throws AlipayTransferException, AlipayApiException {
-        InputStream appCert = new ByteArrayInputStream(alipayInfo.getAlipayAppCertPublicKey());
-        InputStream publicCert = new ByteArrayInputStream(alipayInfo.getAlipayPublicCert());
-        InputStream rootCert = new ByteArrayInputStream(alipayInfo.getAlipayRootCert());
-
-        AlipayAppInfo appInfo = new AlipayAppInfo(alipayInfo.getAlipayAppId(), alipayInfo.getAlipayPrivateKey(), new AlipayCertInfo(appCert, publicCert, rootCert));
+        AlipayAppInfo appInfo = AlipayAppUtil.getAlipayAppInfo(alipayInfo);
         AlipayTransferInfo transferInfo = new AlipayTransferInfo();
         transferInfo.setAccount(new AlipayTransferAccount(alipayUid));
         transferInfo.setMoney(money);
@@ -217,6 +242,7 @@
         if (result.getState() != LuckyActivityAwardResult.STATE_NOT_RECIEVE) {
             return;
         }
+        LoggerUtil.activityJoinLogger.info("璁剧疆涓杩囨湡鏈寮�濮嬶細awardResultId-{}",id);
 
         LuckyActivityAwardResult update = new LuckyActivityAwardResult();
         update.setId(id);
@@ -229,6 +255,32 @@
         result.setState(update.getState());
         //鍙戝竷娑堟伅
         CMQManager.getInstance().publishActivityDrawnMsg(ActivityDrawnMsgDTO.create(result));
+        LoggerUtil.activityJoinLogger.info("璁剧疆涓杩囨湡鏈鎴愬姛锛歛wardResultId-{}",id);
+    }
+
+    /**
+     * 棰嗗彇
+     *
+     * @param resultId
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void setResultReceived(Long resultId) {
+        LuckyActivityAwardResult result = luckyActivityAwardResultMapper.selectByPrimaryKeyForUpdate(resultId);
+        if (result.getState() != LuckyActivityAwardResult.STATE_NOT_RECIEVE) {
+            return;
+        }
+
+        LuckyActivityAwardResult update = new LuckyActivityAwardResult();
+        update.setId(resultId);
+        update.setState(LuckyActivityAwardResult.STATE_RECIEVED);
+        update.setStateDesc("宸查鍙�");
+        update.setUpdateTime(new Date());
+        luckyActivityAwardResultMapper.updateByPrimaryKeySelective(update);
+
+        result.setStateDesc(update.getStateDesc());
+        result.setState(update.getState());
+        //鍙戝竷娑堟伅
+        CMQManager.getInstance().publishActivityDrawnMsg(ActivityDrawnMsgDTO.create(result));
     }
 
 }

--
Gitblit v1.8.0