|
@@ -0,0 +1,754 @@
|
|
|
+package com.bs.logisticslnfoapi.controller;
|
|
|
+
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.bs.logisticslnfoapi.bean.*;
|
|
|
+import com.bs.logisticslnfoapi.bean.pdd.*;
|
|
|
+import com.bs.logisticslnfoapi.bean.smsplatform.SendSmsRequest;
|
|
|
+import com.bs.logisticslnfoapi.bean.zhongtong.*;
|
|
|
+import com.bs.logisticslnfoapi.factory.smsPlatform.SmsPlatformFactory;
|
|
|
+import com.bs.logisticslnfoapi.service.log.LogService;
|
|
|
+import com.bs.logisticslnfoapi.util.*;
|
|
|
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
|
|
|
+import com.google.gson.Gson;
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
|
+import com.pdd.pop.sdk.common.util.JsonUtil;
|
|
|
+import com.pdd.pop.sdk.http.PopClient;
|
|
|
+import com.pdd.pop.sdk.http.PopHttpClient;
|
|
|
+import com.pdd.pop.sdk.http.api.request.PddOpenMsgServiceSendExpressMsgRequest;
|
|
|
+import com.pdd.pop.sdk.http.api.response.PddOpenMsgServiceSendExpressMsgResponse;
|
|
|
+import com.zto.zop.ZopClient;
|
|
|
+import com.zto.zop.ZopPublicRequest;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.http.NameValuePair;
|
|
|
+import org.apache.http.message.BasicNameValuePair;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import sun.misc.BASE64Encoder;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@Slf4j
|
|
|
+@CrossOrigin("*")
|
|
|
+@RequestMapping(value = "/logistics")
|
|
|
+public class LogisticsController {
|
|
|
+
|
|
|
+
|
|
|
+ @Value("${sendmessageurl}")
|
|
|
+ private String sendmessageurl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private LogService logService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SmsPlatformFactory smsPlatformFactory;
|
|
|
+
|
|
|
+ @RequestMapping("hello")
|
|
|
+ public String test(){
|
|
|
+ return "Hello World";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping("/sign")
|
|
|
+ public Object signed(HttpServletRequest request, HttpServletResponse response, @RequestBody LogisticsParam logisticsParam) throws Exception {
|
|
|
+ //申通测试环境地址
|
|
|
+ /*String url = "http://3thpartyconsign-test.sto-express.cn:8111/stoPlatform/track/tmsTrace!getTraceNotify.action";*/
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ //申通正式环境地址
|
|
|
+ String url = "http://yizhanAPI.stointl.com:22221/stoPlatform/track/tmsTrace!getTraceNotify.action";
|
|
|
+ LogisticsBean logisticsBean = new LogisticsBean();
|
|
|
+ logisticsBean.setMailNos(logisticsParam.getMailNos());
|
|
|
+ logisticsBean.setCnOrderCode(logisticsParam.getCnOrderCode());
|
|
|
+ logisticsBean.setTime(logisticsParam.getTime());
|
|
|
+ logisticsBean.setDesc(logisticsParam.getDesc());
|
|
|
+ logisticsBean.setAction(logisticsParam.getAction());
|
|
|
+ logisticsBean.setCity(logisticsParam.getCity());
|
|
|
+ logisticsBean.setStationName(logisticsParam.getStationName());
|
|
|
+ logisticsBean.setStationContact(logisticsParam.getStationContact());
|
|
|
+ logisticsBean.setStationId(logisticsParam.getStationId());
|
|
|
+ logisticsBean.setStationSource(logisticsParam.getStationSource());
|
|
|
+ logisticsBean.setPartnerName(logisticsParam.getPartnerName());
|
|
|
+ logisticsBean.setAuthCode(logisticsParam.getAuthCode());
|
|
|
+
|
|
|
+ String logistics_interface = RequestBuilder.buildPayRequestXml(logisticsBean);
|
|
|
+ System.out.println("logisticsBean:::::::::::" + JSONUtils.object2Json(logistics_interface));
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("logistics_interface", logistics_interface);
|
|
|
+ map.put("msg_type", logisticsParam.getMsg_type());
|
|
|
+ // StoExpress89生产key j9Ao12345TQy 测试key
|
|
|
+ /*String data_digest = (new BASE64Encoder()).encodeBuffer(Md5Util.md5(logistics_interface + "j9Ao12345TQy"));*/
|
|
|
+ String data_digest = (new BASE64Encoder()).encodeBuffer(Md5Util.md5(logistics_interface + "StoExpress89"));
|
|
|
+
|
|
|
+ map.put("data_digest", data_digest);
|
|
|
+ map.put("msg_id", logisticsParam.getMsg_id());
|
|
|
+ map.put("partner_code", logisticsParam.getPartner_code());
|
|
|
+ map.put("from_code", logisticsParam.getFrom_code());
|
|
|
+
|
|
|
+ System.out.println("data_digest:::::::" + data_digest + "MailNos:::::::" + logisticsParam.getMailNos() + "Action:::::::" + logisticsParam.getAction());
|
|
|
+ log.info("申通快递签收回传传入参数:{}",map);
|
|
|
+ String result = HttpUtil.doPost(url, map);
|
|
|
+ log.info("申通快递签收回传返回结果:{}",result);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(map))
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.STO.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 韵达接口调用
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param yunDaBean
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/yundaSign")
|
|
|
+ public Object yundaSign(HttpServletRequest request, HttpServletResponse response, @RequestBody YunDaBean yunDaBean) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ //韵达测试地址
|
|
|
+ /*String host = "http://dev.yundasys.com:15146/par_api/interface.php";*/
|
|
|
+ //韵达正式地址
|
|
|
+ // String host = "http://par.api.yundasys.com:10566/interface.php";
|
|
|
+ String host = "http://three.yundasys.com:32452/interface.php";
|
|
|
+ String xml = yunDaBean.getXmldata();
|
|
|
+ String partnerid = yunDaBean.getPartnerid();
|
|
|
+ String password = yunDaBean.getPassword();
|
|
|
+ YunDaSyStoreBean yunDaSyStoreBean = JSON.parseObject(xml, YunDaSyStoreBean.class);
|
|
|
+ xml = RequestBuilder.beanToXml(yunDaSyStoreBean, "<orders><order>", "</order></orders>");
|
|
|
+ BASE64Encoder encoder = new BASE64Encoder();
|
|
|
+ xml = encoder.encode(xml.getBytes());
|
|
|
+ String md5 = Md5Util.doSign(xml + partnerid + password);
|
|
|
+ List<NameValuePair> list = new ArrayList<>();
|
|
|
+ list.add(new BasicNameValuePair("partnerid", partnerid));//partnerid
|
|
|
+ list.add(new BasicNameValuePair("request", yunDaBean.getRequest()));
|
|
|
+ list.add(new BasicNameValuePair("version", yunDaBean.getVersion()));
|
|
|
+ list.add(new BasicNameValuePair("xmldata", xml));
|
|
|
+ list.add(new BasicNameValuePair("validation", md5));
|
|
|
+ //http请求
|
|
|
+ log.info("韵达快递签收回传入参:{}",list);
|
|
|
+ String result = HttpUtils.getPostResult(host.trim(), list, "utf-8", "utf-8");
|
|
|
+ log.info("韵达快递签收返回结果:{}",result);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(yunDaBean.getXmldata())
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(host.trim())
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.YD.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/yuantongSign")
|
|
|
+ public Object yuantongSign(HttpServletRequest request, HttpServletResponse response, @RequestBody YuantongBean yuantongBean) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String host = "http://interface.mamayz.com/stationin/post";
|
|
|
+ /* String host = "http://jingangtest.yto56.com.cn/stationin/post";*///圆通测试环境地址
|
|
|
+ String logistics_interface = "";
|
|
|
+ if ("1730".equals(yuantongBean.getOp_code())) {//驿站收入扫描:派件操作后业务员将快件给驿站时做的采集动作
|
|
|
+ YuantongInboundBean yuantongInboundBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongInboundBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongInboundBean);
|
|
|
+ } else if ("1735".equals(yuantongBean.getOp_code())) {//上架操作
|
|
|
+ YuantongShelvesBean yuantongShelvesBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongShelvesBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongShelvesBean);
|
|
|
+ } else if ("1745".equals(yuantongBean.getOp_code())) {//签收成功扫描:客户成功签收时做的采集动作
|
|
|
+ YuantongOutboundBean yuantongOutboundBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongOutboundBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongOutboundBean);
|
|
|
+ } else if ("0000".equals(yuantongBean.getOp_code())) {//驿站信息注册:注册驿站提供方驿站基本信息,获取驿站编码
|
|
|
+ YuantongSyStoreBean yuantongSyStoreBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongSyStoreBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongSyStoreBean);
|
|
|
+ } else if ("0001".equals(yuantongBean.getOp_code())) {//账户人员信息:账户名,姓名等
|
|
|
+ YuantongSyAcPersonBean yuantongSyAcPersonBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongSyAcPersonBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongSyAcPersonBean);
|
|
|
+ } else if ("0002".equals(yuantongBean.getOp_code())) {//修改账户信息(地址,联系电话)
|
|
|
+ YuantongSyUpStoreBean yuantongSyUpStoreBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongSyUpStoreBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongSyUpStoreBean);
|
|
|
+ } else if ("2000".equals(yuantongBean.getOp_code())) {//通知回传
|
|
|
+ host = "http://interface.mamayz.com/stationin/receipt";
|
|
|
+ YuantongReturnBean yuantongReturnBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongReturnBean.class);
|
|
|
+ logistics_interface = RequestBuilder.beanToXml(yuantongReturnBean);
|
|
|
+ }
|
|
|
+ String dataDigest = Md5Util.doSign(logistics_interface, "utf-8", yuantongBean.getKey());
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("logistics_interface", URLEncoder.encode(logistics_interface, "UTF-8"));
|
|
|
+ map.put("data_digest", URLEncoder.encode(dataDigest, "UTF-8"));
|
|
|
+ map.put("customer_code", yuantongBean.getCustomer_code());
|
|
|
+ map.put("op_code", yuantongBean.getOp_code());
|
|
|
+ map.put("station_type", yuantongBean.getStation_type());
|
|
|
+ map.put("org_code", yuantongBean.getOrg_code());
|
|
|
+ log.info("圆通接口操作码:{};入参{}",yuantongBean.getOrg_code(),map);
|
|
|
+ String result = HttpUtils.sendPostReq(host.trim(), map, "utf-8", "utf-8");
|
|
|
+ log.info("圆通接口操作码:{};返回结果{}",yuantongBean.getOrg_code(),result);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(logistics_interface)
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(host)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.YT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/creatBestExpStore")
|
|
|
+ public Object creatBestExpStore(HttpServletRequest request, HttpServletResponse response, @RequestBody List<BestLogisticsBean> bestLogisticsBeanList) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String url = "http://edi-q9.ns.800best.com/wuye/api/process";//百世接口
|
|
|
+ ReqBestLogisticsBean reqBestLogisticsBean = new ReqBestLogisticsBean();
|
|
|
+ Map<String, List<BestLogisticsBean>> bsetMap = new HashMap();
|
|
|
+ bsetMap.put("cabinetinfolist", bestLogisticsBeanList);
|
|
|
+ reqBestLogisticsBean.setBizData(bsetMap);
|
|
|
+ reqBestLogisticsBean.setPartnerID("fengzhan");
|
|
|
+ reqBestLogisticsBean.setPartnerKey("fe1902ng0510zhan");
|
|
|
+ reqBestLogisticsBean.setServiceType("CabinetSyncNotifyRequest");//UpdateStatusByMailNo CabinetSyncNotifyRequest
|
|
|
+ reqBestLogisticsBean.setDigest(JSON.toJSONString(reqBestLogisticsBean.getBizData()) + reqBestLogisticsBean.getPartnerKey());
|
|
|
+
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("bizData", JSON.toJSONString(reqBestLogisticsBean.getBizData()));
|
|
|
+ map.put("serviceType", reqBestLogisticsBean.getServiceType());
|
|
|
+ map.put("partnerID", reqBestLogisticsBean.getPartnerID());
|
|
|
+ // imxiaomai产生 123456 测试key
|
|
|
+ String digest = Md5Util.makeSign(reqBestLogisticsBean.getDigest(), "UTF-8");
|
|
|
+ map.put("digest", digest);
|
|
|
+
|
|
|
+ System.out.println("digest:::::::" + digest + "bizData::::" + JSON.toJSONString(reqBestLogisticsBean.getBizData()));
|
|
|
+
|
|
|
+ String result = HttpUtil.doPost(url, map);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(map))
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.HT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/bestExpSign")
|
|
|
+ public Object bestExpSigned(HttpServletRequest request, HttpServletResponse response, @RequestBody UpdateBestLogisticsBean updateBestLogisticsBean) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String url = "http://edi-q9.ns.800best.com/wuye/api/process";//百世测试接口
|
|
|
+ ReqBestLogisticsBean reqBestLogisticsBean = new ReqBestLogisticsBean();
|
|
|
+ reqBestLogisticsBean.setPartnerID("fengzhan");
|
|
|
+ reqBestLogisticsBean.setPartnerKey("fe1902ng0510zhan");
|
|
|
+ reqBestLogisticsBean.setServiceType("UpdateStatusByMailNo");//UpdateStatusByMailNo CabinetSyncNotifyRequest
|
|
|
+ reqBestLogisticsBean.setDigest(JSON.toJSONString(updateBestLogisticsBean) + reqBestLogisticsBean.getPartnerKey());
|
|
|
+
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("bizData", JSON.toJSONString(updateBestLogisticsBean));
|
|
|
+ map.put("serviceType", reqBestLogisticsBean.getServiceType());
|
|
|
+ map.put("partnerID", reqBestLogisticsBean.getPartnerID());
|
|
|
+ // imxiaomai产生 123456 测试key
|
|
|
+ String digest = Md5Util.makeSign(reqBestLogisticsBean.getDigest(), "UTF-8");
|
|
|
+ map.put("digest", digest);
|
|
|
+
|
|
|
+ System.out.println("digest:::::::" + digest + "bizData::::" + JSON.toJSONString(updateBestLogisticsBean));
|
|
|
+ log.info("百世快递签收回传入参:{}",map);
|
|
|
+ String result = HttpUtil.doPost(url, map);
|
|
|
+ log.info("百世快递签收回传返回结果:{}",result);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(map))
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.HT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 百世服务点抽检数据提交接口
|
|
|
+ * @param parameter
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/bestInspection")
|
|
|
+ public Object inspectionSubmit(@RequestBody Map<String,String> parameter) throws Exception {
|
|
|
+ log.info("传入参数:{}",parameter);
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String url = "http://edi-q9.ns.800best.com/wuye/api/process";//百世测试接口
|
|
|
+ ReqBestLogisticsBean reqBestLogisticsBean = new ReqBestLogisticsBean();
|
|
|
+ reqBestLogisticsBean.setPartnerID("fengzhan");
|
|
|
+ reqBestLogisticsBean.setPartnerKey("fe1902ng0510zhan");
|
|
|
+ reqBestLogisticsBean.setServiceType("inspectionSubmit");//UpdateStatusByMailNo CabinetSyncNotifyRequest
|
|
|
+ reqBestLogisticsBean.setDigest(JSON.toJSONString(parameter) + reqBestLogisticsBean.getPartnerKey());
|
|
|
+
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("bizData", JSON.toJSONString(parameter));
|
|
|
+ map.put("serviceType", reqBestLogisticsBean.getServiceType());
|
|
|
+ map.put("partnerID", reqBestLogisticsBean.getPartnerID());
|
|
|
+ // imxiaomai产生 123456 测试key
|
|
|
+ String digest = Md5Util.makeSign(reqBestLogisticsBean.getDigest(), "UTF-8");
|
|
|
+ map.put("digest", digest);
|
|
|
+
|
|
|
+ System.out.println("digest:::::::" + digest + "bizData::::" + JSON.toJSONString(parameter));
|
|
|
+ log.info("百世服务点抽检数据提交接口传入参数:{}",map);
|
|
|
+ String result = HttpUtil.doPost(url, map);
|
|
|
+ log.info("百世服务点抽检数据提交接口返回结果:{}",result);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(map))
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.HT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/statusPush")
|
|
|
+ public Object statusPush(HttpServletRequest request, HttpServletResponse response, @RequestBody StatusPushParam statusPushParam) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String requestBody = JSONUtils.object2Json(statusPushParam);
|
|
|
+
|
|
|
+/* String url = "http://test.sijiabox.com/sync/statusPush";
|
|
|
+ String key = "223063ee66a6";
|
|
|
+ String partnerId = "NX";*/
|
|
|
+ String url = "http://push.sijiabox.com/sync/statusPush";
|
|
|
+ String key = "2ba25f5c42164";
|
|
|
+ String partnerId = "BSO";
|
|
|
+
|
|
|
+ Map<String, String> headers = new HashMap<String, String>();
|
|
|
+ headers.put("Content-type", "application/json;charset=UTF-8");
|
|
|
+ headers.put("partnerID", partnerId);
|
|
|
+ headers.put("digest", EncryptionUtil.makeSign(requestBody, key));
|
|
|
+
|
|
|
+
|
|
|
+ String returnContent = HttpUtil.post(url, requestBody, headers);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(requestBody)
|
|
|
+ .responseMsg(returnContent)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.YT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return returnContent;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping("/bsPoint")
|
|
|
+ public Object bsPoint(HttpServletRequest request, HttpServletResponse response, @RequestBody BsPointParam bsPointParam) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String requestBody = JSONUtils.object2Json(bsPointParam);
|
|
|
+
|
|
|
+ /* String url = "http://test.sijiabox.com/sync/bsPoint";
|
|
|
+ String key = "223063ee66a6";
|
|
|
+ String partnerId = "NX";*/
|
|
|
+ String url = "http://push.sijiabox.com/sync/statusPush";
|
|
|
+ String key = "2ba25f5c42164";
|
|
|
+ String partnerId = "BSO";
|
|
|
+
|
|
|
+ Map<String, String> headers = new HashMap<String, String>();
|
|
|
+ headers.put("Content-type", "application/json;charset=UTF-8");
|
|
|
+ headers.put("partnerID", partnerId);
|
|
|
+ headers.put("digest", EncryptionUtil.makeSign(requestBody, key));
|
|
|
+
|
|
|
+ String returnContent = HttpUtil.post(url, requestBody, headers);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(requestBody)
|
|
|
+ .responseMsg(returnContent)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.HT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return returnContent;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping("/ztPoint")
|
|
|
+ public Object ztPoint(HttpServletRequest request, HttpServletResponse response, @RequestBody ZtPointParam ztPointParam) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String requestBody = JSONUtils.object2Json(ztPointParam);
|
|
|
+
|
|
|
+/* String url = "http://test.sijiabox.com/sync/ztPoint";
|
|
|
+ String key = "223063ee66a6";
|
|
|
+ String partnerId = "NX";*/
|
|
|
+ String url = "http://push.sijiabox.com/sync/statusPush";
|
|
|
+ String key = "2ba25f5c42164";
|
|
|
+ String partnerId = "BSO";
|
|
|
+
|
|
|
+ Map<String, String> headers = new HashMap<String, String>();
|
|
|
+ headers.put("Content-type", "application/json;charset=UTF-8");
|
|
|
+ headers.put("partnerID", partnerId);
|
|
|
+ headers.put("digest", EncryptionUtil.makeSign(requestBody, key));
|
|
|
+
|
|
|
+ String returnContent = HttpUtil.post(url, requestBody, headers);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(requestBody)
|
|
|
+ .responseMsg(returnContent)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.ZT.getEnValue())
|
|
|
+ .build());
|
|
|
+ return returnContent;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/storeOutboundForHaikangweishi")
|
|
|
+ public Object storeOutboundForHaikangweishi(HttpServletRequest request, HttpServletResponse response, @RequestBody ReqHaiKangOutboundBean reqHaiKangOutboundBean) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String digest = Md5Util.makeSign(JSON.toJSONString(reqHaiKangOutboundBean.getBizData()) + "haikangin", "UTF-8");
|
|
|
+ ResultInfoBean resultInfoBean = new ResultInfoBean();
|
|
|
+ if (!digest.equals(reqHaiKangOutboundBean.getDigest())) {
|
|
|
+ resultInfoBean.setResultCode("01");
|
|
|
+ resultInfoBean.setResultMessage("验签失败");
|
|
|
+ return JSON.toJSONString(resultInfoBean);
|
|
|
+ }
|
|
|
+ String result = "不存在该业务类型";
|
|
|
+ if (reqHaiKangOutboundBean.getBizData().getExpCode() == null || "".equals(reqHaiKangOutboundBean.getBizData().getExpCode())) {
|
|
|
+ resultInfoBean.setResultCode("01");
|
|
|
+ resultInfoBean.setResultMessage("非法参数(expCode)");
|
|
|
+ return JSON.toJSONString(resultInfoBean);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (reqHaiKangOutboundBean.getBizData().getStoreId() == null || "".equals(reqHaiKangOutboundBean.getBizData().getStoreId())) {
|
|
|
+ resultInfoBean.setResultCode("01");
|
|
|
+ resultInfoBean.setResultMessage("非法参数(storeId)");
|
|
|
+ return JSON.toJSONString(resultInfoBean);
|
|
|
+ }
|
|
|
+ String url = "";
|
|
|
+ if ("OutboundByExpCode".equals(reqHaiKangOutboundBean.getServiceType())) {
|
|
|
+ url = "http://app.fengzhan100.com/app/device/signflagByHaiKang";//供配接口
|
|
|
+ result = HttpUtil.doPostJson(url, JSON.toJSONString(reqHaiKangOutboundBean.getBizData()));
|
|
|
+ System.out.println(result);
|
|
|
+ } else if ("InboundByExpCode".equals(reqHaiKangOutboundBean.getServiceType())) {
|
|
|
+ url = "http://app.fengzhan100.com/app/device/onShelfScanByHaiKang";//供配接口
|
|
|
+ result = HttpUtil.doPostJson(url, JSON.toJSONString(reqHaiKangOutboundBean.getBizData()));
|
|
|
+ }
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(reqHaiKangOutboundBean != null ? JSON.toJSONString(reqHaiKangOutboundBean) : "null")
|
|
|
+ .responseMsg(result)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(2)
|
|
|
+ .platform(PlatformEnum.HKWS.getEnValue())
|
|
|
+ .build());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/shentongGetPhone")
|
|
|
+ public Object shentongGetPhone(HttpServletRequest request, HttpServletResponse response, @RequestBody StGetPhoneParam stGetPhoneParam) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String url = "http://wutonggateway.sto.cn/trace-other/trace/queryReceiverInfo";//正式
|
|
|
+// String url = "http://gateway-test.sto-express.cn:8088/trace-other/trace/queryReceiverInfo";
|
|
|
+ Map<String, String> headers = new HashMap<String, String>();
|
|
|
+ headers.put("appid", stGetPhoneParam.getAppid());
|
|
|
+ headers.put("timestamp", stGetPhoneParam.getTimestamp());
|
|
|
+ headers.put("nonce", stGetPhoneParam.getNonce());
|
|
|
+ headers.put("signature", EncryptionUtil.MD5forShenTong("waybillNo=" + stGetPhoneParam.getWaybillNo() + stGetPhoneParam.getTimestamp() + stGetPhoneParam.getNonce() + stGetPhoneParam.getKey()));
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("waybillNo", stGetPhoneParam.getWaybillNo());
|
|
|
+ String returnContent = HttpUtil.doGetAddHeader(url, map, headers);
|
|
|
+ StGetPhoneResParm stGetPhoneResParm = JSON.parseObject(returnContent, StGetPhoneResParm.class);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(map))
|
|
|
+ .responseMsg(returnContent)
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.STO.getEnValue())
|
|
|
+ .build());
|
|
|
+ return stGetPhoneResParm.getData();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中通认证接口(包含新增和修改)
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param zhongTongStoreSynRequest
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/ztStoreAuth")
|
|
|
+ public Object ztStoreAuth(HttpServletRequest request, HttpServletResponse response, @RequestBody ZhongTongStoreSynRequest zhongTongStoreSynRequest) throws Exception {
|
|
|
+ Map<String, String> param = new Gson().fromJson(new Gson().toJson(zhongTongStoreSynRequest), new TypeToken<Map<String, String>>() {
|
|
|
+ }.getType());
|
|
|
+ param.remove("companyId");
|
|
|
+ param.remove("key");
|
|
|
+ param.remove("apiName");
|
|
|
+ log.info("中通认证接口传入参数" + new Gson().toJson(param));
|
|
|
+ return zhongTongHttp(param, zhongTongStoreSynRequest.getCompanyId(), zhongTongStoreSynRequest.getKey(), zhongTongStoreSynRequest.getApiName());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中通入库和签收
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/ztSignback")
|
|
|
+ public Object ztSignback(HttpServletRequest request, HttpServletResponse response, @RequestBody ZhongTongBackRequest zhongTongBackRequest) throws Exception {
|
|
|
+ String companyId = zhongTongBackRequest.getCompanyId();
|
|
|
+ String key = zhongTongBackRequest.getKey();
|
|
|
+ String apiName = zhongTongBackRequest.getApiName();
|
|
|
+ zhongTongBackRequest.setCompanyId(null);
|
|
|
+ zhongTongBackRequest.setKey(null);
|
|
|
+ zhongTongBackRequest.setApiName(null);
|
|
|
+
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+ param.put("stateGroup", JSON.toJSONString(zhongTongBackRequest));
|
|
|
+ log.info("中通入库签收接口传入参数" + JSON.toJSONString(param));
|
|
|
+ return zhongTongHttp(param, companyId, key, apiName);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中通短信回传
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param smsReturnRequest
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/smsReturn")
|
|
|
+ public Object smsReturn(HttpServletRequest request, HttpServletResponse response, @RequestBody SmsReturnRequest smsReturnRequest) throws Exception {
|
|
|
+ Map<String, String> param = new Gson().fromJson(new Gson().toJson(smsReturnRequest), new TypeToken<Map<String, String>>() {
|
|
|
+ }.getType());
|
|
|
+ param.remove("companyId");
|
|
|
+ param.remove("key");
|
|
|
+ param.remove("apiName");
|
|
|
+ log.info("中通短信回传接口传入参数" + new Gson().toJson(param));
|
|
|
+ return zhongTongHttp(param, smsReturnRequest.getCompanyId(), smsReturnRequest.getKey(), smsReturnRequest.getApiName());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中通获取电话号码
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param ztoQueryMobileRequest
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/ztoGetMobile")
|
|
|
+ public Object ztoGetMobile(HttpServletRequest request, HttpServletResponse response, @RequestBody ZtoQueryMobileRequest ztoQueryMobileRequest) throws Exception {
|
|
|
+ Map<String, String> param = new Gson().fromJson(new Gson().toJson(ztoQueryMobileRequest), new TypeToken<Map<String, String>>() {
|
|
|
+ }.getType());
|
|
|
+ param.remove("companyId");
|
|
|
+ param.remove("key");
|
|
|
+ param.remove("apiName");
|
|
|
+ log.info("中通获取电话号码接口传入参数" + new Gson().toJson(param));
|
|
|
+ return zhongTongHttp(param, ztoQueryMobileRequest.getCompanyId(), ztoQueryMobileRequest.getKey(), ztoQueryMobileRequest.getApiName());
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping("/ztoBillAnalysis")
|
|
|
+ public Object ztoBillAnalysis(@RequestBody ZtoQueryMobileRequest ztoRequest) throws IOException {
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+ param.put("billCode", ztoRequest.getBillCode());
|
|
|
+ return zhongTongHttp(param, ztoRequest.getCompanyId(), ztoRequest.getKey(), ztoRequest.getApiName());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中通发送短信
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/ztoSendSms")
|
|
|
+ public Object ztoSendSms(HttpServletRequest request, HttpServletResponse response, @RequestBody ZtoSendSmsRequest ztoSendSmsRequest) throws Exception {
|
|
|
+ Map<String, String> param = new Gson().fromJson(new Gson().toJson(ztoSendSmsRequest), new TypeToken<Map<String, String>>() {
|
|
|
+ }.getType());
|
|
|
+ param.remove("companyId");
|
|
|
+ param.remove("key");
|
|
|
+ param.remove("apiName");
|
|
|
+ log.info("中通发送短信接口传入参数" + new Gson().toJson(param));
|
|
|
+ return zhongTongHttp(param, ztoSendSmsRequest.getCompanyId(), ztoSendSmsRequest.getKey(), ztoSendSmsRequest.getApiName());
|
|
|
+ }
|
|
|
+
|
|
|
+ private String zhongTongHttp(Map<String, String> map, String companyId, String key, String url) throws IOException {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ ZopClient client = new ZopClient(companyId, key);
|
|
|
+ ZopPublicRequest zopPublicRequest = new ZopPublicRequest();
|
|
|
+ zopPublicRequest.addParam(map);
|
|
|
+ zopPublicRequest.setUrl(url);
|
|
|
+ String refunt = client.execute(zopPublicRequest);
|
|
|
+// logService.install(ApiLog.builder()
|
|
|
+// .requestMsg(JSON.toJSONString(map))
|
|
|
+// .responseMsg(refunt)
|
|
|
+// .url(url)
|
|
|
+// .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+// .createTime(new Date())
|
|
|
+// .requestType(1)
|
|
|
+// .platform(PlatformEnum.ZT.getEnValue())
|
|
|
+// .build());
|
|
|
+ return refunt;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单查询接口
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param orderQueryInfo
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/pddPhoneQuery")
|
|
|
+ public Object pddPhoneQuery(HttpServletRequest request, HttpServletResponse response, @RequestBody OrderQueryInfo orderQueryInfo) throws Exception {
|
|
|
+ log.info("拼多多订单查询接口传入参数:" + JSON.toJSONString(orderQueryInfo));
|
|
|
+ return invoke(orderQueryInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 基础信息同步接口
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param cabinetInfoRequest
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/pddAuth")
|
|
|
+ public Object pddAuth(HttpServletRequest request, HttpServletResponse response, @RequestBody CabinetInfoRequest cabinetInfoRequest) throws Exception {
|
|
|
+ log.info("拼多多基础信息同步接口传入参数:" + JSON.toJSONString(cabinetInfoRequest));
|
|
|
+ return invoke(cabinetInfoRequest);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 消息通知接口
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param inOutBoundRequest
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/pddSignBack")
|
|
|
+ public Object pddSignBack(HttpServletRequest request, HttpServletResponse response, @RequestBody InOutBoundRequest inOutBoundRequest) throws Exception {
|
|
|
+ log.info("拼多多消息通知接口传入参数:" + JSON.toJSONString(inOutBoundRequest));
|
|
|
+ return invoke(inOutBoundRequest);
|
|
|
+ }
|
|
|
+
|
|
|
+ public <T extends PddRequest> Object invoke(T t) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ String partner_id = t.getPartner_id();
|
|
|
+ String secret = t.getSecret();
|
|
|
+ String url = t.getApiName();
|
|
|
+ String json = JSON.toJSONString(PddUtil.paramHandle(t));
|
|
|
+ log.info("真实参数:" + json);
|
|
|
+ Object refunt = PddUtil.pddPush(json, partner_id, secret, url);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(json)
|
|
|
+ .responseMsg(refunt != null ? JSON.toJSONString(refunt) : "null")
|
|
|
+ .url(url)
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.PDD.getEnValue())
|
|
|
+ .build());
|
|
|
+ return refunt;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 拼多多发送短信接口
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/pddSendSms")
|
|
|
+ public Object pddSendSms(HttpServletRequest request, HttpServletResponse response, @RequestBody PddSendSmsData pddRequest) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ log.info("【拼多多发送短信接口传入参数】:{}", JSON.toJSONString(pddRequest));
|
|
|
+ PopClient client = new PopHttpClient(pddRequest.getClientId(), pddRequest.getClientSecret());
|
|
|
+ PddOpenMsgServiceSendExpressMsgRequest sendRequest = new PddOpenMsgServiceSendExpressMsgRequest();
|
|
|
+ // 签名名称 在pdd开放平台配置
|
|
|
+ sendRequest.setSignName("蜂站");
|
|
|
+ // 短信模板id,在pdd开放平台配置
|
|
|
+ sendRequest.setTemplateCode(1L);
|
|
|
+ sendRequest.setTemplateParamJson(pddRequest.getTemplateParamJson());
|
|
|
+ sendRequest.setWaybillCodes(pddRequest.getWaybillCodes());
|
|
|
+ sendRequest.setWpCode(pddRequest.getWpCode());
|
|
|
+ PddOpenMsgServiceSendExpressMsgResponse pddResponse = client.syncInvoke(sendRequest);
|
|
|
+ String resp = JsonUtil.transferToJson(pddResponse);
|
|
|
+ log.info("【拼多多发送短信接口返回参数:】{}", resp);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(sendRequest))
|
|
|
+ .responseMsg(resp)
|
|
|
+ .url("拼多多发送短信接口")
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(1)
|
|
|
+ .platform(PlatformEnum.PDD.getEnValue())
|
|
|
+ .build());
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 拼多多短信回调接口
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param pddRequest
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/pddSmsReceipt")
|
|
|
+ public Object pddSmsReceipt(HttpServletRequest request, HttpServletResponse response, @RequestBody PddSmsReceiptRequest pddRequest) throws Exception {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ log.info("拼多多短信回执接口传入参数:" + JSON.toJSONString(pddRequest));
|
|
|
+ String res = OkHttpUtil.postJson(sendmessageurl + "/sms/updateSmsRecord", pddRequest);
|
|
|
+ log.info("【拼多多短信回执接口返回参数:】{}", res);
|
|
|
+ logService.install(ApiLog.builder()
|
|
|
+ .requestMsg(JSON.toJSONString(pddRequest))
|
|
|
+ .responseMsg(res)
|
|
|
+ .url(sendmessageurl + "/sms/updateSmsRecord")
|
|
|
+ .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
|
|
|
+ .createTime(new Date())
|
|
|
+ .requestType(2)
|
|
|
+ .platform(PlatformEnum.PDD.getEnValue())
|
|
|
+ .build());
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 统一发送短信接口
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @RequestMapping("/baseSendSms")
|
|
|
+ public String baseSendSms(@RequestBody SendSmsRequest request) throws Exception {
|
|
|
+ log.info("短信的发送平台为:{}",request.getPlatform());
|
|
|
+ return smsPlatformFactory.getSmsPlatform(request.getPlatform()).sendSms(request.getParams());
|
|
|
+ }
|
|
|
+}
|