From be67478cae6bf9308f15949a21e7d0a57a3f0ecb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 16 七月 2020 15:37:31 +0800 Subject: [PATCH] dubbo集成修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 246 ++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 211 insertions(+), 35 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 5e9a369..96ceb74 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 @@ -10,6 +10,7 @@ import javax.annotation.Resource; +import com.yeshi.fanli.entity.SystemEnum; import org.apache.commons.beanutils.PropertyUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,7 +19,6 @@ import org.yeshi.utils.taobao.TbImgUtil; import com.aliyun.openservices.ons.api.Message; -import com.aliyun.openservices.ons.api.Producer; import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper; import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper; import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper; @@ -28,6 +28,8 @@ 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.suning.SuningGoodsInfo; +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; @@ -43,13 +45,17 @@ import com.yeshi.fanli.entity.order.ESOrder; import com.yeshi.fanli.entity.order.HongBaoOrder; import com.yeshi.fanli.entity.order.InviteOrderSubsidy; +import com.yeshi.fanli.entity.order.SourceTypeEnum; import com.yeshi.fanli.entity.pdd.PDDOrder; +import com.yeshi.fanli.entity.suning.SuningOrderInfo; import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.goods.facade.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; @@ -68,11 +74,12 @@ import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.service.inter.user.invite.UserInviteService; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; +import com.yeshi.fanli.service.manger.msg.RocketMQManager; import com.yeshi.fanli.service.manger.user.UserLevelManager; import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import org.yeshi.utils.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TimeUtil; +import org.yeshi.utils.TimeUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.account.UserUtil; import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory; @@ -82,10 +89,13 @@ import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; import com.yeshi.fanli.util.rocketmq.MQTopicName; +import com.yeshi.fanli.util.suning.SuningApiUtil; +import com.yeshi.fanli.util.suning.SuningUtil; 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.vo.msg.ClientTextStyleVO; +import com.yeshi.fanli.util.vipshop.VipShopApiUtil; +import com.yeshi.common.vo.ClientTextStyleVO; import com.yeshi.fanli.vo.order.CommonOrderGoodsVO; import com.yeshi.fanli.vo.order.CommonOrderVO; import com.yeshi.fanli.vo.order.HongBaoCountVO; @@ -151,8 +161,8 @@ @Resource private TaoBaoOrderGoodsMapper taoBaoOrderGoodsMapper; - @Resource(name = "producer") - private Producer orderProducer; + @Resource + private RocketMQManager rocketMQManager; // 濂栧姳璁㈠崟鍥剧墖 public final static String PIC_REWARD = "http://img.flqapp.com/resource/order/order_state_reward.png"; @@ -218,7 +228,7 @@ List<Integer> listSource) throws CommonOrderException, Exception { int pageSize = Constant.PAGE_SIZE; - + List<CommonOrderVO> listOrder = commonOrderMapper.listUserOrder((page - 1) * pageSize, pageSize, uid, state, type, orderState, orderNo, startTime, endTime, dateType, listSource); @@ -606,8 +616,9 @@ } // 閭�璇� 闅愯棌璁㈠崟鍙� - 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())); } } @@ -620,7 +631,6 @@ * @param hasRewardCoupon * @param hongBaoState * @param list - * @param signList */ private void couponFactory(CommonOrderVO order, boolean hasRewardCoupon, Integer hongBaoState, Integer hongBaoType, List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData, BigDecimal hongBao) @@ -1087,7 +1097,7 @@ settlement, firstOrder.getUserInfo().getId(), placeDate, new Date()); Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderConfirm, mqMsg); - orderProducer.send(msg); + rocketMQManager.sendNormalMsg(msg, null); } } } @@ -1160,12 +1170,128 @@ 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) { + 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> addSuningOrder(List<SuningOrderInfo> suningOrderList, Long uid) + throws CommonOrderException { + List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>(); + // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵�� + int invalidCount = 0; + for (SuningOrderInfo order : suningOrderList) { + if ("閫�娆�".equalsIgnoreCase(order.getOrderLineStatusDesc()) + || "璁㈠崟宸插彇娑�".equalsIgnoreCase(order.getOrderLineStatusDesc())) { + invalidCount++; + } + } + // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬� + int wholeOrderState = 0; + if (suningOrderList.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; + + for (SuningOrderInfo suningOrderInfo : suningOrderList) { + CommonOrder newCommonOrder = CommonOrderFactory.create(suningOrderInfo); + CommonOrderGoods cog = new CommonOrderGoods(); + cog.setGoodsId(suningOrderInfo.getGoodsNum() + ""); + cog.setGoodsType(Constant.SOURCE_TYPE_SUNING); + newCommonOrder.setCommonOrderGoods(cog); + newCommonOrder.setStateWholeOrder(wholeOrderState); + // 璁㈠崟鍟嗗搧鎻掑叆 + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(), + cog.getGoodsType()); + if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧 + { + SuningGoodsInfo pddGoods = null; + // TODO 闇�瑕佽幏鍙� + pddGoods = SuningApiUtil.getGoodsDetail(suningOrderInfo.getGoodsNum(), suningOrderInfo.getSellerCode()); + if (pddGoods != null) { + cog = CommonOrderGoodsFactory.create(pddGoods); + } + cog.setCreateTime(new Date()); + cog.setUpdateTime(new Date()); + commonOrderGoodsMapper.insertSelective(cog); + newCommonOrder.setCommonOrderGoods(cog); + } else { + } + newCommonOrder.setUserInfo(new UserInfo(uid)); + commonOrderList.add(addCommonOrder(newCommonOrder)); + } + addConfirmMQMsg(commonOrderList); + return commonOrderList; + } + /** * 娣诲姞璁㈠崟 * * @param commonOrder */ - @Transactional(rollbackFor = Exception.class) private CommonOrderAddResultDTO addCommonOrder(CommonOrder commonOrder) throws CommonOrderException { // 鍒ゆ柇鍟嗗搧鏄惁瀛樺湪 if (commonOrder == null) @@ -1341,16 +1467,16 @@ @Override public List<CommonOrderVO> listQuery(long start, int count, Integer keyType, String key, Integer state, Integer type, Integer orderState, String startTime, String endTime, Integer source, List<Long> listShopId, - List<Long> listGoodsId, Date minTime, BigDecimal money, BigDecimal payment) throws CommonOrderException { + List<Long> listGoodsId, Date minTime, BigDecimal money, BigDecimal payment,SystemEnum system) throws CommonOrderException { List<CommonOrderVO> list = null; if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 鎼滅储妗嗘棤鍊兼垨鑰呮寜璁㈠崟鍙锋悳绱㈡椂閮藉彧鎼滅储涓昏鍗� list = commonOrderMapper.listQueryWithNoChild(start, count, keyType, key, state, type, orderState, - startTime, endTime, source, payment); + startTime, endTime, source, payment,system); } else { list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState, startTime, endTime, - source, listShopId, listGoodsId, minTime, money, payment); + source, listShopId, listGoodsId, minTime, money, payment,system); } if (list == null) { @@ -1536,14 +1662,14 @@ @Override public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState, - String startTime, String endTime, Integer source, List<Long> listShopId, List<Long> listGoodsId, - Date minTime, BigDecimal money, BigDecimal payment) throws CommonOrderException { + String startTime, String endTime, Integer source, List<Long> listShopId, List<Long> listGoodsId, + Date minTime, BigDecimal money, BigDecimal payment, SystemEnum system) throws CommonOrderException { if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 鎼滅储妗嗘棤鍊兼垨鑰呮寜璁㈠崟鍙锋悳绱㈡椂閮藉彧鎼滅储涓昏鍗� return commonOrderMapper.countQueryWithNoChild(keyType, key, state, type, orderState, startTime, endTime, - source, payment); + source, payment,system); } else { return commonOrderMapper.countQuery(keyType, key, state, type, orderState, startTime, endTime, source, - listShopId, listGoodsId, minTime, money, payment); + listShopId, listGoodsId, minTime, money, payment,system); } } @@ -1727,6 +1853,13 @@ return commonOrderMapper.getByOrderNo(uid, orderNO); } + + @Override + public List<CommonOrder> getByOrderNoAndSourceType(Long uid, String orderNO, int sourceType) { + return commonOrderMapper.getByOrderNoAndSourceType(uid, orderNO, sourceType); + } + + @Override public CommonOrder selectLatestValidByUid(Long uid) { List<Integer> stateList = new ArrayList<>(); @@ -1817,12 +1950,12 @@ @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, - List<Integer> listSource, boolean notBackSuVip) throws CommonOrderException, Exception { + List<Integer> listSource) throws CommonOrderException, Exception { int pageSize = Constant.PAGE_SIZE; - + List<CommonOrderVO> listOrder = commonOrderMapper.getOrderList((page - 1) * pageSize, pageSize, uid, state, - type, orderState, orderNo, startTime, endTime, dateType, listSource,notBackSuVip); + type, orderState, orderNo, startTime, endTime, dateType, listSource); // 璁㈠崟淇℃伅涓虹┖ if (listOrder == null || listOrder.size() == 0) { @@ -1844,9 +1977,9 @@ @Override public long countOrderList(Long uid, Integer state, Integer type, Integer orderState, String orderNo, - String startTime, String endTime, Integer dateType, List<Integer> listSource, boolean notBackSuVip) throws CommonOrderException { + String startTime, String endTime, Integer dateType, List<Integer> listSource) { return commonOrderMapper.countOrderList(uid, state, type, orderState, orderNo, startTime, endTime, dateType, - listSource, notBackSuVip); + listSource); } /** @@ -1862,13 +1995,15 @@ List<String> listTB = new ArrayList<String>(); List<String> listJD = new ArrayList<String>(); List<String> listPDD = new ArrayList<String>(); + List<String> listVIP = new ArrayList<String>(); + List<String> listSuNing = new ArrayList<String>(); for (CommonOrderVO order : listOrder) { if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) { Integer urank = order.getUrank(); if (urank != null) { - UserLevelEnum levelEnum = UserLevelUtil.getByOrderRank(urank); + UserLevelEnum levelEnum = UserLevelUtil.getByOrderRank(urank); if (levelEnum != null) { levelEnum = UserLevelUtil.getShowLevel(levelEnum); order.setOrderDesc("璁㈠崟鏉ユ簮锛�" + levelEnum.getName()); @@ -1885,6 +2020,10 @@ listJD.add(order.getOrderNo()); } else if (sourceType == Constant.SOURCE_TYPE_PDD) { listPDD.add(order.getOrderNo()); + } else if (sourceType == Constant.SOURCE_TYPE_VIP) { + listVIP.add(order.getOrderNo()); + } else if (sourceType == Constant.SOURCE_TYPE_SUNING) { + listSuNing.add(order.getOrderNo()); } } @@ -1903,6 +2042,17 @@ listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD); } + List<UserSystemCouponRecord> listRecordVIP = null; + if (listVIP.size() > 0) { + listRecordVIP = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_VIP, listVIP); + } + + List<UserSystemCouponRecord> listRecordSuNing = null; + if (listSuNing.size() > 0) { + listRecordSuNing = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_SUNING, listSuNing); + } + + SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd"); // 鏄惁瀛樺湪濂栧姳鍒� @@ -1965,6 +2115,11 @@ Integer goodsType = commonGoodsVO.getGoodsType(); if (goodsType != null & goodsType == Constant.SOURCE_TYPE_ELME) { order.setOrderType(Constant.SOURCE_TYPE_ELME); // 楗夸簡涔堣鍗� + commonGoodsVO.setGoodsId("0"); + } + + if (goodsType == Constant.SOURCE_TYPE_SUNING) { + commonGoodsVO.setGoodsId(SuningUtil.getConcatGoodsIId(commonGoodsVO.getShopId() +"", commonGoodsVO.getGoodsId())); } order.getListOrderGoods().add(commonGoodsVO); } @@ -1981,6 +2136,21 @@ } else if (sourceType == Constant.SOURCE_TYPE_PDD) { order.setOrderType(4); } + + // 瀛愭潵婧愮被鍨� + ClientTextStyleVO shopStyleVO = new ClientTextStyleVO(); + SourceTypeEnum typeEnum = SourceTypeEnum.getByDesc(order.getChildSourceType()); + if (typeEnum == null) { + shopStyleVO.setContent("鍏朵粬"); + shopStyleVO.setColor("#FF5000"); + shopStyleVO.setBorderColor("#FF5000"); + } else { + shopStyleVO.setContent(typeEnum.getDescShow()); + shopStyleVO.setColor(typeEnum.getFontColor()); + shopStyleVO.setBorderColor(typeEnum.getBorderColor()); + } + order.setShopType(shopStyleVO); + Date thirdCreateTime = order.getThirdCreateTime(); if (thirdCreateTime != null) { @@ -2009,7 +2179,7 @@ // 鏄剧ず杩斿埄璇存槑杩炴帴> 鏈け鏁� if (CommonOrder.STATE_SX != orderState && thirdCreateTime.getTime() > TimeUtil.convertDateToTemp(Constant.ORDER_SHOW_BRACE_TIME)) { - String rebateLink = configService.get(ConfigKeyEnum.orderRebateDescLink.getKey()); + String rebateLink = configService.getValue(ConfigKeyEnum.orderRebateDescLink.getKey(),acceptData.getSystem()); order.setRebateLink(rebateLink + "?orderNo=" + orderNo + "&sourceType=" + sourceType); } @@ -2035,7 +2205,7 @@ List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper .selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛"); BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid); - + if (settleTime != null) { orderStateContent = "鍞悗鎴愬姛"; WeiQuanInfo weiQuanInfo = new WeiQuanInfo(); @@ -2066,6 +2236,10 @@ couponUseFactory(order, listRecordJD); } else if (sourceType == Constant.SOURCE_TYPE_PDD) { couponUseFactory(order, listRecordPDD); + } else if (sourceType == Constant.SOURCE_TYPE_VIP) { + couponUseFactory(order, listRecordVIP); + } else if (sourceType == Constant.SOURCE_TYPE_SUNING) { + couponUseFactory(order, listRecordSuNing); } } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { // 鍒嗕韩 @@ -2186,8 +2360,7 @@ order.setRewardDetail(rewardMap); } } - - + @Override public long countOrderByUidAndSettled(Long uid, BigDecimal payment) { Long count = commonOrderMapper.countOrderByUidAndSettled(uid, payment); @@ -2196,17 +2369,20 @@ } return count; } - - + @Override public String getNewestOrderNoByTaoBao() { return commonOrderMapper.getNewestOrderNoByTaoBao(); } - - + @Override public List<CommonOrder> listByOrderNo(String orderNo) { return commonOrderMapper.listByOrderNo(orderNo); } - + + @Override + public CommonOrder getFirstOrder(Long uid) { + return commonOrderMapper.getFirstOrder(uid); + } + } -- Gitblit v1.8.0