From 733281fcb5f1ab01e1196b542b7e07b49b3e44c4 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 25 十月 2019 17:02:55 +0800 Subject: [PATCH] 订单消息,返利消息,返利券使用,邀请订单补贴 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java | 552 ++++++++---------------------------------------------- 1 files changed, 89 insertions(+), 463 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java index 8ffe63e..887ecca 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java @@ -2,7 +2,6 @@ import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -10,6 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.UUID; import javax.annotation.Resource; @@ -29,9 +29,9 @@ import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper; import com.yeshi.fanli.dao.mybatis.order.OrderMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; -import com.yeshi.fanli.dto.HongBao; import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; import com.yeshi.fanli.dto.order.OrderMQMsgDTO; +import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.Order; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; @@ -49,6 +49,7 @@ import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; +import com.yeshi.fanli.exception.money.OrderMoneySettleException; import com.yeshi.fanli.exception.money.UserMoneyDetailException; import com.yeshi.fanli.exception.order.CommonOrderException; import com.yeshi.fanli.exception.order.HongBaoException; @@ -64,6 +65,7 @@ import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.HongBaoV2Service; import com.yeshi.fanli.service.inter.order.LostOrderService; +import com.yeshi.fanli.service.inter.order.OrderMoneySettleService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.jd.JDOrderService; import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; @@ -78,12 +80,12 @@ import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager; import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; -import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil; +import com.yeshi.fanli.util.rocketmq.MQTagConstant; +import com.yeshi.fanli.util.rocketmq.MQTopicName; @Service public class OrderProcessServiceImpl implements OrderProcessService { @@ -147,6 +149,9 @@ @Resource(name = "orderTransactionProducer") private TransactionProducer orderTransactionProducer; + + @Resource + private OrderMoneySettleService orderMoneySettleService; /** * 鏄惁鏄垎浜鍗� @@ -361,12 +366,7 @@ return; } - if (hongBaoOrder.getCommonOrder() == null) {// || - // hongBaoOrder.getCommonOrder().getSourceType() - // == - // Constant.SOURCE_TYPE_JD - // || hongBaoOrder.getCommonOrder().getSourceType() == - // Constant.SOURCE_TYPE_PDD + if (hongBaoOrder.getCommonOrder() == null) { return; } @@ -390,134 +390,29 @@ return; } - // 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘 - List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId( - hongBaoOrder.getCommonOrder().getSourceType(), hongBaoOrder.getCommonOrder().getOrderNo()); - List<HongBaoV2> hongBaoList = new ArrayList<>(); - Map<Long, BigDecimal> userMoney = new HashMap<>(); - Map<Long, List<HongBaoV2>> userHongBao = new HashMap<>(); - Map<Long, Integer> userGoodsCount = new HashMap<>(); - // Map<Long, BigDecimal> userPayMent = new HashMap<>(); - for (CommonOrder co : orderList) { - 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))); - // if (userPayMent.get(uid) == null) - // userPayMent.put(uid, new BigDecimal(0)); - // if (co.getState() == CommonOrder.STATE_JS) - // userPayMent.put(uid, - // userPayMent.get(uid).add(co.getSettlement())); - // else - // userPayMent.put(uid, userPayMent.get(uid).add(co.getPayment())); - } - - 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); - } - } - } - - 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, hongBaoOrder.getCommonOrder().getOrderNo(), - hongBaoOrder.getCommonOrder().getSourceType(), null, money); - } catch (UserMoneyDetailException e1) { - try { - LogHelper.errorDetailInfo(e1, "璁㈠崟鍙�:" + hongBaoOrder.getCommonOrder().getOrderNo(), ""); - } catch (Exception e2) { - e2.printStackTrace(); - } - } - - userMoneyService.addUserMoney(uid, money, userMoneyDetail); - // 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴 - for (HongBaoV2 v2 : userHongBao.get(uid)) { - accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), userMoneyDetail.getId()); - try { - HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(v2.getId()); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - - // 绔欏唴淇�+鎺ㄩ�� - UserInfo user = userInfoMapper.selectByPrimaryKey(uid); - - // 鏂扮増閫氱煡 - userMoneyMsgNotificationService.fanliOrderReceived(uid, hongBaoOrder.getCommonOrder().getOrderNo(), - hongBaoOrder.getCommonOrder().getSourceType(), userGoodsCount.get(uid), money, user.getMyHongBao()); - } - // 閫氱煡鍏嶅崟鍒拌处 + // 鑷喘鍒拌处浜嬪姟娑堟伅 + OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU, + mainUser.getId(), hongBaoOrder.getCommonOrder().getSourceType(), + hongBaoOrder.getCommonOrder().getOrderNo(), null, new Date()); + Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + String key = mainUser.getId() + "-" + UUID.randomUUID().toString(); + msg.setKey(key); try { - userSystemCouponService.updateStateByArrivalAccount(hongBaoOrder.getCommonOrder().getOrderNo()); - } catch (Exception e) { - e.printStackTrace(); - } - - // 缁存潈鎵f锛�2018-08-05鍚庡紑濮嬪疄琛岋級 - if (hongBaoOrder.getCommonOrder().getSettleTime() != null && hongBaoOrder.getCommonOrder().getSettleTime() - .getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - try { - if (hongBaoOrder.getCommonOrder().getSourceType() == Constant.SOURCE_TYPE_TAOBAO) - taoBaoWeiQuanDrawBackService.doWeiQuanFanli(hongBaoOrder.getCommonOrder().getOrderNo()); - } catch (TaoBaoWeiQuanException e) { - if (e.getCode() == TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER) { - List<TaoBaoOrder> olist = taoBaoOrderService - .getTaoBaoOrderByOrderId(hongBaoOrder.getCommonOrder().getOrderNo()); - - 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(hongBaoOrder.getCommonOrder().getOrderNo())) {// 鍒犻櫎鏃犲叧璁㈠崟 - olist.remove(i); - i--; - } - } - - taoBaoOrderService.addTaoBaoOrderList(olist); - } + orderTransactionProducer.send(msg, new LocalTransactionExecuter() { + @Override + public TransactionStatus execute(Message arg0, Object arg1) { + try { + orderMoneySettleService.ziGouSettle(hongBaoOrder.getCommonOrder().getOrderNo(), + hongBaoOrder.getCommonOrder().getSourceType(), key); + return TransactionStatus.CommitTransaction; + } catch (Exception e) { + return TransactionStatus.RollbackTransaction; } - } else - throw new TaoBaoWeiQuanException(e.getCode(), e.getMsg()); - } + } + }, null); + } catch (Exception e) { + LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); } - } @Override @@ -598,297 +493,46 @@ } } - private HongBaoV2 filterWeiQuanINGHongBao(HongBaoV2 hongBao) { - - long hbId = hongBao.getId(); - if (hongBao.getParent() != null) { - hbId = hongBao.getParent().getId(); - } - - HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hbId); - - if (hongbaoOrder == null) - return null; - - 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; - } - @Override @Transactional public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException { - List<Long> recieveHongBaoIds = new ArrayList<>(); - /** - * 澶勭悊閭�璇疯禋璁㈠崟 - */ - // 鏌ヨUID鐨勯個璇疯禋璁㈠崟 - List<Integer> types = new ArrayList<>(); - types.add(HongBaoV2.TYPE_YIJI); - types.add(HongBaoV2.TYPE_ERJI); - long count = hongBaoV2Mapper.countCanBalanceHongBaoByTypeAndUid(types, uid); - 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, 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.getType() == HongBaoV2.TYPE_SHARE_GOODS) { - } else { - item = item.getParent(); - } - if (item != null) { - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(item.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) { - hongBaoList.remove(i); - i--; - } - - } - } - } - - List<Long> hbIdList = new ArrayList<>(); - - BigDecimal invitemoney = new BigDecimal(0); - Set<String> inviteOrders = new HashSet<>(); - int inviteGoodsCount = 0; - - // 闇�瑕佸垽鏂��娆剧殑璁㈠崟鍙� - Set<String> drawBackOrders = new HashSet<String>(); - 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) { - invitemoney = invitemoney.add(hongBao.getMoney()); - 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()); - - // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 - - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getParent().getId()); - inviteGoodsCount += hongBaoOrder.getCommonOrder().getCount(); - inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - - Date balanceTime = hongBaoOrder.getCommonOrder().getSettleTime(); - if (balanceTime != null - && balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - if (!StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getOrderNo())) - drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - } - } - } - - /** - * 澶勭悊涓�绾т簩绾у垎浜禋(灞炰簬閭�璇疯禋绫诲瀷) - */ - - List<HongBaoV2> totalHongBaoList = new ArrayList<>(); - // 鏌ヨUID鐨勪簩绾ф垨鑰呬笁绾у垎浜禋璁㈠崟 - // TODO 鏆傛椂鏌ヨ10000鏉℃暟鎹紝鍚庨潰鍐嶅仛鍒嗛〉 - types.clear(); - types.add(HongBaoV2.TYPE_SHARE_YIJI); - types.add(HongBaoV2.TYPE_SHARE_ERJI); - // TODO 闇�瑕佸鐞嗚秴杩�1w鏉℃暟鎹殑璁㈠崟 - List<HongBaoV2> hbList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 0, 10000); - - if (hbList != null && hbList.size() > 0) - totalHongBaoList.addAll(hbList); - - for (HongBaoV2 hb : totalHongBaoList) { - if (hb.getState() == HongBaoV2.STATE_BUKELINGQU || hb.getState() == HongBaoV2.STATE_KELINGQU) { - hb = filterWeiQuanINGHongBao(hb); - if (hb == null) - continue; - invitemoney = invitemoney.add(hb.getMoney()); - HongBaoV2 updateHongBao = new HongBaoV2(); - updateHongBao.setId(hb.getId()); - updateHongBao.setGetTime(new Date()); - updateHongBao.setState(HongBaoV2.STATE_YILINGQU); - updateHongBao.setUpdateTime(new Date()); - hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - hbIdList.add(hb.getId()); - - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hb.getParent().getId()); - inviteGoodsCount += hongBaoOrder.getCommonOrder().getCount(); - inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - if (!StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getOrderNo())) - drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - } - } - // 閭�璇疯禋鍒拌处 - if (invitemoney.compareTo(new BigDecimal(0)) > 0) { - - // 娣诲姞鏂扮増璇︽儏璁板綍 - try { - // 鏌ヨ閭�璇疯禋鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗� - Calendar ca = Calendar.getInstance(); - Date maxDate = new Date(TimeUtil - .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); - ca.add(Calendar.MONTH, -1); - - 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); - long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, - minDate, maxDate); - - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, Constant.SOURCE_TYPE_TAOBAO, - (int) validCount, (int) weiQuanCount, invitemoney, new Date()); - - // 澧炲姞璧勯噾 - userMoneyService.addUserMoney(uid, invitemoney, userMoneyDetail); - // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� - accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId()); - } catch (UserMoneyDetailException e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - // 鏂扮増閫氱煡 - userMoneyMsgNotificationService.inviteOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, inviteOrders.size(), - inviteGoodsCount, invitemoney, userInfoMapper.selectByPrimaryKey(uid).getMyHongBao()); - - for (String orderId : drawBackOrders) - taoBaoWeiQuanDrawBackService.doWeiQuanInvite(orderId); - } - if (hbIdList.size() > 0) - recieveHongBaoIds.addAll(hbIdList); - hbIdList.clear(); - drawBackOrders.clear(); - - /** - * 澶勭悊鍒嗕韩璧� - */ - - int shareGoodsCount = 0; - Set<String> shareOrders = new HashSet<>(); - BigDecimal sharemoney = new BigDecimal(0); - // 鏌ヨUID鐨勫垎浜禋璁㈠崟 - types.clear(); - types.add(HongBaoV2.TYPE_SHARE_GOODS); - // TODO 闇�瑕佸鐞嗚秴杩�10000鏉℃暟鎹殑璁㈠崟 - List<HongBaoV2> hongBaoShareList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 0, 10000); - for (HongBaoV2 hongBao : hongBaoShareList) { - 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(); - shareGoodsCount += hongBaoOrder.getCommonOrder().getCount(); - } - shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - if (balanceTime != null - && balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); - } - } + try { + orderMoneySettleService.inviteSettleTB(uid); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); } - /** - * 鍒嗕韩璧氬埌璐� - */ - - if (sharemoney.compareTo(new BigDecimal(0)) > 0) { - // 娣诲姞鏂扮増璇︽儏璁板綍 - try { - // 璁$畻鏈湀鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗� - Calendar ca = Calendar.getInstance(); - - Date maxDate = new Date(TimeUtil - .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); - ca.add(Calendar.MONTH, -1); - - 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); - long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, - minDate, maxDate); - long invalidCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_SX, - minDate, maxDate); - - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO, - (int) validCount, (int) weiQuanCount, 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(); - } - } - - // 鏂扮増閫氱煡 - userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, shareOrders.size(), - shareGoodsCount, sharemoney, userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao()); - - for (String orderId : drawBackOrders) - taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId); + try { + orderMoneySettleService.inviteSettleJD(uid); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); } - // 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID - for (Long hongBaoId : recieveHongBaoIds) { - try { - HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - + try { + orderMoneySettleService.inviteSettlePDD(uid); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); } + // 鍒嗕韩璧氬埌璐� + try { + orderMoneySettleService.shareSettleTB(uid); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); + } + + try { + orderMoneySettleService.shareSettleJD(uid); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); + } + + try { + orderMoneySettleService.shareSettlePDD(uid); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); + } } @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @@ -910,10 +554,20 @@ // 鍘熸潵涓嶅瓨鍦ㄨ鍗� Long uid = null; if (oldOrder == null) { - PidUser pidUser = null;// pidUserMapper.selectByPid(pid); - if (pidUser != null) { - uid = pidUser.getUid(); + Long targetUid = null; + if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID) + && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) { + targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId()); + } else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) { + UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService + .getBySpecialId(orderList.get(0).getSpecialId()); + if (info != null && info.getUser() != null) + targetUid = info.getUser().getId(); + } + + if (targetUid != null) { + uid = targetUid; // 鎻掑叆鍒癘rder涓� // 娣诲姞鍒拌鍗曚腑鍘� Order order = new Order(); @@ -927,36 +581,8 @@ // 鍔犲叆鍒拌鍗曡〃 orderMapper.insertSelective(order); oldOrder = order; - } else { - Long targetUid = null; - if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID) - && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) { - targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId()); - - } else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) { - UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService - .getBySpecialId(orderList.get(0).getSpecialId()); - if (info != null && info.getUser() != null) - targetUid = info.getUser().getId(); - } - - if (targetUid != null) { - uid = targetUid; - // 鎻掑叆鍒癘rder涓� - // 娣诲姞鍒拌鍗曚腑鍘� - Order order = new Order(); - order.setBeizhu("PID杩斿埄璁㈠崟"); - order.setCreatetime(System.currentTimeMillis()); - order.setOrderId(orderId); - order.setOrderType(1); - order.setState(Order.STATE_YIZHIFU); - order.setUserInfo(new UserInfo(uid)); - order.setVersion(2); - // 鍔犲叆鍒拌鍗曡〃 - orderMapper.insertSelective(order); - oldOrder = order; - } } + } else { uid = oldOrder.getUserInfo().getId(); } @@ -1017,21 +643,12 @@ @Override public void processShareGoodsOrderNew(String orderId, List<TaoBaoOrder> orderList) { - List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); if (orderList != null && orderList.size() > 0) { - String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(), - orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId()); // 鍘熸潵涓嶅瓨鍦ㄨ鍗� Long uid = null; - PidUser pidUser = null; // pidUserMapper.selectByPid(pid);-PID鏈哄埗绉婚櫎 - if (pidUser != null) - uid = pidUser.getUid(); - else { - UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService.getByRelationId(orderList.get(0).getRelationId()); - if (info != null && info.getUser() != null) - uid = info.getUser().getId(); - } - + UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService.getByRelationId(orderList.get(0).getRelationId()); + if (info != null && info.getUser() != null) + uid = info.getUser().getId(); // 灏氭湭鎵惧埌鍜孭ID瀵瑰簲鐨勭敤鎴� if (uid == null) { // 閫氳繃绾㈠寘鏌ヨ @@ -1502,7 +1119,7 @@ public List<HongBaoV2> getCanBalanceElmeFanliHongBao() { List<Integer> list = new ArrayList<>(); list.add(HongBaoV2.TYPE_ELME); - return hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(list, null, 0, 1000); + return hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(list, null, null, 0, 1000); } @Override @@ -1546,11 +1163,21 @@ // 杩斿埄鍒拌处 } + /** + * 娣诲姞绾㈠寘涓庝簨鍔℃秷鎭� + * + * @param commonOrderList + * @param orderId + * @param uid + * @param sourceType + * @param hongBaoType + */ private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid, int sourceType, int hongBaoType) { final List<CommonOrder> coList = convertCommonOrder(commonOrderList); OrderMQMsgDTO mqMsg = new OrderMQMsgDTO(orderId, sourceType, uid); - Message msg = new Message("TOPIC_ORDER", String.format("orderhongbao-%s-%s", sourceType, hongBaoType), + Message msg = new Message(MQTopicName.TOPIC_ORDER.name(), + String.format(MQTagConstant.TAG_ORDER_STATISTIC_PREFIX + "%s-%s", sourceType, hongBaoType), new Gson().toJson(mqMsg).getBytes()); orderTransactionProducer.send(msg, new LocalTransactionExecuter() { @Override @@ -1572,5 +1199,4 @@ } }, null); } - } -- Gitblit v1.8.0