From bbb7a538df960f2f47b0af8c3db03622fca08d99 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 22 五月 2020 13:54:31 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 199 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 152 insertions(+), 47 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java index b5801de..ab39fa2 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java @@ -22,11 +22,13 @@ import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper; import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper; import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper; +import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderGoodsMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum; import com.yeshi.fanli.dto.mq.order.body.OrderConfirmMQMsg; import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.UserInfo; @@ -47,7 +49,10 @@ import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; +import com.yeshi.fanli.entity.taobao.TaoBaoOrderGoods; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; +import com.yeshi.fanli.entity.vipshop.VipShopOrder; +import com.yeshi.fanli.entity.vipshop.VipShopOrderDetail; import com.yeshi.fanli.exception.order.CommonOrderException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.log.LogHelper; @@ -83,6 +88,7 @@ import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.util.user.UserLevelUtil; +import com.yeshi.fanli.util.vipshop.VipShopApiUtil; import com.yeshi.fanli.vo.msg.ClientTextStyleVO; import com.yeshi.fanli.vo.order.CommonOrderGoodsVO; import com.yeshi.fanli.vo.order.CommonOrderVO; @@ -145,6 +151,9 @@ @Resource private UserLevelManager userLevelManager; + + @Resource + private TaoBaoOrderGoodsMapper taoBaoOrderGoodsMapper; @Resource(name = "producer") private Producer orderProducer; @@ -315,7 +324,7 @@ // 褰撳墠鐢ㄦ埛鏄惁VIP boolean vip = userInviteService.verifyVIP(uid); - + // 鏄惁瀛樺湪濂栧姳鍒� boolean hasRewardCoupon = userSystemCouponService.getValidRebateCoupon(uid); for (CommonOrderVO order : listOrder) { @@ -585,23 +594,24 @@ if (HongBaoV2.TYPE_ZIGOU == hongBaoType) { // 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍 if (sourceType == null) { - couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, null, uid, vip, acceptData); + couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, null, uid, vip, acceptData, + hongBao); } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { - couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, uid, vip, - acceptData); + couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, uid, vip, acceptData, + hongBao); } else if (sourceType == Constant.SOURCE_TYPE_JD) { - couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, uid, vip, - acceptData); + couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, uid, vip, acceptData, + hongBao); } else if (sourceType == Constant.SOURCE_TYPE_PDD) { couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordPDD, uid, vip, - acceptData); + acceptData, hongBao); } } - // 鍒嗕韩銆侀個璇� 闅愯棌璁㈠崟鍙� - if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType || HongBaoV2.TYPE_YAOQING == hongBaoType - || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType - || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { + // 閭�璇� 闅愯棌璁㈠崟鍙� + if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType + || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { order.setOrderNo(UserUtil.filterOrderId(order.getOrderNo())); } } @@ -617,7 +627,8 @@ * @param signList */ private void couponFactory(CommonOrderVO order, boolean hasRewardCoupon, Integer hongBaoState, Integer hongBaoType, - List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData) throws Exception { + List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData, BigDecimal hongBao) + throws Exception { // 鏄惁鍏嶅崟鍟嗗搧 boolean freeOrder = false; @@ -713,6 +724,11 @@ jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail")); rewardMap.put("jump", jump); order.setRewardDetail(rewardMap); + } + + // 浣跨敤濂栧姳鍒� 閲戦棰濋檺鍒� + if (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0) { + return; } // 鏄惁鍙娇鐢ㄥ鍔卞埜 @@ -869,7 +885,6 @@ return commonOrderMapper.countUserOrderToApp(uid, type, startTime, endTime, day, source, state, stateOrder); } - @Override public BigDecimal getWeiQuanMoney(List<TaoBaoWeiQuanOrder> listWQ, int sourceType, Long uid) { BigDecimal weiQuanMoney = new BigDecimal(0); @@ -931,8 +946,14 @@ if ("楗夸簡涔�".equalsIgnoreCase(taoBaoOrder.getOrderType())) { cog.setGoodsId(taoBaoOrder.getTradeId() + ""); cog.setGoodsType(Constant.SOURCE_TYPE_ELME); - cog.setPicture("http://img.flqapp.com/resource/goods/elme_picture_demo.png"); - cog.setTitle(taoBaoOrder.getTitle()); + TaoBaoOrderGoods goods = taoBaoOrderGoodsMapper.selectByTradeId(taoBaoOrder.getTradeId()); + if (goods == null) { + cog.setPicture("http://img.flqapp.com/resource/goods/elme_picture_demo.png"); + cog.setTitle(taoBaoOrder.getTitle()); + } else { + cog.setPicture(goods.getImg()); + cog.setTitle(goods.getTitle()); + } newCommonOrder.setCommonOrderGoods(cog); } else { cog.setGoodsId(taoBaoOrder.getAuctionId() + ""); @@ -1124,6 +1145,70 @@ goods.setSkuName(itemOrder.getSkuName()); goods.setPrice(itemOrder.getPrice()); goods.setSkuId(itemOrder.getSkuId()); + } + + if (goods != null) { + cog = CommonOrderGoodsFactory.create(goods); + } + + cog.setCreateTime(new Date()); + cog.setUpdateTime(new Date()); + commonOrderGoodsMapper.insertSelective(cog); + } else { + + } + newCommonOrder.setUserInfo(new UserInfo(uid)); + commonOrderList.add(addCommonOrder(newCommonOrder)); + } + addConfirmMQMsg(commonOrderList); + return commonOrderList; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public List<CommonOrderAddResultDTO> addVipShopOrder(VipShopOrder vipShopOrder, Long uid) + throws CommonOrderException { + List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>(); + // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵�� + int invalidCount = 0; + for (VipShopOrderDetail detail : vipShopOrder.getDetailList()) { + if (detail.getStatus() == VipShopOrderDetail.STATUS_INVALID) { + invalidCount++; + } + } + + // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬� + int wholeOrderState = 0; + if (vipShopOrder.getDetailList().size() == invalidCount) + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO; + else if (invalidCount == 0) + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO; + else + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO; + + List<VipShopOrderDetail> orderItemList = vipShopOrder.getDetailList(); + vipShopOrder.setDetailList(null); + + for (VipShopOrderDetail itemOrder : orderItemList) { + itemOrder.setOrder(vipShopOrder); + CommonOrder newCommonOrder = CommonOrderFactory.create(itemOrder); + CommonOrderGoods cog = new CommonOrderGoods(); + cog.setGoodsId(itemOrder.getGoodsId()); + cog.setGoodsType(Constant.SOURCE_TYPE_VIP); + newCommonOrder.setCommonOrderGoods(cog); + newCommonOrder.setStateWholeOrder(wholeOrderState); + // 璁㈠崟鍟嗗搧鎻掑叆 + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(), + cog.getGoodsType()); + if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧 + { + VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(itemOrder.getGoodsId()); + if (goods == null) { + goods = new VIPGoodsInfo(); + goods.setGoodsName(itemOrder.getGoodsName()); + goods.setVipPrice(""); + goods.setGoodsId(itemOrder.getGoodsId()); + goods.setGoodsThumbUrl(itemOrder.getGoodsThumb()); } if (goods != null) { @@ -1789,7 +1874,6 @@ return listVO; } - @Override public Date getThirdCreateTime(String orderId, int sourceType) { List<CommonOrder> list = listBySourceTypeAndOrderId(sourceType, orderId); @@ -1798,7 +1882,6 @@ return list.get(0).getThirdCreateTime(); } - @Override public List<CommonOrderVO> getOrderList(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type, Integer orderState, String orderNo, String startTime, String endTime, Integer dateType, @@ -1832,9 +1915,7 @@ return commonOrderMapper.countOrderList(uid, state, type, orderState, orderNo, startTime, endTime, dateType, listSource); } - - - + /** * 璁㈠崟淇℃伅鍔犲伐 * @@ -1850,17 +1931,18 @@ List<String> listPDD = new ArrayList<String>(); for (CommonOrderVO order : listOrder) { if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI - || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI + || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) { Integer urank = order.getUrank(); if (urank != null) { - String levelName = UserLevelUtil.getLevelName(urank); - if (!StringUtil.isNullOrEmpty(levelName)) { - order.setOrderDesc("璁㈠崟鏉ユ簮锛�" + levelName); + UserLevelEnum levelEnum = UserLevelUtil.getByOrderRank(urank); + if (levelEnum != null) { + levelEnum = UserLevelUtil.getShowLevel(levelEnum); + order.setOrderDesc("璁㈠崟鏉ユ簮锛�" + levelEnum.getName()); } } } - + Integer sourceType = order.getSourceType(); if (sourceType == null) { continue; @@ -1887,7 +1969,6 @@ if (listPDD.size() > 0) { listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD); } - SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd"); @@ -1979,7 +2060,6 @@ order.setReceiveTime("鏀惰揣鏃堕棿锛�" + format.format(settleTime)); } - Map<String, String> orderStateMap = new HashMap<String, String>(); // 璁㈠崟鐘舵�� Integer orderState = order.getState(); @@ -1992,21 +2072,21 @@ orderState = buFenOrder.getState(); } } - + // 鏄剧ず杩斿埄璇存槑杩炴帴> 鏈け鏁� if (CommonOrder.STATE_SX != orderState && thirdCreateTime.getTime() > TimeUtil.convertDateToTemp(Constant.ORDER_SHOW_BRACE_TIME)) { String rebateLink = configService.get(ConfigKeyEnum.orderRebateDescLink.getKey()); order.setRebateLink(rebateLink + "?orderNo=" + orderNo + "&sourceType=" + sourceType); } - + // 绾㈠寘淇℃伅 - List<HongBaoOrder> hongBaoOrderList = hongBaoOrderService.listDetailByOrderIdAndSourceTypeAndUid(orderNo, sourceType, uid); + List<HongBaoOrder> hongBaoOrderList = hongBaoOrderService.listDetailByOrderIdAndSourceTypeAndUid(orderNo, + sourceType, uid); HongBaoCountVO hongBaoCountVO = hongBaoOrderService.getHongBaoCountVO(hongBaoOrderList); BigDecimal hongBao = hongBaoCountVO.getValidMoney(); Integer hongBaoState = hongBaoCountVO.getCurrentState(); - - + /* 璁㈠崟鐘舵�� 杞崲澶勭悊 */ String orderStateContent = ""; if (CommonOrder.STATE_FK == orderState) { @@ -2019,8 +2099,17 @@ orderStateContent = "宸插敭鍚�"; if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { /* 璁㈠崟缁存潈 鍒ゆ柇鏄惁鍏ㄩ儴缁存潈 */ - List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛"); + List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛"); BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid); + + if (settleTime != null) { + orderStateContent = "鍞悗鎴愬姛"; + WeiQuanInfo weiQuanInfo = new WeiQuanInfo(); + weiQuanInfo.setOldHongBao("楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); + weiQuanInfo.setWqHongBao("鍞悗锛�-楼" + weiQuanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); + order.setWeiQuanInfo(weiQuanInfo); + } hongBao = MoneyBigDecimalUtil.sub(hongBao, weiQuanMoney); } } @@ -2028,19 +2117,17 @@ orderStateMap.put("fontColor", "#666666"); order.setOrderState(orderStateMap); - String hongbaoInfo = ""; // 璁㈠崟鏍囪瘑 List<String> signList = new ArrayList<String>(); /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */ if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) { // 鑷喘 - hongbaoInfo = "杩斿埄"; order.setOrderOrigin("1"); order.setHongBaoTypePic(CommonOrder.TYPE_FANLI); signList.add(CommonOrder.TYPE_FANLI); - + // 鏄惁宸蹭娇鐢ㄥ鍔卞埜銆佸厤鍗曞埜鎯呭喌 - if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { + if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { couponUseFactory(order, listRecordTB); } else if (sourceType == Constant.SOURCE_TYPE_JD) { couponUseFactory(order, listRecordJD); @@ -2049,7 +2136,6 @@ } } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { // 鍒嗕韩 - hongbaoInfo = "濂栭噾"; order.setOrderOrigin("2"); order.setHongBaoTypePic(CommonOrder.TYPE_SHARE); signList.add(CommonOrder.TYPE_SHARE); @@ -2058,11 +2144,10 @@ || HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType) { // 閭�璇疯鍗� - hongbaoInfo = "鏀剁泭"; order.setOrderOrigin("3"); order.setHongBaoTypePic(CommonOrder.TYPE_INVITE); signList.add(CommonOrder.TYPE_INVITE); - } + } order.setSignList(signList); String hongBaoDate = null; @@ -2105,16 +2190,16 @@ stateMap.put("fontColor", stateFontColor); order.setAccountState(stateMap); - hongbaoInfo = hongBaoState_Str + hongbaoInfo; - Map<String, String> hongBaoMap = new HashMap<String, String>(); - hongBaoMap.put("content", hongbaoInfo + " 楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); + hongBaoMap.put("content", + hongBaoState_Str + "鏀剁泭 楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); hongBaoMap.put("fontColor", hongbaoInfoFontColor); order.setHongBaoInfo(hongBaoMap); // 鍒嗕韩銆侀個璇� 闅愯棌璁㈠崟鍙� - if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType - || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { + if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType + || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { order.setOrderNo(UserUtil.filterOrderId(order.getOrderNo())); } } @@ -2150,8 +2235,8 @@ if (UserSystemCouponRecord.STATE_FREE_ON == state) { text = "鍏嶅崟涓�"; } else if (UserSystemCouponRecord.STATE_SUCCESS == state) { - text = "鍏嶅崟鎴愬姛"; - } + text = "宸插厤鍗�"; + } } break; } @@ -2168,4 +2253,24 @@ order.setRewardDetail(rewardMap); } } + + @Override + public long countOrderByUidAndSettled(Long uid, BigDecimal payment) { + Long count = commonOrderMapper.countOrderByUidAndSettled(uid, payment); + if (count == null) { + count = 0L; + } + return count; + } + + @Override + public String getNewestOrderNoByTaoBao() { + return commonOrderMapper.getNewestOrderNoByTaoBao(); + } + + @Override + public List<CommonOrder> listByOrderNo(String orderNo) { + return commonOrderMapper.listByOrderNo(orderNo); + } + } -- Gitblit v1.8.0