diff --git a/order/src/main/java/com/yohoufo/order/convert/AddressInfoConvertor.java b/order/src/main/java/com/yohoufo/order/convert/AddressInfoConvertor.java index 481860d..7d8d6e5 100644 --- a/order/src/main/java/com/yohoufo/order/convert/AddressInfoConvertor.java +++ b/order/src/main/java/com/yohoufo/order/convert/AddressInfoConvertor.java @@ -11,6 +11,9 @@ import java.util.Objects; public class AddressInfoConvertor { /** + * is_update = N 四级地址 + is_update = Y 三级地址 + * { "area": "内蒙古自治区 呼和浩特市 回民区 新华西路办事处", "address": "ghjkkl", diff --git a/order/src/main/java/com/yohoufo/order/event/DeliverNoticeEvent.java b/order/src/main/java/com/yohoufo/order/event/DeliverNoticeEvent.java index ad6477f..685b658 100644 --- a/order/src/main/java/com/yohoufo/order/event/DeliverNoticeEvent.java +++ b/order/src/main/java/com/yohoufo/order/event/DeliverNoticeEvent.java @@ -16,5 +16,7 @@ import lombok.experimental.Builder; public class DeliverNoticeEvent extends Event{ private int uid; + private int skup; + private String prdName; } diff --git a/order/src/main/java/com/yohoufo/order/model/AddressInfo.java b/order/src/main/java/com/yohoufo/order/model/AddressInfo.java index fae4403..9a3fa40 100644 --- a/order/src/main/java/com/yohoufo/order/model/AddressInfo.java +++ b/order/src/main/java/com/yohoufo/order/model/AddressInfo.java @@ -50,4 +50,6 @@ public class AddressInfo { private String mobile; + + private String isUpdate; } diff --git a/order/src/main/java/com/yohoufo/order/mq/consumer/NotDeliverNoticeDelayMsgConsumer.java b/order/src/main/java/com/yohoufo/order/mq/consumer/NotDeliverNoticeDelayMsgConsumer.java index 8cff3ca..12cf51c 100644 --- a/order/src/main/java/com/yohoufo/order/mq/consumer/NotDeliverNoticeDelayMsgConsumer.java +++ b/order/src/main/java/com/yohoufo/order/mq/consumer/NotDeliverNoticeDelayMsgConsumer.java @@ -3,9 +3,12 @@ package com.yohoufo.order.mq.consumer; import com.alibaba.fastjson.JSONObject; import com.yoho.core.rabbitmq.YhConsumer; import com.yohoufo.order.event.DeliverNoticeEvent; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.mq.TopicConstants; +import com.yohoufo.order.service.impl.SellerAddressService; import com.yohoufo.order.service.proxy.InBoxFacade; import com.yohoufo.order.utils.LoggerUtils; +import com.yohoufo.order.utils.SmsHelper; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -24,6 +27,9 @@ public class NotDeliverNoticeDelayMsgConsumer implements YhConsumer { @Autowired private InBoxFacade inBoxFacade; + @Autowired + private SellerAddressService sellerAddressService; + @Override public void handleMessage(Object o) throws Exception { @@ -34,7 +40,8 @@ public class NotDeliverNoticeDelayMsgConsumer implements YhConsumer { DeliverNoticeEvent msg = JSONObject.parseObject(o.toString(), DeliverNoticeEvent.class); - inBoxFacade.sellerDeliverNotice(msg.getUid(), msg.getPrdName(), 2,null); + AddressInfo addressInfo = sellerAddressService.getAddressInfo(msg.getUid(), msg.getSkup()); + inBoxFacade.sellerDeliverNotice(msg.getUid(), msg.getPrdName(), 2, SmsHelper.getPhones(addressInfo)); } diff --git a/order/src/main/java/com/yohoufo/order/mq/consumer/SellerOrderCancelDeliverDelayMsgConsumer.java b/order/src/main/java/com/yohoufo/order/mq/consumer/SellerOrderCancelDeliverDelayMsgConsumer.java index 8a1eea4..4861bae 100644 --- a/order/src/main/java/com/yohoufo/order/mq/consumer/SellerOrderCancelDeliverDelayMsgConsumer.java +++ b/order/src/main/java/com/yohoufo/order/mq/consumer/SellerOrderCancelDeliverDelayMsgConsumer.java @@ -13,13 +13,16 @@ import com.yohoufo.order.common.TransferCase; import com.yohoufo.order.constants.AlarmConfig; import com.yohoufo.order.event.BillLogEvent; import com.yohoufo.order.event.SellerCancelDeliverEvent; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.model.request.PaymentRequest; import com.yohoufo.order.model.request.TransferMoneyRequest; import com.yohoufo.order.mq.TopicConstants; import com.yohoufo.order.service.IPaymentService; +import com.yohoufo.order.service.impl.SellerAddressService; import com.yohoufo.order.service.impl.TransferService; import com.yohoufo.order.service.proxy.InBoxFacade; import com.yohoufo.order.utils.LoggerUtils; +import com.yohoufo.order.utils.SmsHelper; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -47,6 +50,9 @@ public class SellerOrderCancelDeliverDelayMsgConsumer implements YhConsumer { @Autowired private TransferService transferService; + @Autowired + private SellerAddressService sellerAddressService; + public String getMessageTopic() { @@ -90,7 +96,8 @@ public class SellerOrderCancelDeliverDelayMsgConsumer implements YhConsumer { .build(); EventBusPublisher.publishEvent(buyererBillLogEvent); // - inBoxFacade.sellerDeliverNotice(event.getSellerUid(), event.getProductName(), 3,null); + AddressInfo addressInfo = sellerAddressService.getAddressInfo(sellerUid, skup); + inBoxFacade.sellerDeliverNotice(event.getSellerUid(), event.getProductName(), 3, SmsHelper.getPhones(addressInfo)); }catch (Exception ex){ logger.warn("in topic {} , refund fail,req {}", getMessageTopic(), req, ex); BillLogEvent buyererBillLogEvent = bleb.tradeStatus(200) diff --git a/order/src/main/java/com/yohoufo/order/service/BuyerOrderPaymentService.java b/order/src/main/java/com/yohoufo/order/service/BuyerOrderPaymentService.java index 5c60ba7..e6bdeb4 100644 --- a/order/src/main/java/com/yohoufo/order/service/BuyerOrderPaymentService.java +++ b/order/src/main/java/com/yohoufo/order/service/BuyerOrderPaymentService.java @@ -19,10 +19,13 @@ import com.yohoufo.order.common.OrderStatus; import com.yohoufo.order.constants.MetaKey; import com.yohoufo.order.event.DeliverNoticeEvent; import com.yohoufo.order.event.SellerCancelDeliverEvent; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.model.OrderInfo; import com.yohoufo.order.model.request.PaymentRequest; import com.yohoufo.order.model.response.PrepayResponse; +import com.yohoufo.order.service.impl.SellerAddressService; import com.yohoufo.order.service.proxy.InBoxFacade; +import com.yohoufo.order.utils.SmsHelper; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,6 +56,9 @@ public class BuyerOrderPaymentService extends AbstractOrderPaymentService { @Autowired private SellerOrderGoodsMapper sellerOrderGoodsMapper; + @Autowired + private SellerAddressService sellerAddressService; + /** * 更新订单状态 * @param orderInfo @@ -68,25 +74,31 @@ public class BuyerOrderPaymentService extends AbstractOrderPaymentService { // orderInfo.setStatus(OrderStatus.HAS_PAYED.getCode()); - //TODO 通知卖家发货 - BuyerOrderGoods buyerOrderGoods = buyerOrderGoodsMapper.selectByOrderCode(uid, orderInfo.getOrderCode()); - SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(buyerOrderGoods.getSkup()); - inBoxFacade.sellerSkupPaidByBuyer(orderInfo.getSellerUid(), sellerOrderGoods.getProductName(),null); + } - DeliverNoticeEvent deliverNoticeEvent = DeliverNoticeEvent.builder() - .uid(orderInfo.getSellerUid()).prdName(sellerOrderGoods.getProductName()).build(); + @Override + public void processAfterPay(OrderInfo orderInfo) { + Integer uid = orderInfo.getUid(); + Integer sellerUid = orderInfo.getSellerUid(); + // 通知卖家发货 + BuyerOrderGoods buyerOrderGoods = buyerOrderGoodsMapper.selectByOrderCode(uid, orderInfo.getOrderCode()); + int skup = buyerOrderGoods.getSkup(); + SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup); + AddressInfo addressInfo = sellerAddressService.getAddressInfo(sellerUid, skup); + List<String> phones = SmsHelper.getPhones(addressInfo); + inBoxFacade.sellerSkupPaidByBuyer(sellerUid, sellerOrderGoods.getProductName(), phones); + + DeliverNoticeEvent deliverNoticeEvent = DeliverNoticeEvent.builder().skup(sellerOrderGoods.getId()) + .uid(sellerUid).prdName(sellerOrderGoods.getProductName()).build(); EventBusPublisher.publishEvent(deliverNoticeEvent); //卖家36小时不发货取消 SellerCancelDeliverEvent event = SellerCancelDeliverEvent.builder() - .uid(uid).sellerUid(orderInfo.getSellerUid()).skup(sellerOrderGoods.getId()) + .uid(uid).sellerUid(sellerUid).skup(sellerOrderGoods.getId()) .orderCode(orderInfo.getOrderCode()).build(); EventBusPublisher.publishEvent(event); - } - @Override - public void processAfterPay(OrderInfo orderInfo) { inBoxFacade.buyerFinishPaid(orderInfo.getUid(), orderInfo.getOrderCode()); } diff --git a/order/src/main/java/com/yohoufo/order/service/IBuyerOrderMetaService.java b/order/src/main/java/com/yohoufo/order/service/IBuyerOrderMetaService.java index d595bb5..1f7c0a1 100644 --- a/order/src/main/java/com/yohoufo/order/service/IBuyerOrderMetaService.java +++ b/order/src/main/java/com/yohoufo/order/service/IBuyerOrderMetaService.java @@ -1,8 +1,12 @@ package com.yohoufo.order.service; import com.yohobuy.ufo.model.order.req.BuyerOrderMetaUpdateReq; +import com.yohoufo.order.model.AddressInfo; public interface IBuyerOrderMetaService { int updateDeliveryAddress(BuyerOrderMetaUpdateReq req); + + + AddressInfo getAddressInfo(int uid, long orderCode); } diff --git a/order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java b/order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java index e8eebb2..8a83052 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java @@ -21,17 +21,22 @@ import com.yohoufo.order.common.TransferCase; import com.yohoufo.order.constants.AlarmConfig; import com.yohoufo.order.event.BillLogEvent; import com.yohoufo.order.event.BuyerConfirmEvent; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.model.request.PaymentRequest; import com.yohoufo.order.model.request.TransferMoneyRequest; +import com.yohoufo.order.service.IBuyerOrderMetaService; import com.yohoufo.order.service.IExpressInfoService; import com.yohoufo.order.service.IPaymentService; import com.yohoufo.order.service.proxy.InBoxFacade; +import com.yohoufo.order.utils.SmsHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.Arrays; +import java.util.List; /** * Created by chenchao on 2018/9/27. @@ -67,6 +72,9 @@ public class AppraiseService { @Autowired TransferService transferService; + @Autowired + private IBuyerOrderMetaService buyerOrderMetaService; + public ApiResponse appraiseSuccess(Integer expressCompanyId, Long orderCode, String wayBillCode,Integer depotNum){ ApiResponse apiResponse=new ApiResponse(); @@ -127,8 +135,11 @@ public class AppraiseService { //记录物流信息 expressInfoService.appraiseSuccess(buyerUid, expressCompanyId, orderCode, wayBillCode, depotNum); + AddressInfo addressInfo = buyerOrderMetaService.getAddressInfo(buyerUid, orderCode); + List<String> phones = SmsHelper.getPhones(addressInfo); + //平台已发货给买家 - inBoxFacade.depotDeliver2Buyer(buyerUid, orderCode,null); + inBoxFacade.depotDeliver2Buyer(buyerUid, orderCode, phones); }catch (Exception ex){ LOGGER.warn("in appraiseSuccess,refund fail, req {}", req, ex); @@ -179,6 +190,7 @@ public class AppraiseService { } + /** * 更新发到卖家的物流信息 * 将卖家的保证金分账给平台和买家 @@ -237,7 +249,10 @@ public class AppraiseService { SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup); inBoxFacade.noticeSellerWhenAppraiseFail(sellerUid, sellerOrderGoods.getProductName()); - inBoxFacade.buyerGetEarnestMoneyWhenAppraiseFail(buyerUid, buyerOrder.getOrderCode(),null); + + + AddressInfo addressInfo = buyerOrderMetaService.getAddressInfo(buyerUid, buyerOrder.getOrderCode()); + inBoxFacade.buyerGetEarnestMoneyWhenAppraiseFail(buyerUid, buyerOrder.getOrderCode(), SmsHelper.getPhones(addressInfo)); }catch (Exception ex){ LOGGER.warn("in appraiseFail ,refund fail,req {}", req, ex); BillLogEvent buyererBillLogEvent = bleb.tradeStatus(200) diff --git a/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderMetaServiceImpl.java b/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderMetaServiceImpl.java index 9f19fa5..7512ded 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderMetaServiceImpl.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderMetaServiceImpl.java @@ -1,10 +1,13 @@ package com.yohoufo.order.service.impl; +import com.alibaba.fastjson.JSONObject; import com.yohobuy.ufo.model.order.req.BuyerOrderMetaUpdateReq; import com.yohoufo.dal.order.BuyerOrderMetaMapper; import com.yohoufo.dal.order.model.BuyerOrderMeta; import com.yohoufo.order.constants.MetaKey; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.service.IBuyerOrderMetaService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,4 +34,23 @@ public class BuyerOrderMetaServiceImpl implements IBuyerOrderMetaService { return result; } + BuyerOrderMeta getBuyerOrderMeta(int uid, long orderCode, String metaKey) { + BuyerOrderMeta buyerOrderMeta = buyerOrderMetaMapper.selectByMetaKey(uid, + orderCode, metaKey); + + return buyerOrderMeta; + } + + @Override + public AddressInfo getAddressInfo(int uid, long orderCode) { + BuyerOrderMeta buyerOrderMeta = getBuyerOrderMeta(uid, + orderCode, MetaKey.BUYER_DELIVERY_ADDRESS); + AddressInfo userAddress = null; + if ( null != buyerOrderMeta + && StringUtils.isNotBlank(buyerOrderMeta.getMetaValue())){ + userAddress = JSONObject.parseObject(buyerOrderMeta.getMetaValue(), AddressInfo.class); + } + return userAddress; + } + } diff --git a/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java b/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java index 9c58029..b11dcfc 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java @@ -10,6 +10,7 @@ import com.yohoufo.dal.order.model.BuyerOrderGoods; import com.yohoufo.dal.order.model.SellerOrder; import com.yohoufo.dal.order.model.SellerOrderGoods; import com.yohoufo.order.common.*; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.model.request.OrderListRequest; import com.yohoufo.order.model.request.OrderRequest; import com.yohoufo.order.model.response.OrderDetailInfo; @@ -17,6 +18,7 @@ import com.yohoufo.order.model.response.OrderSummaryResp; import com.yohoufo.order.service.IBuyerOrderService; import com.yohoufo.order.service.proxy.InBoxFacade; import com.yohoufo.order.service.proxy.ProductProxyService; +import com.yohoufo.order.utils.SmsHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -51,6 +53,12 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { @Autowired private ProductProxyService productProxyService; + @Autowired + private InBoxFacade inBoxFacade; + + @Autowired + private SellerAddressService sellerAddressService; + /** * 提交订单 * @param orderRequest @@ -91,8 +99,7 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { cancelBeforePaid(orderRequest, expectStatus, targetStatus); } - @Autowired - private InBoxFacade inBoxFacade; + public void cancelBeforePaid(OrderRequest orderRequest, OrderStatus exceptStatus, OrderStatus targetStatus){ // 状态 ![待付款] 不合法 @@ -121,7 +128,9 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { // 恢复product skup的库存 boolean isReturnSuccess = productProxyService.returnStorage(skup); // - inBoxFacade.noticSellerWhenBuyerCancel(dataNode.buyerOrderInDB.getSellerUid(), psog.getProductName(),null); + int sellerUid = dataNode.buyerOrderInDB.getSellerUid(); + AddressInfo addressInfo = sellerAddressService.getAddressInfo(sellerUid, skup); + inBoxFacade.noticSellerWhenBuyerCancel(sellerUid, psog.getProductName(), SmsHelper.getPhones(addressInfo)); inBoxFacade.buyerCancelOrder(orderRequest.getUid(), orderRequest.getOrderCode()); } diff --git a/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderCancelService.java b/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderCancelService.java index 7fde83e..d7ee54a 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderCancelService.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderCancelService.java @@ -18,11 +18,13 @@ import com.yohoufo.order.constants.AlarmConfig; import com.yohoufo.order.event.BillLogEvent; import com.yohoufo.order.event.ErpCancelSellerOrderEvent; import com.yohoufo.order.event.OrderCancelEvent; +import com.yohoufo.order.model.AddressInfo; import com.yohoufo.order.model.PayRefundBo; import com.yohoufo.order.model.request.PaymentRequest; import com.yohoufo.order.model.request.TransferMoneyRequest; import com.yohoufo.order.mq.TopicConstants; import com.yohoufo.order.mq.producer.TradeMqSender; +import com.yohoufo.order.service.IBuyerOrderMetaService; import com.yohoufo.order.service.IPaymentService; import com.yohoufo.order.service.impl.visitor.AutoCancelCase; import com.yohoufo.order.service.impl.visitor.OffShelveCancelCase; @@ -32,6 +34,7 @@ import com.yohoufo.order.service.proxy.ProductProxyService; import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator; import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta; import com.yohoufo.order.utils.LoggerUtils; +import com.yohoufo.order.utils.SmsHelper; import lombok.experimental.Builder; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -81,6 +84,13 @@ public class SellerOrderCancelService { @Autowired private TransferService transferService; + @Autowired + private SellerAddressService sellerAddressService; + + + @Autowired + private IBuyerOrderMetaService buyerOrderMetaService; + /** * TODO 如何控制好并发,必须控制不能重复转账 退款 * 使用乐观锁,带着查询到的状态且符合条件时再去更新 @@ -320,9 +330,9 @@ public class SellerOrderCancelService { BillLogEvent buyererBillLogEvent = bleb.tradeStatus(100) .build(); EventBusPublisher.publishEvent(buyererBillLogEvent); - // - inBoxFacade.noticeBuyerWhenSellerCancelAfterPaid(buyerUid, buyerOrderCode,null); + AddressInfo addressInfo = buyerOrderMetaService.getAddressInfo(buyerUid, buyerOrderCode); + inBoxFacade.noticeBuyerWhenSellerCancelAfterPaid(buyerUid, buyerOrderCode, SmsHelper.getPhones(addressInfo)); //TODO 异步 SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(sellerOrder.getSkup()); inBoxFacade.sellerCancelAfterBuyerPaid(sellerUid, psog.getProductName()); @@ -476,7 +486,9 @@ public class SellerOrderCancelService { BillLogEvent sellerBillLogEvent = bleb.tradeStatus(100) .build(); EventBusPublisher.publishEvent(sellerBillLogEvent); - inBoxFacade.notifyUnshelfCauseBySpecialReason(sellerUid, psog.getProductName(),null); + + AddressInfo addressInfo = sellerAddressService.getAddressInfo(sellerUid, skup); + inBoxFacade.notifyUnshelfCauseBySpecialReason(sellerUid, psog.getProductName(), SmsHelper.getPhones(addressInfo)); }catch (Exception ex){ logger.warn("in yoho Off Shelve Cancel, refund earnestMoney fail, seller {}, order code {}, skup {}, earnestMoney {}", sellerUid, orderCode, skup, earnestMoney, ex); diff --git a/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderService.java b/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderService.java index 1c89af5..6d39a43 100644 --- a/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderService.java +++ b/order/src/main/java/com/yohoufo/order/service/impl/SellerOrderService.java @@ -313,6 +313,9 @@ public class SellerOrderService implements IOrderListService, IOrderDetailServi //the address of send back 2 seller // AddressInfo hiddenBackAddress = userProxyService.getHiddenAddressInfo(uid, addressId); + + + AddressInfo noHiddenBackAddress = userProxyService.getAddressInfoNotHidden(uid, addressId); // SellerOrderContext context = new SellerOrderContext(); diff --git a/order/src/main/java/com/yohoufo/order/utils/SmsHelper.java b/order/src/main/java/com/yohoufo/order/utils/SmsHelper.java new file mode 100644 index 0000000..bd002d4 --- /dev/null +++ b/order/src/main/java/com/yohoufo/order/utils/SmsHelper.java @@ -0,0 +1,24 @@ +package com.yohoufo.order.utils; + +import com.yohoufo.order.model.AddressInfo; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by chenchao on 2018/10/19. + */ +public class SmsHelper { + + + public static List<String> getPhones(AddressInfo addressInfo){ + + + List<String> phones = null; + if (null != addressInfo && addressInfo.getMobile() != null){ + phones = Arrays.asList(addressInfo.getMobile()); + } + + return phones; + } +}