美文网首页
没有配送方式的订单发货信息和物流查询

没有配送方式的订单发货信息和物流查询

作者: 小别墅是毛坯 | 来源:发表于2020-01-09 14:05 被阅读0次
    //校验订单是否存在
    Example goodsOrderExample =new Example(GoodsOrder.class);
    goodsOrderExample.createCriteria().andEqualTo("id", orderId)
            .andEqualTo("orderStatus", GoodsOrderStatusEnum.waitDelivery.getCode())
            .andEqualTo("deleteFlag", DeleteFlagEnum.NotDeleted.getCode());
    GoodsOrder goodsOrder =goodsOrderMapper.selectOneByExample(goodsOrderExample);
    AssertUtil.notNull(goodsOrder, ExceptionEnum.GoodsOrderNoExists);
    logsService.addLogs(adminId,ip,"处理"+goodsOrder.getOrderNo()+"订单发货",goodsOrder.getUserId());
    GoodsOrderDelivery goodsOrderDelivery =new GoodsOrderDelivery();
    OrderDeliveryBo  orderAddress =goodsOrderMapper.getGoodsOrderInfo(orderId);
  String address =  orderAddress.getProvince()+","+orderAddress.getCity()+","+orderAddress.getArea();
        //更新发货信息(物流即时查询,订阅)
        String expressCode = deliveryParam.getExpressCode();
        String expressName = deliveryParam.getExpressName();
        String expressNo = deliveryParam.getExpressNo();

        goodsOrderDelivery.setExpressName(expressName);

        goodsOrderDelivery.setExpressNo(expressNo);

        goodsOrderDelivery.setExpressCode(expressCode);

        goodsOrderDelivery.setUserId(goodsOrder.getUserId());

        goodsOrderDelivery.setOrderId(orderId);

        goodsOrderDelivery.setAddress(address);

        goodsOrderDelivery.setAreas( orderAddress.getProvince()+orderAddress.getCity()+orderAddress.getArea()+orderAddress.getAddress());

        goodsOrderDelivery.setConsignee(orderAddress.getConsignee());

        goodsOrderDelivery.setPhone(orderAddress.getPhone());

        String logisticsInfo = ExpressUtil.realtime(expressCode, expressNo);

        Map<String, Object> logisticsInfoMap = JsonUtil.getInstance().toJsonObj(logisticsInfo, Map.class);

        //物流状态

        int status =0;

        Object statusObj = logisticsInfoMap.get("State");

        if (statusObj !=null) {

            status = Integer.parseInt(String.valueOf(statusObj));

        }

        List<ExpressDetailDto> expressDetailList = com.google.common.collect.Lists.newArrayList();

        //物流轨迹

        Object trace = logisticsInfoMap.get("Traces");

        if (trace !=null) {

            System.out.println(trace);

            System.out.println(JsonUtil.getInstance().toJsonString(trace));

            List<LogisticsTraceBo> data =(List<LogisticsTraceBo>) JsonUtil.getInstance().toJsonObjList(JsonUtil.getInstance().toJsonString(trace), LogisticsTraceBo.class);

            data.forEach(obj ->{

                ExpressDetailDto expressDetailDto =new ExpressDetailDto();

                expressDetailDto.setMsg(obj.getAcceptStation());

                expressDetailDto.setTime(obj.getAcceptTime());

                expressDetailList.add(expressDetailDto);

            });

        }

        ExpressDto expressDto =new ExpressDto();

        expressDto.setTraces(expressDetailList);

        expressDto.setStatus(status);

        goodsOrderDelivery.setLogisticsInfo(JsonUtil.getInstance().toJsonString(expressDto));

    goodsOrderDelivery.setDeliveryTime(new Date());

    goodsOrderDelivery.setCreateTime(new Date());

    goodsOrderDeliveryMapper.insertSelective(goodsOrderDelivery);

    //更新订单状态为已发货

    GoodsOrder order =new GoodsOrder();

    order.setOrderStatus(GoodsOrderStatusEnum.waitReceipt.getCode());

    Example orderExample =new Example(GoodsOrder.class);

    orderExample.createCriteria().andEqualTo("orderStatus",GoodsOrderStatusEnum.waitDelivery.getCode())

            .andEqualTo("id",orderId)

            .andEqualTo("deleteFlag", DeleteFlagEnum.NotDeleted.getCode());

    goodsOrderMapper.updateByExampleSelective(order,orderExample);


