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