From 651a15c78f668bef3859d9ed1bb7ad0b669d3600 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 03 七月 2020 17:52:07 +0800 Subject: [PATCH] 多APP优化 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java | 128 +++++++++++++++++++++++++++++++++++------- 1 files changed, 107 insertions(+), 21 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java index d1b375d..e6fe708 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java @@ -52,12 +52,12 @@ import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.OrderMoneySettleService; import com.yeshi.fanli.service.inter.user.UserSystemCouponService; +import com.yeshi.fanli.service.manger.msg.RocketMQManager; import com.yeshi.fanli.service.manger.order.TeamRewardManager; -import com.yeshi.fanli.service.manger.order.TeamSubsidyManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; +import com.yeshi.fanli.util.mq.cmq.HongBaoRecieveCMQManager; import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; import com.yeshi.fanli.util.rocketmq.MQTopicName; @@ -107,9 +107,9 @@ @Resource private TeamRewardManager teamRewardManager; - + @Resource - private TeamSubsidyManager teamSubsidyManager; + private RocketMQManager rocketMQManager; // 涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥 private void invalidHongBaoForbidden(Long id) { @@ -159,6 +159,9 @@ } } } + + if(hongBaoList.size()==0) + return; String taskKey = getTaskKey(uid); @@ -168,6 +171,8 @@ Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.teamRewardPreRecieved, mqMsg); msg.setKey(taskKey); + + // 娣诲姞浜嬪姟娑堟伅 try { orderTransactionProducer.send(msg, new LocalTransactionExecuter() { @@ -182,6 +187,20 @@ return TransactionStatus.CommitTransaction; } }, null); + +// rocketMQManager.sendTransactionalMsg(msg, taskKey, new RocketMQManager.ITransactionalMQEvent() { +// @Override +// public TransactionStatus excute(Message arg0, Object arg1) { +// try { +// fanliInvite(hongBaoList, uid, Constant.SOURCE_TYPE_TAOBAO, taskKey, maxPregetTime); +// } catch (Exception e) { +// e.printStackTrace(); +// return TransactionStatus.RollbackTransaction; +// } +// return TransactionStatus.CommitTransaction; +// } +// }); + } catch (Exception e) { e.printStackTrace(); LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); @@ -228,6 +247,9 @@ } } } + + if(hongBaoList.size()==0) + return; // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 @@ -294,6 +316,76 @@ } } } + + if(hongBaoList.size()==0) + return; + + // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 + String taskKey = getTaskKey(uid); + TeamRewardPreRecieveMQMsg mqMsg = new TeamRewardPreRecieveMQMsg(taskKey, uid, sourceType, maxPregetTime, + new Date()); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.teamRewardPreRecieved, mqMsg); + msg.setKey(taskKey); + // 娣诲姞浜嬪姟娑堟伅 + try { + orderTransactionProducer.send(msg, new LocalTransactionExecuter() { + @Override + public TransactionStatus execute(Message arg0, Object arg1) { + try { + fanliInvite(hongBaoList, uid, sourceType, taskKey, maxPregetTime); + } catch (Exception e) { + return TransactionStatus.RollbackTransaction; + } + return TransactionStatus.CommitTransaction; + } + }, null); + } catch (Exception e) { + LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); + } + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + int sourceType = Constant.SOURCE_TYPE_VIP; + List<Integer> types = new ArrayList<>(); + types.add(HongBaoV2.TYPE_YIJI); + types.add(HongBaoV2.TYPE_ERJI); + types.add(HongBaoV2.TYPE_SHARE_YIJI); + types.add(HongBaoV2.TYPE_SHARE_ERJI); + long count = hongBaoV2Mapper.countCanBalanceHongBaoByTypeAndUid(types, uid, sourceType, maxPregetTime); + List<HongBaoV2> hongBaoList = new ArrayList<>(); + // 1000鏉℃暟鎹负1椤� + int page = (int) (count % 1000 == 0 ? count / 1000 : count / 1000 + 1); + for (int i = 0; i < page; i++) { + List<HongBaoV2> tempHongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, sourceType, + maxPregetTime, i * 1000, 1000); + if (tempHongBaoList != null && tempHongBaoList.size() > 0) + hongBaoList.addAll(tempHongBaoList); + } + + for (int i = 0; i < hongBaoList.size(); i++) { + HongBaoV2 item = hongBaoList.get(i); + if (item != null && item.getParent() != null) { + if (item != null) { + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(item.getParent().getId()); + if (hongBaoOrder != null && hongBaoOrder.getCommonOrder() != null) { + CommonOrder co = hongBaoOrder.getCommonOrder(); + // 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处 + UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId()); + if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) { + invalidHongBaoForbidden(item.getId()); + hongBaoList.remove(i); + i--; + } + } + } + } + } + + if(hongBaoList.size()==0) + return; // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 String taskKey = getTaskKey(uid); @@ -409,10 +501,19 @@ @Transactional(rollbackFor = Exception.class) @Override public void shareSettlePDD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + shareSettleVipShop(Constant.SOURCE_TYPE_PDD, uid, maxPregetTime); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void shareSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + shareSettleVipShop(Constant.SOURCE_TYPE_VIP, uid, maxPregetTime); + } + + private void shareSettleVipShop(int sourceType, Long uid, Date maxPregetTime) throws OrderMoneySettleException { /** * 澶勭悊鍒嗕韩璧� */ - int sourceType = Constant.SOURCE_TYPE_PDD; List<Integer> types = new ArrayList<>(); // 鏌ヨUID鐨勫垎浜禋璁㈠崟 @@ -561,7 +662,7 @@ } // 閫氱煡鍏嶅崟鍒拌处 try { - userSystemCouponService.updateStateByArrivalAccount(orderId); + userSystemCouponService.updateStateByArrivalAccount(orderId,sourceType); } catch (Exception e) { e.printStackTrace(); } @@ -817,21 +918,6 @@ LogHelper.errorDetailInfo(e); } } - } - - /** - * 閭�璇疯ˉ璐寸粨绠� - * - * @param orderId - * @param sourceType - * @throws ParamsException - * @throws TeamEincomeRecordException - */ - @Transactional(rollbackFor = Exception.class) - @Override - public void inviteSubsidySettle(Long uid, String taskKey, Date maxPreGetTime) - throws OrderMoneySettleException, TeamEincomeRecordException, ParamsException { - teamSubsidyManager.addToTeamEincome(uid, taskKey, maxPreGetTime); } private String getTaskKey(Long uid) { -- Gitblit v1.8.0