Browse Source

Merge branch 'master' of hyq/ccnet2.0 into master

project 7 years ago
parent
commit
95408905b8
31 changed files with 1578 additions and 602 deletions
  1. 8 8
      src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311CustiomsResponse.java
  2. 8 8
      src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311OrderBiz.java
  3. 99 38
      src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311SendDateRequet.java
  4. 7 4
      src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311SendDateResponse.java
  5. 2 2
      src/main/java/com/emato/ccnet/biz/req/pay/alipay/Ceb411AlipayBiz.java
  6. 4 4
      src/main/java/com/emato/ccnet/biz/req/waybill/oms/Ceb511OmsWayBiz.java
  7. 5 13
      src/main/java/com/emato/ccnet/biz/req/waybill/oms/Ceb511SendDateRequest.java
  8. 1 1
      src/main/java/com/emato/ccnet/biz/req/waybill/oms/Ceb511SendDateResponse.java
  9. 93 0
      src/main/java/com/emato/ccnet/config/HttpMsgConverter.java
  10. 3 0
      src/main/java/com/emato/ccnet/contants/Contants.java
  11. 1 1
      src/main/java/com/emato/ccnet/controller/KmallOrderController.java
  12. 6 1
      src/main/java/com/emato/ccnet/dto/BondedStockMerchantOrder.java
  13. 420 0
      src/main/java/com/emato/ccnet/dto/OrderDto.java
  14. 10 408
      src/main/java/com/emato/ccnet/dto/OrderRequest.java
  15. 171 0
      src/main/java/com/emato/ccnet/model/Message.java
  16. 31 0
      src/main/java/com/emato/ccnet/model/MessageCode.java
  17. 107 26
      src/main/java/com/emato/ccnet/msg/ResponseMessage.java
  18. 2 1
      src/main/java/com/emato/ccnet/service/ccent/CusWaybillRespService.java
  19. 3 0
      src/main/java/com/emato/ccnet/service/ccent/impl/CusOrderImpl.java
  20. 1 1
      src/main/java/com/emato/ccnet/service/ccent/impl/CusOrderRespImpl.java
  21. 7 3
      src/main/java/com/emato/ccnet/service/ccent/impl/CusWaybillRespImpl.java
  22. 159 0
      src/main/java/com/emato/ccnet/sysmsg/Result.java
  23. 38 0
      src/main/java/com/emato/ccnet/sysmsg/ResultCodeEnum.java
  24. 23 0
      src/main/java/com/emato/ccnet/util/DateConstant.java
  25. 81 0
      src/main/java/com/emato/ccnet/util/DateTimeDeserializer.java
  26. 33 0
      src/main/java/com/emato/ccnet/util/DateTimeSerializer.java
  27. 69 0
      src/main/java/com/emato/ccnet/util/JacksonStringUnicodeSerializer.java
  28. 127 74
      src/main/java/com/emato/ccnet/util/JacksonUtil.java
  29. 1 0
      src/main/java/com/emato/ccnet/util/OkHttpUtil.java
  30. 7 7
      src/main/resources/application.yml
  31. 51 2
      src/test/java/com/emato/ccnet/CcnetApplicationTests.java

+ 8 - 8
src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311CustiomsResponse.java

@@ -2,10 +2,7 @@ package com.emato.ccnet.biz.req.order.csp;
 
 import com.emato.ccnet.biz.req.CebCustomsResponse;
 import com.emato.ccnet.contants.Contants;
-import com.emato.ccnet.dto.CiqResultStatusDto;
-import com.emato.ccnet.dto.CusResultStatusDto;
-import com.emato.ccnet.dto.EportResultStatusDto;
-import com.emato.ccnet.dto.OrderCustiomsResponse;
+import com.emato.ccnet.dto.*;
 import com.emato.ccnet.domain.ccnet.CusOrder;
 import com.emato.ccnet.domain.ccnet.CusOrderResp;
 import com.emato.ccnet.domain.ccnet.CusOrderStatus;
@@ -15,6 +12,7 @@ import com.emato.ccnet.service.ccent.CusOrderService;
 import com.emato.ccnet.service.ccent.CusOrderStatusService;
 import com.emato.ccnet.service.kmall.KmallOrderService;
 import com.emato.ccnet.util.JacksonUtil;
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.google.common.collect.ImmutableMap;
 import com.google.gson.Gson;
 import org.slf4j.Logger;
@@ -48,7 +46,7 @@ public class Ceb311CustiomsResponse implements CebCustomsResponse{
         }
 
         //查找电子订单
