From 26f7accb815f55f18f8eedfca4324700a96884ec Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 26 八月 2020 18:23:49 +0800 Subject: [PATCH] 资金验证优化 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java | 1360 +++++++++++++++++++++++++--------------------------------- 1 files changed, 590 insertions(+), 770 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 a61689a..fc5d12d 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 @@ -64,864 +64,684 @@ @Service public class OrderMoneySettleServiceImpl implements OrderMoneySettleService { - @Resource - private HongBaoV2Mapper hongBaoV2Mapper; + @Resource + private HongBaoV2Mapper hongBaoV2Mapper; - @Resource - private HongBaoOrderMapper hongBaoOrderMapper; + @Resource + private HongBaoOrderMapper hongBaoOrderMapper; - @Resource - private UserInfoMapper userInfoMapper; + @Resource + private UserInfoMapper userInfoMapper; - @Resource - private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper; + @Resource + private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper; - @Resource - private UserMoneyService userMoneyService; + @Resource + private UserMoneyService userMoneyService; - @Resource - private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + @Resource + private UserMoneyMsgNotificationService userMoneyMsgNotificationService; - @Resource - private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService; + @Resource + private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService; - @Resource - private AccountDetailsHongBaoMapService accountDetailsHongBaoMapService; + @Resource + private AccountDetailsHongBaoMapService accountDetailsHongBaoMapService; - @Resource - private CommonOrderService commonOrderService; + @Resource + private CommonOrderService commonOrderService; - @Resource - private UserSystemCouponService userSystemCouponService; + @Resource + private UserSystemCouponService userSystemCouponService; - @Resource(name = "orderTransactionProducer") - private TransactionProducer orderTransactionProducer; + @Resource(name = "orderTransactionProducer") + private TransactionProducer orderTransactionProducer; - // 閭�璇疯ˉ璐� + // 閭�璇疯ˉ璐� - @Resource - private HongBaoV2SettleTempService hongBaoV2SettleTempService; + @Resource + private HongBaoV2SettleTempService hongBaoV2SettleTempService; - @Resource - private TeamRewardDebtService teamRewardDebtService; + @Resource + private TeamRewardDebtService teamRewardDebtService; - @Resource - private TeamRewardManager teamRewardManager; - - @Resource - private RocketMQManager rocketMQManager; + @Resource + private TeamRewardManager teamRewardManager; - // 涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥 - private void invalidHongBaoForbidden(Long id) { - HongBaoV2 updateHongBaoV2 = new HongBaoV2(id); - updateHongBaoV2.setState(HongBaoV2.STATE_SHIXIAO); - updateHongBaoV2.setBeizhu("灏佺澶辨晥"); - updateHongBaoV2.setUpdateTime(new Date()); - hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBaoV2); - } + @Resource + private RocketMQManager rocketMQManager; - @Transactional(rollbackFor = Exception.class) - @Override - public void inviteSettleTB(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 - int sourceType = Constant.SOURCE_TYPE_TAOBAO; - 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); - } + // 涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥 + private void invalidHongBaoForbidden(Long id) { + HongBaoV2 updateHongBaoV2 = new HongBaoV2(id); + updateHongBaoV2.setState(HongBaoV2.STATE_SHIXIAO); + updateHongBaoV2.setBeizhu("灏佺澶辨晥"); + updateHongBaoV2.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBaoV2); + } - 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; + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteSettleTB(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + int sourceType = Constant.SOURCE_TYPE_TAOBAO; + inviteSettle(uid,sourceType,maxPregetTime); + } - String taskKey = getTaskKey(uid); + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteSettleJD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + int sourceType = Constant.SOURCE_TYPE_JD; + inviteSettle(uid,sourceType,maxPregetTime); + } - TeamRewardPreRecieveMQMsg mqMsg = new TeamRewardPreRecieveMQMsg(taskKey, uid, sourceType, maxPregetTime, - new Date()); + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteSettlePDD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + int sourceType = Constant.SOURCE_TYPE_PDD; + inviteSettle(uid,sourceType,maxPregetTime); + } - Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.teamRewardPreRecieved, mqMsg); + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + int sourceType = Constant.SOURCE_TYPE_VIP; + inviteSettle(uid,sourceType,maxPregetTime); + } - msg.setKey(taskKey); - - - // 娣诲姞浜嬪姟娑堟伅 - try { - orderTransactionProducer.send(msg, new LocalTransactionExecuter() { - @Override - public TransactionStatus execute(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; - } - }, 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)); - } - System.out.println(new Gson().toJson(mqMsg)); - } - @Transactional(rollbackFor = Exception.class) - @Override - public void inviteSettleJD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 - int sourceType = Constant.SOURCE_TYPE_JD; - 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); - } + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteSettleSuning(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + int sourceType = Constant.SOURCE_TYPE_SUNING; + inviteSettle(uid,sourceType,maxPregetTime); + } - 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; - // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 + private void inviteSettle(Long uid, int sourceType, Date maxPregetTime) throws OrderMoneySettleException { + // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 + 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); + } - 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) { - e.printStackTrace(); - return TransactionStatus.RollbackTransaction; - } - return TransactionStatus.CommitTransaction; - } - }, null); - } catch (Exception e) { - LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); - } - } + 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--; + } + } + } + } + } - @Transactional(rollbackFor = Exception.class) - @Override - public void inviteSettlePDD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 - int sourceType = Constant.SOURCE_TYPE_PDD; - 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); - } + if (hongBaoList.size() == 0) + return; - 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); + 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)); + } + } - // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 - 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 shareSettleTB(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + /** + * 澶勭悊鍒嗕韩璧� + */ + int sourceType = Constant.SOURCE_TYPE_TAOBAO; + List<Integer> types = new ArrayList<>(); - @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); - } + // 鏌ヨUID鐨勫垎浜禋璁㈠崟 + types.add(HongBaoV2.TYPE_SHARE_GOODS); + 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; + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, + null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); + String taskKey = getTaskKey(uid); + msg.setKey(taskKey); - // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 - 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)); - } - } + // 娣诲姞浜嬪姟娑堟伅 + try { + orderTransactionProducer.send(msg, new LocalTransactionExecuter() { + @Override + public TransactionStatus execute(Message arg0, Object arg1) { + try { + fanLiShareTB(hongBaoList, uid, taskKey); + } catch (TaoBaoWeiQuanException 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 shareSettleTB(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - /** - * 澶勭悊鍒嗕韩璧� - */ - int sourceType = Constant.SOURCE_TYPE_TAOBAO; - List<Integer> types = new ArrayList<>(); + @Transactional(rollbackFor = Exception.class) + @Override + public void shareSettleJD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + /** + * 澶勭悊鍒嗕韩璧� + */ + int sourceType = Constant.SOURCE_TYPE_JD; + List<Integer> types = new ArrayList<>(); - // 鏌ヨUID鐨勫垎浜禋璁㈠崟 - types.add(HongBaoV2.TYPE_SHARE_GOODS); - 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); - } + // 鏌ヨUID鐨勫垎浜禋璁㈠崟 + types.add(HongBaoV2.TYPE_SHARE_GOODS); + 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); + } - OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, - null, null, new Date(), 0); - Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); - String taskKey = getTaskKey(uid); - msg.setKey(taskKey); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, + null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); + String taskKey = getTaskKey(uid); + msg.setKey(taskKey); + // 娣诲姞浜嬪姟娑堟伅 + try { + orderTransactionProducer.send(msg, new LocalTransactionExecuter() { + @Override + public TransactionStatus execute(Message arg0, Object arg1) { + fanLiShareOther(hongBaoList, uid, sourceType, taskKey); + return TransactionStatus.CommitTransaction; + } + }, null); + } catch (Exception e) { + LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); + } + } - // 娣诲姞浜嬪姟娑堟伅 - try { - orderTransactionProducer.send(msg, new LocalTransactionExecuter() { - @Override - public TransactionStatus execute(Message arg0, Object arg1) { - try { - fanLiShareTB(hongBaoList, uid, taskKey); - } catch (TaoBaoWeiQuanException 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 shareSettlePDD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + shareSettle(Constant.SOURCE_TYPE_PDD, uid, maxPregetTime); + } - @Transactional(rollbackFor = Exception.class) - @Override - public void shareSettleJD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - /** - * 澶勭悊鍒嗕韩璧� - */ - int sourceType = Constant.SOURCE_TYPE_JD; - List<Integer> types = new ArrayList<>(); + @Transactional(rollbackFor = Exception.class) + @Override + public void shareSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + shareSettle(Constant.SOURCE_TYPE_VIP, uid, maxPregetTime); + } - // 鏌ヨUID鐨勫垎浜禋璁㈠崟 - types.add(HongBaoV2.TYPE_SHARE_GOODS); - 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); - } + @Transactional(rollbackFor = Exception.class) + @Override + public void shareSettleSuning(Long uid, Date maxPregetTime) throws OrderMoneySettleException { + shareSettle(Constant.SOURCE_TYPE_SUNING, uid, maxPregetTime); + } - OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, - null, null, new Date(), 0); - Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); - String taskKey = getTaskKey(uid); - msg.setKey(taskKey); - // 娣诲姞浜嬪姟娑堟伅 - try { - orderTransactionProducer.send(msg, new LocalTransactionExecuter() { - @Override - public TransactionStatus execute(Message arg0, Object arg1) { - fanLiShareOther(hongBaoList, uid, sourceType, taskKey); - return TransactionStatus.CommitTransaction; - } - }, null); - } catch (Exception e) { - LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); - } - } + private void shareSettle(int sourceType, Long uid, Date maxPregetTime) throws OrderMoneySettleException { + /** + * 澶勭悊鍒嗕韩璧� + */ + List<Integer> types = new ArrayList<>(); - @Transactional(rollbackFor = Exception.class) - @Override - public void shareSettlePDD(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - shareSettleVipShop(Constant.SOURCE_TYPE_PDD, uid, maxPregetTime); - } + // 鏌ヨUID鐨勫垎浜禋璁㈠崟 + types.add(HongBaoV2.TYPE_SHARE_GOODS); + 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); + } - @Transactional(rollbackFor = Exception.class) - @Override - public void shareSettleVipShop(Long uid, Date maxPregetTime) throws OrderMoneySettleException { - shareSettleVipShop(Constant.SOURCE_TYPE_VIP, uid, maxPregetTime); - } + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, + null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); + String taskKey = getTaskKey(uid); + msg.setKey(taskKey); + // 娣诲姞浜嬪姟娑堟伅 + try { + orderTransactionProducer.send(msg, new LocalTransactionExecuter() { + @Override + public TransactionStatus execute(Message arg0, Object arg1) { + fanLiShareOther(hongBaoList, uid, sourceType, taskKey); + return TransactionStatus.CommitTransaction; + } + }, null); + } catch (Exception e) { + LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); + } + } - private void shareSettleVipShop(int sourceType, Long uid, Date maxPregetTime) throws OrderMoneySettleException { - /** - * 澶勭悊鍒嗕韩璧� - */ - List<Integer> types = new ArrayList<>(); - - // 鏌ヨUID鐨勫垎浜禋璁㈠崟 - types.add(HongBaoV2.TYPE_SHARE_GOODS); - 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); - } - - OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, - null, null, new Date(), 0); - Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); - String taskKey = getTaskKey(uid); - msg.setKey(taskKey); - // 娣诲姞浜嬪姟娑堟伅 - try { - orderTransactionProducer.send(msg, new LocalTransactionExecuter() { - @Override - public TransactionStatus execute(Message arg0, Object arg1) { - fanLiShareOther(hongBaoList, uid, sourceType, taskKey); - 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 ziGouSettle(String orderId, int sourceType, String taskKey) throws OrderMoneySettleException { - // 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘 - List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(sourceType, orderId); - List<HongBaoV2> hongBaoList = new ArrayList<>(); - Map<Long, BigDecimal> userMoney = new HashMap<>(); - Map<Long, List<HongBaoV2>> userHongBao = new HashMap<>(); - Map<Long, Integer> userGoodsCount = new HashMap<>(); - for (CommonOrder co : orderList) { - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); - hongBaoList.add(hongBaoOrder.getHongBaoV2()); - Long uid = co.getUserInfo().getId(); - if (userGoodsCount.get(uid) == null) - userGoodsCount.put(uid, co.getCount()); - else - userGoodsCount.put(uid, Integer.valueOf(co.getCount() + userGoodsCount.get(uid))); - } + @Transactional(rollbackFor = Exception.class) + @Override + public void ziGouSettle(String orderId, int sourceType, String taskKey) throws OrderMoneySettleException { + // 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘 + List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(sourceType, orderId); + List<HongBaoV2> hongBaoList = new ArrayList<>(); + Map<Long, BigDecimal> userMoney = new HashMap<>(); + Map<Long, List<HongBaoV2>> userHongBao = new HashMap<>(); + Map<Long, Integer> userGoodsCount = new HashMap<>(); + for (CommonOrder co : orderList) { + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); + hongBaoList.add(hongBaoOrder.getHongBaoV2()); + Long uid = co.getUserInfo().getId(); + if (userGoodsCount.get(uid) == null) + userGoodsCount.put(uid, co.getCount()); + else + userGoodsCount.put(uid, Integer.valueOf(co.getCount() + userGoodsCount.get(uid))); + } - for (HongBaoV2 hb : hongBaoList) { - long currentTimeMillis = System.currentTimeMillis(); - if (hb.getState() != HongBao.STATE_SHIXIAO) { - // 璁剧疆涓哄凡杩斿埄 - // 澶勭悊涓荤孩鍖� - if (hb.getState() != HongBaoV2.STATE_SHIXIAO && hb.getState() != HongBaoV2.STATE_YILINGQU - && hb.getType() == HongBaoV2.TYPE_ZIGOU) { - // 濡傛灉绾㈠寘娌¤棰嗗彇 - Long uid = hb.getUserInfo().getId(); - HongBaoV2 updateHongBao = new HongBaoV2(); - updateHongBao.setId(hb.getId()); - updateHongBao.setState(HongBaoV2.STATE_YILINGQU); - updateHongBao.setGetTime(new Date(currentTimeMillis)); - hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); - if (userMoney.get(uid) == null) - userMoney.put(uid, hb.getMoney()); - else - userMoney.put(uid, userMoney.get(uid).add(hb.getMoney())); + for (HongBaoV2 hb : hongBaoList) { + long currentTimeMillis = System.currentTimeMillis(); + if (hb.getState() != HongBao.STATE_SHIXIAO) { + // 璁剧疆涓哄凡杩斿埄 + // 澶勭悊涓荤孩鍖� + if (hb.getState() != HongBaoV2.STATE_SHIXIAO && hb.getState() != HongBaoV2.STATE_YILINGQU + && hb.getType() == HongBaoV2.TYPE_ZIGOU) { + // 濡傛灉绾㈠寘娌¤棰嗗彇 + Long uid = hb.getUserInfo().getId(); + HongBaoV2 updateHongBao = new HongBaoV2(); + updateHongBao.setId(hb.getId()); + updateHongBao.setState(HongBaoV2.STATE_YILINGQU); + updateHongBao.setGetTime(new Date(currentTimeMillis)); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); + if (userMoney.get(uid) == null) + userMoney.put(uid, hb.getMoney()); + else + userMoney.put(uid, userMoney.get(uid).add(hb.getMoney())); - // 娣诲姞绾㈠寘鍒扮敤鎴� - if (userHongBao.get(uid) == null) - userHongBao.put(uid, new ArrayList<>()); - userHongBao.get(uid).add(hb); - } - } - } + // 娣诲姞绾㈠寘鍒扮敤鎴� + if (userHongBao.get(uid) == null) + userHongBao.put(uid, new ArrayList<>()); + userHongBao.get(uid).add(hb); + } + } + } - // 鑾峰彇缁存潈璧勯噾 - if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { - try { - Map<Long, BigDecimal> userSubMoneyMap = taoBaoWeiQuanDrawBackService.doWeiQuanFanli(orderId, false); - if (userSubMoneyMap != null) { - for (Iterator<Long> its = userMoney.keySet().iterator(); its.hasNext();) { - Long uid = its.next(); - if (userSubMoneyMap.get(uid) != null) { - // 鍑忓幓缁存潈璧勯噾 - userMoney.put(uid, userMoney.get(uid).subtract(userSubMoneyMap.get(uid))); - } - } - } - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - throw new OrderMoneySettleException(2, "缁存潈璁㈠崟鍑洪敊"); - } - } + // 鑾峰彇缁存潈璧勯噾 + if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { + try { + Map<Long, BigDecimal> userSubMoneyMap = taoBaoWeiQuanDrawBackService.doWeiQuanFanli(orderId, false); + if (userSubMoneyMap != null) { + for (Iterator<Long> its = userMoney.keySet().iterator(); its.hasNext(); ) { + Long uid = its.next(); + if (userSubMoneyMap.get(uid) != null) { + // 鍑忓幓缁存潈璧勯噾 + userMoney.put(uid, userMoney.get(uid).subtract(userSubMoneyMap.get(uid))); + } + } + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + throw new OrderMoneySettleException(2, "缁存潈璁㈠崟鍑洪敊"); + } + } - // if (userMoney.isEmpty()) { - // throw new OrderMoneySettleException(1, "娌℃湁闇�瑕佺粨绠楃殑璁㈠崟"); - // } + // if (userMoney.isEmpty()) { + // throw new OrderMoneySettleException(1, "娌℃湁闇�瑕佺粨绠楃殑璁㈠崟"); + // } - Iterator<Long> its = userMoney.keySet().iterator(); + Iterator<Long> its = userMoney.keySet().iterator(); - while (its.hasNext()) { - // 灏嗚嚜宸辨坊鍔犲埌鐢ㄦ埛 - Long uid = its.next(); - BigDecimal money = userMoney.get(uid); - UserMoneyDetail userMoneyDetail = null; - // 鎻掑叆鏂扮増璧勯噾鏄庣粏 - try { - // 姝ゅ涓嶇敤璁㈠崟鍙峰仛鍞竴鎬х储寮� - userMoneyDetail = UserMoneyDetailFactory.createFanLi(uid, orderId, sourceType, null, money); - } catch (UserMoneyDetailException e1) { - try { - LogHelper.errorDetailInfo(e1, "璁㈠崟鍙�:" + orderId, ""); - } catch (Exception e2) { - e2.printStackTrace(); - } - } + while (its.hasNext()) { + // 灏嗚嚜宸辨坊鍔犲埌鐢ㄦ埛 + Long uid = its.next(); + BigDecimal money = userMoney.get(uid); + UserMoneyDetail userMoneyDetail = null; + // 鎻掑叆鏂扮増璧勯噾鏄庣粏 + try { + // 姝ゅ涓嶇敤璁㈠崟鍙峰仛鍞竴鎬х储寮� + userMoneyDetail = UserMoneyDetailFactory.createFanLi(uid, orderId, sourceType, null, money); + } catch (UserMoneyDetailException e1) { + try { + LogHelper.errorDetailInfo(e1, "璁㈠崟鍙�:" + orderId, ""); + } catch (Exception e2) { + e2.printStackTrace(); + } + } - userMoneyService.addUserMoney(uid, money, userMoneyDetail); + userMoneyService.addUserMoney(uid, money, userMoneyDetail); - List<Long> hbIdList = new ArrayList<>(); - // 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴 - for (HongBaoV2 v2 : userHongBao.get(uid)) { - hbIdList.add(v2.getId()); - accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), userMoneyDetail.getId()); - try { - HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(v2.getId()); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - // 娣诲姞缁撶畻鏄犲皠 - hongBaoV2SettleTempService.addTemp(hbIdList, taskKey); + List<Long> hbIdList = new ArrayList<>(); + // 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴 + for (HongBaoV2 v2 : userHongBao.get(uid)) { + hbIdList.add(v2.getId()); + accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), userMoneyDetail.getId()); + try { + HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(v2.getId()); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + // 娣诲姞缁撶畻鏄犲皠 + hongBaoV2SettleTempService.addTemp(hbIdList, taskKey); - // 绔欏唴淇�+鎺ㄩ�� - UserInfo user = userInfoMapper.selectByPrimaryKey(uid); + // 绔欏唴淇�+鎺ㄩ�� + UserInfo user = userInfoMapper.selectByPrimaryKey(uid); - // 鏂扮増閫氱煡 + // 鏂扮増閫氱煡 - userMoneyMsgNotificationService.fanliOrderReceived(uid, orderId, sourceType, userGoodsCount.get(uid), money, - user.getMyHongBao(), orderList.get(0).getThirdCreateTime()); - } - // 閫氱煡鍏嶅崟鍒拌处 - try { - userSystemCouponService.updateStateByArrivalAccount(orderId,sourceType); - } catch (Exception e) { - e.printStackTrace(); - } + userMoneyMsgNotificationService.fanliOrderReceived(uid, orderId, sourceType, userGoodsCount.get(uid), money, + user.getMyHongBao(), orderList.get(0).getThirdCreateTime()); + } + // 閫氱煡鍏嶅崟鍒拌处 + try { + userSystemCouponService.updateStateByArrivalAccount(orderId, sourceType); + } catch (Exception e) { + e.printStackTrace(); + } - // 娣诲姞缁撶畻鏄犲皠 + // 娣诲姞缁撶畻鏄犲皠 - } + } - private HongBaoV2 filterWeiQuanINGHongBao(HongBaoV2 hongBao) { + private HongBaoV2 filterWeiQuanINGHongBao(HongBaoV2 hongBao) { - long hbId = hongBao.getId(); - if (hongBao.getParent() != null) { - hbId = hongBao.getParent().getId(); - } + long hbId = hongBao.getId(); + if (hongBao.getParent() != null) { + hbId = hongBao.getParent().getId(); + } - HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hbId); + HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hbId); - if (hongbaoOrder == null) - return null; + if (hongbaoOrder == null) + return null; - List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper - .selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "缁存潈鍒涘缓"); + List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "缁存潈鍒涘缓"); - List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList1 = taoBaoWeiQuanOrderMapper - .selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "绛夊緟澶勭悊"); - if ((taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) - || (taoBaoWeiQuanList1 != null && taoBaoWeiQuanList1.size() > 0)) { - return null; - } - return hongBao; - } + List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList1 = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "绛夊緟澶勭悊"); + if ((taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) + || (taoBaoWeiQuanList1 != null && taoBaoWeiQuanList1.size() > 0)) { + return null; + } + return hongBao; + } - @Transactional - private void fanliInvite(List<HongBaoV2> hongBaoList, Long uid, int sourceType, String key, Date maxPreGetTime) - throws TeamEincomeRecordException, ParamsException, TeamRewardDebtException { - List<Long> hbIdList = new ArrayList<>(); - BigDecimal invitemoney = new BigDecimal(0); - Set<String> inviteOrders = new HashSet<>(); + private void fanliInvite(List<HongBaoV2> hongBaoList, Long uid, int sourceType, String key, Date maxPreGetTime) + throws TeamEincomeRecordException, ParamsException, TeamRewardDebtException { + List<Long> hbIdList = new ArrayList<>(); + BigDecimal invitemoney = new BigDecimal(0); + Set<String> inviteOrders = new HashSet<>(); - // 闇�瑕佸垽鏂��娆剧殑璁㈠崟鍙� - for (HongBaoV2 hongBao : hongBaoList) { - hongBao = filterWeiQuanINGHongBao(hongBao); - if (hongBao == null) - continue; - hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); - if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { - TeamRewardDebt debt = teamRewardDebtService.selectBySourceId(hongBao.getId()); - BigDecimal money = hongBao.getMoney(); - if (debt != null && debt.getLeftMoney().compareTo(new BigDecimal(0)) > 0 - && money.compareTo(debt.getLeftMoney()) >= 0) { - money = money.subtract(debt.getLeftMoney()); - // 杩橀挶 - teamRewardDebtService.repayDebt(debt.getId(), debt.getLeftMoney()); - } + // 闇�瑕佸垽鏂��娆剧殑璁㈠崟鍙� + for (HongBaoV2 hongBao : hongBaoList) { + hongBao = filterWeiQuanINGHongBao(hongBao); + if (hongBao == null) + continue; + hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); + if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { + TeamRewardDebt debt = teamRewardDebtService.selectBySourceId(hongBao.getId()); + BigDecimal money = hongBao.getMoney(); + if (debt != null && debt.getLeftMoney().compareTo(new BigDecimal(0)) > 0 + && money.compareTo(debt.getLeftMoney()) >= 0) { + money = money.subtract(debt.getLeftMoney()); + // 杩橀挶 + teamRewardDebtService.repayDebt(debt.getId(), debt.getLeftMoney()); + } - invitemoney = invitemoney.add(money); - HongBaoV2 updateHongBao = new HongBaoV2(); - updateHongBao.setId(hongBao.getId()); - updateHongBao.setGetTime(new Date()); - updateHongBao.setState(HongBaoV2.STATE_YILINGQU); - updateHongBao.setUpdateTime(new Date()); - hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - hbIdList.add(hongBao.getId()); + invitemoney = invitemoney.add(money); + HongBaoV2 updateHongBao = new HongBaoV2(); + updateHongBao.setId(hongBao.getId()); + updateHongBao.setGetTime(new Date()); + updateHongBao.setState(HongBaoV2.STATE_LINGQUING); + updateHongBao.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); + // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� + hbIdList.add(hongBao.getId()); - // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 + // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getParent().getId()); - inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - } - } + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getParent().getId()); + inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); + } + } - // 閭�璇疯禋鍒拌处 - if (invitemoney.compareTo(new BigDecimal(0)) > 0) { - // 鑾峰彇褰撳墠鐨勬湀浠� - teamRewardManager.addToEincome(uid, maxPreGetTime, invitemoney, sourceType); - } + // 閭�璇疯禋鍒拌处 + if (invitemoney.compareTo(new BigDecimal(0)) > 0) { + // 鑾峰彇褰撳墠鐨勬湀浠� + teamRewardManager.addToEincome(uid, maxPreGetTime, invitemoney, sourceType); + } - hongBaoV2SettleTempService.addTemp(hbIdList, key); + hongBaoV2SettleTempService.addTemp(hbIdList, key); - // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID - for (Long hongBaoId : hbIdList) { - try { - if (Constant.ENABLE_MQ) - HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - } + // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID + for (Long hongBaoId : hbIdList) { + try { + if (Constant.ENABLE_MQ) + HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + } - /** - * 娣樺疂鍒嗕韩璧氳繑鍒� - * - * @param hongBaoList - * @param uid - * @throws TaoBaoWeiQuanException - */ - private void fanLiShareTB(List<HongBaoV2> hongBaoList, Long uid, String key) throws TaoBaoWeiQuanException { - BigDecimal sharemoney = new BigDecimal(0); - List<Long> hbIdList = new ArrayList<>(); - Set<String> drawBackOrders = new HashSet<String>(); - List<Long> recieveHongBaoIds = new ArrayList<>(); - Set<String> shareOrders = new HashSet<>(); + /** + * 娣樺疂鍒嗕韩璧氳繑鍒� + * + * @param hongBaoList + * @param uid + * @throws TaoBaoWeiQuanException + */ + private void fanLiShareTB(List<HongBaoV2> hongBaoList, Long uid, String key) throws TaoBaoWeiQuanException { + BigDecimal sharemoney = new BigDecimal(0); + List<Long> hbIdList = new ArrayList<>(); + Set<String> drawBackOrders = new HashSet<String>(); + List<Long> recieveHongBaoIds = new ArrayList<>(); + Set<String> shareOrders = new HashSet<>(); - for (HongBaoV2 hongBao : hongBaoList) { - hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); - hongBao = filterWeiQuanINGHongBao(hongBao); - if (hongBao == null) - continue; + for (HongBaoV2 hongBao : hongBaoList) { + hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); + hongBao = filterWeiQuanINGHongBao(hongBao); + if (hongBao == null) + continue; - if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { - sharemoney = sharemoney.add(hongBao.getMoney()); - HongBaoV2 updateHongBao = new HongBaoV2(); - updateHongBao.setId(hongBao.getId()); - updateHongBao.setGetTime(new Date()); - updateHongBao.setState(HongBao.STATE_YILINGQU); - updateHongBao.setUpdateTime(new Date()); - hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - hbIdList.add(hongBao.getId()); - // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 - Date balanceTime = null; - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId()); - if (hongBaoOrder != null) { - balanceTime = hongBaoOrder.getCommonOrder().getSettleTime(); - } - shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - if (balanceTime != null - && balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - } - } - } + if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { + sharemoney = sharemoney.add(hongBao.getMoney()); + HongBaoV2 updateHongBao = new HongBaoV2(); + updateHongBao.setId(hongBao.getId()); + updateHongBao.setGetTime(new Date()); + updateHongBao.setState(HongBao.STATE_YILINGQU); + updateHongBao.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); + // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� + hbIdList.add(hongBao.getId()); + // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 + Date balanceTime = null; + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId()); + if (hongBaoOrder != null) { + balanceTime = hongBaoOrder.getCommonOrder().getSettleTime(); + } + shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); + if (balanceTime != null + && balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { + drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); + } + } + } - /** - * 鍒嗕韩璧氬埌璐� - */ + /** + * 鍒嗕韩璧氬埌璐� + */ - if (sharemoney.compareTo(new BigDecimal(0)) > 0) { - // 娣诲姞鏂扮増璇︽儏璁板綍 - try { - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO, - sharemoney, new Date()); - // 娣诲姞璧勯噾 - userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail); + if (sharemoney.compareTo(new BigDecimal(0)) > 0) { + // 娣诲姞鏂扮増璇︽儏璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO, + sharemoney, new Date()); + // 娣诲姞璧勯噾 + userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId()); - if (hbIdList.size() > 0) - recieveHongBaoIds.addAll(hbIdList); - } catch (UserMoneyDetailException e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } + // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� + accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId()); + if (hbIdList.size() > 0) + recieveHongBaoIds.addAll(hbIdList); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } - // 鏂扮増閫氱煡 - userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, sharemoney, - userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), new Date()); + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, sharemoney, + userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), new Date()); - for (String orderId : drawBackOrders) - taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId); - } + for (String orderId : drawBackOrders) + taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId); + } - hongBaoV2SettleTempService.addTemp(recieveHongBaoIds, key); + hongBaoV2SettleTempService.addTemp(recieveHongBaoIds, key); - // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID - for (Long hongBaoId : recieveHongBaoIds) { - try { - if (Constant.ENABLE_MQ) - HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } + // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID + for (Long hongBaoId : recieveHongBaoIds) { + try { + if (Constant.ENABLE_MQ) + HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } - } - } + } + } - /** - * 鍏朵粬骞冲彴鍒嗕韩璧氳繑鍒� - * - * @param hongBaoList - * @param uid - * @param sourceType - */ - private void fanLiShareOther(List<HongBaoV2> hongBaoList, Long uid, int sourceType, String key) { - BigDecimal sharemoney = new BigDecimal(0); - List<Long> hbIdList = new ArrayList<>(); - List<Long> recieveHongBaoIds = new ArrayList<>(); - Set<String> shareOrders = new HashSet<>(); + /** + * 鍏朵粬骞冲彴鍒嗕韩璧氳繑鍒� + * + * @param hongBaoList + * @param uid + * @param sourceType + */ + private void fanLiShareOther(List<HongBaoV2> hongBaoList, Long uid, int sourceType, String key) { + BigDecimal sharemoney = new BigDecimal(0); + List<Long> hbIdList = new ArrayList<>(); + List<Long> recieveHongBaoIds = new ArrayList<>(); + Set<String> shareOrders = new HashSet<>(); - for (HongBaoV2 hongBao : hongBaoList) { - hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); - hongBao = filterWeiQuanINGHongBao(hongBao); - if (hongBao == null) - continue; + for (HongBaoV2 hongBao : hongBaoList) { + hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); + hongBao = filterWeiQuanINGHongBao(hongBao); + if (hongBao == null) + continue; - if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { - sharemoney = sharemoney.add(hongBao.getMoney()); - HongBaoV2 updateHongBao = new HongBaoV2(); - updateHongBao.setId(hongBao.getId()); - updateHongBao.setGetTime(new Date()); - updateHongBao.setState(HongBao.STATE_YILINGQU); - updateHongBao.setUpdateTime(new Date()); - hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - hbIdList.add(hongBao.getId()); - // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId()); - shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - } - } + if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { + sharemoney = sharemoney.add(hongBao.getMoney()); + HongBaoV2 updateHongBao = new HongBaoV2(); + updateHongBao.setId(hongBao.getId()); + updateHongBao.setGetTime(new Date()); + updateHongBao.setState(HongBao.STATE_YILINGQU); + updateHongBao.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); + // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� + hbIdList.add(hongBao.getId()); + // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId()); + shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); + } + } - /** - * 鍒嗕韩璧氬埌璐� - */ + /** + * 鍒嗕韩璧氬埌璐� + */ - if (sharemoney.compareTo(new BigDecimal(0)) > 0) { - // 娣诲姞鏂扮増璇︽儏璁板綍 - try { - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, sharemoney, - new Date()); - // 娣诲姞璧勯噾 - userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail); + if (sharemoney.compareTo(new BigDecimal(0)) > 0) { + // 娣诲姞鏂扮増璇︽儏璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, sharemoney, + new Date()); + // 娣诲姞璧勯噾 + userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId()); - if (hbIdList.size() > 0) - recieveHongBaoIds.addAll(hbIdList); - } catch (UserMoneyDetailException e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } + // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� + accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId()); + if (hbIdList.size() > 0) + recieveHongBaoIds.addAll(hbIdList); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } - userMoneyMsgNotificationService.shareOrderReceived(uid, sourceType, sharemoney, - userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), new Date()); - } + userMoneyMsgNotificationService.shareOrderReceived(uid, sourceType, sharemoney, + userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao(), new Date()); + } - hongBaoV2SettleTempService.addTemp(recieveHongBaoIds, key); + hongBaoV2SettleTempService.addTemp(recieveHongBaoIds, key); - // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID - for (Long hongBaoId : recieveHongBaoIds) { - try { - if (Constant.ENABLE_MQ) - HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - } + // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID + for (Long hongBaoId : recieveHongBaoIds) { + try { + if (Constant.ENABLE_MQ) + HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + } - private String getTaskKey(Long uid) { - return uid + "-" + UUID.randomUUID().toString(); - } + private String getTaskKey(Long uid) { + return uid + "-" + UUID.randomUUID().toString(); + } } -- Gitblit v1.8.0