From 1d9eef9a4ba7caebf73b483e0062f9259dbf22a0 Mon Sep 17 00:00:00 2001
From: admin <2780501319@qq.com>
Date: 星期五, 28 二月 2020 15:42:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java | 157 ++++++++++++++++++++++++++++-----------------------
1 files changed, 86 insertions(+), 71 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 2b17f89..e054f1c 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
@@ -28,7 +28,8 @@
import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
import com.yeshi.fanli.dto.HongBao;
-import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO;
+import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
+import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
@@ -59,6 +60,7 @@
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.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
@@ -112,7 +114,16 @@
@Resource
private HongBaoV2SettleTempService hongBaoV2SettleTempService;
- @Transactional
+ //涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥
+ private void invalidHongBaoForbidden(Long id) {
+ HongBaoV2 updateHongBaoV2 = new HongBaoV2(id);
+ updateHongBaoV2.setState(HongBaoV2.STATE_SHIXIAO);
+ updateHongBaoV2.setBeizhu("灏佺澶辨晥");
+ updateHongBaoV2.setUpdateTime(new Date());
+ hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBaoV2);
+ }
+
+ @Transactional(rollbackFor = Exception.class)
@Override
public void inviteSettleTB(Long uid) throws OrderMoneySettleException {
// 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋
@@ -143,6 +154,7 @@
// 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处
UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId());
if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
+ invalidHongBaoForbidden(item.getId());
hongBaoList.remove(i);
i--;
}
@@ -152,9 +164,10 @@
}
// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
- OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_INVITE, uid,
- sourceType, null, null, new Date());
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+ OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_INVITE, uid,
+ sourceType, null, null, new Date(), 0);
+
+ Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg);
String taskKey = getTaskKey(uid);
msg.setKey(taskKey);
// 娣诲姞浜嬪姟娑堟伅
@@ -173,9 +186,10 @@
} catch (Exception e) {
LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg));
}
+ System.out.println(new Gson().toJson(mqMsg));
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void inviteSettleJD(Long uid) throws OrderMoneySettleException {
// 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋
@@ -206,6 +220,7 @@
// 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处
UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId());
if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
+ invalidHongBaoForbidden(item.getId());
hongBaoList.remove(i);
i--;
}
@@ -215,9 +230,9 @@
}
// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
- OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_INVITE, uid,
- sourceType, null, null, new Date());
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+ OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_INVITE, uid,
+ sourceType, null, null, new Date(), 0);
+ Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg);
String taskKey = getTaskKey(uid);
msg.setKey(taskKey);
// 娣诲姞浜嬪姟娑堟伅
@@ -234,7 +249,7 @@
}
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void inviteSettlePDD(Long uid) throws OrderMoneySettleException {
// 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋
@@ -265,6 +280,7 @@
// 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处
UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId());
if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
+ invalidHongBaoForbidden(item.getId());
hongBaoList.remove(i);
i--;
}
@@ -274,9 +290,9 @@
}
// 閭�璇疯禋鍒拌处浜嬪姟娑堟伅
- OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_INVITE, uid,
- sourceType, null, null, new Date());
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+ OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_INVITE, uid,
+ sourceType, null, null, new Date(), 0);
+ Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg);
String taskKey = getTaskKey(uid);
msg.setKey(taskKey);
// 娣诲姞浜嬪姟娑堟伅
@@ -293,7 +309,7 @@
}
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void shareSettleTB(Long uid) throws OrderMoneySettleException {
/**
@@ -315,9 +331,9 @@
hongBaoList.addAll(tempHongBaoList);
}
- OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_SHARE, uid,
- sourceType, null, null, new Date());
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+ 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);
// 娣诲姞浜嬪姟娑堟伅
@@ -338,7 +354,7 @@
}
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void shareSettleJD(Long uid) throws OrderMoneySettleException {
/**
@@ -360,9 +376,9 @@
hongBaoList.addAll(tempHongBaoList);
}
- OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_SHARE, uid,
- sourceType, null, null, new Date());
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+ 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);
// 娣诲姞浜嬪姟娑堟伅
@@ -379,7 +395,7 @@
}
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void shareSettlePDD(Long uid) throws OrderMoneySettleException {
/**
@@ -401,9 +417,9 @@
hongBaoList.addAll(tempHongBaoList);
}
- OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_SHARE, uid,
- sourceType, null, null, new Date());
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+ 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);
// 娣诲姞浜嬪姟娑堟伅
@@ -420,9 +436,9 @@
}
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
- public void ziGouSettle(String orderId, int sourceType,String taskKey) throws OrderMoneySettleException {
+ public void ziGouSettle(String orderId, int sourceType, String taskKey) throws OrderMoneySettleException {
// 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘
List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(sourceType, orderId);
List<HongBaoV2> hongBaoList = new ArrayList<>();
@@ -466,6 +482,29 @@
}
}
+ // 鑾峰彇缁存潈璧勯噾
+ 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, "娌℃湁闇�瑕佺粨绠楃殑璁㈠崟");
+ // }
+
Iterator<Long> its = userMoney.keySet().iterator();
while (its.hasNext()) {
@@ -486,8 +525,8 @@
}
userMoneyService.addUserMoney(uid, money, userMoneyDetail);
-
- List<Long> hbIdList=new ArrayList<>();
+
+ List<Long> hbIdList = new ArrayList<>();
// 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴
for (HongBaoV2 v2 : userHongBao.get(uid)) {
hbIdList.add(v2.getId());
@@ -498,7 +537,7 @@
LogHelper.errorDetailInfo(e);
}
}
- //娣诲姞缁撶畻鏄犲皠
+ // 娣诲姞缁撶畻鏄犲皠
hongBaoV2SettleTempService.addTemp(hbIdList, taskKey);
// 绔欏唴淇�+鎺ㄩ��
@@ -515,34 +554,8 @@
e.printStackTrace();
}
- // 缁存潈鎵f锛�2018-08-05鍚庡紑濮嬪疄琛岋級
+ // 娣诲姞缁撶畻鏄犲皠
- try {
- if (sourceType == Constant.SOURCE_TYPE_TAOBAO)
- taoBaoWeiQuanDrawBackService.doWeiQuanFanli(orderId);
- } catch (TaoBaoWeiQuanException e) {
- if (e.getCode() == TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER) {
- List<TaoBaoOrder> olist = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId);
- if (olist != null && olist.size() > 0) {
- long time = TimeUtil.convertToTimeTemp(olist.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss");
- olist = TaoKeOrderApiUtil.getTaoBaoCommonOrderList(time, time + 1000 * 2L, 1);
- if (olist != null && olist.size() > 0) {
- for (int i = 0; i < olist.size(); i++) {
- if (!olist.get(i).getOrderId().equalsIgnoreCase(orderId)) {// 鍒犻櫎鏃犲叧璁㈠崟
- olist.remove(i);
- i--;
- }
- }
- taoBaoOrderService.addTaoBaoOrderList(olist);
- }
- }
- } else
- throw new OrderMoneySettleException(e.getCode(), "缁存潈澶勭悊鍑洪敊:" + e.getMsg());
- }
-
- //娣诲姞缁撶畻鏄犲皠
-
-
}
private HongBaoV2 filterWeiQuanINGHongBao(HongBaoV2 hongBao) {
@@ -569,7 +582,7 @@
return hongBao;
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
private void fanliInviteTB(List<HongBaoV2> hongBaoList, Long uid, String key) throws TaoBaoWeiQuanException {
List<Long> hbIdList = new ArrayList<>();
BigDecimal invitemoney = new BigDecimal(0);
@@ -622,9 +635,9 @@
Date minDate = new Date(TimeUtil
.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
long validCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
- minDate, maxDate);
+ minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
- minDate, maxDate);
+ minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, Constant.SOURCE_TYPE_TAOBAO,
(int) validCount, (int) weiQuanCount, invitemoney, new Date());
@@ -708,9 +721,9 @@
Date minDate = new Date(TimeUtil
.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
long validCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
- minDate, maxDate);
+ minDate, maxDate, sourceType);
long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
- minDate, maxDate);
+ minDate, maxDate, sourceType);
UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, sourceType, (int) validCount,
(int) weiQuanCount, invitemoney, new Date());
@@ -806,9 +819,9 @@
Date minDate = new Date(TimeUtil
.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
- minDate, maxDate);
+ minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
- minDate, maxDate);
+ minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO,
(int) validCount, (int) weiQuanCount, sharemoney, new Date());
@@ -904,12 +917,12 @@
Date minDate = new Date(TimeUtil
.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
- minDate, maxDate);
+ minDate, maxDate, sourceType);
long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
- minDate, maxDate);
+ minDate, maxDate, sourceType);
- UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO,
- (int) validCount, (int) weiQuanCount, sharemoney, new Date());
+ UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, (int) validCount,
+ (int) weiQuanCount, sharemoney, new Date());
// 娣诲姞璧勯噾
userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
@@ -949,7 +962,7 @@
* @param orderId
* @param sourceType
*/
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void inviteSubsidySettle(Long uid, String taskKey) throws OrderMoneySettleException {
// 鏌ヨkey
@@ -961,7 +974,7 @@
for (HongBaoV2SettleTemp temp : list) {
Long hongBaoId = temp.getHongBaoId();
HongBaoV2 hongBao = hongBaoV2Mapper.selectByPrimaryKey(hongBaoId);
- if (sourceType != null)
+ if (hongBao != null)
sourceType = hongBao.getOrderType();
if (hongBao.getParent() != null)
hongBao = hongBao.getParent();
@@ -1018,7 +1031,9 @@
}
// 娣诲姞璧勯噾
userMoneyService.addUserMoney(uid, totalMoney, userMoneyDetail);
- // TODO 娣诲姞娑堟伅
+ // 娣诲姞娑堟伅
+ userMoneyMsgNotificationService.inviteOrderSubSidy(uid, new Date(), "绯荤粺鑷姩涓嬪彂", totalMoney,
+ userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao());
}
}
}
--
Gitblit v1.8.0