diff --git a/framework/pom.xml b/framework/pom.xml
index 9f127491..3003fb45 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -457,6 +457,13 @@
sdk
${kuaidi100-api.version}
+
+ com.qiyuesuo.sdk
+ SDK
+ 2.1.7
+ system
+ ${project.basedir}/src/main/resources/maven-repository/SF-CSIM-EXPRESS-SDK-V2.1.7.jar
+
diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java
index 635a0370..a81b4987 100644
--- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java
+++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java
@@ -416,6 +416,7 @@ public enum ResultCode {
STORE_DELIVER_GOODS_ADDRESS(50007,"请填写商家发货地址"),
FREIGHT_TEMPLATE_NOT_EXIST(50010, "当前模版不存在"),
STORE_STATUS_ERROR(50011, "店铺状态异常,无法申请"),
+ STORE_DELIVER_ADDRESS_EXIST(50012,"请填写发货地址"),
/**
* 结算单
diff --git a/framework/src/main/java/cn/lili/modules/logistics/LogisticsPlugin.java b/framework/src/main/java/cn/lili/modules/logistics/LogisticsPlugin.java
index d77bc8f9..5a0ab4e7 100644
--- a/framework/src/main/java/cn/lili/modules/logistics/LogisticsPlugin.java
+++ b/framework/src/main/java/cn/lili/modules/logistics/LogisticsPlugin.java
@@ -2,9 +2,12 @@ package cn.lili.modules.logistics;
import cn.lili.modules.logistics.entity.dto.LabelOrderDTO;
import cn.lili.modules.logistics.entity.enums.LogisticsEnum;
+import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
import cn.lili.modules.system.entity.dos.Logistics;
import cn.lili.modules.system.entity.vo.Traces;
+import java.util.Map;
+
/**
* 物流插件接口
*
@@ -48,6 +51,8 @@ public interface LogisticsPlugin {
* @param labelOrderDTO 电子面单DTO
* @return
*/
- String labelOrder(LabelOrderDTO labelOrderDTO);
+ Map labelOrder(LabelOrderDTO labelOrderDTO);
+
+ String createOrder(OrderDetailVO orderDetailVO);
}
diff --git a/framework/src/main/java/cn/lili/modules/logistics/LogisticsPluginFactory.java b/framework/src/main/java/cn/lili/modules/logistics/LogisticsPluginFactory.java
index b40c4ebb..4ecc4bfe 100644
--- a/framework/src/main/java/cn/lili/modules/logistics/LogisticsPluginFactory.java
+++ b/framework/src/main/java/cn/lili/modules/logistics/LogisticsPluginFactory.java
@@ -5,6 +5,7 @@ import cn.lili.common.exception.ServiceException;
import cn.lili.modules.logistics.entity.enums.LogisticsEnum;
import cn.lili.modules.logistics.plugin.kdniao.KdniaoPlugin;
import cn.lili.modules.logistics.plugin.kuaidi100.Kuaidi100Plugin;
+import cn.lili.modules.logistics.plugin.shunfeng.ShunfengPlugin;
import cn.lili.modules.system.entity.dos.Setting;
import cn.lili.modules.system.entity.dto.LogisticsSetting;
import cn.lili.modules.system.entity.enums.SettingEnum;
@@ -44,6 +45,8 @@ public class LogisticsPluginFactory {
return new KdniaoPlugin(logisticsSetting);
case KUAIDI100:
return new Kuaidi100Plugin(logisticsSetting);
+ case SHUNFENG:
+ return new ShunfengPlugin(logisticsSetting);
default:
throw new ServiceException();
}
diff --git a/framework/src/main/java/cn/lili/modules/logistics/entity/enums/LogisticsEnum.java b/framework/src/main/java/cn/lili/modules/logistics/entity/enums/LogisticsEnum.java
index 2783c27e..20c9bba8 100644
--- a/framework/src/main/java/cn/lili/modules/logistics/entity/enums/LogisticsEnum.java
+++ b/framework/src/main/java/cn/lili/modules/logistics/entity/enums/LogisticsEnum.java
@@ -11,5 +11,5 @@ public enum LogisticsEnum {
/**
* 快递查询渠道
*/
- KDNIAO, KUAIDI100;
+ KDNIAO, KUAIDI100,SHUNFENG;
}
diff --git a/framework/src/main/java/cn/lili/modules/logistics/plugin/kdniao/KdniaoPlugin.java b/framework/src/main/java/cn/lili/modules/logistics/plugin/kdniao/KdniaoPlugin.java
index a2f13e75..4b567388 100644
--- a/framework/src/main/java/cn/lili/modules/logistics/plugin/kdniao/KdniaoPlugin.java
+++ b/framework/src/main/java/cn/lili/modules/logistics/plugin/kdniao/KdniaoPlugin.java
@@ -8,6 +8,7 @@ import cn.lili.modules.logistics.entity.dto.LabelOrderDTO;
import cn.lili.modules.logistics.entity.enums.LogisticsEnum;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
+import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
import cn.lili.modules.store.entity.dos.StoreLogistics;
import cn.lili.modules.store.entity.dto.StoreDeliverGoodsAddressDTO;
import cn.lili.modules.system.entity.dos.Logistics;
@@ -111,8 +112,9 @@ public class KdniaoPlugin implements LogisticsPlugin {
}
@Override
- public String labelOrder(LabelOrderDTO labelOrderDTO) {
+ public Map labelOrder(LabelOrderDTO labelOrderDTO) {
try {
+ Map resultMap = new HashMap();
//订单
Order order = labelOrderDTO.getOrder();
//订单货物
@@ -198,18 +200,24 @@ public class KdniaoPlugin implements LogisticsPlugin {
JSONObject obj = JSONObject.parseObject(result);
log.info("电子面单响应:{}", result);
if (!"100".equals(obj.getString("ResultCode"))) {
- return obj.getString("Reason");
+ resultMap.put("Reason",obj.getString("Reason"));
+ return resultMap;
}
JSONObject orderJson = JSONObject.parseObject(obj.getString("Order"));
-
- return obj.getString("PrintTemplate");
+ resultMap.put("printTemplate",obj.getString("PrintTemplate"));
+ return resultMap;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
+ @Override
+ public String createOrder(OrderDetailVO orderDetailVO) {
+ return null;
+ }
+
/**
* MD5加密
diff --git a/framework/src/main/java/cn/lili/modules/logistics/plugin/kuaidi100/Kuaidi100Plugin.java b/framework/src/main/java/cn/lili/modules/logistics/plugin/kuaidi100/Kuaidi100Plugin.java
index 62e8b633..b66980f8 100644
--- a/framework/src/main/java/cn/lili/modules/logistics/plugin/kuaidi100/Kuaidi100Plugin.java
+++ b/framework/src/main/java/cn/lili/modules/logistics/plugin/kuaidi100/Kuaidi100Plugin.java
@@ -6,6 +6,7 @@ import cn.lili.modules.logistics.entity.enums.LogisticsEnum;
import cn.lili.modules.logistics.plugin.kuaidi100.utils.Kuaidi100SignUtils;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
+import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
import cn.lili.modules.store.entity.dos.StoreLogistics;
import cn.lili.modules.store.entity.dto.StoreDeliverGoodsAddressDTO;
import cn.lili.modules.system.entity.dos.Logistics;
@@ -121,7 +122,7 @@ public class Kuaidi100Plugin implements LogisticsPlugin {
}
@Override
- public String labelOrder(LabelOrderDTO labelOrderDTO) {
+ public Map labelOrder(LabelOrderDTO labelOrderDTO) {
try {
//订单
Order order = labelOrderDTO.getOrder();
@@ -181,4 +182,10 @@ public class Kuaidi100Plugin implements LogisticsPlugin {
return null;
}
+ @Override
+ public String createOrder(OrderDetailVO orderDetailVO) {
+ return null;
+ }
+
+
}
diff --git a/framework/src/main/java/cn/lili/modules/logistics/plugin/shunfeng/ShunfengPlugin.java b/framework/src/main/java/cn/lili/modules/logistics/plugin/shunfeng/ShunfengPlugin.java
new file mode 100644
index 00000000..ed1bac33
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/logistics/plugin/shunfeng/ShunfengPlugin.java
@@ -0,0 +1,243 @@
+package cn.lili.modules.logistics.plugin.shunfeng;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import cn.lili.common.enums.ResultCode;
+import cn.lili.common.exception.ServiceException;
+import cn.lili.common.utils.SpringContextUtil;
+import cn.lili.modules.logistics.LogisticsPlugin;
+import cn.lili.modules.logistics.entity.dto.LabelOrderDTO;
+import cn.lili.modules.logistics.entity.enums.LogisticsEnum;
+import cn.lili.modules.order.order.entity.dos.Order;
+import cn.lili.modules.order.order.entity.dos.OrderItem;
+import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
+import cn.lili.modules.store.entity.dto.StoreDeliverGoodsAddressDTO;
+import cn.lili.modules.store.service.StoreDetailService;
+import cn.lili.modules.system.entity.dos.Logistics;
+import cn.lili.modules.system.entity.dto.LogisticsSetting;
+import cn.lili.modules.system.entity.vo.Traces;
+import com.sf.csim.express.service.CallExpressServiceTools;
+import com.sf.csim.express.service.HttpClientUtil;
+import com.sf.csim.express.service.IServiceCodeStandard;
+import com.sf.csim.express.service.code.ExpressServiceCodeEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.io.UnsupportedEncodingException;
+import java.util.*;
+
+/**
+ * 顺丰插件
+ * @author admin
+ */
+@Slf4j
+@Component
+public class ShunfengPlugin implements LogisticsPlugin {
+
+ /**
+ * ExpressServiceCodeEnum 对应速运类-快递APIs
+ * POSTServiceCodeEnum 对应速运类-驿站APIs
+ * YJTServiceCodeEnum 对应解决方案-医寄通APIs
+ * EPSServiceCodeEnum 对应解决方案-快递管家APIs
+ * 详情见code目录下枚举类,客户可自行修改引用的该类
+ **/
+ private LogisticsSetting logisticsSetting;
+
+ public ShunfengPlugin(){}
+
+ public ShunfengPlugin(LogisticsSetting logisticsSetting) {
+ this.logisticsSetting = logisticsSetting;
+ }
+
+ @Override
+ public LogisticsEnum pluginName() {
+ return LogisticsEnum.SHUNFENG;
+ }
+
+ /**
+ * 文档地址:https://open.sf-express.com/Api/ApiDetails?level3=393&interName=%E4%B8%8B%E8%AE%A2%E5%8D%95%E6%8E%A5%E5%8F%A3-EXP_RECE_CREATE_ORDER
+ *
+ * @param orderDetailVO
+ */
+ public String createOrder(OrderDetailVO orderDetailVO) {
+ StoreDetailService storeService = SpringContextUtil.getBean(StoreDetailService.class);
+ StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDTO = storeService.getStoreDeliverGoodsAddressDto(orderDetailVO.getOrder().getStoreId());
+ if(storeDeliverGoodsAddressDTO == null){
+ throw new ServiceException(ResultCode.STORE_DELIVER_ADDRESS_EXIST);
+ }
+ try {
+ Order order = orderDetailVO.getOrder();
+ Map msgDataMap = new HashMap();
+ msgDataMap.put("language", "zh-CN");
+ msgDataMap.put("orderId", order.getSn());
+ //托寄物信息
+ List