Authored by Lixiaodi

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

... ... @@ -27,13 +27,6 @@ public interface ExpressInfoMapper {
*/
List<ExpressInfo> queryExpressInfo(@Param("uid") Integer uid, @Param("orderCode") Long orderCode, @Param("expressType") Integer expressType);
/**
* 根据uid、订单号和快递单号查询快递信息查找第一笔订单信息
* @param uid
* @param orderCode 订单号
* @return
*/
ExpressInfo queryFirstExpressInfo(@Param("uid") Integer uid, @Param("orderCode") Long orderCode, @Param("waybillCode") String waybillCode);
/**
* 根据uid、订单号、物流类型和快递状态查询快递信息
... ...
package com.yohoufo.dal.order;
import com.yohoufo.dal.order.model.ExpressRecord;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExpressRecordMapper {
int insert(ExpressRecord record);
/**
* 根据uid、订单号和快递单号查询快递信息查找第一笔订单信息
* @param uid
* @param orderCode 订单号
* @return
*/
ExpressRecord queryExpressRecord(@Param("uid") Integer uid, @Param("orderCode") Long orderCode, @Param("waybillCode") String waybillCode);
/**
* 根据uid、订单号、物流类型和快递状态查询快递信息
* @param uid
* @param orderCode
* @param states 0:未签收 1签收 2未发货
* @param expressType 物流类型; 1:卖家到鉴定中心,2:鉴定中心到买家,3:鉴定中心退回到卖家
* @return
*/
ExpressRecord selectByUidAndOrderCodeAndExpressType(@Param("uid") Integer uid, @Param("orderCode") Long orderCode, @Param("states") List<Integer> states, @Param("expressType") Integer expressType);
}
\ No newline at end of file
... ...
... ... @@ -20,6 +20,8 @@ public class ExpressCompany implements Serializable {
private String pinYin;
private String logoUrl;
@Override
public String toString() {
... ... @@ -27,6 +29,7 @@ public class ExpressCompany implements Serializable {
"id=" + id +
", companyName='" + companyName + '\'' +
", pinYin='" + pinYin + '\'' +
", logoUrl='" + logoUrl + '\'' +
'}';
}
}
... ...
package com.yohoufo.dal.order.model;
import lombok.Data;
@Data
public class ExpressRecord {
private Integer id;
private Integer uid;
private Long orderCode;
private String waybillCode;
private Integer logisticsType;
private Integer createTime;
private Byte expressType;
private Integer depotNum;
}
\ No newline at end of file
... ...
... ... @@ -6,10 +6,11 @@
<id property="id" column="id"/>
<result property="companyName" column="company_name"/>
<result property="pinYin" column="pinyin"/>
<result property="logoUrl" column="logo_url"/>
</resultMap>
<select id="queryAllExpressCompany" resultMap="expressCompany">
select id, company_name,pinyin
select id, company_name,pinyin,logo_url
from express_company
</select>
... ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yohoufo.dal.order.ExpressRecordMapper">
<resultMap id="BaseResultMap" type="com.yohoufo.dal.order.model.ExpressRecord">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="uid" jdbcType="INTEGER" property="uid" />
<result column="order_code" jdbcType="BIGINT" property="orderCode" />
<result column="waybill_code" jdbcType="VARCHAR" property="waybillCode" />
<result column="logistics_type" jdbcType="INTEGER" property="logisticsType" />
<result column="create_time" jdbcType="INTEGER" property="createTime" />
<result column="express_type" jdbcType="TINYINT" property="expressType" />
<result column="depot_num" jdbcType="INTEGER" property="depotNum" />
</resultMap>
<sql id="Base_Column_List">
id, uid, order_code, waybill_code, logistics_type,
create_time, express_type, depot_num
</sql>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.yohoufo.dal.order.model.ExpressRecord" useGeneratedKeys="true">
insert into express_record ( uid, order_code, waybill_code, logistics_type,
create_time, express_type, depot_num
)
values (#{uid,jdbcType=INTEGER}, #{orderCode,jdbcType=BIGINT}, #{waybillCode,jdbcType=VARCHAR},
#{logisticsType,jdbcType=INTEGER},
#{createTime,jdbcType=INTEGER},
#{expressType,jdbcType=TINYINT}, #{depotNum,jdbcType=INTEGER}
)
</insert>
<select id="queryExpressRecord" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" />
FROM express_record
where uid = #{uid} and order_code = #{orderCode} and waybill_code = #{waybillCode}
limit 1
</select>
<select id="selectByUidAndOrderCodeAndExpressType" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" />
FROM express_record
where uid = #{uid} and order_code = #{orderCode} and express_type = #{expressType}
ORDER BY create_time DESC
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -30,12 +30,13 @@ public class ExpressInfoController {
* @param expressCompanyId 快递公司id
* @param orderCode 订单号
* @param wayBillCode 运单号(快递单号)
* @param depotNum 鉴定中心id
* @return
*/
@RequestMapping(params = "method=ufo.order.deliverToDepot")
public ApiResponse deliverToDepot(@RequestParam("uid") Integer uid,@RequestParam("expressCompanyId") Integer expressCompanyId,
@RequestParam("orderCode") Long orderCode, @RequestParam("wayBillCode") String wayBillCode) {
expressInfoService.deliverToDepot(uid,expressCompanyId, orderCode, wayBillCode);
@RequestParam("orderCode") Long orderCode, @RequestParam("wayBillCode") String wayBillCode, @RequestParam("depotNum") Integer depotNum) {
expressInfoService.deliverToDepot(uid,expressCompanyId, orderCode, wayBillCode,depotNum);
return new ApiResponse();
}
... ...
... ... @@ -10,8 +10,10 @@ import com.yohoufo.common.constant.ExpressInfoConstant;
import com.yohoufo.common.utils.DateUtil;
import com.yohoufo.dal.order.BuyerOrderMapper;
import com.yohoufo.dal.order.ExpressInfoMapper;
import com.yohoufo.dal.order.ExpressRecordMapper;
import com.yohoufo.dal.order.model.BuyerOrder;
import com.yohoufo.dal.order.model.ExpressInfo;
import com.yohoufo.dal.order.model.ExpressRecord;
import com.yohoufo.order.mq.publisher.ConsumerExceptionPublisher;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
... ... @@ -35,6 +37,9 @@ private static final Logger LOGGER = LoggerFactory.getLogger(ExpressInfoUpdateCo
private ExpressInfoMapper expressInfoMapper;
@Autowired
private ExpressRecordMapper expressRecordMapper;
@Autowired
private BuyerOrderMapper buyerOrderMapper;
... ... @@ -82,8 +87,8 @@ private static final Logger LOGGER = LoggerFactory.getLogger(ExpressInfoUpdateCo
String waybillCode = jsonMsg.getString("waybillCode");
//根据uid,orderCode,waybillCode查状态expressType
ExpressInfo firstExpressInfo = expressInfoMapper.queryFirstExpressInfo(uid,orderCode,waybillCode);
if(firstExpressInfo==null){
ExpressRecord firstExpressRecord = expressRecordMapper.queryExpressRecord(uid,orderCode,waybillCode);
if(firstExpressRecord==null){
LOGGER.warn("updateExpressInfo first express info not exist, uid is {} orderCode is {} waybillCode is {}", uid,orderCode,waybillCode);
throw new ServiceException(400,"not find express type info");
}
... ... @@ -94,7 +99,7 @@ private static final Logger LOGGER = LoggerFactory.getLogger(ExpressInfoUpdateCo
// 正常订单,签收消息
if (state == ExpressInfoConstant.EXPRESS_STATUS_SIGN) {
handleAcceptExpress(jsonMsg,firstExpressInfo.getExpressType().intValue());
handleAcceptExpress(jsonMsg,firstExpressRecord.getExpressType().intValue());
return;
}
int logisticsType = jsonMsg.getIntValue("logisticsType");
... ... @@ -120,7 +125,7 @@ private static final Logger LOGGER = LoggerFactory.getLogger(ExpressInfoUpdateCo
expressInfo.setAcceptRemark(StringUtils.defaultString(acceptRemark));
expressInfo.setLogisticsType(logisticsType);
expressInfo.setCreateTime(createTime);
expressInfo.setExpressType(firstExpressInfo.getExpressType());
expressInfo.setExpressType(firstExpressRecord.getExpressType());
expressInfo.setState(state);
expressInfoMapper.insert(expressInfo);
}
... ...
... ... @@ -16,7 +16,7 @@ public interface IExpressInfoService {
* @param orderCode 订单号
* @param wayBillCode 快递单号
*/
void deliverToDepot(Integer sellerUid,Integer expressCompanyId, Long orderCode, String wayBillCode);
void deliverToDepot(Integer sellerUid,Integer expressCompanyId, Long orderCode, String wayBillCode,Integer depotNum);
/**
... ...
... ... @@ -5,30 +5,20 @@ import com.alibaba.fastjson.JSONObject;
import com.yoho.core.rabbitmq.YhProducer;
import com.yoho.error.ServiceError;
import com.yoho.error.exception.ServiceException;
import com.yoho.service.model.request.LoginSuccessBO;
import com.yohobuy.ufo.model.order.resp.ExpressInfoDetail;
import com.yohobuy.ufo.model.order.resp.ExpressInfoRespBo;
import com.yohoufo.common.constant.ExpressInfoConstant;
import com.yohoufo.common.utils.DateUtil;
import com.yohoufo.dal.order.BuyerOrderMapper;
import com.yohoufo.dal.order.ExpressInfoMapper;
import com.yohoufo.dal.order.SellerOrderMapper;
import com.yohoufo.dal.order.SellerOrderMetaMapper;
import com.yohoufo.dal.order.model.BuyerOrder;
import com.yohoufo.dal.order.model.ExpressInfo;
import com.yohoufo.dal.order.model.SellerOrder;
import com.yohoufo.dal.order.model.SellerOrderMeta;
import com.yohoufo.dal.order.*;
import com.yohoufo.dal.order.model.*;
import com.yohoufo.order.common.ExpressForMqSend;
import com.yohoufo.order.common.OrderCodeType;
import com.yohoufo.order.common.OrderStatus;
import com.yohoufo.order.common.SellerOrderStatus;
import com.yohoufo.order.constants.MetaKey;
import com.yohoufo.order.model.AddressInfo;
import com.yohoufo.order.model.response.AppraiseAddressResp;
import com.yohoufo.order.service.IExpressCompanyService;
import com.yohoufo.order.service.IExpressInfoService;
import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta;
import com.yohoufo.order.service.proxy.ProductProxyService;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -38,7 +28,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author kun.wang
... ... @@ -53,10 +42,10 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
private ExpressInfoMapper expressInfoMapper;
@Autowired
private IExpressCompanyService expressCompanyService;
private ExpressRecordMapper expressRecordMapper;
@Autowired
private SellerOrderMapper sellerOrderMapper;
private IExpressCompanyService expressCompanyService;
@Autowired
... ... @@ -71,6 +60,15 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
@Autowired
private AppraiseAddressService appraiseAddressService;
@Autowired
private BuyerOrderGoodsMapper buyerOrderGoodsMapper;
@Autowired
private SellerOrderGoodsMapper sellerOrderGoodsMapper;
@Autowired
private ProductProxyService productProxyService;
private static String EXPRESS_MQ_SEND = "logistics.logistics_data";
/**
... ... @@ -79,16 +77,18 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
* @param expressCompanyId 快递公司id
* @param orderCode 订单号 :一定是买家订单编号
* @param wayBillCode 快递单号
* @param depotNum 鉴定中心id
*/
@Override
public void deliverToDepot(Integer sellerUid,Integer expressCompanyId, Long orderCode, String wayBillCode) {
public void deliverToDepot(Integer sellerUid,Integer expressCompanyId, Long orderCode, String wayBillCode,Integer depotNum) {
//保存物流信息+更新订单状态;
//本阶段的物流类型和订单状态
OrderStatus orderStatus=OrderStatus.SELLER_SEND_OUT;
final OrderStatus expectOrderStatus = OrderStatus.HAS_PAYED;
final OrderStatus targetOrderStatus=OrderStatus.SELLER_SEND_OUT;
Integer expressType = ExpressInfoConstant.EXPRESS_TYPE_1;
LOGGER.info("deliverToDepot saveExpressAndUpdateBuyerOrderStatus sellerUid={} ,expressCompanyId = {}, orderCode = {}, wayBillCode = {} " +
",expressType = {} ,orderStatus = {}", new Object[]{sellerUid ,expressCompanyId, orderCode, wayBillCode,expressType,orderStatus});
",expressType = {} ,expectOrderStatus = {} ,targetOrderStatus = {} ,depotNum = {}", new Object[]{sellerUid ,expressCompanyId, orderCode, wayBillCode,expressType,expectOrderStatus,targetOrderStatus,depotNum});
BuyerOrder buyerOrder = buyerOrderMapper.selectByOrderCode(orderCode);
if (buyerOrder == null){
... ... @@ -96,24 +96,32 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
throw new ServiceException(ServiceError.ORDER_NULL);
}
/* //卖家的uid
if(sellerUid.intValue()!=buyerOrder.getSellerUid().intValue()){
LOGGER.warn("deliverToDepot saveExpressAndUpdateBuyerOrderStatus uid {} not equal buyer order sellerUid {}",uid, buyerOrder.getSellerUid());
throw new ServiceException(400,"参数错误,传入的卖家uid与订单卖家uid不一致");
}*/
//获取skup
BuyerOrderGoods buyerOrderGoods= buyerOrderGoodsMapper.selectByOrderCode(buyerOrder.getUid(),orderCode);
if(buyerOrderGoods==null){
LOGGER.warn("deliverToDepot buyerOrderGoods order not exist, orderCode is {}", orderCode);
throw new ServiceException(ServiceError.ORDER_NULL);
}
// 保存订单物流信息
saveExpress(sellerUid,expressCompanyId,orderCode,wayBillCode,expressType);
saveExpress(sellerUid,expressCompanyId,orderCode,wayBillCode,expressType,depotNum);
// 发送mq获取物流信息
sendExpressMQ(sellerUid,expressCompanyId,orderCode,wayBillCode);
LOGGER.info("deliverToDepot end ! send express to erp ");
//根据skup ,更新鉴定中心
SellerOrderGoods sellerOrderGoods=new SellerOrderGoods();
sellerOrderGoods.setId(buyerOrderGoods.getSkup());
sellerOrderGoods.setDepotNo(depotNum);
sellerOrderGoodsMapper.updateByPrimaryKeySelective(sellerOrderGoods);
productProxyService.setDepotNum(buyerOrderGoods.getSkup(),depotNum);
// 更新买家订单状态
buyerOrder.setStatus(orderStatus.getCode());
buyerOrder.setUpdateTime(DateUtil.getCurrentTimeSecond());
LOGGER.info("deliverToDepot update buyer order {} ", buyerOrder);
buyerOrderMapper.updateByPrimaryKeySelective(buyerOrder);
int updateBuyerCnt = buyerOrderMapper.updateStatusByOrderCode(orderCode, buyerOrder.getUid(),
expectOrderStatus.getCode(), targetOrderStatus.getCode(), DateUtil.getCurrentTimeSecond());
LOGGER.info("deliverToDepot update buyer order status result {} ",updateBuyerCnt);
}
@Override
... ... @@ -124,7 +132,7 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
",expressType = {}", new Object[]{expressCompanyId, orderCode, wayBillCode,expressType});
// 保存订单物流信息
saveExpress(sellerUid,expressCompanyId,orderCode,wayBillCode,expressType);
saveExpress(sellerUid,expressCompanyId,orderCode,wayBillCode,expressType,null);
// 发送mq获取物流信息
sendExpressMQ(sellerUid,expressCompanyId,orderCode,wayBillCode);
... ... @@ -139,7 +147,7 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
",expressType = {} ", new Object[]{expressCompanyId, orderCode, wayBillCode,expressType});
// 保存订单物流信息
saveExpress(uid,expressCompanyId,orderCode,wayBillCode,expressType);
saveExpress(uid,expressCompanyId,orderCode,wayBillCode,expressType,null);
// 发送mq获取物流信息
sendExpressMQ(uid,expressCompanyId,orderCode,wayBillCode);
... ... @@ -156,17 +164,17 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
* @param wayBillCode
* @param expressType
*/
private void saveExpress(Integer uid,Integer expressCompanyId, Long orderCode, String wayBillCode,Integer expressType ){
ExpressInfo expressInfo=new ExpressInfo();
expressInfo.setUid(uid);/// 存卖家的uid
expressInfo.setOrderCode(orderCode);
expressInfo.setWaybillCode(wayBillCode);
expressInfo.setLogisticsType(expressCompanyId);
expressInfo.setCreateTime(DateUtil.getCurrentTimeSecond());
expressInfo.setExpressType(expressType.byteValue());
expressInfo.setState(0);
LOGGER.info("deliverToDepot save express info {} ", expressInfo);
expressInfoMapper.insert(expressInfo);
private void saveExpress(Integer uid,Integer expressCompanyId, Long orderCode, String wayBillCode,Integer expressType,Integer depotNum ){
ExpressRecord record=new ExpressRecord();
record.setUid(uid);/// 存卖家的uid
record.setOrderCode(orderCode);
record.setWaybillCode(wayBillCode);
record.setLogisticsType(expressCompanyId);
record.setCreateTime(DateUtil.getCurrentTimeSecond());
record.setExpressType(expressType.byteValue());
record.setDepotNum(depotNum);
LOGGER.info("deliverToDepot save express record {} ", record);
expressRecordMapper.insert(record);
}
/**
... ...
... ... @@ -96,6 +96,12 @@ public class ProductProxyService {
return prdResp;
}
public ApiResponse setDepotNum(Integer skup,Integer depotNum){
ApiResponse apiResponse = ufoServiceCaller.call("ufo.product.setDepotNum", skup,depotNum);
return apiResponse;
}
/**
* 1:可售(支付保证金),2:取消支付保证金,3:超时未支付保证金,4:支付保证金后取消售卖
* @param goods
... ...
... ... @@ -44,6 +44,7 @@ datasources:
- com.yohoufo.dal.order.BuyerOrderGoodsMapper
- com.yohoufo.dal.order.BuyerOrderMapper
- com.yohoufo.dal.order.BuyerOrderMetaMapper
- com.yohoufo.dal.order.ExpressRecordMapper
- com.yohoufo.dal.order.ExpressInfoMapper
- com.yohoufo.dal.order.SellerOrderGoodsMapper
- com.yohoufo.dal.order.SellerOrderMapper
... ...
... ... @@ -56,6 +56,7 @@ datasources:
- com.yohoufo.dal.order.BuyerOrderGoodsMapper
- com.yohoufo.dal.order.BuyerOrderMapper
- com.yohoufo.dal.order.BuyerOrderMetaMapper
- com.yohoufo.dal.order.ExpressRecordMapper
- com.yohoufo.dal.order.ExpressInfoMapper
- com.yohoufo.dal.order.SellerOrderGoodsMapper
- com.yohoufo.dal.order.SellerOrderMapper
... ...