Authored by sailing-PC\sailing

fix address invoke method

... ... @@ -73,6 +73,7 @@
<select id="selectByUidStatusList" resultMap="BaseResultMap">
select <include refid="Base_Column_List" /> from seller_order_goods
where <include refid="sql_where_4_select_UidStatusList"/>
order by id desc
limit #{offset, jdbcType=INTEGER}, #{limit, jdbcType=INTEGER}
</select>
... ...
package com.yohoufo.order.convert;
import com.yoho.service.model.response.AreaRspBo;
import com.yoho.service.model.response.UserAddressRspBO;
import com.alibaba.fastjson.JSONObject;
import com.yohoufo.order.model.AddressInfo;
import java.util.Objects;
... ... @@ -11,24 +10,40 @@ import java.util.Objects;
*/
public class AddressInfoConvertor {
public static AddressInfo userAddressRsp2AddressInfo(UserAddressRspBO resp){
/**
* {
"area": "内蒙古自治区 呼和浩特市 回民区 新华西路办事处",
"address": "ghjkkl",
"tag_code": "",
"consignee": "uuuii",
"is_support": "Y",
"area_code": "150103001",
"mobile": "13512503760",
"address_id": "2395852",
"is_default": "Y",
"is_delivery": "Y",
"zip_code": "",
"uid": "500030962",
"is_cash_delivery": "Y",
"phone": "",
"is_update": "N",
"email": ""
}
* @param resp
* @return
*/
public static AddressInfo userAddressRsp2AddressInfo(JSONObject resp){
if (Objects.isNull(resp)){
return null;
}
AddressInfo addressInfo = new AddressInfo();
addressInfo.setAddress_id(Integer.valueOf(resp.getId()));
addressInfo.setAreaCode(resp.getAreaCode());
AreaRspBo areaRsp = resp.getArea();
AreaRspBo simpleAreaRsp = new AreaRspBo();
if (Objects.nonNull(areaRsp)){
}
addressInfo.setArea(resp.getArea());
addressInfo.setAddress(resp.getAddress());
addressInfo.setConsignee(resp.getAddresseeName());
addressInfo.setPhone(resp.getPhone());
addressInfo.setZipCode(resp.getZipCode());
addressInfo.setAddress_id(resp.getInteger("address_id"));
addressInfo.setAreaCode(resp.getString("area_code"));
addressInfo.setArea(resp.getString("area"));
addressInfo.setAddress(resp.getString("address"));
addressInfo.setConsignee(resp.getString("consignee"));
addressInfo.setPhone(resp.getString("phone"));
addressInfo.setZipCode(resp.getString("zip_code"));
return addressInfo;
}
}
... ...
package com.yohoufo.order.model;
import com.yoho.service.model.response.AreaRspBo;
import lombok.Data;
/**
... ... @@ -47,5 +46,5 @@ public class AddressInfo {
*/
private String phone;
private AreaRspBo area;
private String area;
}
... ...
... ... @@ -2,6 +2,7 @@ package com.yohoufo.order.model.dto;
import com.yoho.service.model.response.UserAddressRspBO;
import com.yohoufo.order.model.AddressInfo;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Builder;
... ... @@ -35,7 +36,7 @@ public class OrderBuilder {
/**
* 用户地址
*/
UserAddressRspBO addressInfo;
AddressInfo addressInfo;
}
... ...
... ... @@ -84,6 +84,7 @@ public abstract class AbstractOrderPaymentService {
*/
public abstract void updateOrderStatusPaid(OrderInfo orderInfo);
public abstract void processAfterPay(OrderInfo orderInfo);
/**
* 检查并更新预支付方式
... ...
... ... @@ -18,6 +18,7 @@ import com.yohoufo.order.event.SellerCancelDeliverEvent;
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.proxy.InBoxFacade;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -36,6 +37,10 @@ public class BuyerOrderPaymentService extends AbstractOrderPaymentService {
BuyerOrderMetaMapper buyerOrderMetaMapper;
@Autowired
InBoxFacade inBoxFacade;
/**
* 更新订单状态
* @param orderInfo
... ... @@ -58,6 +63,11 @@ public class BuyerOrderPaymentService extends AbstractOrderPaymentService {
EventBusPublisher.publishEvent(event);
}
@Override
public void processAfterPay(OrderInfo orderInfo) {
inBoxFacade.buyerFinishPaid(orderInfo.getUid(), orderInfo.getOrderCode());
}
/**
* 订单是否是待支付状态
... ...
... ... @@ -18,6 +18,7 @@ import com.yohoufo.order.constants.MetaKey;
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.proxy.InBoxFacade;
import com.yohoufo.order.service.proxy.ProductProxyService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
... ... @@ -46,6 +47,9 @@ public class SellerOrderPaymentService extends AbstractOrderPaymentService {
@Autowired
private ProductProxyService productProxyService;
@Autowired
private InBoxFacade inBoxFacade;
/**
* 更新订单状态
* @param orderInfo
... ... @@ -76,6 +80,17 @@ public class SellerOrderPaymentService extends AbstractOrderPaymentService {
}
}
@Override
public void processAfterPay(OrderInfo orderInfo) {
String prdName = null;
SellerOrder sellerOrder = sellerOrderMapper.selectByOrderCode(orderInfo.getOrderCode());
if (Objects.nonNull(sellerOrder)){
SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(sellerOrder.getSkup());
prdName = sellerOrderGoods.getProductName();
}
inBoxFacade.sellerPaidEarnestMoney(orderInfo.getSellerUid(), prdName);
}
/**
... ...
... ... @@ -109,8 +109,7 @@ public abstract class AbsOrderDetailService implements IOrderDetailService{
AddressInfo userAddress = null;
if (isBuyer && null != buyerOrderMeta
&& StringUtils.isNotBlank(buyerOrderMeta.getMetaValue())){
UserAddressRspBO addressRsp = JSONObject.parseObject(buyerOrderMeta.getMetaValue(), UserAddressRspBO.class);
userAddress = AddressInfoConvertor.userAddressRsp2AddressInfo(addressRsp);
userAddress = JSONObject.parseObject(buyerOrderMeta.getMetaValue(), AddressInfo.class);
}
SoldPrdComputeBo soldPrdComputeBo = null;
if (actor.equals(TabType.SELL)) {
... ... @@ -199,6 +198,7 @@ public abstract class AbsOrderDetailService implements IOrderDetailService{
orderDetailInfo.setEarnestMoney(computeBo.getEarnestMoney());
orderDetailInfo.setBankTransferFee(computeBo.getBankTransferFee());
orderDetailInfo.setPlatformFee(computeBo.getPlatformFee());
orderDetailInfo.setIncome(computeBo.getIncome());
}
... ...
... ... @@ -698,7 +698,7 @@ public class PaymentServiceImpl implements IPaymentService {
logger.error("[{}] getWXPrepayData failed", request.getOrderCode());
return response;
}
paymentService.processAfterPay(orderInfo);
response.setPrepayResult(PrepayResponse.SUCCESS);
response.setJsonObj(jsonObject);
return response;
... ...
... ... @@ -268,8 +268,7 @@ public class SellerOrderService implements IOrderListService, IOrderDetailServi
//the address of send back 2 seller
//
UserAddressRspBO addressRspBO = userProxyService.getAddressInfo(uid, addressId);
AddressInfo backAddress = AddressInfoConvertor.userAddressRsp2AddressInfo(addressRspBO);
AddressInfo backAddress = userProxyService.getAddressInfo(uid, addressId);
//
SellerOrderContext context = new SellerOrderContext();
... ...
... ... @@ -10,12 +10,16 @@ import com.yohoufo.dal.order.model.SellerOrderGoods;
import com.yohoufo.order.common.OrderCodeType;
import com.yohoufo.order.common.SkupStatus;
import com.yohoufo.order.constants.OrderConstant;
import com.yohoufo.order.event.BuyerCancelEvent;
import com.yohoufo.order.event.EventBusPublisher;
import com.yohoufo.order.model.AddressInfo;
import com.yohoufo.order.model.dto.OrderBuilder;
import com.yohoufo.order.model.request.ShoppingRequest;
import com.yohoufo.order.model.response.OrderSubmitResponse;
import com.yohoufo.order.model.response.PaymentResponse;
import com.yohoufo.order.service.ISubmitOrderService;
import com.yohoufo.order.service.IShoppingService;
import com.yohoufo.order.service.proxy.InBoxFacade;
import com.yohoufo.order.service.proxy.UserProxyService;
import com.yohoufo.order.service.support.ShoppingSupport;
import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
... ... @@ -53,6 +57,10 @@ public class ShoppingServiceImpl implements IShoppingService {
@Value("${buyer.delivery.way.cost.sf:15}")
private double delivery_way_sf_cost;
@Autowired
private InBoxFacade inBoxFacade;
/**
* 结算页数据
* @param request
... ... @@ -130,8 +138,7 @@ public class ShoppingServiceImpl implements IShoppingService {
// 生成订单号
long orderCode = orderCodeGenerator.generate(OrderCodeType.BUYER_TYPE);
UserAddressRspBO addressInfo = userProxyService.getAddressInfo(shoppingRequest.getUid(), addressId);
AddressInfo addressInfo = userProxyService.getAddressInfo(shoppingRequest.getUid(), addressId);
// 减库存,skup更新成不可售,入库
BigDecimal shipFee = new BigDecimal(delivery_way_sf_cost);
... ... @@ -151,9 +158,12 @@ public class ShoppingServiceImpl implements IShoppingService {
ordeCreationService.doSumbitOrder(orderBuilder);
// TODO 订单成功以后,开启15分取消消息
// 订单成功以后,开启15分取消消息
BuyerCancelEvent buyerCancelEvent = BuyerCancelEvent.builder().uid(shoppingRequest.getUid())
.orderCode(orderCode).build();
EventBusPublisher.publishEvent(buyerCancelEvent);
inBoxFacade.buyerOrderNotPayed(shoppingRequest.getUid(), orderCode);
// 返回结果
return OrderSubmitResponse.builder().orderCode(orderCode).productId(skup.getProductId())
.paymentStatus(OrderConstant.N_STR).build();
... ...
... ... @@ -141,8 +141,6 @@ public class SubmitOrderServiceImpl implements ISubmitOrderService {
buyerOrderMeta.setUid(orderBuilder.getUid());
buyerOrderMeta.setOrderCode(orderBuilder.getOrderCode());
buyerOrderMeta.setMetaKey(MetaKey.BUYER_DELIVERY_ADDRESS);
// 不需要存db
orderBuilder.getAddressInfo().setArea(null);
buyerOrderMeta.setMetaValue(JSONObject.toJSONString(orderBuilder.getAddressInfo()));
buyerOrderMetaMapper.insert(buyerOrderMeta);
}
... ...
package com.yohoufo.order.service.proxy;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.yoho.core.rest.client.ServiceCaller;
import com.yoho.error.ServiceError;
import com.yoho.error.exception.ServiceException;
import com.yoho.service.model.request.UserAddressReqBO;
import com.yoho.service.model.response.UserAddressRspBO;
import com.yohoufo.common.ApiResponse;
import com.yohoufo.order.constants.OrderConstant;
import com.yohoufo.order.convert.AddressInfoConvertor;
import com.yohoufo.order.model.AddressInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/**
... ... @@ -15,27 +28,59 @@ import java.util.concurrent.TimeUnit;
@Service
public class UserProxyService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
ServiceCaller serviceCaller;
@Value("${erp-gateway.url}")
private String erpGatewayUrl;
/**
* 获取用户信息
* @param uid
* @param addressId
* @return
*/
public UserAddressRspBO getAddressInfo(int uid, int addressId) {
public AddressInfo getAddressInfo(int uid, int addressId) {
// 收货地址信息, 入口参数:uid, address_id
UserAddressReqBO userAddressReqBO = new UserAddressReqBO();
userAddressReqBO.setUid(uid);
userAddressReqBO.setId(addressId);
//超时,使用默认地址,后续需要手动补充地址
UserAddressRspBO defaultResponse = new UserAddressRspBO();
defaultResponse.setAreaCode(OrderConstant.EMPTY_ADDRESS_CODE);
defaultResponse.setId(String.valueOf(addressId));
UserAddressRspBO userAddressBO = serviceCaller.asyncCall("users.getAddress", userAddressReqBO,
UserAddressRspBO.class, defaultResponse).get(500, TimeUnit.MILLISECONDS);
ApiResponse defaultResponse = new ApiResponse();
Map<String,Object> params = Maps.newHashMap();
params.put("uid", uid);
params.put("debug", "XYZ");
String url = erpGatewayUrl + "/erp/passport/getInnerAddress";
AddressInfo addressInfo ;
ApiResponse userAddressBO ;
try {
userAddressBO = serviceCaller.get("users.getAddress", url, params,
ApiResponse.class, defaultResponse).get(500, TimeUnit.MILLISECONDS);
return userAddressBO;
}catch (Exception ex){
logger.warn("in getAddressInfo fail, uid {}, addressId {}", uid, addressId, ex);
throw new ServiceException(ServiceError.ADDRESS_NULL);
}
JSONArray addressArray ;
if (userAddressBO == null || (addressArray = (JSONArray)userAddressBO.getData()) == null){
logger.warn("in getAddressInfo fail, uid {}, addressId {}", uid, addressId);
throw new ServiceException(ServiceError.ADDRESS_NULL);
}
JSONObject addressJsonObj = (JSONObject) addressArray.parallelStream().filter(addressJson -> {
Integer address_id = ((JSONObject)addressJson).getInteger("address_id");
return Objects.nonNull(address_id) && address_id == addressId;
}).findFirst().orElse(null);
if (addressJsonObj == null){
logger.warn("in getAddressInfo fail, uid {}, addressId {}, addressArray {}", uid, addressId, addressArray);
throw new ServiceException(ServiceError.ADDRESS_NULL);
}
addressInfo = AddressInfoConvertor.userAddressRsp2AddressInfo(addressJsonObj);
return addressInfo;
}
}
... ...
... ... @@ -77,6 +77,7 @@ wechat.notifyurl=http://testapi.yohops.com/payment/weixin_notify
alipay.notifyurl=http://testapi.yohops.com/payment/alipay_notify
erp-gateway.url=http://java-yoho-erp-gateway.test3.ingress.dev.yohocorp.com/erp-gateway
redis.readonly.proxy.address=192.168.102.45
redis.readonly.proxy.auth=redis9646
... ...
... ... @@ -57,4 +57,6 @@ alipay.notifyurl=${alipay.notifyurl}
buyer.delivery.way.cost.sf=0
order.seller.earnestmoney.min=1
order.seller.earnestmoney.max=200
\ No newline at end of file
order.seller.earnestmoney.max=200
erp-gateway.url=${erp-gateway.url}
\ No newline at end of file
... ...