From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 20 五月 2020 17:25:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java | 214 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 159 insertions(+), 55 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 737adf6..916beef 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 @@ -30,10 +30,12 @@ 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.mq.UidDateDTO; import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum; import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg; import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg; import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; +import com.yeshi.fanli.dto.order.HongBaoAddResult; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.Order; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; @@ -74,6 +76,7 @@ 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.msg.UserOrderMsgNotificationService; import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; @@ -87,7 +90,8 @@ import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager; +import com.yeshi.fanli.util.cmq.order.PlaceOrderCMQManager; +import com.yeshi.fanli.util.cmq.order.TeamOrderCMQManager; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; @@ -129,6 +133,9 @@ @Resource private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + + @Resource + private UserOrderMsgNotificationService userOrderMsgNotificationService; @Resource private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; @@ -213,12 +220,19 @@ List<TaoBaoOrder> list = orders.get(orderId); String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(), list.get(0).getSourceMediaId(), list.get(0).getAdPositionId()); - if ("楗夸簡涔�".equalsIgnoreCase(list.get(0).getOrderType())) { - // 澶勭悊楗夸簡涔堣鍗� - elmeOrderMap.put(orderId, list); - } - - else { + if ("楗夸簡涔�".equalsIgnoreCase(list.get(0).getOrderType()) + && !pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT)) { + // 楗夸簡涔堣鍗曞紑濮嬪綊鍏ュ埌娣樺疂璁㈠崟 + if (TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(), + "yyyy-MM-dd HH:mm:ss") >= Constant.NEW_ORDER_FANLI_RULE_TIME) { + fanliOrderMap.put(orderId, list); + } else { + elmeOrderMap.put(orderId, list); + } + } else if ("鍙g".equalsIgnoreCase(list.get(0).getOrderType()) + && pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_KOUBEI_PID)) {// 鍙g鑷喘 + fanliOrderMap.put(orderId, list); + } else { if (!StringUtil.isNullOrEmpty(list.get(0).getSpecialId()) || pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)) {// 璁剧疆娓犻亾ID褰撳仛浼氬憳杩愯惀ID鐨勪綅缃甀D fanliOrderMap.put(orderId, list); @@ -403,7 +417,8 @@ || hb.getPreGetTime().getTime() > System.currentTimeMillis()) continue; try { - CMQManager.getInstance().addFanLiMsgNew(hb); + if (Constant.ENABLE_MQ) + CMQManager.getInstance().addFanLiMsgNew(hb); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); @@ -422,6 +437,11 @@ public void fanli(HongBaoV2 hb1) throws TaoBaoWeiQuanException { // 鏌ヨ鏈�鏂扮殑绾㈠寘鏁版嵁 hb1 = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hb1.getId()); + + if (hb1 == null || hb1.getState() != HongBaoV2.STATE_KELINGQU || hb1.getPreGetTime() == null + || hb1.getPreGetTime().getTime() > System.currentTimeMillis()) + return; + // 姝e父鐢ㄦ埛鎵嶈兘鍒拌处 UserInfo mainUser = userInfoMapper.selectAvailableByPrimaryKey(hb1.getUserInfo().getId()); if (mainUser == null || mainUser.getState() != UserInfo.STATE_NORMAL) { @@ -517,7 +537,8 @@ for (TaoBaoWeiQuanOrder order : orderList) { try { if (order.getState().contains("缁存潈鎴愬姛")) { - CMQManager.getInstance().addWeiQuanOrderMsg(order); + if (Constant.ENABLE_MQ) + CMQManager.getInstance().addWeiQuanOrderMsg(order); } } catch (Exception e) { LogHelper.error("缁存潈璁㈠崟鍔犲叆鍒伴槦鍒楀嚭閿�:" + order != null ? new Gson().toJson(order) : null); @@ -583,65 +604,117 @@ } @Override - public void fanliInvaiteAndShare() { - // 鏌ュ嚭閭�璇疯禋涓庡垎浜禋璇ヨ繑鍒╃殑鐢ㄦ埛ID - List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceShareAndInvite(1000); + public void fanliPreInvaite(Date maxTime) { + // 鏌ュ嚭閭�璇疯禋鐨勭敤鎴稩D + List<Integer> typeList = new ArrayList<>(); + typeList.add(HongBaoV2.TYPE_YIJI); + typeList.add(HongBaoV2.TYPE_ERJI); + typeList.add(HongBaoV2.TYPE_SHARE_YIJI); + typeList.add(HongBaoV2.TYPE_SHARE_ERJI); + + long count = hongBaoV2Mapper.countUidCanBanlanceByTypeAndMaxTime(typeList, maxTime); + int pageSize = 1000; + int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); Set<Long> uidSets = new HashSet<>(); - if (inviteAndShareUids != null) - for (Long uid : inviteAndShareUids) { - if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null) - uidSets.add(uid); - } + for (int i = 0; i < page; i++) { + List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceByTypeAndMaxTime(typeList, maxTime, + i * pageSize, pageSize); + if (inviteAndShareUids != null) + for (Long uid : inviteAndShareUids) { + if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null) + uidSets.add(uid); + } + } // 鏍规嵁鐢ㄦ埛ID Iterator<Long> its = uidSets.iterator(); while (its.hasNext()) { Long uid = its.next(); try { - CMQManager.getInstance().addFanLiTiChengMsg(uid); + if (Constant.ENABLE_MQ) + TeamOrderCMQManager.getInstance().addFanLiTeamIncomePreMsg(new UidDateDTO(uid, maxTime)); } catch (Exception e) { e.printStackTrace(); LogHelper.error(e); } } + + } + + @Override + public void fanliShare(Date maxTime) { + // 鏌ュ嚭閭�璇疯禋鐨勭敤鎴稩D + List<Integer> typeList = new ArrayList<>(); + typeList.add(HongBaoV2.TYPE_SHARE_GOODS); + + long count = hongBaoV2Mapper.countUidCanBanlanceByTypeAndMaxTime(typeList, maxTime); + int pageSize = 1000; + int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + Set<Long> uidSets = new HashSet<>(); + for (int i = 0; i < page; i++) { + List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceByTypeAndMaxTime(typeList, maxTime, + i * pageSize, pageSize); + if (inviteAndShareUids != null) + for (Long uid : inviteAndShareUids) { + if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null) + uidSets.add(uid); + } + } + // 鏍规嵁鐢ㄦ埛ID + Iterator<Long> its = uidSets.iterator(); + while (its.hasNext()) { + Long uid = its.next(); + try { + if (Constant.ENABLE_MQ) + CMQManager.getInstance().addFanLiShareMsg(new UidDateDTO(uid, maxTime)); + } catch (Exception e) { + e.printStackTrace(); + LogHelper.error(e); + } + } + } @Override @Transactional(rollbackFor = Exception.class) - public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException { + public void fanliPreInvaite(Long uid, Date maxPreGetTime) { // 閭�璇疯禋鍒拌处 try { - orderMoneySettleService.inviteSettleTB(uid); + orderMoneySettleService.inviteSettleTB(uid, maxPreGetTime); } catch (OrderMoneySettleException e) { e.printStackTrace(); } try { - orderMoneySettleService.inviteSettleJD(uid); - } catch (OrderMoneySettleException e) { - e.printStackTrace(); - } - // - try { - orderMoneySettleService.inviteSettlePDD(uid); - } catch (OrderMoneySettleException e) { - e.printStackTrace(); - } - - // 鍒嗕韩璧氬埌璐� - try { - orderMoneySettleService.shareSettleTB(uid); + orderMoneySettleService.inviteSettleJD(uid, maxPreGetTime); } catch (OrderMoneySettleException e) { e.printStackTrace(); } try { - orderMoneySettleService.shareSettleJD(uid); + orderMoneySettleService.inviteSettlePDD(uid, maxPreGetTime); } catch (OrderMoneySettleException e) { e.printStackTrace(); } - // + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void fanliShare(Long uid, Date maxPreGetTime) { + // 閭�璇疯禋鍒拌处 try { - orderMoneySettleService.shareSettlePDD(uid); + orderMoneySettleService.shareSettleTB(uid, maxPreGetTime); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); + } + + try { + orderMoneySettleService.shareSettleJD(uid, maxPreGetTime); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); + } + + try { + orderMoneySettleService.shareSettlePDD(uid, maxPreGetTime); } catch (OrderMoneySettleException e) { e.printStackTrace(); } @@ -668,9 +741,17 @@ if (oldOrder == null) { Long targetUid = null; if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID) - && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) { + && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {// 澶勭悊闈炶繑鍒╁晢鍝佸簱鐨勫晢鍝� targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId()); + } else if ((pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_ELEME_PID) + || pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_KOUBEI_PID)) + && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {// 澶勭悊楗夸簡涔�,鍙g鐨勮鍗� + UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService + .getByRelationId(orderList.get(0).getRelationId()); + if (extraInfo != null) { + targetUid = extraInfo.getUser().getId(); + } } else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) { UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService .getBySpecialId(orderList.get(0).getSpecialId()); @@ -739,7 +820,8 @@ order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { - PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); + if (Constant.ENABLE_MQ) + PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } @@ -789,7 +871,8 @@ order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { - PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); + if (Constant.ENABLE_MQ) + PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } @@ -911,7 +994,8 @@ order.setOrderType(Constant.SOURCE_TYPE_JD); order.setUserInfo(new UserInfo(uid)); try { - PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); + if (Constant.ENABLE_MQ) + PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } @@ -942,7 +1026,8 @@ order.setOrderType(Constant.SOURCE_TYPE_JD); order.setUserInfo(new UserInfo(uid)); try { - PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); + if (Constant.ENABLE_MQ) + PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } @@ -1051,7 +1136,8 @@ order.setOrderType(Constant.SOURCE_TYPE_PDD); order.setUserInfo(new UserInfo(uid)); try { - PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); + if (Constant.ENABLE_MQ) + PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } @@ -1084,7 +1170,8 @@ order.setOrderType(Constant.SOURCE_TYPE_PDD); order.setUserInfo(new UserInfo(uid)); try { - PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); + if (Constant.ENABLE_MQ) + PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } @@ -1168,6 +1255,23 @@ @Transactional(rollbackFor = Exception.class) public void invalidHongBaoV2AndGiveGodenCorn(Long hongBaoId, Long uid, String orderId, int sourceType, String beiZhu) throws Exception { + HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBaoId); + if (hongbaoOrder != null) { + CommonOrder commonOrder = commonOrderService.selectByPrimaryKey(hongbaoOrder.getCommonOrder().getId()); + if (commonOrder != null) { + if (commonOrder.getState() == CommonOrder.STATE_FK) { + CommonOrder updateOrder = new CommonOrder(commonOrder.getId()); + updateOrder.setState(CommonOrder.STATE_SX); + updateOrder.setUpdateTime(new Date()); + commonOrderService.updateByPrimaryKeySelective(updateOrder); + } + } + } + + HongBaoV2 hongBao = hongBaoV2Service.selectByPrimaryKey(hongBaoId); + if (hongBao == null || hongBao.getState() == HongBaoV2.STATE_SHIXIAO) + return; + HongBaoV2 v2 = new HongBaoV2(hongBaoId); v2.setState(HongBaoV2.STATE_SHIXIAO); v2.setBeizhu(beiZhu); @@ -1182,7 +1286,10 @@ update.setUpdateTime(new Date()); hongBaoV2Service.updateByPrimaryKeySelective(update); } - userSystemCouponService.systemGiveRewardCoupon(uid, 1, orderId, sourceType, "鍥犲晢瀹惰繚绾︽湭鑳界粨绠楄繑鍒╂垨鍟嗗宸茬粡鍏冲簵"); + + if (hongBao.getType() == HongBaoV2.TYPE_ZIGOU || hongBao.getType() == HongBaoV2.TYPE_SHARE_GOODS) { + userOrderMsgNotificationService.orderInvalidToBusinessRunning(uid, orderId, sourceType, hongBao.getType()); + } } @Transactional @@ -1199,7 +1306,7 @@ // 鏌ヨ涓荤孩鍖� HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) { - if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_BUKELINGQU) { + if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_BUKELINGQU || hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_SHIXIAO) { // 璁㈠崟澶辨晥,璧犻�侀噾甯� try { invalidHongBaoV2AndGiveGodenCorn(hongBaoOrder.getHongBaoV2().getId(), hongBaoOrder.getHongBaoV2().getUserInfo().getId(), commonOrder.getOrderNo(), commonOrder.getSourceType(), "璁㈠崟鎴愬姛锛屽晢瀹舵湭鎵撴"); @@ -1237,7 +1344,7 @@ public List<HongBaoV2> getCanBalanceElmeFanliHongBao() { List<Integer> list = new ArrayList<>(); list.add(HongBaoV2.TYPE_ELME); - return hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(list, null, null, 0, 1000); + return hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(list, null, null, new Date(), 0, 1000); } @Override @@ -1274,9 +1381,6 @@ } userMoneyService.addUserMoney(hongBao.getUserInfo().getId(), hongBao.getMoney(), detail); BigDecimal balance = userInfoMapper.selectByPrimaryKey(hongBao.getUserInfo().getId()).getMyHongBao(); - // 娣诲姞娑堟伅 - userMoneyMsgNotificationService.elmeFanli(hongBao.getUserInfo().getId(), order.getOrderId(), - hongBao.getMoney(), balance); } // 杩斿埄鍒拌处 } @@ -1294,16 +1398,16 @@ private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid, int sourceType, int hongBaoType) { final List<CommonOrder> coList = convertCommonOrder(commonOrderList); - int resultCode = 0; + HongBaoAddResult result = null; try { long time = TimeUtil.convertToTimeTemp("2019-12-06", "yyyy-MM-dd"); if (!Constant.IS_TEST) time = TimeUtil.convertToTimeTemp("2019-12-20", "yyyy-MM-dd"); if (coList.get(0).getThirdCreateTime().getTime() < time) - resultCode = hongBaoV2Service.addHongBao(coList, hongBaoType); + result = hongBaoV2Service.addHongBao(coList, hongBaoType); else - resultCode = hongBaoV2AddManager.addHongBao(coList, hongBaoType); + result = hongBaoV2AddManager.addHongBao(coList, hongBaoType); } catch (HongBaoException e) { try { LogHelper.errorDetailInfo(e, "addJDOrder鎴朼ddHongBao鍑洪敊", "璁㈠崟鍙�:" + orderId); @@ -1314,9 +1418,9 @@ } if (!Constant.IS_TEST) - if (resultCode == 1) {// 鍙彂閫佹柊澧炴秷鎭� + if (result.getResultCode() == HongBaoAddResult.CODE_ADD) {// 鍙彂閫佹柊澧炴秷鎭� OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD, - isCommonOrderValid(coList), 0, new Date()); + isCommonOrderValid(coList), 0, new Date(), result.isMiandan()); Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderStatistic, mqMsg); producer.send(msg); } -- Gitblit v1.8.0