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 | 182 ++++++++++++++++++++++++++++++--------------- 1 files changed, 122 insertions(+), 60 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 a08b0fe..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,7 +220,8 @@ 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())) { + 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) { @@ -221,6 +229,9 @@ } 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 @@ -426,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) { @@ -588,70 +604,74 @@ } @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 { if (Constant.ENABLE_MQ) - CMQManager.getInstance().addFanLiTiChengMsg(uid); + TeamOrderCMQManager.getInstance().addFanLiTeamIncomePreMsg(new UidDateDTO(uid, maxTime)); } catch (Exception e) { e.printStackTrace(); LogHelper.error(e); } } + } @Override - @Transactional(rollbackFor = Exception.class) - public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException { - // 閭�璇疯禋鍒拌处 - Date now = new Date(); - try { - orderMoneySettleService.inviteSettleTB(uid, now); - } catch (OrderMoneySettleException e) { - e.printStackTrace(); + 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); + } } - try { - orderMoneySettleService.inviteSettleJD(uid, now); - } catch (OrderMoneySettleException e) { - e.printStackTrace(); - } - // - try { - orderMoneySettleService.inviteSettlePDD(uid, now); - } 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(); - } } @Override @@ -672,6 +692,29 @@ try { orderMoneySettleService.inviteSettlePDD(uid, maxPreGetTime); + } catch (OrderMoneySettleException e) { + e.printStackTrace(); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void fanliShare(Long uid, Date maxPreGetTime) { + // 閭�璇疯禋鍒拌处 + try { + 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(); } @@ -701,8 +744,9 @@ && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {// 澶勭悊闈炶繑鍒╁晢鍝佸簱鐨勫晢鍝� targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId()); - } else if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_ELEME_PID) - && !StringUtil.isNullOrEmpty(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) { @@ -1211,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); @@ -1225,9 +1286,10 @@ update.setUpdateTime(new Date()); hongBaoV2Service.updateByPrimaryKeySelective(update); } - // TODO 鍟嗗鍏冲簵璺戣矾闇�瑕佽禒閫侀噾甯� - // 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 @@ -1244,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(), "璁㈠崟鎴愬姛锛屽晢瀹舵湭鎵撴"); @@ -1336,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); @@ -1356,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