-        CusOrder cusOrder = cusOrderService.findCusOrder(orderCustiomsResponse.getOrderRequest().getOrderSn());
+        CusOrder cusOrder = cusOrderService.findCusOrder(orderCustiomsResponse.getOrderRequest().getClsOrderDto().getOrderSn());
         if(cusOrder == null){
             LOGGER.info("查找电子订单表数据失败");
             return;
@@ -72,13 +70,13 @@ public class Ceb311CustiomsResponse implements CebCustomsResponse{
         //对响应的数据进行处理
         if(Contants.ORDER_RESPONSE_SUCCESS.equals(orderCustiomsResponse.getCode())){
             cusOrderStatus.setSendStatus(Contants.SUCCESS_STATUS);
-            Map<String, Object> kmallMap = ImmutableMap.of("orderNo", orderCustiomsResponse.getOrderRequest().getOrderNo(), "cusOrderFlag", Contants.SUCCESS_STATUS);
+            Map<String, Object> kmallMap = ImmutableMap.of("orderNo", orderCustiomsResponse.getOrderRequest().getClsOrderDto().getOrderNo(), "cusOrderFlag", Contants.SUCCESS_STATUS);
             kmallOrderService.updateCusKmallOrderStatus(kmallMap);
         }
 
         if(Contants.ORDER_RESPONSE_FAIL.equals(orderCustiomsResponse.getCode())){
             cusOrderStatus.setSendStatus(Contants.FAIL_STATUS);
-            Map<String, Object> kmallMap = ImmutableMap.of("orderNo", orderCustiomsResponse.getOrderRequest().getOrderNo(), "cusOrderFlag", Contants.FAIL_STATUS);
+            Map<String, Object> kmallMap = ImmutableMap.of("orderNo", orderCustiomsResponse.getOrderRequest().getClsOrderDto().getOrderNo(), "cusOrderFlag", Contants.FAIL_STATUS);
             kmallOrderService.updateCusKmallOrderStatus(kmallMap);
         }
 
@@ -149,7 +147,9 @@ public class Ceb311CustiomsResponse implements CebCustomsResponse{
         LOGGER.info("海关回执 data:"+response);
 
         //解析回执数据
-        List<OrderCustiomsResponse> orderCustiomsResponseList = JacksonUtil.fromListJson(gson.toJson(response.getData()));
+        List<OrderCustiomsResponse> orderCustiomsResponseList  = JacksonUtil.fromListJson(
+                JacksonUtil.toJson(response.getData()), new TypeReference<List<OrderCustiomsResponse>>() {});
+
         if(orderCustiomsResponseList == null && orderCustiomsResponseList.size() <= 0){
             LOGGER.info("解析响应数据失败");
             return null;

+ 8 - 8
src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311OrderBiz.java

@@ -40,7 +40,7 @@ public class Ceb311OrderBiz implements CebReqBiz {
             return ResponseMessage.failed(info);
         }
 
-        //查询电子订单数据
+        //查询中网电子订单数据
         List list = ceb311OrderGetDate.getData(reqParam);
         if (list.isEmpty()) {
             String info = "【CEB411】没有订单数据, 生成海关支付单报文提前结束";
@@ -48,19 +48,19 @@ public class Ceb311OrderBiz implements CebReqBiz {
             return ResponseMessage.failed(info);
         }
 
-        //添加电子订单数据
+        //添加erp电子订单数据
         ResponseMessage responseMessage = ceb311OrderAddDate.addDate(list);
-        if(!responseMessage.isSuccess()){
+        if(!ResponseMessage.isSuccess(responseMessage)){
             String info = "生成海关支付单初始化失败" + responseMessage.getMsg();
             LOGGER.error("--- {}", info);
             return ResponseMessage.failed(info);
         }
 
-        //发送数据请求并响应
-        responseMessage = ceb311SendDateRequet.sendDate();
-        if(!responseMessage.isSuccess()){
-            String info = "发送请求响应失败"+responseMessage.getMsg();
-            LOGGER.error("--- {}", responseMessage.getMsg());
+        //发送数据csp系统请求并响应更新订单
+        ResponseMessage ceb311ResponseMessage = ceb311SendDateRequet.sendDate();
+        if(!ResponseMessage.isSuccess(ceb311ResponseMessage)){
+            String info = "发送请求响应失败"+ceb311ResponseMessage.getMsg();
+            LOGGER.error("--- {}", ceb311ResponseMessage.getMsg());
             return ResponseMessage.failed(info);
         }
 

+ 99 - 38
src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311SendDateRequet.java

@@ -1,8 +1,12 @@
 package com.emato.ccnet.biz.req.order.csp;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.emato.ccnet.biz.req.CebReqSendDate;
 import com.emato.ccnet.config.Cus;
 import com.emato.ccnet.contants.Contants;
+import com.emato.ccnet.dto.OrderDto;
 import com.emato.ccnet.dto.OrderRequest;
 import com.emato.ccnet.domain.ccnet.CusOrder;
 import com.emato.ccnet.domain.ccnet.CusOrderGoods;
@@ -14,21 +18,21 @@ import com.emato.ccnet.service.ccent.CusOrderService;
 import com.emato.ccnet.service.ccent.CusOrderStatusService;
 import com.emato.ccnet.util.JacksonUtil;
 import com.emato.ccnet.util.OkHttpUtil;
+import com.emato.ccnet.util.StringUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
+import com.google.gson.Gson;
 import okhttp3.Request;
+import okhttp3.RequestBody;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Component
 public class Ceb311SendDateRequet implements CebReqSendDate {
@@ -70,7 +74,7 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
 
         //发送给第三方的请求回调
         ResponseMessage orderSumbit = buildRequest(cusOrders);
-        if(!orderSumbit.isSuccess()){
+        if(!ResponseMessage.isSuccess(orderSumbit)){
             String info = "查找当前ccnet中的所有电子订单失败";
             LOGGER.error("--- {}", info);
             return ResponseMessage.failed(info);
@@ -91,7 +95,7 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
 
             //更新电子订单数据为申报中
             ResponseMessage updateCusOrderStatus = updateCusOrderStatus(cusOrder.getOrderSn());
-            if(!updateCusOrderStatus.isSuccess()){
+            if(!ResponseMessage.isSuccess(updateCusOrderStatus)){
                 failedList.add(cusOrder.getOrderSn());
                 String info = "更新电子订单数据为申报中失败" + updateCusOrderStatus.getMsg();
                 LOGGER.error("--- {}", info);
@@ -99,43 +103,37 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
             }
 
             //数据组装
-            OrderRequest orderRequest = assembleData(cusOrder);
-            if(orderRequest == null){
-                failedList.add(orderRequest.getOrderSn());
+            Map<String, String> sPara = assembleData(cusOrder);
+            if(sPara == null){
+                failedList.add(cusOrder.getOrderSn());
                 String info = "数据组装失败";
                 LOGGER.error("--- {}", info);
                 continue;
             }
 
-            //构造请求报文
-            Request request = buildRequestDate(orderRequest);
-            if(request == null){
-                failedList.add(orderRequest.getOrderSn());
-                String info = "构造请求报文失败";
+            //发送CSP系统请求并获取响应信息
+            String response = requestSubmit(sPara);
+            LOGGER.info("CSP的响应报文:" + response);
+            if(response == null){
+                failedList.add(cusOrder.getOrderSn());
+                String info = "发送请求并获取响应信息失败";
                 LOGGER.error("--- {}", info);
                 continue;
             }
 
-            //发送请求报文,并同步回调响应
-            String response = null;
-            try {
-                response = OkHttpUtil.post(request);
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
 
             LOGGER.info("response date:"+response);
 
             //解析响应报文并处理本地业务逻辑
-            ResponseMessage responseDis = ceb311SendDateResponse.addResponse(response,orderRequest.getOrderSn());
-            if(!responseDis.isSuccess()){
-                failedList.add(orderRequest.getOrderSn());
+            ResponseMessage responseDis = ceb311SendDateResponse.addResponse(response,cusOrder.getOrderSn());
+            if(!ResponseMessage.isSuccess(responseDis)){
+                failedList.add(cusOrder.getOrderSn());
                 String info = "解析响应报文并处理本地业务逻辑失败";
                 LOGGER.error("--- {}", info);
                 continue;
             }
 
-            sucList.add(orderRequest.getOrderSn());
+            sucList.add(cusOrder.getOrderSn());
         }
 
         LOGGER.info("--- 【CEB411】【成功】订单数:{}, 订单: {}", sucList.size(), Joiner.on(",").skipNulls().join(sucList.toArray()));
@@ -145,6 +143,53 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
 
         return ResponseMessage.success();
     }
+    /**
+     * 发送请求并获取响应信息
+     * @param sPara
+     * @return
+     */
+    private String requestSubmit(Map<String, String> sPara) {
+        //构造RequestBody
+        RequestBody requestBody = OkHttpUtil.buildRequestBody(sPara);
+
+        //构建Request
+        String url = cus.getOrder().get("order-url");
+        Request request = OkHttpUtil.buildRequest(url,requestBody);
+        LOGGER.info("oms的请求报文:" + request);
+        // 同步访问,返回结果字符串
+        String response = null;
+        try {
+            response = OkHttpUtil.post(request);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return response;
+    }
+    /**
+     * 发送请求并获取响应信息
+     * @param sPara
+     * @return
+     */
+    private String requestSubmit2(Map<String, String> sPara) {
+        //构造RequestBody
+        RequestBody requestBody = OkHttpUtil.buildRequestBody(sPara);
+
+        //构建Request
+        String url = cus.getOrder().get("order-url");
+        Request request = OkHttpUtil.buildRequest(url,requestBody);
+        LOGGER.info("oms的请求报文:" + request);
+        // 同步访问,返回结果字符串
+        String response = null;
+        try {
+            response = OkHttpUtil.post(request);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return response;
+    }
+
 
     /**
      * 更新电子订单状态表
@@ -181,12 +226,7 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
         List list = Lists.newArrayList();
         list.add(orderRequest);
         Result result = Result.success(list);
-        String requestData = null;
-        try {
-            requestData = JacksonUtil.toJson(result);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
+        String requestData = JacksonUtil.toJson(result);
         LOGGER.info("request Data :" + requestData);
         //构造请求报文
         Request request = OkHttpUtil.buildRequest(cus.getOrder().get("order-url"),requestData);
@@ -199,10 +239,10 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
      * @param cusOrder
      * @return
      */
-    private OrderRequest assembleData(CusOrder cusOrder) {
-
+    private Map<String, String> assembleData(CusOrder cusOrder) {
         // 发送电子订单的集合
-        OrderRequest orderRequest = new OrderRequest(cusOrder);
+        Map<String, String> sPara = new HashMap<>();
+        OrderDto clsOrderDto = new OrderDto(cusOrder);
 
         //通过电子订单内部编号查找海关电子订单商品
         List<CusOrderGoods> cusOrderGoodes = cusOrderGoodsService.findCusOrderGoodsByCusOrderSn(cusOrder.getCusOrderSn());
@@ -210,10 +250,31 @@ public class Ceb311SendDateRequet implements CebReqSendDate {
             LOGGER.error("通过电子订单内部编号查找海关电子订单商品失败,电子订单内部编号:"+cusOrder.getCusOrderSn());
             return null;
         }
-
-        orderRequest.setOrderList(cusOrderGoodes);
-
-        return orderRequest;
+        for (CusOrderGoods orderGoods:cusOrderGoodes) {
+            if(orderGoods.getBrand()== null || "".equalsIgnoreCase(orderGoods.getBrand())){
+                orderGoods.setBrand("无");
+            }
+        }
+        OrderRequest request = new OrderRequest();
+        request.setClsOrderDetailDto(cusOrderGoodes);
+        request.setClsOrderDto(clsOrderDto);
+        String cusOrderGoodesJson = JacksonUtil.toJson(request);
+        //        String json = toJson(clsOrderDto,cusOrderGoodes);
+        sPara.put("data", cusOrderGoodesJson);
+
+        return sPara;
     }
 
+    private String toJson(OrderDto clsOrderDto, List<CusOrderGoods> cusOrderGoodes){
+        String clsOrderDtoJson = JacksonUtil.toJson(clsOrderDto);
+        String cusOrderGoodesJson = JacksonUtil.toJson(cusOrderGoodes);
+        JSONObject object = new JSONObject();
+        JSONObject jsonObject = new JSONObject();
+        JSONArray jsonArray = new JSONArray();
+        jsonObject.put("clsOrderDto", clsOrderDtoJson);
+        jsonObject.put("cusOrderGoodes", cusOrderGoodesJson);
+        jsonArray.add(jsonObject);
+        object.put("list", jsonArray);
+        return object.toJSONString();
+    }
 }

+ 7 - 4
src/main/java/com/emato/ccnet/biz/req/order/csp/Ceb311SendDateResponse.java

@@ -9,6 +9,7 @@ import com.emato.ccnet.msg.ResponseMessage;
 import com.emato.ccnet.service.ccent.CusOrderRespService;
 import com.emato.ccnet.service.ccent.CusOrderStatusService;
 import com.emato.ccnet.util.JacksonUtil;
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.google.common.collect.ImmutableMap;
 import com.google.gson.Gson;
 import org.slf4j.Logger;
@@ -28,7 +29,6 @@ public class Ceb311SendDateResponse implements CebRespOneDateRespons {
 
     @Autowired
     private CusOrderStatusService cusOrderStatusService;
-
     /**
      * 响应数据处理
      * @param response
@@ -57,7 +57,7 @@ public class Ceb311SendDateResponse implements CebRespOneDateRespons {
         }
 
         //对回执状态进行处理
-        if(Contants.RESPONSE_SUCCESS.equals(orderResponse.getCode())){
+        if(Contants.CSP_RESPONSE_SUCCESS.equals(orderResponse.getCode())){
             cusOrderStatus.setModerSn(Contants.CREATER_NUMBER);
             cusOrderStatus.setModTime(new Date());
 
@@ -88,9 +88,12 @@ public class Ceb311SendDateResponse implements CebRespOneDateRespons {
             LOGGER.info("解析响应数据Result失败");
             return null;
         }
+        Object dataResult = result.getData();
+        String data = (String)dataResult;
+        List<OrderResponse> orderResponseList  = gson.fromJson(data, List.class);
+//        List<OrderResponse> orderResponseList  = JacksonUtil.fromListJson(JacksonUtil.toJson(data), new TypeReference<List<OrderResponse>>() {});
 
-        List<OrderResponse> orderResponseList = JacksonUtil.fromListJson(gson.toJson(result.getData()));
-        if(orderResponseList == null && orderResponseList.size() <=0){
+        if(orderResponseList == null){
             LOGGER.info("解析响应数据OrderResponse集合失败");
             return null;
         }

+ 2 - 2
src/main/java/com/emato/ccnet/biz/req/pay/alipay/Ceb411AlipayBiz.java

@@ -54,7 +54,7 @@ public class Ceb411AlipayBiz implements CebReqBiz {
 
         //添加支付表数据
         ResponseMessage responseMessage = ceb411AlipayAddData.addDate(list);
-        if(!responseMessage.isSuccess()){
+        if(!ResponseMessage.isSuccess(responseMessage)){
             String info = "生成海关支付单初始化失败" + responseMessage.getMsg();
             LOGGER.error("--- {}", info);
             return ResponseMessage.failed(info);
@@ -62,7 +62,7 @@ public class Ceb411AlipayBiz implements CebReqBiz {
 
         //发送数据请求并响应
         responseMessage = ceb411SendDateRequet.sendDate();
-        if(!responseMessage.isSuccess()){
+        if(!ResponseMessage.isSuccess(responseMessage)){
             String info = "发送请求响应失败" + responseMessage.getMsg();
             LOGGER.error("--- {}", info);
             return ResponseMessage.failed(info);

+ 4 - 4
src/main/java/com/emato/ccnet/biz/req/waybill/oms/Ceb511OmsWayBiz.java

@@ -53,16 +53,16 @@ public class Ceb511OmsWayBiz implements CebReqBiz {
 
         //添加海关运单数据
         ResponseMessage responseMessage = ceb511OmsWayAddDate.addDate(list);
-        if(!responseMessage.isSuccess()){
+        if(!ResponseMessage.isSuccess(responseMessage)){
             String info = "生成海关运单初始化失败" + responseMessage.getMsg();
             LOGGER.error("--- {}", info);
             return ResponseMessage.failed(info);
         }
 
         //发送数据请求并响应
-        responseMessage = ceb511SendDateRequest.sendDate();
-        if(!responseMessage.isSuccess()){
-            String info = "发送请求响应失败" + responseMessage.getMsg();
+        ResponseMessage ceb511ResponseMessage = ceb511SendDateRequest.sendDate();
+        if(!ResponseMessage.isSuccess(ceb511ResponseMessage)){
+            String info = "发送请求响应失败" + ceb511ResponseMessage.getMsg();
             LOGGER.error("--- {}", info);
             return ResponseMessage.failed(info);
         }

+ 5 - 13
src/main/java/com/emato/ccnet/biz/req/waybill/oms/Ceb511SendDateRequest.java

@@ -90,7 +90,7 @@ public class Ceb511SendDateRequest implements CebReqSendDate{
         for (CusWaybill cusWaybill:cusWaybills){
             //更新运单状态表变成发送中
             ResponseMessage update = updateCusWaybillStatus(cusWaybill.getCusWaybillSn());
-            if(!update.isSuccess()){
+            if(!ResponseMessage.isSuccess(update)){
                 failedList.add(cusWaybill.getCusWaybillSn());
                 String info = "更新运单状态表变成发送中失败" + update.getMsg();
                 LOGGER.error("--- {}", info);
@@ -119,9 +119,9 @@ public class Ceb511SendDateRequest implements CebReqSendDate{
             LOGGER.info("response date:"+response);
             //解析响应信息并处理
             ResponseMessage addRespone = ceb511SendDateResponse.addResponse(response,cusWaybill.getCusWaybillSn());
-            if(!addRespone.isSuccess()){
+            if(!ResponseMessage.isSuccess(addRespone)){
                 failedList.add(cusWaybill.getCusWaybillSn());
-                String info = "解析响应信息并处理失败";
+                String info = "解析响应信息并处理失败:"+addRespone.getMsg();
                 LOGGER.error("--- {}", info);
                 continue;
             }
@@ -149,7 +149,6 @@ public class Ceb511SendDateRequest implements CebReqSendDate{
         //构建Request
         String url = cus.getWaybill().get("waybill-url");
         Request request = OkHttpUtil.buildRequest(url,requestBody);
-
         LOGGER.info("oms的请求报文:" + request);
         // 同步访问,返回结果字符串
         String response = null;
@@ -185,16 +184,9 @@ public class Ceb511SendDateRequest implements CebReqSendDate{
             bondedStockMerchantOrderItems.add(bondedStockMerchantOrderItem);
         }
         bondedStockMerchantOrder.setItem(bondedStockMerchantOrderItems);
-        String bondedStockMerchantOrderJson = null;
-        try {
-            bondedStockMerchantOrderJson = JacksonUtil.toJson(bondedStockMerchantOrder);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
-
+        String bondedStockMerchantOrderJson = JacksonUtil.toJson(bondedStockMerchantOrder);
 
-        String timestamp = String.valueOf(System.currentTimeMillis());
+        String timestamp = String.valueOf(System.currentTimeMillis()/1000);
         sParaTemp.put("merchId",cusWaybill.getMerchSn());
         sParaTemp.put("data",bondedStockMerchantOrderJson);
         sParaTemp.put("timestamp", timestamp);

+ 1 - 1
src/main/java/com/emato/ccnet/biz/req/waybill/oms/Ceb511SendDateResponse.java

@@ -36,7 +36,7 @@ public class Ceb511SendDateResponse implements CebRespOneDateRespons{
     public ResponseMessage addResponse(String response, String cusWaybillSn) {
         //解析响应数据
         Gson gson = new Gson();
-        Result result = gson.fromJson(response, Result.class);
+        ResponseMessage result = gson.fromJson(response, ResponseMessage.class);
         if(result == null){
             String info = "解析响应数据Result失败";
             LOGGER.error("--- {}", info);

+ 93 - 0
src/main/java/com/emato/ccnet/config/HttpMsgConverter.java

@@ -0,0 +1,93 @@
+package com.emato.ccnet.config;
+
+import com.emato.ccnet.util.JacksonUtil;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * HTTP 请求响应消息转换
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-03
+ */
+@Configuration
+public class HttpMsgConverter {
+
+    /**
+     * 扩展现有的消息转换器链表
+     * 也可以继承并重写{@link WebMvcConfigurerAdapter#configureMessageConverters}方法
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters httpMessageConverters() {
+        List<HttpMessageConverter<?>> list = new ArrayList<>();
+        list.add(httpMessageConverter());
+        list.add(mappingJackson2HttpMessageConverter());
+        return new HttpMessageConverters(list);
+    }
+
+    /**
+     * jackson进行消息转换时,处理中文乱码
+     * @return
+     */
+    @Bean
+    public HttpMessageConverter httpMessageConverter() {
+        StringHttpMessageConverter messageConverter = new StringHttpMessageConverter();
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+        messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
+        return messageConverter;
+    }
+
+    /**
+     * 处理中文乱码
+     * @return
+     */
+    public List<MediaType> mediaTypes() {
+        //处理中文乱码
+        List<MediaType> list = new LinkedList();
+        list.add(MediaType.TEXT_HTML);
+        list.add(MediaType.APPLICATION_JSON_UTF8);
+        return list;
+    }
+
+
+    /**
+     * HTTP 请求消息转换器
+     * 处理Date日期类型,处理LocalDateTime日期类型
+     * 使用<code>MappingJackson2HttpMessageConverter</code>类
+     * @return
+     */
+    @Bean
+    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
+        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
+        messageConverter.setObjectMapper(objectMapper());
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+        return messageConverter;
+    }
+
+    /**
+     * HTTP 响应消息处理
+     * <code>ResponseBody</code>格式化响应消息中的<code>LocalDateTime</code>日期类型
+     * <code>{@link JacksonUtil#getObjectMapper}</code>使用<code>JavaTimeModule</code>格式化响应消息中的<code>LocalDateTime</code>日期类型
+     * @return
+     */
+    @Bean
+    public ObjectMapper objectMapper() {
+        ObjectMapper objectMapper = JacksonUtil.getObjectMapper();
+        return objectMapper;
+    }
+
+
+}

+ 3 - 0
src/main/java/com/emato/ccnet/contants/Contants.java

@@ -111,5 +111,8 @@ public class Contants {
     //成功
     public static final String OMS_SUCCESS_CODE = "0";
 
+    //csp回执返回成功
+    public static final String CSP_RESPONSE_SUCCESS = "0";
+
 
 }

+ 1 - 1
src/main/java/com/emato/ccnet/controller/KmallOrderController.java

@@ -100,7 +100,7 @@ public class KmallOrderController {
         ResponseMessage result =ceb511OmsWayBiz.biz(reqParam);
         //int ceb = ceb311SendDateRequet.sendDate();
         logger.info("---------- 支付单数据结束 ----------------------------------------");
-        return null;
+        return result;
     }
 
 }

+ 6 - 1
src/main/java/com/emato/ccnet/dto/BondedStockMerchantOrder.java

@@ -109,7 +109,7 @@ public class BondedStockMerchantOrder implements Serializable {
         this.buyerIdType = cusWaybill.getBuyerIdType();
         this.buyerIdCode = cusWaybill.getBuyerIdCode() == null?cusWaybill.getConsigneeIdCode():cusWaybill.getBuyerIdCode();
         this.buyerName = cusWaybill.getBuyerName();
-        this.buyerTel = cusWaybill.getBuyerTel();
+        this.buyerTel = cusWaybill.getBuyerMob();
         this.consigneeIdType = cusWaybill.getConsigneeIdType();
         this.consigneeIdCode = cusWaybill.getConsigneeIdCode();
         this.consigneeName = cusWaybill.getConsigneeName();
@@ -134,6 +134,11 @@ public class BondedStockMerchantOrder implements Serializable {
         this.payTime = cusWaybill.getPayTime();
         this.buyerBillTime = cusWaybill.getBuyerBillTime()==null?new Date():cusWaybill.getBuyerBillTime();
         this.extraTag = cusWaybill.getCusWaybillSn();
+        //Todo 中网快递默认韵达
+        this.exprType = "00";
+        this.exprCompId = "yunda";
+        this.declExprFee = BigDecimal.valueOf(0);
+        this.declPostTax = BigDecimal.valueOf(0);
     }
 
     public String getMerchId() {

+ 420 - 0
src/main/java/com/emato/ccnet/dto/OrderDto.java

@@ -0,0 +1,420 @@
+package com.emato.ccnet.dto;
+
+import com.emato.ccnet.domain.ccnet.CusOrder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author huangyaqin
+ * @version 1.0
+ * 2018-04-19 19:17
+ */
+public class OrderDto implements Serializable {
+    private static final long serialVersionUID = 3177602414191089902L;
+
+    private String orderSn;
+
+    private String merchName;
+
+    private String merchSn;
+
+    private String merchOrderSn;
+
+    private String platSn;
+
+    private String platName;
+
+    private String thirdPartyMerchCode;
+
+    private String thirdPartyMerchName;
+
+    private String appType;
+
+    private String appTime;
+
+    private String appStatus;
+
+    private String orderType;
+
+    private String orderNo;
+
+    private String ebpCode;
+
+    private String ebpName;
+
+    private String ebcCode;
+
+    private String ebcName;
+
+    private BigDecimal goodsValue;
+
+    private BigDecimal freight;
+
+    private BigDecimal discount;
+
+    private BigDecimal taxTotal;
+
+    private BigDecimal acturalPaid;
+
+    private String currency;
+
+    private String buyerRegNo;
+
+    private String buyerName;
+
+    private String buyerIdType;
+
+    private String buyeridNumber;
+
+    private String payCode;
+
+    private String payName;
+
+    private String payTransactionId;
+
+    private String batchNumbers;
+
+    private String consignee;
+
+    private String consigneeTelephone;
+
+    private String consigneeAddress;
+
+    private String consigneeDistrict;
+
+    private String note;
+
+
+    public OrderDto(CusOrder cusOrder){
+        this.orderSn = cusOrder.getOrderSn();
+        this.merchName = cusOrder.getMerchName();
+        this.merchSn = cusOrder.getMerchSn();
+        this.merchOrderSn = cusOrder.getMerchOrderSn();
+        this.platSn = cusOrder.getPlatSn();
+        this.platName = cusOrder.getPlatName();
+        this.thirdPartyMerchCode = cusOrder.getThirdPartyMerchCode();
+        this.thirdPartyMerchName = cusOrder.getThirdPartyMerchName();
+        this.appType = cusOrder.getAppType();
+        this.appTime = cusOrder.getAppTime();
+        this.appStatus = cusOrder.getAppStatus();
+        this.orderType = cusOrder.getOrderType();
+        this.orderNo = cusOrder.getOrderNo();
+        this.ebpCode = cusOrder.getEbpCode();
+        this.ebpName = cusOrder.getEbpName();
+        this.ebcCode = cusOrder.getEbcCode();
+        this.ebcName = cusOrder.getEbcName();
+        this.goodsValue = cusOrder.getGoodsValue();
+        this.freight = cusOrder.getFreight();
+        this.discount = cusOrder.getDiscount();
+        this.taxTotal = cusOrder.getTaxTotal();
+        this.acturalPaid = cusOrder.getActuralPaid();
+        this.currency = cusOrder.getCurrency();
+        this.buyerRegNo = cusOrder.getBuyerRegNo();
+        this.buyerName = cusOrder.getBuyerName();
+        this.buyerIdType = cusOrder.getBuyerIdType();
+        this.buyeridNumber = cusOrder.getBuyeridNumber();
+        this.payCode = cusOrder.getPayCode();
+        this.payName = cusOrder.getPayName();
+        this.payTransactionId = cusOrder.getPayTransactionId();
+        this.batchNumbers = cusOrder.getBatchNumbers();
+        this.consignee = cusOrder.getConsignee();
+        this.consigneeTelephone = cusOrder.getConsigneeTelephone();
+        this.consigneeAddress = cusOrder.getConsigneeAddress();
+        this.consigneeDistrict = cusOrder.getConsigneeDistrict();
+        this.note = cusOrder.getNote();
+    }
+
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getAppType() {
+        return appType;
+    }
+
+    public void setAppType(String appType) {
+        this.appType = appType;
+    }
+
+    public String getAppTime() {
+        return appTime;
+    }
+
+    public void setAppTime(String appTime) {
+        this.appTime = appTime;
+    }
+
+    public String getAppStatus() {
+        return appStatus;
+    }
+
+    public void setAppStatus(String appStatus) {
+        this.appStatus = appStatus;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(String orderType) {
+        this.orderType = orderType;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getEbpCode() {
+        return ebpCode;
+    }
+
+    public void setEbpCode(String ebpCode) {
+        this.ebpCode = ebpCode;
+    }
+
+    public String getEbpName() {
+        return ebpName;
+    }
+
+    public void setEbpName(String ebpName) {
+        this.ebpName = ebpName;
+    }
+
+    public String getEbcCode() {
+        return ebcCode;
+    }
+
+    public void setEbcCode(String ebcCode) {
+        this.ebcCode = ebcCode;
+    }
+
+    public String getEbcName() {
+        return ebcName;
+    }
+
+    public void setEbcName(String ebcName) {
+        this.ebcName = ebcName;
+    }
+
+    public BigDecimal getGoodsValue() {
+        return goodsValue;
+    }
+
+    public void setGoodsValue(BigDecimal goodsValue) {
+        this.goodsValue = goodsValue;
+    }
+
+    public BigDecimal getFreight() {
+        return freight;
+    }
+
+    public void setFreight(BigDecimal freight) {
+        this.freight = freight;
+    }
+
+    public BigDecimal getDiscount() {
+        return discount;
+    }
+
+    public void setDiscount(BigDecimal discount) {
+        this.discount = discount;
+    }
+
+    public BigDecimal getTaxTotal() {
+        return taxTotal;
+    }
+
+    public void setTaxTotal(BigDecimal taxTotal) {
+        this.taxTotal = taxTotal;
+    }
+
+    public BigDecimal getActuralPaid() {
+        return acturalPaid;
+    }
+
+    public void setActuralPaid(BigDecimal acturalPaid) {
+        this.acturalPaid = acturalPaid;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public String getBuyerRegNo() {
+        return buyerRegNo;
+    }
+
+    public void setBuyerRegNo(String buyerRegNo) {
+        this.buyerRegNo = buyerRegNo;
+    }
+
+    public String getBuyerName() {
+        return buyerName;
+    }
+
+    public void setBuyerName(String buyerName) {
+        this.buyerName = buyerName;
+    }
+
+    public String getBuyerIdType() {
+        return buyerIdType;
+    }
+
+    public void setBuyerIdType(String buyerIdType) {
+        this.buyerIdType = buyerIdType;
+    }
+
+    public String getBuyeridNumber() {
+        return buyeridNumber;
+    }
+
+    public void setBuyeridNumber(String buyeridNumber) {
+        this.buyeridNumber = buyeridNumber;
+    }
+
+    public String getPayCode() {
+        return payCode;
+    }
+
+    public void setPayCode(String payCode) {
+        this.payCode = payCode;
+    }
+
+    public String getPayName() {
+        return payName;
+    }
+
+    public void setPayName(String payName) {
+        this.payName = payName;
+    }
+
+    public String getPayTransactionId() {
+        return payTransactionId;
+    }
+
+    public void setPayTransactionId(String payTransactionId) {
+        this.payTransactionId = payTransactionId;
+    }
+
+    public String getBatchNumbers() {
+        return batchNumbers;
+    }
+
+    public void setBatchNumbers(String batchNumbers) {
+        this.batchNumbers = batchNumbers;
+    }
+
+    public String getConsignee() {
+        return consignee;
+    }
+
+    public void setConsignee(String consignee) {
+        this.consignee = consignee;
+    }
+
+    public String getConsigneeTelephone() {
+        return consigneeTelephone;
+    }
+
+    public void setConsigneeTelephone(String consigneeTelephone) {
+        this.consigneeTelephone = consigneeTelephone;
+    }
+
+    public String getConsigneeAddress() {
+        return consigneeAddress;
+    }
+
+    public void setConsigneeAddress(String consigneeAddress) {
+        this.consigneeAddress = consigneeAddress;
+    }
+
+    public String getConsigneeDistrict() {
+        return consigneeDistrict;
+    }
+
+    public void setConsigneeDistrict(String consigneeDistrict) {
+        this.consigneeDistrict = consigneeDistrict;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public String getMerchName() {
+        return merchName;
+    }
+
+    public void setMerchName(String merchName) {
+        this.merchName = merchName;
+    }
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    public String getMerchOrderSn() {
+        return merchOrderSn;
+    }
+
+    public void setMerchOrderSn(String merchOrderSn) {
+        this.merchOrderSn = merchOrderSn;
+    }
+
+    public String getPlatSn() {
+        return platSn;
+    }
+
+    public void setPlatSn(String platSn) {
+        this.platSn = platSn;
+    }
+
+    public String getPlatName() {
+        return platName;
+    }
+
+    public void setPlatName(String platName) {
+        this.platName = platName;
+    }
+
+    public String getThirdPartyMerchCode() {
+        return thirdPartyMerchCode;
+    }
+
+    public void setThirdPartyMerchCode(String thirdPartyMerchCode) {
+        this.thirdPartyMerchCode = thirdPartyMerchCode;
+    }
+
+    public String getThirdPartyMerchName() {
+        return thirdPartyMerchName;
+    }
+
+    public void setThirdPartyMerchName(String thirdPartyMerchName) {
+        this.thirdPartyMerchName = thirdPartyMerchName;
+    }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+}

+ 10 - 408
src/main/java/com/emato/ccnet/dto/OrderRequest.java

@@ -8,422 +8,24 @@ import java.math.BigDecimal;
 import java.util.List;
 
 public class OrderRequest implements Serializable{
-    private static final long serialVersionUID = 3177602414191089902L;
-    private String orderSn;
 
-    private String merchName;
+    private OrderDto clsOrderDto;
 
-    private String merchSn;
+    private List<CusOrderGoods> clsOrderDetailDto;
 
-    private String merchOrderSn;
 
-    private String platSn;
-
-    private String platName;
-
-    private String thirdPartyMerchCode;
-
-    private String thirdPartyMerchName;
-
-    private String appType;
-
-    private String appTime;
-
-    private String appStatus;
-
-    private String orderType;
-
-    private String orderNo;
-
-    private String ebpCode;
-
-    private String ebpName;
-
-    private String ebcCode;
-
-    private String ebcName;
-
-    private BigDecimal goodsValue;
-
-    private BigDecimal freight;
-
-    private BigDecimal discount;
-
-    private BigDecimal taxTotal;
-
-    private BigDecimal acturalPaid;
-
-    private String currency;
-
-    private String buyerRegNo;
-
-    private String buyerName;
-
-    private String buyerIdType;
-
-    private String buyeridNumber;
-
-    private String payCode;
-
-    private String payName;
-
-    private String payTransactionId;
-
-    private String batchNumbers;
-
-    private String consignee;
-
-    private String consigneeTelephone;
-
-    private String consigneeAddress;
-
-    private String consigneeDistrict;
-
-    private String note;
-
-    private List<CusOrderGoods> orderList;
-
-    public OrderRequest(){
-
-    }
-
-    public OrderRequest(CusOrder cusOrder){
-        this.orderSn = cusOrder.getOrderSn();
-        this.merchName = cusOrder.getMerchName();
-        this.merchSn = cusOrder.getMerchSn();
-        this.merchOrderSn = cusOrder.getMerchOrderSn();
-        this.platSn = cusOrder.getPlatSn();
-        this.platName = cusOrder.getPlatName();
-        this.thirdPartyMerchCode = cusOrder.getThirdPartyMerchCode();
-        this.thirdPartyMerchName = cusOrder.getThirdPartyMerchName();
-        this.appType = cusOrder.getAppType();
-        this.appTime = cusOrder.getAppTime();
-        this.appStatus = cusOrder.getAppStatus();
-        this.orderType = cusOrder.getOrderType();
-        this.orderNo = cusOrder.getOrderNo();
-        this.ebpCode = cusOrder.getEbpCode();
-        this.ebpName = cusOrder.getEbpName();
-        this.ebcCode = cusOrder.getEbcCode();
-        this.ebcName = cusOrder.getEbcName();
-        this.goodsValue = cusOrder.getGoodsValue();
-        this.freight = cusOrder.getFreight();
-        this.discount = cusOrder.getDiscount();
-        this.taxTotal = cusOrder.getTaxTotal();
-        this.acturalPaid = cusOrder.getActuralPaid();
-        this.currency = cusOrder.getCurrency();
-        this.buyerRegNo = cusOrder.getBuyerRegNo();
-        this.buyerName = cusOrder.getBuyerName();
-        this.buyerIdType = cusOrder.getBuyerIdType();
-        this.buyeridNumber = cusOrder.getBuyeridNumber();
-        this.payCode = cusOrder.getPayCode();
-        this.payName = cusOrder.getPayName();
-        this.payTransactionId = cusOrder.getPayTransactionId();
-        this.batchNumbers = cusOrder.getBatchNumbers();
-        this.consignee = cusOrder.getConsignee();
-        this.consigneeTelephone = cusOrder.getConsigneeTelephone();
-        this.consigneeAddress = cusOrder.getConsigneeAddress();
-        this.consigneeDistrict = cusOrder.getConsigneeDistrict();
-        this.note = cusOrder.getNote();
-    }
-
-
-    public List<CusOrderGoods> getOrderList() {
-        return orderList;
-    }
-
-    public void setOrderList(List<CusOrderGoods> orderList) {
-        this.orderList = orderList;
-    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public String getAppType() {
-        return appType;
-    }
-
-    public void setAppType(String appType) {
-        this.appType = appType;
-    }
-
-    public String getAppTime() {
-        return appTime;
-    }
-
-    public void setAppTime(String appTime) {
-        this.appTime = appTime;
-    }
-
-    public String getAppStatus() {
-        return appStatus;
-    }
-
-    public void setAppStatus(String appStatus) {
-        this.appStatus = appStatus;
-    }
-
-    public String getOrderType() {
-        return orderType;
-    }
-
-    public void setOrderType(String orderType) {
-        this.orderType = orderType;
-    }
-
-    public String getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
-    }
-
-    public String getEbpCode() {
-        return ebpCode;
-    }
-
-    public void setEbpCode(String ebpCode) {
-        this.ebpCode = ebpCode;
-    }
-
-    public String getEbpName() {
-        return ebpName;
-    }
-
-    public void setEbpName(String ebpName) {
-        this.ebpName = ebpName;
-    }
-
-    public String getEbcCode() {
-        return ebcCode;
-    }
-
-    public void setEbcCode(String ebcCode) {
-        this.ebcCode = ebcCode;
-    }
-
-    public String getEbcName() {
-        return ebcName;
-    }
-
-    public void setEbcName(String ebcName) {
-        this.ebcName = ebcName;
-    }
-
-    public BigDecimal getGoodsValue() {
-        return goodsValue;
-    }
-
-    public void setGoodsValue(BigDecimal goodsValue) {
-        this.goodsValue = goodsValue;
-    }
-
-    public BigDecimal getFreight() {
-        return freight;
-    }
-
-    public void setFreight(BigDecimal freight) {
-        this.freight = freight;
-    }
-
-    public BigDecimal getDiscount() {
-        return discount;
-    }
-
-    public void setDiscount(BigDecimal discount) {
-        this.discount = discount;
+    public OrderDto getClsOrderDto() {
+        return clsOrderDto;
     }
 
-    public BigDecimal getTaxTotal() {
-        return taxTotal;
+    public void setClsOrderDto(OrderDto clsOrderDto) {
+        this.clsOrderDto = clsOrderDto;
     }
-
-    public void setTaxTotal(BigDecimal taxTotal) {
-        this.taxTotal = taxTotal;
-    }
-
-    public BigDecimal getActuralPaid() {
-        return acturalPaid;
-    }
-
-    public void setActuralPaid(BigDecimal acturalPaid) {
-        this.acturalPaid = acturalPaid;
-    }
-
-    public String getCurrency() {
-        return currency;
-    }
-
-    public void setCurrency(String currency) {
-        this.currency = currency;
-    }
-
-    public String getBuyerRegNo() {
-        return buyerRegNo;
-    }
-
-    public void setBuyerRegNo(String buyerRegNo) {
-        this.buyerRegNo = buyerRegNo;
-    }
-
-    public String getBuyerName() {
-        return buyerName;
-    }
-
-    public void setBuyerName(String buyerName) {
-        this.buyerName = buyerName;
-    }
-
-    public String getBuyerIdType() {
-        return buyerIdType;
-    }
-
-    public void setBuyerIdType(String buyerIdType) {
-        this.buyerIdType = buyerIdType;
-    }
-
-    public String getBuyeridNumber() {
-        return buyeridNumber;
-    }
-
-    public void setBuyeridNumber(String buyeridNumber) {
-        this.buyeridNumber = buyeridNumber;
-    }
-
-    public String getPayCode() {
-        return payCode;
-    }
-
-    public void setPayCode(String payCode) {
-        this.payCode = payCode;
-    }
-
-    public String getPayName() {
-        return payName;
-    }
-
-    public void setPayName(String payName) {
-        this.payName = payName;
-    }
-
-    public String getPayTransactionId() {
-        return payTransactionId;
-    }
-
-    public void setPayTransactionId(String payTransactionId) {
-        this.payTransactionId = payTransactionId;
-    }
-
-    public String getBatchNumbers() {
-        return batchNumbers;
-    }
-
-    public void setBatchNumbers(String batchNumbers) {
-        this.batchNumbers = batchNumbers;
-    }
-
-    public String getConsignee() {
-        return consignee;
-    }
-
-    public void setConsignee(String consignee) {
-        this.consignee = consignee;
-    }
-
-    public String getConsigneeTelephone() {
-        return consigneeTelephone;
-    }
-
-    public void setConsigneeTelephone(String consigneeTelephone) {
-        this.consigneeTelephone = consigneeTelephone;
-    }
-
-    public String getConsigneeAddress() {
-        return consigneeAddress;
-    }
-
-    public void setConsigneeAddress(String consigneeAddress) {
-        this.consigneeAddress = consigneeAddress;
-    }
-
-    public String getConsigneeDistrict() {
-        return consigneeDistrict;
-    }
-
-    public void setConsigneeDistrict(String consigneeDistrict) {
-        this.consigneeDistrict = consigneeDistrict;
-    }
-
-    public String getNote() {
-        return note;
-    }
-
-    public void setNote(String note) {
-        this.note = note;
-    }
-
-    public String getMerchName() {
-        return merchName;
-    }
-
-    public void setMerchName(String merchName) {
-        this.merchName = merchName;
-    }
-
-    public String getMerchSn() {
-        return merchSn;
-    }
-
-    public void setMerchSn(String merchSn) {
-        this.merchSn = merchSn;
-    }
-
-    public String getMerchOrderSn() {
-        return merchOrderSn;
-    }
-
-    public void setMerchOrderSn(String merchOrderSn) {
-        this.merchOrderSn = merchOrderSn;
-    }
-
-    public String getPlatSn() {
-        return platSn;
-    }
-
-    public void setPlatSn(String platSn) {
-        this.platSn = platSn;
-    }
-
-    public String getPlatName() {
-        return platName;
-    }
-
-    public void setPlatName(String platName) {
-        this.platName = platName;
-    }
-
-    public String getThirdPartyMerchCode() {
-        return thirdPartyMerchCode;
-    }
-
-    public void setThirdPartyMerchCode(String thirdPartyMerchCode) {
-        this.thirdPartyMerchCode = thirdPartyMerchCode;
-    }
-
-    public String getThirdPartyMerchName() {
-        return thirdPartyMerchName;
-    }
-
-    public void setThirdPartyMerchName(String thirdPartyMerchName) {
-        this.thirdPartyMerchName = thirdPartyMerchName;
-    }
-
-    public String getOrderSn() {
-        return orderSn;
+    public List<CusOrderGoods> getClsOrderDetailDto() {
+        return clsOrderDetailDto;
     }
 
-    public void setOrderSn(String orderSn) {
-        this.orderSn = orderSn;
+    public void setClsOrderDetailDto(List<CusOrderGoods> clsOrderDetailDto) {
+        this.clsOrderDetailDto = clsOrderDetailDto;
     }
 }

+ 171 - 0
src/main/java/com/emato/ccnet/model/Message.java

@@ -0,0 +1,171 @@
+package com.emato.ccnet.model;
+
+import com.google.common.base.Strings;
+
+import java.io.Serializable;
+
+/**
+ * 通用消息封装
+ * 
+ * @ClassName: Message
+ * @author yechao
+ * @date 2017年5月3日 下午2:03:14
+ * @author Scott Chen
+ * @date 2017-09-19 16:60
+ * @Description:
+ */
+public class Message implements Serializable {
+
+	private static final long serialVersionUID = 4081619286503989887L;
+
+	private boolean isSuccess;
+
+	/**
+	 * 消息代码 , 由使用者自由发挥
+	 */
+	private String code;
+	/**
+	 * 消息内容体 , 由使用者自由发挥
+	 */
+	private String msg;
+	/**
+	 * 扩展
+	 */
+	private Object extend;
+
+	private Message() {
+	}
+
+	public String getCode() {
+		return code;
+	}
+	public String getMsg() {
+		return msg;
+	}
+	public Object getExtend() {
+		return extend;
+	}
+	public boolean isSuccess() {
+		return isSuccess;
+	}
+
+	public static Builder builder() {
+		return new Builder();
+	}
+	public static Builder builder(String code, String msg) {
+		return new Builder(code, msg);
+	}
+	public static Builder builder(String code, String msg, Object extend) {
+		return new Builder(code, msg, extend);
+	}
+
+
+	//---------- 直接返回结果 ----------
+	public static Message success() {
+		return new Builder().build();
+	}
+	public static Message success(Object object) {
+		Builder builder = new Builder();
+		return builder.setExtend(object).build();
+	}
+
+	public static Message success(String msg) {
+		return new Builder(MessageCode.SUCCESS_CODE, msg).build();
+	}
+
+	public static Message success(String msg, Object object) {
+		Builder builder = new Builder(MessageCode.SUCCESS_CODE, msg, object);
+		return builder.build();
+	}
+
+	public static Message success(String code, String msg, Object object) {
+		Builder builder = new Builder(code, msg, object);
+		return builder.build();
+	}
+
+
+	//--- 错误----------
+	public static Message error() {
+		return new Builder(MessageCode.ERROR_CODE, MessageCode.ERROR_MSG).build();
+	}
+	public static Message error(String msg) {
+		return new Builder(MessageCode.ERROR_CODE, msg).build();
+	}
+	public static Message error(String code, String msg) {
+		return new Builder(code, msg).build();
+	}
+
+	//--- 失败----------
+	public static Message failed() {
+		return new Builder(MessageCode.FAILED_CODE, MessageCode.FAILED_MSG).build();
+	}
+	public static Message failed(String msg) {
+		return new Builder(MessageCode.FAILED_CODE, msg).build();
+	}
+	public static Message failed(String code, String msg) {
+		return new Builder(code, msg).build();
+	}
+
+
+	/**
+	 * 消息构建器类
+	 */
+	public static class Builder {
+
+		private boolean isSuccess;
+		private String code;
+		private String msg;
+		private Object extend;
+
+		public Builder() {
+			this.isSuccess = true;
+			this.code = MessageCode.SUCCESS_CODE;
+			this.msg = MessageCode.SUCCESS_MSG;
+			this.extend = null;
+		}
+
+		public Builder(String code, String msg) {
+			this.code = Strings.isNullOrEmpty(code) ? MessageCode.SUCCESS_CODE : code;
+			this.msg = Strings.isNullOrEmpty(msg) ? MessageCode.SUCCESS_MSG : msg;
+			this.isSuccess = this.code.equals(MessageCode.SUCCESS_CODE) ? true : false;
+		}
+
+		public Builder(String code, String msg, Object extend) {
+			this.code = Strings.isNullOrEmpty(code) ? MessageCode.SUCCESS_CODE : code;
+			this.msg = Strings.isNullOrEmpty(msg) ? MessageCode.SUCCESS_MSG : msg;
+			this.extend = extend;
+			this.isSuccess = this.code.equals(MessageCode.SUCCESS_CODE) ? true : false;
+		}
+
+		public Message build() {
+			Message message = new Message();
+			message.isSuccess = this.isSuccess;
+			message.code = this.code;
+			message.msg = this.msg;
+			message.extend = this.extend;
+			return message;
+		}
+
+		public void setSuccess(boolean success) {
+			isSuccess = success;
+		}
+
+		public Builder setCode(String code) {
+			this.code = code;
+			return this;
+		}
+
+		public Builder setMsg(String msg) {
+			this.msg = msg;
+			return this;
+		}
+
+		public Builder setExtend(Object extend) {
+			this.extend = extend;
+			return this;
+		}
+
+
+	}
+
+}

+ 31 - 0
src/main/java/com/emato/ccnet/model/MessageCode.java

@@ -0,0 +1,31 @@
+package com.emato.ccnet.model;
+
+/**
+ * @author Scott Chen
+ * @version 1.0
+ * 2017-09-20 12:38
+ */
+public class MessageCode {
+
+    public static final String SUCCESS_CODE = "0";
+    public static final String SUCCESS_MSG = "成功";
+
+    public static final String FAILED_CODE = "-1";
+    public static final String FAILED_MSG = "失败";
+
+    public static final String ERROR_CODE = "-2";
+    public static final String ERROR_MSG = "错误";
+
+    public static final String EXCEPTION_CODE = "-3";
+    public static final String EXCEPTION_MSG = "系统内部异常!";
+
+    public static final String NULL_CODE = "-4";
+    public static final String NULL_MSG = "为空";
+
+    public static final String TIMESTAMP_EXPIRES_CODE = "-5";
+    public static final String TIMESTAMP_EXPIRES_MSG = "时间戳已过期";
+
+    public static final String ERROR_LENGTH_CODE = "-6";
+    public static final String ERROR_LENGTH_MSG = "超出长度范围";
+
+}

+ 107 - 26
src/main/java/com/emato/ccnet/msg/ResponseMessage.java

@@ -1,8 +1,11 @@
 package com.emato.ccnet.msg;
 
+import com.emato.ccnet.model.Message;
+import com.emato.ccnet.sysmsg.Result;
 import com.google.common.base.Strings;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author Scott Chen
@@ -11,18 +14,17 @@ import java.util.List;
 public class ResponseMessage {
 
     private static final String SUCCESS_CODE = "0";
-    private static final String SUCCESS_MSG = "成功";
+    private static final String SUCCESS_INFO = "成功";
 
     public static final String ERROR_CODE = "-1";
-    public static final String ERROR_MSG = "错误";
+    public static final String ERROR_INFO = "错误";
 
     private static final String FAILURE_CODE = "-2";
-    private static final String FAILURE_MSG = "失败";
+    private static final String FAILUER_INFO = "失败";
 
     private String code;
     private String msg;
     private ResponseMessageData data;
-    private boolean isSuccess;
 
     private ResponseMessage() {
     }
@@ -35,14 +37,30 @@ public class ResponseMessage {
         return msg;
     }
 
-    public boolean isSuccess() {
-        return isSuccess;
-    }
-
     public ResponseMessageData getData() {
         return data;
     }
 
+    public static boolean isSuccess(ResponseMessage message) {
+        return message.getCode() == null ? false : message.getCode().equals(SUCCESS_CODE) ? true : false;
+    }
+
+    public static ResponseMessage transResponseMessage(Object object) {
+        if (object instanceof Message) {
+            Message message = (Message) object;
+            return new Builder(message.getCode(), message.getMsg(), message.getExtend(), Object.class).build();
+        } else if (object instanceof Result) {
+            Result result = (Result) object;
+            return new Builder(result.getCode(), result.getMsg(), result.getData(), Object.class).build();
+        }  else if (object instanceof Map) {
+            Map result = (Map) object;
+            return new Builder(result.get("code").toString(), result.get("msg").toString(), result.get("data"), Object.class).build();
+        } else {
+            return null;
+        }
+
+    }
+
     public static Builder builder() {
         return new Builder();
     }
@@ -55,6 +73,16 @@ public class ResponseMessage {
     public static Builder builder(String code, String msg, List list) {
         return new Builder(code, msg, list);
     }
+    public static <T> Builder builder(T t,  Class<T> type) {
+        return new Builder(SUCCESS_CODE, SUCCESS_INFO, t, type);
+    }
+    public static <T> Builder builder(String msg, T t, Class<T> type) {
+        return new Builder(SUCCESS_CODE, msg, t, type);
+    }
+    public static <T> Builder builder(String code, String msg, T t, Class<T> type) {
+        return new Builder(code, msg, t, type);
+    }
+
 
     //---------- 直接返回结果 ----------
     //成功
@@ -67,19 +95,35 @@ public class ResponseMessage {
     public static ResponseMessage success(String msg) {
         return new Builder(SUCCESS_CODE, msg).build();
     }
+
+    public static ResponseMessage success(Map map) {
+        return new Builder(SUCCESS_CODE, SUCCESS_INFO, map).build();
+    }
+    public static ResponseMessage success(String msg, Map map) {
+        return new Builder(SUCCESS_CODE, msg, map).build();
+    }
+    public static ResponseMessage success(List rows) {
+        return new Builder(SUCCESS_CODE, SUCCESS_INFO, rows).build();
+    }
     public static ResponseMessage success(String msg, List rows) {
         return new Builder(SUCCESS_CODE, msg, rows).build();
     }
     public static ResponseMessage success(String code, String msg, List rows) {
         return new Builder(code, msg, rows).build();
     }
-    public static ResponseMessage success(List rows) {
-        return new Builder(SUCCESS_CODE, SUCCESS_MSG, rows).build();
+    public static <T> ResponseMessage success(T t,  Class<T> type) {
+        return new Builder(SUCCESS_CODE, SUCCESS_INFO, t, type).build();
+    }
+    public static <T> ResponseMessage success(String msg, T t, Class<T> type) {
+        return new Builder(SUCCESS_CODE, msg, t, type).build();
+    }
+    public static <T> ResponseMessage success(String code, String msg, T t, Class<T> type) {
+        return new Builder(code, msg, t, type).build();
     }
 
     //错误
     public static ResponseMessage error() {
-        return new Builder(ERROR_CODE, ERROR_MSG).build();
+        return new Builder(ERROR_CODE, ERROR_INFO).build();
     }
     public static ResponseMessage error(String code, String msg) {
         return new Builder(code, msg).build();
@@ -87,8 +131,17 @@ public class ResponseMessage {
     public static ResponseMessage error(String msg) {
         return new Builder(ERROR_CODE, msg).build();
     }
+    public static ResponseMessage error(Map map) {
+        return new Builder(ERROR_CODE, ERROR_INFO, map).build();
+    }
+    public static ResponseMessage error(String msg, Map map) {
+        return new Builder(ERROR_CODE, msg, map).build();
+    }
     public static ResponseMessage error(List rows) {
-        return new Builder(ERROR_CODE, ERROR_MSG, rows).build();
+        return new Builder(ERROR_CODE, ERROR_INFO, rows).build();
+    }
+    public static ResponseMessage error(String msg, List rows) {
+        return new Builder(ERROR_CODE, msg, rows).build();
     }
     public static ResponseMessage error(String code, String msg, List rows) {
         return new Builder(code, msg, rows).build();
@@ -96,7 +149,7 @@ public class ResponseMessage {
 
     //失败
     public static ResponseMessage failed() {
-        return new Builder(FAILURE_CODE, FAILURE_MSG).build();
+        return new Builder(FAILURE_CODE, FAILUER_INFO).build();
     }
     public static ResponseMessage failed(String code, String msg) {
         return new Builder(code, msg).build();
@@ -104,8 +157,18 @@ public class ResponseMessage {
     public static ResponseMessage failed(String msg) {
         return new Builder(FAILURE_CODE, msg).build();
     }
+
+    public static ResponseMessage failed(Map map) {
+        return new Builder(ERROR_CODE, ERROR_INFO, map).build();
+    }
+    public static ResponseMessage failed(String msg, Map map) {
+        return new Builder(ERROR_CODE, msg, map).build();
+    }
     public static ResponseMessage failed(List rows) {
-        return new Builder(FAILURE_CODE, FAILURE_MSG, rows).build();
+        return new Builder(FAILURE_CODE, FAILUER_INFO, rows).build();
+    }
+    public static ResponseMessage failed(String msg, List rows) {
+        return new Builder(ERROR_CODE, msg, rows).build();
     }
     public static ResponseMessage failed(String code, String msg, List rows) {
         return new Builder(code, msg, rows).build();
@@ -115,37 +178,56 @@ public class ResponseMessage {
      * 消息构建器类
      */
     public static class Builder {
-        private boolean isSuccess;
         private String code;
         private String msg;
         private ResponseMessageData data;
 
         public Builder() {
-            this.isSuccess = true;
             this.code = SUCCESS_CODE;
-            this.msg = SUCCESS_MSG;
+            this.msg = SUCCESS_INFO;
             this.data = ResponseMessageData.builder().build();
         }
 
         public Builder(String code, String msg) {
             this.code = Strings.isNullOrEmpty(code) ? SUCCESS_CODE : code;
-            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_MSG : msg;
+            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_INFO : msg;
             this.data = ResponseMessageData.builder().build();
-            this.isSuccess = this.code.equals(SUCCESS_CODE) ? true : false;
         }
 
         public Builder(String code, String msg, ResponseMessageData responseMessageData) {
-            this.code = code;
-            this.msg = msg;
+            this.code = Strings.isNullOrEmpty(code) ? SUCCESS_CODE : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_INFO : msg;
             this.data = responseMessageData;
-            this.isSuccess = this.code.equals(SUCCESS_CODE) ? true : false;
+        }
+
+        public Builder(String code, String msg, Map map) {
+            this.code = Strings.isNullOrEmpty(code) ? SUCCESS_CODE : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_INFO : msg;
+            this.data = ResponseMessageData.builder(map, Map.class).build();
         }
 
         public Builder(String code, String msg, List rows) {
-            this.code = code;
-            this.msg = msg;
+            this.code = Strings.isNullOrEmpty(code) ? SUCCESS_CODE : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_INFO : msg;
             this.data = ResponseMessageData.builder(rows).build();
-            this.isSuccess = this.code.equals(SUCCESS_CODE) ? true : false;
+        }
+
+        public <T> Builder(T t, Class<T> type) {
+            this.code = SUCCESS_CODE;
+            this.msg = SUCCESS_INFO;
+            this.data = ResponseMessageData.builder(t, type).build();
+        }
+
+        public <T> Builder(String msg, T t, Class<T> type) {
+            this.code = SUCCESS_CODE;
+            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_INFO : msg;
+            this.data = ResponseMessageData.builder(t, type).build();
+        }
+
+        public <T> Builder(String code, String msg, T t, Class<T> type) {
+            this.code = Strings.isNullOrEmpty(code) ? SUCCESS_CODE : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? SUCCESS_INFO : msg;
+            this.data = ResponseMessageData.builder(t, type).build();
         }
 
         public Builder setCode(String code) {
@@ -165,7 +247,6 @@ public class ResponseMessage {
 
         public ResponseMessage build() {
             ResponseMessage message = new ResponseMessage();
-            message.isSuccess = this.isSuccess;
             message.code = this.code;
             message.msg = this.msg;
             message.data = this.data;

+ 2 - 1
src/main/java/com/emato/ccnet/service/ccent/CusWaybillRespService.java

@@ -3,6 +3,7 @@ package com.emato.ccnet.service.ccent;
 import com.emato.ccnet.domain.ccnet.CusWaybillResp;
 import com.emato.ccnet.dto.BondedStockMerchantOrder;
 import com.emato.ccnet.message.Result;
+import com.emato.ccnet.msg.ResponseMessage;
 
 import java.lang.ref.SoftReference;
 
@@ -12,5 +13,5 @@ public interface CusWaybillRespService {
      * @param result
      * @return
      */
-    int insertWaybillResp(Result result, String cusWaybillSn);
+    int insertWaybillResp(ResponseMessage result, String cusWaybillSn);
 }

+ 3 - 0
src/main/java/com/emato/ccnet/service/ccent/impl/CusOrderImpl.java

@@ -154,6 +154,9 @@ public class CusOrderImpl implements CusOrderService{
             }
             String sku = orderGoods.getGoodsNo();
             Map<String, Object> productRecordMap = (Map) resultMap.get(sku);
+            if(productRecordMap == null){
+                logger.error("sku不存在异常");
+            }
 
             String cusOrderGoodsPaySn = Contants.ZWSH+ SnowflakeUtil.getSnowNextId();
             cusOrderGoods.setCusOrderGoodsSn(cusOrderGoodsPaySn);

+ 1 - 1
src/main/java/com/emato/ccnet/service/ccent/impl/CusOrderRespImpl.java

@@ -44,7 +44,7 @@ public class CusOrderRespImpl implements CusOrderRespService{
         CiqResultStatusDto ciqResultStatusDto = orderCustiomsResponse.getCiqResultStatusDto();
         CusResultStatusDto cusResultStatusDto = orderCustiomsResponse.getCusResultStatusDto();
         EportResultStatusDto eportResultStatusDto = orderCustiomsResponse.getEportResultStatusDto();
-        OrderRequest orderRequest = orderCustiomsResponse.getOrderRequest();
+        OrderDto orderRequest = orderCustiomsResponse.getOrderRequest().getClsOrderDto();
         String cusOrderRespSn = Contants.ZWSH + SnowflakeUtil.getSnowNextId();
         cusOrderResp.setCusOrderRespSn(cusOrderRespSn);
         cusOrderResp.setCusOrderSn(cusOrderSn);

+ 7 - 3
src/main/java/com/emato/ccnet/service/ccent/impl/CusWaybillRespImpl.java

@@ -6,6 +6,7 @@ import com.emato.ccnet.domain.ccnet.CusWaybillResp;
 import com.emato.ccnet.dto.BondedStockMerchantOrder;
 import com.emato.ccnet.mapper.ccnet.CusWaybillRespMapper;
 import com.emato.ccnet.message.Result;
+import com.emato.ccnet.msg.ResponseMessage;
 import com.emato.ccnet.service.ccent.CusWaybillRespService;
 import com.emato.ccnet.snow.SnowflakeUtil;
 import com.emato.ccnet.util.JacksonUtil;
@@ -30,10 +31,13 @@ public class CusWaybillRespImpl implements CusWaybillRespService{
      * @return
      */
     @Override
-    public int insertWaybillResp(Result result,String cusWaybillSn) {
+    public int insertWaybillResp(ResponseMessage result, String cusWaybillSn) {
         Gson gson = new Gson();
-        List<BondedStockMerchantOrder> BondedStockMerchantOrderList = JacksonUtil.fromListJson(gson.toJson(result.getData()));
-        if(BondedStockMerchantOrderList == null && BondedStockMerchantOrderList.size() <=0){
+        List<BondedStockMerchantOrder> BondedStockMerchantOrderList = null;
+        if(ResponseMessage.isSuccess(result)){
+            BondedStockMerchantOrderList = result.getData().getRows();
+        }
+        if(BondedStockMerchantOrderList == null){
             return 0;
         }
 

+ 159 - 0
src/main/java/com/emato/ccnet/sysmsg/Result.java

@@ -0,0 +1,159 @@
+package com.emato.ccnet.sysmsg;
+
+import com.google.common.base.Strings;
+
+import java.io.Serializable;
+
+/**
+ * 接受缓存返回的实体
+ *
+ * @author zengjunlin
+ */
+public class Result implements Serializable {
+
+
+    private static final long serialVersionUID = -2982283269876551609L;
+    /**
+     * 状态码, 正常0, 失败1, 未登录2, 个位数是保留状态码, 其他业务相关状态码10以上
+     */
+    private String code = ResultCodeEnum.SUCCESS.getCode();
+
+    /**
+     * 消息
+     */
+    private String msg;
+
+    /**
+     * 业务数据
+     */
+    private Object data;
+
+    private String sign;
+
+    private Result() {
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+
+    public String getMsg() {
+        return msg;
+    }
+
+
+    public Object getData() {
+        return data;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static Builder builder(String code, String msg) {
+        return new Builder(code, msg);
+    }
+
+    public static Builder builder(String code, String msg, Object data) {
+        return new Builder(code, msg, data);
+    }
+
+    public static Builder builder(String code, String msg, String sign, Object data) {
+        return new Builder(code, msg, sign, data);
+    }
+
+    //---------- 直接返回结果 ----------
+
+    public static Result success(Object object) {
+        return new Builder(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getMsg(), object).build();
+    }
+
+    public static Result success(String code, String msg, Object object) {
+        return new Builder(code, msg, object).build();
+    }
+
+    public static Result success(String msg) {
+        return new Builder(ResultCodeEnum.SUCCESS.getCode(), msg).build();
+    }
+
+    public static Result error(String code, String msg) {
+        return new Builder(code, msg).build();
+    }
+
+    public static Result error(String msg) {
+        return new Builder(ResultCodeEnum.FAILURE.getCode(), msg).build();
+    }
+
+    public static Result error(String code, String msg, Object object) {
+        return new Builder(code, msg, object).build();
+    }
+
+    /**
+     * 消息构建器类
+     */
+    public static class Builder {
+        private String code;
+        private String msg;
+        private Object data;
+        private String sign;
+
+        public Builder() {
+            this.code = ResultCodeEnum.SUCCESS.getCode();
+            this.msg = ResultCodeEnum.SUCCESS.getMsg();
+            this.data = null;
+        }
+
+        public Builder(String code, String msg) {
+            this.code = Strings.isNullOrEmpty(code) ? ResultCodeEnum.SUCCESS.getCode() : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? ResultCodeEnum.SUCCESS.getMsg() : msg;
+        }
+
+        public Builder(String code, String msg, Object extend) {
+            this.code = Strings.isNullOrEmpty(code) ? ResultCodeEnum.SUCCESS.getCode() : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? ResultCodeEnum.SUCCESS.getMsg() : msg;
+            this.data = extend;
+        }
+
+        public Builder(String code, String msg, String sign, Object extend) {
+            this.code = Strings.isNullOrEmpty(code) ? ResultCodeEnum.SUCCESS.getCode() : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? ResultCodeEnum.SUCCESS.getMsg() : msg;
+            this.sign = sign;
+            this.data = extend;
+        }
+
+        public Result build() {
+            Result message = new Result();
+            message.code = this.code;
+            message.msg = this.msg;
+            message.data = this.data;
+            message.sign = this.sign;
+            return message;
+        }
+
+        public Builder setCode(String code) {
+            this.code = code;
+            return this;
+        }
+
+        public Builder setMsg(String msg) {
+            this.msg = msg;
+            return this;
+        }
+
+        public Builder setData(Object data) {
+            this.data = data;
+            return this;
+        }
+    }
+
+}

+ 38 - 0
src/main/java/com/emato/ccnet/sysmsg/ResultCodeEnum.java

@@ -0,0 +1,38 @@
+package com.emato.ccnet.sysmsg;
+
+public enum ResultCodeEnum {
+	/** 成功 */
+	SUCCESS("0", "成功"),
+	/** 失败 */
+	FAILURE("1", "system.ex.msg.prefix"),
+	/** 未登录/登录超时 */
+	SESSION_TIMEOUT("2", "system.session.timeout");
+
+	/** 状态码 */
+	private String code;
+
+	/** 信息 */
+	private String msg;
+
+	private ResultCodeEnum(String code, String msg){
+        this.code = code;
+        this.msg = msg;
+    }
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+}

+ 23 - 0
src/main/java/com/emato/ccnet/util/DateConstant.java

@@ -0,0 +1,23 @@
+package com.emato.ccnet.util;
+
+/**
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-03
+ */
+public class DateConstant {
+
+    public static final String DATE_TIME_SECOND_ZONE = "yyyy-MM-dd HH:mm:ssZ";
+    public static final String DATE_TIME_SECOND_MILL = "yyyy-MM-dd HH:mm:ss.SSS";
+    public static final String DATE_TIME_SECOND = "yyyy-MM-dd HH:mm:ss";
+    public static final String DATE_TIME_MINUTE = "yyyy-MM-dd HH:mm";
+
+    public static final String TIME_SECOND_MILL = "HH:mm:ss.SSS";
+    public static final String TIME_SECOND = "HH:mm:ss";
+    public static final String TIME_MINUTE = "HH:mm";
+
+    public static final String DATE_MONTH_DAY = "yyyy-MM-dd";
+    public static final String DATE_MONTH = "yyyy-MM";
+    public static final String MONTH_DAY = "MM-dd";
+
+}

+ 81 - 0
src/main/java/com/emato/ccnet/util/DateTimeDeserializer.java

@@ -0,0 +1,81 @@
+package com.emato.ccnet.util;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * 反序列化Date
+ * String类型反序列化为Date类型
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-07
+ */
+public class DateTimeDeserializer extends JsonDeserializer<Date> {
+    private static final Logger logger = LoggerFactory.getLogger(DateTimeDeserializer.class);
+
+    public static final DateTimeDeserializer instance = new DateTimeDeserializer();
+
+    private static final List<String> formarts = new LinkedList();
+
+    static {
+        formarts.add(DateConstant.DATE_MONTH);
+        formarts.add(DateConstant.DATE_MONTH_DAY);
+        formarts.add(DateConstant.DATE_TIME_MINUTE);
+        formarts.add(DateConstant.DATE_TIME_SECOND);
+        formarts.add(DateConstant.DATE_TIME_SECOND_MILL);
+    }
+
+    @Override
+    public Date deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+        String source = parser.getText().trim();
+        if (source.length() == 0) {
+            return null;
+        }
+
+        String format = "";
+
+        try {
+            if (source.matches("^\\d{4}-\\d{1,2}$")) {
+                format = formarts.get(0);
+            } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
+                format = formarts.get(1);
+            } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
+                format = formarts.get(2);
+            } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
+                format = formarts.get(3);
+            } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}\\.\\d{3}$")) {
+                format = formarts.get(4);
+            } else if (source.matches("^\\d{10}$|^\\d{13}$")) {
+                // Windows时间戳(13位),Unix时间戳(10位)
+                format = formarts.get(3);
+            } else {
+                throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
+            }
+
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, Locale.SIMPLIFIED_CHINESE);
+
+            //使用LocalDateTime作转换
+            LocalDateTime dateTime = LocalDateTime.parse(source, formatter);
+            return Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } catch (Exception e) {
+            logger.error("参数" + source + ", 通过【"+ this.getClass().getName() +"】转换为日期格式【" + format + "】时, 发生错误");
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+
+}

+ 33 - 0
src/main/java/com/emato/ccnet/util/DateTimeSerializer.java

@@ -0,0 +1,33 @@
+package com.emato.ccnet.util;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * 序列化Date
+ * Date类型序列化为String类型
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-07
+ */
+public class DateTimeSerializer extends JsonSerializer<Date> {
+
+    @Override
+    public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+        String format = DateConstant.DATE_TIME_SECOND;
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, Locale.SIMPLIFIED_CHINESE);
+
+        //使用LocalDateTime作转换
+        LocalDateTime localDateTime = LocalDateTime.ofInstant(value.toInstant(), ZoneId.systemDefault());
+        gen.writeString(localDateTime.format(formatter));
+    }
+
+}

+ 69 - 0
src/main/java/com/emato/ccnet/util/JacksonStringUnicodeSerializer.java

@@ -0,0 +1,69 @@
+package com.emato.ccnet.util;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.io.CharTypes;
+import com.fasterxml.jackson.core.json.JsonWriteContext;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+
+/**
+ * jackson处理以unicode方式编码中文
+ */
+public class JacksonStringUnicodeSerializer extends JsonSerializer<String> {
+
+	private final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
+	private final int[] ESCAPE_CODES = CharTypes.get7BitOutputEscapes();
+
+	private void writeUnicodeEscape(JsonGenerator gen, char c) throws IOException {
+		gen.writeRaw('\\');
+		gen.writeRaw('u');
+		gen.writeRaw(HEX_CHARS[(c >> 12) & 0xF]);
+		gen.writeRaw(HEX_CHARS[(c >> 8) & 0xF]);
+		gen.writeRaw(HEX_CHARS[(c >> 4) & 0xF]);
+		gen.writeRaw(HEX_CHARS[c & 0xF]);
+	}
+
+	private void writeShortEscape(JsonGenerator gen, char c) throws IOException {
+		gen.writeRaw('\\');
+		gen.writeRaw(c);
+	}
+
+	@Override
+	public void serialize(String str, JsonGenerator gen,
+			SerializerProvider provider) throws IOException,
+            JsonProcessingException {
+		int status = ((JsonWriteContext) gen.getOutputContext()).writeValue();
+	    switch (status) {
+	      case JsonWriteContext.STATUS_OK_AFTER_COLON:
+	        gen.writeRaw(':');
+	        break;
+	      case JsonWriteContext.STATUS_OK_AFTER_COMMA:
+	        gen.writeRaw(',');
+	        break;
+	      case JsonWriteContext.STATUS_EXPECT_NAME:
+	        throw new JsonParseException(null, "Can not write string value here");
+	    }
+	    gen.writeRaw('"');//写入JSON中字符串的开头引号
+	    for (char c : str.toCharArray()) {
+	      if (c >= 0x80){
+	    	  writeUnicodeEscape(gen, c); // 为所有非ASCII字符生成转义的unicode字符
+	      }else {
+	        // 为ASCII字符中前128个字符使用转义的unicode字符
+	        int code = (c < ESCAPE_CODES.length ? ESCAPE_CODES[c] : 0);
+	        if (code == 0){
+	        	gen.writeRaw(c); // 此处不用转义
+	        }else if (code < 0){
+	        	writeUnicodeEscape(gen, (char) (-code - 1)); // 通用转义字符
+	        }else {
+	        	writeShortEscape(gen, (char) code); // 短转义字符 (\n \t ...)
+	        }
+	      }
+	    }
+	    gen.writeRaw('"');//写入JSON中字符串的结束引号
+	}
+
+}

+ 127 - 74
src/main/java/com/emato/ccnet/util/JacksonUtil.java

@@ -1,9 +1,11 @@
 package com.emato.ccnet.util;
 
-import com.emato.ccnet.config.jackson.JacksonStringUnicodeSerializer;
 import com.fasterxml.jackson.annotation.JsonFilter;
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JsonMappingException;
@@ -29,6 +31,8 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.Locale;
 
 /**
  * @author Scott Chen
@@ -44,8 +48,6 @@ public class JacksonUtil {
     private static final String DYNC_INCLUDE = "DYNC_INCLUDE";//包含的标识
     private static final String DYNC_EXCLUDE = "DYNC_EXCLUDE";//过滤的标识
 
-    private static ObjectMapper mapper = new ObjectMapper();
-
     @JsonFilter(DYNC_EXCLUDE)
     interface DynamicExclude{
 
@@ -56,12 +58,25 @@ public class JacksonUtil {
 
     }
     /**
+     * 禁止调用无参构造
+     *
+     * @throws IllegalAccessException
+     */
+    private JacksonUtil() throws IllegalAccessException {
+        throw new IllegalAccessException("Can't create an instance!");
+    }
+
+    /**
      * 懒惰单例模式得到ObjectMapper实例
      * 此对象为Jackson的核心
      */
-    private static ObjectMapper objectMapper() {
+    private static final ObjectMapper objectMapper() {
         if (objectMapper== null){
             objectMapper= new ObjectMapper();
+
+            // 格式化国家环境指定
+            objectMapper.setLocale(Locale.SIMPLIFIED_CHINESE);
+
             //序列化时,如果没有为类型找到访问者,则会抛出异常以将其指定为非可序列化类型; 如果禁用,它们将被序列化为空对象
             objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
             //反序列化时,遇到未知属性是否抛JsonMappingException异常.默认JsonMappingException
@@ -69,10 +84,15 @@ public class JacksonUtil {
             //设置null值不参与序列化(字段不被显示)
             objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
 
-            //序列化LocalDateTime时间
-            objectMapper.registerModule(dateSerModule());
-            //反序列化LocalDateTime时间
-            objectMapper.registerModule(dateDeserModule());
+            //注册序列化LocalDateTime模块
+            objectMapper.registerModule(localDateTimeSerializer());
+            //注册反序列化LocalDateTime模块
+            objectMapper.registerModule(localDateTimeDeserializer());
+
+            //注册序列化Date模块
+            objectMapper.registerModule(dateTimeSerializer());
+            //注册反序列化Date模块
+            objectMapper.registerModule(dateTimeDeserializer());
 
             //序列化Unicode编码非ASCII字符
             //objectMapper.registerModule(unicodeSerModule());
@@ -82,40 +102,74 @@ public class JacksonUtil {
     }
 
     /**
+     * 序列化Date
+     * 自定义
+     * @return
+     */
+    private static SimpleModule dateTimeSerializer(){
+        SimpleModule module = new SimpleModule();
+        module.addSerializer(Date.class, new DateTimeSerializer());
+        return module;
+    }
+
+    /**
+     * 反列化Date
+     * 自定义
+     * @return
+     */
+    private static SimpleModule dateTimeDeserializer(){
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(Date.class, new DateTimeDeserializer());
+        return module;
+    }
+
+    /**
      * 序列化LocalDateTime时间
+     * 使用 <code>jackson-datatype-jsr310</code>
      * @return
      */
-    public static SimpleModule dateSerModule() {
-        SimpleModule dateSerModule = new SimpleModule();
-        dateSerModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-        dateSerModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-        dateSerModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-        return dateSerModule;
+    private static SimpleModule localDateTimeSerializer() {
+        SimpleModule module = new SimpleModule();
+        module.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DateConstant.DATE_MONTH_DAY, Locale.SIMPLIFIED_CHINESE)));
+        module.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DateConstant.TIME_SECOND, Locale.SIMPLIFIED_CHINESE)));
+        module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DateConstant.DATE_TIME_SECOND, Locale.SIMPLIFIED_CHINESE)));
+        return module;
     }
 
     /**
      * 反序列化LocalDateTime时间
+     * 使用 <code>jackson-datatype-jsr310</code>
      * @return
      */
-    public static SimpleModule dateDeserModule() {
-        SimpleModule dateDeserModule = new SimpleModule();
-        dateDeserModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-        dateDeserModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-        dateDeserModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-        return dateDeserModule;
+    private static SimpleModule localDateTimeDeserializer() {
+        SimpleModule module = new SimpleModule();
+        module.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DateConstant.DATE_MONTH_DAY, Locale.SIMPLIFIED_CHINESE)));
+        module.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DateConstant.TIME_SECOND, Locale.SIMPLIFIED_CHINESE)));
+        module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DateConstant.DATE_TIME_SECOND, Locale.SIMPLIFIED_CHINESE)));
+        return module;
     }
 
+
     /**
      * 序列化Unicode编码非ASCII字符
      */
-    public static SimpleModule unicodeSerModule() {
+    private static SimpleModule unicodeSerModule() {
         SimpleModule unicodeSerModule = new SimpleModule();
         unicodeSerModule.addSerializer(String.class, new JacksonStringUnicodeSerializer());
         return unicodeSerModule;
     }
 
     /**
+     * ObjectMapper 实例
+     * @return
+     */
+    public static ObjectMapper getObjectMapper() {
+        return objectMapper();
+    }
+
+    /**
      * 创建Json处理器的静态方法
+     * 用于序列化
      * @param content Json字符串
      * @return
      */
@@ -129,6 +183,7 @@ public class JacksonUtil {
 
     /**
      * 创建Byte Json处理器的静态方法
+     * 用于序列化
      * @param data byte array
      * @return
      */
@@ -142,6 +197,7 @@ public class JacksonUtil {
 
     /**
      * 创建Reader Json处理器的静态方法
+     * 用于序列化
      * @param r Reader
      * @return
      */
@@ -155,6 +211,7 @@ public class JacksonUtil {
 
     /**
      * 创建InputStream Json处理器的静态方法
+     * 用于序列化
      * @param in InputStream
      * @return
      */
@@ -169,6 +226,7 @@ public class JacksonUtil {
 
     /**
      * 创建Json生成器的静态方法, 使用标准输出
+     * 用于反序列化
      * @return
      */
     private static JsonGenerator getGenerator(StringWriter sw){
@@ -179,6 +237,35 @@ public class JacksonUtil {
         }
     }
 
+    /**
+     * Json对象序列化
+     */
+    public static String toJson(Object obj){
+        StringWriter sw= new StringWriter();
+        JsonGenerator jsonGen= getGenerator(sw);
+        if (jsonGen== null){
+            try {
+                sw.close();
+            } catch (IOException e) {
+            }
+            return null;
+        }
+        try {
+            //由于在getGenerator方法中指定了OutputStream为sw
+            //因此调用writeObject会将数据输出到sw
+            jsonGen.writeObject(obj);
+            //由于采用流式输出 在输出完毕后务必清空缓冲区并关闭输出流
+            jsonGen.flush();
+            jsonGen.close();
+            return sw.toString();
+        } catch (JsonGenerationException jge) {
+            logger.error("toJSON序列化失败, 异常类型【JsonGenerationException】,错误原因:{}", jge.getMessage());
+        } catch (IOException ioe) {
+            logger.error("toJSON序列化失败, 异常类型【IOException】, 错误原因:{}", ioe.getMessage());
+            ioe.printStackTrace();
+        }
+        return null;
+    }
 
 
     /**
@@ -192,12 +279,12 @@ public class JacksonUtil {
         try {
             JsonParser jp= getByteParser(data);
             return jp.readValueAs(clazz);
-        } catch (JsonParseException jpe){
-            logger.error(String.format("反序列化失败, 错误原因:%s", jpe.getMessage()));
-        } catch (JsonMappingException jme){
-            logger.error(String.format("反序列化失败, 错误原因:%s", jme.getMessage()));
-        } catch (IOException ioe){
-            logger.error(String.format("反序列化失败, 错误原因:%s", ioe.getMessage()));
+        } catch (JsonParseException e){
+            logger.error(String.format("fromByteJson反序列化失败, 异常类型【JsonParseException】, 错误原因:{}", e.getMessage()));
+        } catch (JsonMappingException e){
+            logger.error(String.format("fromByteJson反序列化失败, 异常类型【JsonMappingException】, 错误原因:{}", e.getMessage()));
+        } catch (IOException e){
+            logger.error(String.format("fromByteJson反序列化失败, 异常类型【IOException】, 错误原因:{}", e.getMessage()));
         }
         return null;
     }
@@ -214,13 +301,13 @@ public class JacksonUtil {
             JsonParser jp= getParser(json);
             return (T) jp.readValueAs(clazz);
         } catch (JsonParseException e) {
-            logger.error(String.format("反序列化失败, 错误原因:%s", e.getMessage()));
+            logger.error(String.format("fromStringJson反序列化失败, 异常类型【JsonParseException】, 错误原因:{}", e.getMessage()));
             logger.error("decode(String, Class<T>)", e);
         } catch (JsonMappingException e) {
-            logger.error(String.format("反序列化失败, 错误原因:%s", e.getMessage()));
+            logger.error(String.format("fromStringJson反序列化失败, 异常类型【JsonMappingException】, 错误原因:{}", e.getMessage()));
             logger.error("decode(String, Class<T>)", e);
         } catch (IOException e) {
-            logger.error(String.format("反序列化失败, 错误原因:%s", e.getMessage()));
+            logger.error(String.format("fromStringJson反序列化失败, 异常类型【IOException】, 错误原因:{}", e.getMessage()));
             logger.error("decode(String, Class<T>)", e);
         }
         return null;
@@ -232,20 +319,19 @@ public class JacksonUtil {
      * @param json
      * @return
      */
-    public static <T> T fromListJson(String json) {
+    public static <T> T fromListJson(String json, TypeReference<?> typeReference) {
         try {
             //写成List.class是不行的
-            TypeReference<T> jsonTypeReference = new TypeReference<T>(){};
             JsonParser jp= getParser(json);
-            return (T) jp.readValueAs(jsonTypeReference);
+            return (T) jp.readValueAs(typeReference);
         } catch (JsonParseException e) {
-            logger.error(String.format("反序列化失败, 错误原因:%s", e.getMessage()));
+            logger.error(String.format("fromListJson反序列化失败, 异常类型【JsonParseException】, 错误原因:{}", e.getMessage()));
             logger.error("decode(String, Class<T>)", e);
         } catch (JsonMappingException e) {
-            logger.error(String.format("反序列化失败, 错误原因:%s", e.getMessage()));
+            logger.error(String.format("fromListJson反序列化失败, 异常类型【JsonMappingException】, 错误原因:{}", e.getMessage()));
             logger.error("decode(String, Class<T>)", e);
         } catch (IOException e) {
-            logger.error(String.format("反序列化失败, 错误原因:%s", e.getMessage()));
+            logger.error(String.format("fromListJson反序列化失败, 异常类型【IOException】, 错误原因:{}", e.getMessage()));
             logger.error("decode(String, Class<T>)", e);
         }
         return null;
@@ -254,46 +340,13 @@ public class JacksonUtil {
     public static void filter(Class<?> clazz , String include , String exclude) {
         if (clazz == null) return;
         if (include != null && include.length() > 0) {//包含的操作
-            mapper.setFilterProvider(new SimpleFilterProvider()
+            objectMapper.setFilterProvider(new SimpleFilterProvider()
                     .addFilter(DYNC_INCLUDE, SimpleBeanPropertyFilter.filterOutAllExcept(include.split(","))));//多个字段用,分割开
-            mapper.addMixIn(clazz, DynamicInclude.class);
+            objectMapper.addMixIn(clazz, DynamicInclude.class);
         } else if (exclude != null && exclude.length() > 0) {
-            mapper.setFilterProvider(new SimpleFilterProvider()
+            objectMapper.setFilterProvider(new SimpleFilterProvider()
                     .addFilter(DYNC_EXCLUDE, SimpleBeanPropertyFilter.serializeAllExcept(exclude.split(","))));
-            mapper.addMixIn(clazz, DynamicExclude.class);
+            objectMapper.addMixIn(clazz, DynamicExclude.class);
         }
     }
-
-    public static String toJson(Object object) throws JsonProcessingException {
-        return mapper.writeValueAsString(object);
-    }
-    /**
-     * Json对象序列化
-     */
-    public static String toJson1(Object obj){
-        StringWriter sw= new StringWriter();
-        JsonGenerator jsonGen= getGenerator(sw);
-        if (jsonGen== null){
-            try {
-                sw.close();
-            } catch (IOException e) {
-            }
-            return null;
-        }
-        try {
-            //由于在getGenerator方法中指定了OutputStream为sw
-            //因此调用writeObject会将数据输出到sw
-            jsonGen.writeObject(obj);
-            //由于采用流式输出 在输出完毕后务必清空缓冲区并关闭输出流
-            jsonGen.flush();
-            jsonGen.close();
-            return sw.toString();
-        } catch (JsonGenerationException jge) {
-            logger.error("Json生成错误" + jge.getMessage());
-        } catch (IOException ioe) {
-            logger.error("Json输入输出错误" + ioe.getMessage());
-        }
-        return null;
-    }
-
 }

+ 1 - 0
src/main/java/com/emato/ccnet/util/OkHttpUtil.java

@@ -43,6 +43,7 @@ public class OkHttpUtil {
         return builder.build();
     }
 
+
     /**
      * 以字符串数据构建Request(未使用)
      * @param url

+ 7 - 7
src/main/resources/application.yml

@@ -42,10 +42,10 @@ spring:
       driver-class-name: org.mariadb.jdbc.Driver
       url: jdbc:mysql://127.0.0.1:3306/shop?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
       username: root
-      password: 111111
+      password: root
       #url: jdbc:mysql://183.3.221.144:3306/shop?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
       #username: user
-      #password: abc-123&^
+      #password: abc-123Bf
       # hikari连接池配置
       hikari:
         # 连接只读数据库时配置为true, 保证安全
@@ -64,7 +64,7 @@ spring:
       driver-class-name: org.mariadb.jdbc.Driver
       url: jdbc:mysql://127.0.0.1:3306/shop_erp?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
       username: root
-      password: 111111
+      password: root
       # hikari连接池配置
       hikari:
         read-only: false
@@ -158,16 +158,16 @@ cus:
   order:
     # e码头CSP系统
     emato-csp:
-    order-url: http://192.168.0.74:8080/order/add
+    order-url: http://192.168.1.113:8080/order/add
 
-  # ttjy
+  # ws保税备货
   waybill:
     # e码头OMS系统
     emato-oms:
     # 秘钥
     secret-key:
-    # 地址
-    waybill-url: http://192.168.0.74:8080/oms-controller-ws/sendBondedStockOrder
+    # 地址 http://wstest.ds-bay.com/bds/order
+    waybill-url: http://127.0.0.1:8080/oms-controller-ws/bds/order.json
 
 # 商户信息
 merchant:

+ 51 - 2
src/test/java/com/emato/ccnet/CcnetApplicationTests.java

@@ -1,22 +1,71 @@
 package com.emato.ccnet;
 
+import com.emato.ccnet.biz.req.order.csp.Ceb311OrderBiz;
 import com.emato.ccnet.biz.req.pay.alipay.Ceb411AlipayBiz;
+import com.emato.ccnet.biz.req.waybill.oms.Ceb511OmsWayBiz;
+import com.emato.ccnet.msg.ResponseMessage;
+import com.google.common.collect.ImmutableMap;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.Map;
+
 @RunWith(SpringRunner.class)
 @SpringBootTest
 public class CcnetApplicationTests {
 
-private Ceb411AlipayBiz ceb411AlipayBiz;
+	@Autowired
+	private Ceb411AlipayBiz ceb411PayBillBiz;
+
+	@Autowired
+	private Ceb311OrderBiz ceb311OrderBiz;
+
+	@Autowired
+	private Ceb511OmsWayBiz ceb511OmsWayBiz;
 	@Test
 	public void contextLoads() {
 		/*String sellerId = String.valueOf("2");
 
 		Map<String, Object> reqParam = ImmutableMap.of("sellerId", sellerId);
-		ceb411AlipayBiz.biz(reqParam);*/
+		ceb411PayBillBiz.biz(reqParam);*/
 	}
 
+	/**
+	 * 电子订单运单数据
+	 */
+	@Test
+	public void cusOrderWaybill() {
+		Map<String, Object> reqParam = ImmutableMap.of("number", 10);
+
+		ResponseMessage result = ceb311OrderBiz.biz(reqParam);
+
+		System.out.println(result);
+	}
+
+	/**
+	 * 支付单数据开始
+	 */
+	@Test
+	public void cusPayBill() {
+		Map<String, Object> reqParam = ImmutableMap.of("number", 10);
+
+		ResponseMessage result = ceb411PayBillBiz.biz(reqParam);
+
+		System.out.println(result);
+	}
+
+	/**
+	 * 海关运单
+	 */
+	@Test
+	public void test() {
+		Map<String, Object> reqParam = ImmutableMap.of("number", 2);
+
+		ResponseMessage result =ceb511OmsWayBiz.biz(reqParam);
+
+		System.out.println(result);
+	}
 }