Authored by qinchao

Merge branch 'master' of http://git.yoho.cn/ufo/yohoufo-fore

... ... @@ -11,6 +11,9 @@ import java.util.Objects;
public class AddressInfoConvertor {
/**
* is_update = N 四级地址
is_update = Y 三级地址
* {
"area": "内蒙古自治区 呼和浩特市 回民区 新华西路办事处",
"address": "ghjkkl",
... ...
... ... @@ -16,5 +16,7 @@ import lombok.experimental.Builder;
public class DeliverNoticeEvent extends Event{
private int uid;
private int skup;
private String prdName;
}
... ...
... ... @@ -50,4 +50,6 @@ public class AddressInfo {
private String mobile;
private String isUpdate;
}
... ...
... ... @@ -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));
}
... ...
... ... @@ -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)
... ...
... ... @@ -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());
}
... ...
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);
}
... ...
... ... @@ -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)
... ...
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;
}
}
... ...
... ... @@ -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());
}
... ...
... ... @@ -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);
... ...
... ... @@ -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();
... ...
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;
}
}
... ...