/**

物流信息

**/

package com.qcdl.web.controller;

import com.qcdl.service.GoodsOrderService;

import com.qcdl.web.config.annotation.ResponseAdvice;

import com.qcdl.web.config.enums.ResponseAdviceEnum;

import com.qcdl.web.wechat.RequestUtil;

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiOperation;

import lombok.extern.slf4j.Slf4j;

import org.springframework.http.MediaType;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import springfox.documentation.annotations.ApiIgnore;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import java.util.Map;

/**

* @author qcdl

* @date 2019/7/1

*/

@Api(value ="物流相关接口", tags ={"物流相关接口"}, hidden =true, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

@ApiIgnore

@RestController

@RequestMapping(value ="/express", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)

@Slf4j

public class ExpressController{

    @Resource

    private GoodsOrderServicegoodsOrderService;

    @ApiOperation(value ="物流跟踪通知", notes ="订单物流跟踪通知", hidden =true)

    @PostMapping(value ="/notify")

    @ResponseAdvice(ResponseAdviceEnum.NOT_REQUIRED)

    public Map<String, Object> expressNotify(HttpServletRequest request) {

        Map<String, String> logisticsData = RequestUtil.parseRequestParam(request);

        return goodsOrderService.updateGoodsDelivery(logisticsData);
    }
}
@SuppressWarnings("unchecked")

@Transactional(rollbackFor = Exception.class)

public Map<String, Object> updateGoodsDelivery(Map<String, String> logisticsData) {

    String requestData = logisticsData.get("RequestData");

    Map<String, Object> data = JsonUtil.getInstance().toJsonObj(requestData, Map.class);

    //推送是否有物流轨迹

    int count = Integer.parseInt(String.valueOf(data.get("Count")));

    Map<String, Object> result = Maps.newHashMap();

    result.put("EBusinessID", ExpressUtil.MCH);
    result.put("UpdateTime", DateUtils.getCurrentTimeString());
    result.put("Success", false);
    if (count !=0) {

        List<LogisticsInfoBo> logisticsInfoBoList =(List<LogisticsInfoBo>) JsonUtil.getInstance()

                .toJsonObjList(JsonUtil.getInstance().toJsonString(data.get("Data")), LogisticsInfoBo.class);

        LogisticsInfoBo logisticsInfo = logisticsInfoBoList.get(0);

        if (logisticsInfo !=null) {

            List<ExpressDetailDto> expressDetailList = Lists.newArrayList();

            logisticsInfo.getTraces().forEach(obj ->{

                ExpressDetailDto expressDetailDto =new ExpressDetailDto();

                expressDetailDto.setMsg(obj.getAcceptStation());

                expressDetailDto.setTime(obj.getAcceptTime());

                expressDetailList.add(expressDetailDto);
            });
            String expressCode = logisticsInfo.getExpressCode();

            String expressNo = logisticsInfo.getExpressNo();

            Integer status = logisticsInfo.getStatus();

            ExpressDto expressDto =new ExpressDto();

            expressDto.setTraces(expressDetailList);

            expressDto.setStatus(status);

            GoodsOrderDelivery goodsOrderDelivery =new GoodsOrderDelivery();

            goodsOrderDelivery.setLogisticsInfo(JsonUtil.getInstance().toJsonString(expressDto));

            Example example =new Example(GoodsOrderDelivery.class);

            example.createCriteria().andEqualTo("expressCode", expressCode)

                    .andEqualTo("expressNo", expressNo);

            goodsOrderDeliveryMapper.updateByExampleSelective(goodsOrderDelivery, example);

            result.put("Success", true);

        }

}

    return result;

}

相关文章

网友评论

      本文标题:没有配送方式的订单发货信息和物流查询

      本文链接:https://www.haomeiwen.com/subject/gtuyactx.html