|
@@ -1,214 +0,0 @@
|
|
|
-package com.fs.kdniao.service.impl;
|
|
|
|
|
-
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
|
|
-import com.fs.kdniao.config.KdniaoConfig;
|
|
|
|
|
-import com.fs.kdniao.domain.KdniaoCommodity;
|
|
|
|
|
-import com.fs.kdniao.domain.KdniaoEOrderRequest;
|
|
|
|
|
-import com.fs.kdniao.domain.KdniaoEOrderResponse;
|
|
|
|
|
-import com.fs.kdniao.domain.KdniaoPerson;
|
|
|
|
|
-import com.fs.kdniao.domain.KdniaoSimpleOrderRequest;
|
|
|
|
|
-import com.fs.kdniao.service.IKdniaoEOrderService;
|
|
|
|
|
-import com.fs.kdniao.util.KdniaoUtil;
|
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
|
|
-
|
|
|
|
|
-import java.net.URLEncoder;
|
|
|
|
|
-import java.util.Collections;
|
|
|
|
|
-
|
|
|
|
|
-/**
|
|
|
|
|
- * 快递鸟电子面单业务实现类
|
|
|
|
|
- */
|
|
|
|
|
-@Service
|
|
|
|
|
-public class KdniaoEOrderServiceImpl implements IKdniaoEOrderService {
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private KdniaoConfig kdniaoConfig;
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 前端简化参数下单
|
|
|
|
|
- */
|
|
|
|
|
- @Override
|
|
|
|
|
- public KdniaoEOrderResponse submitSimpleOrder(KdniaoSimpleOrderRequest request) {
|
|
|
|
|
- validateRequest(request);
|
|
|
|
|
-
|
|
|
|
|
- KdniaoEOrderRequest eOrderRequest = buildEOrderRequest(request);
|
|
|
|
|
-
|
|
|
|
|
- String requestData = KdniaoUtil.toRequestDataJson(eOrderRequest);
|
|
|
|
|
- String dataSign = KdniaoUtil.getDataSign(requestData, kdniaoConfig.getApiKey());
|
|
|
|
|
-
|
|
|
|
|
- try {
|
|
|
|
|
- String formData = buildFormData(requestData, dataSign);
|
|
|
|
|
- String result = KdniaoUtil.doPost(kdniaoConfig.getReqURL(), formData);
|
|
|
|
|
- return JSON.parseObject(result, KdniaoEOrderResponse.class);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- throw new RuntimeException("电子面单下单失败:" + e.getMessage(), e);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 组装快递鸟标准请求对象
|
|
|
|
|
- */
|
|
|
|
|
- private KdniaoEOrderRequest buildEOrderRequest(KdniaoSimpleOrderRequest request) {
|
|
|
|
|
- KdniaoEOrderRequest eOrderRequest = new KdniaoEOrderRequest();
|
|
|
|
|
-
|
|
|
|
|
- // 基础字段
|
|
|
|
|
- eOrderRequest.setOrderCode(buildOrderCode(request.getBizOrderNo()));
|
|
|
|
|
- eOrderRequest.setShipperCode(request.getShipperCode());
|
|
|
|
|
- eOrderRequest.setCustomerName(kdniaoConfig.getAccount().getCustomerName());
|
|
|
|
|
- eOrderRequest.setCustomerPwd(kdniaoConfig.getAccount().getCustomerPwd());
|
|
|
|
|
- eOrderRequest.setSendSite(kdniaoConfig.getAccount().getSendSite());
|
|
|
|
|
- eOrderRequest.setMonthCode(kdniaoConfig.getAccount().getMonthCode());
|
|
|
|
|
- eOrderRequest.setPayType(request.getPayType());
|
|
|
|
|
- eOrderRequest.setExpType(request.getExpType());
|
|
|
|
|
-
|
|
|
|
|
- // 发件人
|
|
|
|
|
- eOrderRequest.setSender(buildSender());
|
|
|
|
|
-
|
|
|
|
|
- // 收件人
|
|
|
|
|
- eOrderRequest.setReceiver(buildReceiver(request));
|
|
|
|
|
-
|
|
|
|
|
- // 商品
|
|
|
|
|
- eOrderRequest.setCommodity(Collections.singletonList(buildCommodity(request)));
|
|
|
|
|
-
|
|
|
|
|
- // 包裹信息
|
|
|
|
|
- eOrderRequest.setQuantity(request.getQuantity() == null ? 1 : request.getQuantity());
|
|
|
|
|
- eOrderRequest.setWeight(request.getWeight());
|
|
|
|
|
- eOrderRequest.setVolume(request.getVolume());
|
|
|
|
|
- eOrderRequest.setCost(request.getCost());
|
|
|
|
|
- eOrderRequest.setOtherCost(request.getOtherCost());
|
|
|
|
|
-
|
|
|
|
|
- // 打印和备注
|
|
|
|
|
- eOrderRequest.setRemark(trimToNull(request.getRemark()));
|
|
|
|
|
- eOrderRequest.setIsReturnPrintTemplate(StringUtils.hasText(request.getIsReturnPrintTemplate()) ? request.getIsReturnPrintTemplate() : "1");
|
|
|
|
|
- eOrderRequest.setTemplateSize(StringUtils.hasText(request.getTemplateSize()) ? request.getTemplateSize() : "130");
|
|
|
|
|
- eOrderRequest.setIsSubscribe(StringUtils.hasText(request.getIsSubscribe()) ? request.getIsSubscribe() : "0");
|
|
|
|
|
-
|
|
|
|
|
- // 上门取件
|
|
|
|
|
- eOrderRequest.setIsNotice(request.getIsNotice());
|
|
|
|
|
- eOrderRequest.setStartDate(trimToNull(request.getStartDate()));
|
|
|
|
|
- eOrderRequest.setEndDate(trimToNull(request.getEndDate()));
|
|
|
|
|
-
|
|
|
|
|
- // 其他
|
|
|
|
|
- eOrderRequest.setIsReturnSignBill(request.getIsReturnSignBill());
|
|
|
|
|
- eOrderRequest.setIsSendMessage(request.getIsSendMessage());
|
|
|
|
|
- eOrderRequest.setCurrencyCode(trimToNull(request.getCurrencyCode()));
|
|
|
|
|
-
|
|
|
|
|
- return eOrderRequest;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 构建订单号
|
|
|
|
|
- * 规则:业务订单号 + 时间戳,保证唯一
|
|
|
|
|
- */
|
|
|
|
|
- private String buildOrderCode(String bizOrderNo) {
|
|
|
|
|
- if (StringUtils.hasText(bizOrderNo)) {
|
|
|
|
|
- return bizOrderNo.trim() + "-" + System.currentTimeMillis();
|
|
|
|
|
- }
|
|
|
|
|
- return "KD" + System.currentTimeMillis();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 组装默认发件人
|
|
|
|
|
- */
|
|
|
|
|
- private KdniaoPerson buildSender() {
|
|
|
|
|
- KdniaoPerson sender = new KdniaoPerson();
|
|
|
|
|
- sender.setCompany(trimToNull(kdniaoConfig.getSender().getCompany()));
|
|
|
|
|
- sender.setName(kdniaoConfig.getSender().getName());
|
|
|
|
|
- sender.setMobile(kdniaoConfig.getSender().getMobile());
|
|
|
|
|
- sender.setProvinceName(kdniaoConfig.getSender().getProvinceName());
|
|
|
|
|
- sender.setCityName(kdniaoConfig.getSender().getCityName());
|
|
|
|
|
- sender.setExpAreaName(kdniaoConfig.getSender().getExpAreaName());
|
|
|
|
|
- sender.setAddress(kdniaoConfig.getSender().getAddress());
|
|
|
|
|
- sender.setPostCode(trimToNull(kdniaoConfig.getSender().getPostCode()));
|
|
|
|
|
- return sender;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 组装收件人
|
|
|
|
|
- */
|
|
|
|
|
- private KdniaoPerson buildReceiver(KdniaoSimpleOrderRequest request) {
|
|
|
|
|
- KdniaoPerson receiver = new KdniaoPerson();
|
|
|
|
|
- receiver.setName(request.getReceiverName());
|
|
|
|
|
- receiver.setMobile(trimToNull(request.getReceiverMobile()));
|
|
|
|
|
- receiver.setTel(trimToNull(request.getReceiverTel()));
|
|
|
|
|
- receiver.setProvinceName(request.getReceiverProvinceName());
|
|
|
|
|
- receiver.setCityName(request.getReceiverCityName());
|
|
|
|
|
- receiver.setExpAreaName(request.getReceiverExpAreaName());
|
|
|
|
|
- receiver.setAddress(request.getReceiverAddress());
|
|
|
|
|
- receiver.setPostCode(trimToNull(request.getReceiverPostCode()));
|
|
|
|
|
- return receiver;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 组装商品信息
|
|
|
|
|
- */
|
|
|
|
|
- private KdniaoCommodity buildCommodity(KdniaoSimpleOrderRequest request) {
|
|
|
|
|
- KdniaoCommodity commodity = new KdniaoCommodity();
|
|
|
|
|
- commodity.setGoodsName(request.getGoodsName());
|
|
|
|
|
- commodity.setGoodsquantity(request.getGoodsQuantity() == null ? 1 : request.getGoodsQuantity());
|
|
|
|
|
- commodity.setGoodsPrice(request.getGoodsPrice());
|
|
|
|
|
- commodity.setGoodsWeight(request.getGoodsWeight());
|
|
|
|
|
- commodity.setGoodsDesc(trimToNull(request.getGoodsDesc()));
|
|
|
|
|
- return commodity;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 构建表单请求参数
|
|
|
|
|
- */
|
|
|
|
|
- private String buildFormData(String requestData, String dataSign) throws Exception {
|
|
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
|
|
- sb.append("RequestData=").append(URLEncoder.encode(requestData, "UTF-8"));
|
|
|
|
|
- sb.append("&EBusinessID=").append(URLEncoder.encode(kdniaoConfig.getEBusinessID(), "UTF-8"));
|
|
|
|
|
- sb.append("&RequestType=").append(URLEncoder.encode("1007", "UTF-8"));
|
|
|
|
|
- sb.append("&DataSign=").append(dataSign);
|
|
|
|
|
- sb.append("&DataType=").append(URLEncoder.encode("2", "UTF-8"));
|
|
|
|
|
- return sb.toString();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 前端简化参数校验
|
|
|
|
|
- */
|
|
|
|
|
- private void validateRequest(KdniaoSimpleOrderRequest request) {
|
|
|
|
|
- if (request == null) {
|
|
|
|
|
- throw new IllegalArgumentException("请求参数不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getShipperCode())) {
|
|
|
|
|
- throw new IllegalArgumentException("shipperCode不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (request.getPayType() == null) {
|
|
|
|
|
- throw new IllegalArgumentException("payType不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getExpType())) {
|
|
|
|
|
- throw new IllegalArgumentException("expType不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getReceiverName())) {
|
|
|
|
|
- throw new IllegalArgumentException("receiverName不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getReceiverMobile()) && !StringUtils.hasText(request.getReceiverTel())) {
|
|
|
|
|
- throw new IllegalArgumentException("receiverMobile和receiverTel至少填写一个");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getReceiverProvinceName())) {
|
|
|
|
|
- throw new IllegalArgumentException("receiverProvinceName不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getReceiverCityName())) {
|
|
|
|
|
- throw new IllegalArgumentException("receiverCityName不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getReceiverExpAreaName())) {
|
|
|
|
|
- throw new IllegalArgumentException("receiverExpAreaName不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getReceiverAddress())) {
|
|
|
|
|
- throw new IllegalArgumentException("receiverAddress不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- if (!StringUtils.hasText(request.getGoodsName())) {
|
|
|
|
|
- throw new IllegalArgumentException("goodsName不能为空");
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 去除空白,空字符串转 null
|
|
|
|
|
- */
|
|
|
|
|
- private String trimToNull(String value) {
|
|
|
|
|
- return StringUtils.hasText(value) ? value.trim() : null;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|