diff --git a/pom.xml b/pom.xml
index e1c2f5d6..51525805 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,8 +98,6 @@
com.baidu.ueditor
1.1.2-offical
-
-
org.springframework.boot
spring-boot-starter-validation
@@ -109,11 +107,6 @@
spring-boot-configuration-processor
true
-
-
-
-
-
com.baomidou
mybatis-plus-boot-starter
@@ -139,9 +132,6 @@
-
-
-
com.aliyun
@@ -413,9 +403,11 @@
- kill -9 `ps -ef |grep ${project.artifactId}.jar|grep -v "grep" |awk '{print $2}'`
+ kill -9 `ps -ef |grep ${project.artifactId}.jar|grep -v "grep" |awk '{print $2}'`
+
- ${service-path}/renren.log 2>&1 & ]]>
+
+ ${service-path}/renren.log 2>&1 & ]]>
diff --git a/src/main/java/com/peanut/common/Interface/KdApiEOrder.java b/src/main/java/com/peanut/common/Interface/KdApiEOrder.java
deleted file mode 100644
index dd581717..00000000
--- a/src/main/java/com/peanut/common/Interface/KdApiEOrder.java
+++ /dev/null
@@ -1,352 +0,0 @@
-package com.peanut.common.Interface;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.peanut.common.utils.HttpClientUtils;
-import com.peanut.common.utils.KdUtils;
-import com.peanut.modules.book.entity.FMSCommodity;
-import com.peanut.modules.book.entity.FMSOrderEntity;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- *
- * @技术QQ群: 可登录官网https://www.kdniao.com/右侧查看技术群号
- * @see: https://kdniao.com/api-eorder
- * @copyright: 深圳市快金数据技术服务有限公司
- * ID和Key请到官网申请:https://kdniao.com/reg
-
-
- * 电子面单接口
- * 此接口用于向快递/快运公司下发订单并获取快递单号,返回电子面单html模板,通知快递员上门取件。该功能支持情况需查看技术文档。
- *正式地址:https://api.kdniao.com/api/EOrderService
- *
- *
- * 系统级参数
- * RequestData String R 请求内容为JSON格式 详情可参考接口技术文档:https://www.kdniao.com/documents
- * EBusinessID String R 用户ID
- * RequestType String R 请求接口指令
- * DataSign String R 数据内容签名,加密方法为:把(请求内容(未编码)+ApiKey)进行MD5加密--32位小写,然后Base64编码,最后进行URL(utf-8)编码
- * DataType String R DataType=2,请求、返回数据类型均为JSON格式
-
- * 应用级参数
- * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
- * Callback String(50) O 用户自定义回传字段
- * CustomerName String(50) C 电子面单客户号,需要下载《快递鸟电子面单客户号参数对照表.xlsx》,参考对应字段传值 https://www.kdniao.com/documents
- * CustomerPwd String(50) C 同上
- * SendSite String(50) C 同上
- * SendStaff String(50) C 同上
- * MonthCode String(20) C 同上
- * CustomArea String(500) O 商家自定义区域,需查看技术文档说明
- * WareHouseID String(30) C 发货仓编码(ShipperCode为JD或JDKY时必填)
- * TransType Int(2) O 京东(ShipperCode为JD或JDKY)的产品类型,需查看技术文档说明
- * ShipperCode String(10) R 快递公司编码详细编码参考《快递鸟接口支持快递公司编码.xlsx》 https://www.kdniao.com/documents
- * LogisticCode String(30) O 快递单号(仅宅急送可用)
- * OrderCode String(30) R 订单编号(自定义,不可重复)
- * ThrOrderCode String(50) C 京东商城的订单号(ShipperCode为JD且ExpType为1时必填)
- * PayType Int(1) R 运费支付方式:1-现付,2-到付,3-月结
- * ExpType String(2) R 详细快递类型参考《快递公司快递业务类型.xlsx》 https://www.kdniao.com/documents
- * IsReturnSignBill Int(1) O 是否要求签回单 0-不要求,1-要求
- * Receiver.Company String(30) O 收件人公司
- * Receiver.Name String(30) R 收件人
- * Receiver.Tel String(20) R 电话(电话与手机,必填一个)
- * Receiver.Mobile String(20) R 手机(电话与手机,必填一个)
- * Receiver.PostCode String(10) C 收件地邮编(ShipperCode为EMS、YZPY、YZBK时必填)
- * Receiver.ProvinceName String(20) R 收件省(如广东省,不要缺少“省”;如是直辖市,请直接传北京、上海等;如是自治区,请直接传广西壮族自治区等)
- * Receiver.CityName String(20) R 收件市(如深圳市,不要缺少“市;如是市辖区,请直接传北京市、上海市等”)
- * Receiver.ExpAreaName String(20) R 收件区/县(如福田区,不要缺少“区”或“县”)
- * Receiver.Address String(100) R 收件人详细地址(不用传省市区)
- * Sender.Company String(30) O 发件人公司
- * Sender.Name String(30) R 发件人
- * Sender.Tel String(20) R 电话(电话与手机,必填一个)
- * Sender.Mobile String(20) R 手机(电话与手机,必填一个)
- * Sender.PostCode String(10) C 发件地邮编(ShipperCode为EMS、YZPY、YZBK时必填)
- * Sender.ProvinceName String(20) R 发件省(如广东省,不要缺少“省”;如是直辖市,请直接传北京、上海等;如是自治区,请直接传广西壮族自治区等)
- * Sender.CityName String(20) R 发件市(如深圳市,不要缺少“市;如是市辖区,请直接传北京市、上海市等”)
- * Sender.ExpAreaName String(20) R 发件区/县(如福田区,不要缺少“区”或“县”)
- * Sender.Address String(100) R 发件人详细地址(不用传省市区)
- * IsNotice Int(1) O 是否通知快递员上门揽件 0-通知,1-不通知,不填则默认为1
- * StartDate String(32) O 上门揽件时间段,格式:YYYY-MM-DD HH24:MM:SS
- * EndDate String(32) O 上门揽件时间段,格式:YYYY-MM-DD HH24:MM:SS
- * Weight Double(10,3) C 包裹总重量kg 1、当为快运的订单时必填;2、ShipperCode为JD时必填;
- * Quantity Int(2) R 包裹数(最多支持300件)一个包裹对应一个运单号,如果是大于1个包裹,返回则按照子母件的方式返回母运单号和子运单号
- * Volume Double(20,3) C 包裹总体积m3 1、当为快运的订单时必填;2、ShipperCode为JD时必填;
- * Remark String(60) O 备注
- * AddService.Name String(20) C 增值服务名称(数组形式,可以有多个增值服务)
- * AddService.Value String(30) C 增值服务值
- * AddService.CustomerID String(30) O 客户标识
- * Commodity.GoodsName String(100) R 商品名称(数组形式)
- * IsReturnPrintTemplate String(1) O 是否返回电子面单模板:0-不需要,1-需要
- * IsSendMessage Int(1) O 是否订阅短信:0-不需要,1-需要
- * IsSubscribe String(1) O 是否订阅轨迹推送 0-不订阅,1-订阅,不填默认为1
- * TemplateSize String(10) O 模板规格,需查看技术文档说明
- * PackingType Int(2) C 包装类型(快运字段),需查看技术文档说明
- * DeliveryMethod Int(1) C 送货方式/派送类型/配送方式(快运字段),需查看技术文档说明
- * CurrencyCode String(10) C 货物单价的币种:CNY: 人民币 HKD: 港币 NTD: 新台币 MOP: 澳门元 (ShipperCode为SF且收件地址为港澳台地区,必填)
- * Dutiable.DeclaredValue Number(15,3) C 申报价值:订单货物总声明价值,包含子母件,精确到小数点后3位 (ShipperCode为SF且收件地址为港澳台地区,必填)
- */
-
-public class KdApiEOrder {
-
- //用户ID,快递鸟提供,注意保管,不要泄漏
- private static String EBusinessID="1788532";//即用户ID
-// private static String EBusinessID="test1788532";//即用户ID
- //API key,快递鸟提供,注意保管,不要泄漏
- private static String ApiKey="f4342e6c-5cfa-458f-997b-f973eb29eb1d";//即API key
-// private static String ApiKey="34f033ae-9c73-4b9a-899e-943a65fd86bf";//即API key
-
-
-// 电子面单
- private static String OnlineReqURL="https://api.kdniao.com/api/EOrderService";
-
-
-// 取消电子面单
-
- private static String ReqURL="https://api.kdniao.com/api/EOrderService";
-
-
- // 物流信息跟踪
- private String TrackReqURL="https://api.kdniao.com/api/dist";
-// private static String TrackReqURL="http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";
-
- // 即时查询物流信息
- private static String QueryReqURL="https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";
-// private static String QueryReqURL="http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";
-
-
-// public static void main(String[] args) {
-// try {
-// KdApiEOrder api = new KdApiEOrder();
-// System.out.println(api.orderOnlineByJson());
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-
- /**
- * 电子面单接口
- * 此接口用于向快递/快运公司下发订单并获取快递单号,返回电子面单html模板,通知快递员上门取件。
- * @return
- * @throws Exception
- */
- public static JSONArray orderOnlineByJson(List fmsOrderList) throws Exception{
- String RequestData= "";
- JSONArray jsonArray = new JSONArray();
- String cust = "";
- for(FMSOrderEntity fms : fmsOrderList){
- // 组装应用级参数
- RequestData= "{"+
- "'OrderCode': '" + fms.getOrderCode() + "',"+
- "'ShipperCode': '" + fms.getShipperCode() + "',";
- if("JD".equals(fms.getShipperCode())){
- cust = "'CustomerName': '010K1598220',"+
- "'CustomerPwd': '',";
- }
- if ("YD".equals(fms.getShipperCode())){
-// cust = "'CustomerName': '114198226272',"+
-// "'CustomerPwd': 'gcs5XavNGRVqbhUmHpnkDd7Fi3T9Ef',";
- cust = "'CustomerName': 'testyd',"+
- "'CustomerPwd': 'testydpwd',";
- }
-
- cust += "'MonthCode': '',"+
- "'SendSite': '',"+
- "'PayType': 1,"+
- "'MonthCode': '',"+
- "'ExpType': 1,"+
- "'Cost': 1.0,"+
- "'OtherCost': 1.0,"+
-// "'TemplateSize':'130'"+
- "'Sender': {"+
- "'Company': '众妙之门',"+
- "'Name': 'Taylor',"+
- "'Mobile': '12345678901',"+
- "'ProvinceName': '天津',"+
- "'CityName': '天津市',"+
- "'ExpAreaName': '南开区',"+
- "'Address': '天津市南开区融创中心中南广场东区2号楼605'"+
- "},"+
- "'Receiver': {"+
- "'Company': '',"+
- "'Name': '" + fms.getReceiverName() + "',"+
- "'Mobile': '" + fms.getReceiverMobile() + "',"+
- "'ProvinceName': '" + fms.getReceiverProvinceName() + "',"+
- "'CityName': '" + fms.getReceiverCityName() + "',"+
- "'ExpAreaName': '" + fms.getReceiverExpAreaName() + "',"+
- "'Address': '" + fms.getReceiverAddress() + "'"+
- "},"+
- "'Commodity': [" ;
- String s = "";
- for(FMSCommodity fmsCommodity : fms.getCommodityList() ){
- s += "{'GoodsName': '"+fmsCommodity.getGoodsName()+ "'},";
- }
- s = s.substring(0,s.lastIndexOf(','));
- String a = s + "],"+
- "'AddService': [],"+
- "'IsReturnPrintTemplate':1,"+
- "'Remark': "+ fms.getRemark()+""+
- "}";
-
- // 组装系统级参数
- Map params = new HashMap();
- params.put("RequestData", KdUtils.urlEncoder(RequestData + cust + a, "UTF-8"));
- params.put("EBusinessID", EBusinessID);
- params.put("RequestType", "1007");
-// params.put("RequestType", "1001");
- String dataSign=KdUtils.encrypt(RequestData + cust + a, ApiKey, "UTF-8");
- System.out.println(RequestData + a);
- params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8"));
- params.put("DataType", "2");
- // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
- String result= HttpClientUtils.kdSendPost(OnlineReqURL, params);
- jsonArray.add(result);
- }
- return jsonArray;
-
- }
-
- /**
- * 电子面单取消接口
- * 此接口用于取消“电子面单接口”下单成功的订单,回收快递单号。
- *
- * 应用级参数
- * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
- * ShipperCode String(10) R 快递公司编码
- * OrderCode String(30) R 订单编号
- * ExpNo String(30) R 快递单号
- * CustomerName String(50) R 电子面单客户号
- * CustomerPwd String(30) R 电子面单密码(顺丰不需要)
- *
- */
- @RequestMapping("/cancel")
- public static String cancelOrderByJson(@RequestParam Map param) throws Exception{
-
- // 组装应用级参数
- String RequestData= "{"+
- "'ShipperCode':" +param.get("ShipperCode")+","+
- "'OrderCode': "+param.get("orderSn")+","+
- "'ExpNo': '"+param.get("ExpNo")+"',"+
- "}";
- // 组装系统级参数
- Map params = new HashMap();
- params.put("RequestData", KdUtils.urlEncoder(RequestData, "UTF-8"));
- params.put("EBusinessID", EBusinessID);
- params.put("RequestType", "1147");
- String dataSign=KdUtils.encrypt(RequestData, ApiKey, "UTF-8");
- params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8"));
- params.put("DataType", "2");
- // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
- String result=HttpClientUtils.kdSendPost(ReqURL, params);
-
-// JSONObject json = JSONObject.parseObject(result);
-// if(json.get("Success").equals("true")){
-// // TODO 返回值为Success时 存入到系统中的 sys_interface_log 表
-//
-// }else{
-// // TODO 存入到系统中的 sys_interface_fail 表中
-// // TODO 存入interfaceType 值为 ‘2’ 用作以后人工干预重推 区分是什么接口
-//
-// }
-
- //根据公司业务处理返回的信息......
- return result;
- }
-
-
- /**
- *
- * 即时查询接口(增值版)
- * 此接口用于向快递公司实时查询物流轨迹信息。
- *
- * 应用级参数
- * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
- * OrderCode String(30) O 订单编号
- * CustomerName String(50) C ShipperCode为SF时必填,对应寄件人/收件人手机号后四位;ShipperCode为其他快递时,可不填或保留字段,不可传值
- * ShipperCode String(10) R 快递公司编码 详细编码参考《快递鸟接口支持快递公司编码.xlsx》
- * LogisticCode String(30) R 快递单号
- */
- @RequestMapping("/queryOrder")
- public static String queryOrderOnlineByJson(@RequestParam Map param) throws Exception{
- // 组装应用级参数
- String RequestData= "{"+
- "'ShipperCode': '"+ param.get("ShipperCode") +"',"+
- "'LogisticCode': '"+ param.get("LogisticCode") +"',"+
- "}";
- // 组装系统级参数
- Map params = new HashMap();
- params.put("RequestData", KdUtils.urlEncoder(RequestData, "UTF-8"));
- params.put("EBusinessID", EBusinessID);
- params.put("RequestType", "8001");//在途监控即时查询接口指令8001/地图版即时查询接口指令8003
- String dataSign=KdUtils.encrypt(RequestData, ApiKey, "UTF-8");
- params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8"));
- params.put("DataType", "2");
- // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
- String result=HttpClientUtils.kdSendPost(QueryReqURL, params);
- return result;
- }
-
- /**
- * 物流跟踪接口(增值版)
- * 此接口用于向快递鸟订阅物流轨迹信息。
- *
- * 应用级参数
- * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
- * Callback String(50) O 用户自定义回传字段
- * ShipperCode String(10) R 快递公司编码 详细编码参考《快递鸟接口支持快递公司编码.xlsx》
- * LogisticCode String(30) R 快递单号
- * CustomerName String(50) C ShipperCode为SF时必填,对应寄件人/收件人手机号后四位;ShipperCode为其他快递时,可不填或保留字段,不可传值
-
- */
- @RequestMapping("/track")
- public String trackOrderByJson(@RequestParam Map param) throws Exception{
- // 组装应用级参数
- String RequestData= "{"+
- "'Callback':'OrderCode',"+
- "'ShipperCode':'" + param.get("ShipperCode") + "',"+
- "'LogisticCode':'" + param.get("LogisticCode") + "',"+
- "}";
- // 组装系统级参数
- Map params = new HashMap();
- params.put("RequestData", KdUtils.urlEncoder(RequestData, "UTF-8"));
- params.put("EBusinessID", EBusinessID);
- params.put("RequestType", "8008");//在途监控订阅接口指令8008/地图版订阅接口指令8005
-// params.put("RequestType", "8005");//在途监控订阅接口指令8008/地图版订阅接口指令8005
- String dataSign=KdUtils.encrypt(RequestData, ApiKey, "UTF-8");
- params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8"));
- params.put("DataType", "2");
- // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
- String result=HttpClientUtils.kdSendPost(TrackReqURL, params);
- return result;
- }
-
- /**
- *
- * 此接口用于快递鸟推送物流轨迹信息。
- * @return
- * @throws Exception
- */
- // TODO 后续编写 获取信息存库 调用消息队列 异步推送给 一路健康 or 疯子读书
- @RequestMapping("/pushOrder")
- public String subscribeOrderByJSON() throws Exception{
-
-
-// JSONObject json = JSONObject.parseObject(result);
-// if(json.get("Success").equals("true")){
-// // TODO 返回值为Success时 存入到系统中的 sys_interface_log 表
-//
-// }else{
-// // TODO 存入到系统中的 sys_interface_fail 表中
-// // TODO 存入interfaceType 值为 ‘5’ 用作以后人工干预重推 区分是什么接口
-//
-// }
- return "";
- }
-
-}
diff --git a/src/main/java/com/peanut/common/utils/HttpClientUtils.java b/src/main/java/com/peanut/common/utils/HttpClientUtils.java
index f661ddbd..935b0e2a 100644
--- a/src/main/java/com/peanut/common/utils/HttpClientUtils.java
+++ b/src/main/java/com/peanut/common/utils/HttpClientUtils.java
@@ -2,52 +2,46 @@ package com.peanut.common.utils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.RequestConfig.Builder;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
-import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
-import java.io.*;
-import java.net.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.SocketTimeoutException;
+import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
-import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
public class HttpClientUtils {
- public static final int connTimeout=10000;
- public static final int readTimeout=10000;
- public static final String charset="UTF-8";
- private static HttpClient client = null;
+ public static final int connTimeout = 10000;
+ public static final int readTimeout = 10000;
+ public static final String charset = "UTF-8";
+ private static HttpClient client;
private static final Logger log = LoggerFactory.getLogger(HttpClientUtils.class);
static {
@@ -57,24 +51,6 @@ public class HttpClientUtils {
client = HttpClients.custom().setConnectionManager(cm).build();
}
- public static String postParameters(String url, String parameterStr) throws ConnectTimeoutException, SocketTimeoutException, Exception{
- return post(url,parameterStr,"application/x-www-form-urlencoded",charset,connTimeout,readTimeout);
- }
-
- public static String postParameters(String url, String parameterStr,String charset, Integer connTimeout, Integer readTimeout) throws ConnectTimeoutException, SocketTimeoutException, Exception{
- return post(url,parameterStr,"application/x-www-form-urlencoded",charset,connTimeout,readTimeout);
- }
-
- public static String postParameters(String url, Map params) throws ConnectTimeoutException,
- SocketTimeoutException, Exception {
- return postForm(url, params, null, connTimeout, readTimeout);
- }
-
- public static String postParameters(String url, Map params, Integer connTimeout,Integer readTimeout) throws ConnectTimeoutException,
- SocketTimeoutException, Exception {
- return postForm(url, params, null, connTimeout, readTimeout);
- }
-
public static String get(String url) throws Exception {
return get(url, charset, null, null);
}
@@ -87,9 +63,9 @@ public class HttpClientUtils {
* 发送一个 Post 请求, 使用指定的字符集编码.
*
* @param url
- * @param body RequestBody
- * @param mimeType 例如 application/xml "application/x-www-form-urlencoded" a=1&b=2&c=3
- * @param charset 编码
+ * @param body RequestBody
+ * @param mimeType 例如 application/xml "application/x-www-form-urlencoded" a=1&b=2&c=3
+ * @param charset 编码
* @param connTimeout 建立链接超时时间,毫秒.
* @param readTimeout 响应超时时间,毫秒.
* @return ResponseBody, 使用指定的字符集编码.
@@ -97,7 +73,7 @@ public class HttpClientUtils {
* @throws SocketTimeoutException 响应超时
* @throws Exception
*/
- public static String post(String url, String body, String mimeType,String charset, Integer connTimeout, Integer readTimeout)
+ public static String post(String url, String body, String mimeType, String charset, Integer connTimeout, Integer readTimeout)
throws ConnectTimeoutException, SocketTimeoutException, Exception {
HttpClient client = null;
HttpPost post = new HttpPost(url);
@@ -130,7 +106,7 @@ public class HttpClientUtils {
result = IOUtils.toString(res.getEntity().getContent(), charset);
} finally {
post.releaseConnection();
- if (url.startsWith("https") && client != null&& client instanceof CloseableHttpClient) {
+ if (url.startsWith("https") && client instanceof CloseableHttpClient) {
((CloseableHttpClient) client).close();
}
}
@@ -138,73 +114,11 @@ public class HttpClientUtils {
}
- /**
- * 提交form表单
- *
- * @param url
- * @param params
- * @param connTimeout
- * @param readTimeout
- * @return
- * @throws ConnectTimeoutException
- * @throws SocketTimeoutException
- * @throws Exception
- */
- public static String postForm(String url, Map params, Map headers, Integer connTimeout,Integer readTimeout) throws ConnectTimeoutException,
- SocketTimeoutException, Exception {
-
- HttpClient client = null;
- HttpPost post = new HttpPost(url);
- try {
- if (params != null && !params.isEmpty()) {
- List formParams = new ArrayList();
- Set> entrySet = params.entrySet();
- for (Entry entry : entrySet) {
- formParams.add(new BasicNameValuePair(entry.getKey(), entry.toString()));
- }
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
- post.setEntity(entity);
- }
-
- if (headers != null && !headers.isEmpty()) {
- for (Entry entry : headers.entrySet()) {
- post.addHeader(entry.getKey(), entry.getValue());
- }
- }
- // 设置参数
- Builder customReqConf = RequestConfig.custom();
- if (connTimeout != null) {
- customReqConf.setConnectTimeout(connTimeout);
- }
- if (readTimeout != null) {
- customReqConf.setSocketTimeout(readTimeout);
- }
- post.setConfig(customReqConf.build());
- HttpResponse res = null;
- if (url.startsWith("https")) {
- // 执行 Https 请求.
- client = createSSLInsecureClient();
- res = client.execute(post);
- } else {
- // 执行 Http 请求.
- client = HttpClientUtils.client;
- res = client.execute(post);
- }
- return IOUtils.toString(res.getEntity().getContent(), "UTF-8");
- } finally {
- post.releaseConnection();
- if (url.startsWith("https") && client != null
- && client instanceof CloseableHttpClient) {
- ((CloseableHttpClient) client).close();
- }
- }
- }
-
/**
* 发送一个 GET 请求
*/
- public static String get(String url, String charset, Integer connTimeout,Integer readTimeout)
- throws ConnectTimeoutException,SocketTimeoutException, Exception {
+ public static String get(String url, String charset, Integer connTimeout, Integer readTimeout)
+ throws Exception {
HttpClient client = null;
HttpGet get = new HttpGet(url);
@@ -248,7 +162,7 @@ public class HttpClientUtils {
@SuppressWarnings("unused")
private static String getCharsetFromResponse(HttpResponse ressponse) {
// Content-Type:text/html; charset=GBK
- if (ressponse.getEntity() != null && ressponse.getEntity().getContentType() != null && ressponse.getEntity().getContentType().getValue() != null) {
+ if (ressponse.getEntity() != null && ressponse.getEntity().getContentType() != null && ressponse.getEntity().getContentType().getValue() != null) {
String contentType = ressponse.getEntity().getContentType().getValue();
if (contentType.contains("charset=")) {
return contentType.substring(contentType.indexOf("charset=") + 8);
@@ -259,16 +173,13 @@ public class HttpClientUtils {
/**
* 创建 SSL连接
+ *
* @return
* @throws GeneralSecurityException
*/
private static CloseableHttpClient createSSLInsecureClient() throws GeneralSecurityException {
try {
- SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
- public boolean isTrusted(X509Certificate[] chain,String authType) throws CertificateException {
- return true;
- }
- }).build();
+ SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (chain, authType) -> true).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() {
@@ -278,18 +189,16 @@ public class HttpClientUtils {
}
@Override
- public void verify(String host, SSLSocket ssl)
- throws IOException {
+ public void verify(String host, SSLSocket ssl) {
}
@Override
- public void verify(String host, X509Certificate cert)
- throws SSLException {
+ public void verify(String host, X509Certificate cert) {
}
@Override
public void verify(String host, String[] cns,
- String[] subjectAlts) throws SSLException {
+ String[] subjectAlts) {
}
});
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
@@ -300,83 +209,11 @@ public class HttpClientUtils {
}
- /**
- * 向指定 URL 发送POST方法的请求
- *
- * @param url 发送请求的 URL
- * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
- * @return 所代表远程资源的响应结果
- */
- public static String sendPost(String url, String param)
- {
- PrintWriter out = null;
- BufferedReader in = null;
- StringBuilder result = new StringBuilder();
- try
- {
- log.info("sendPost - {}", url);
- URL realUrl = new URL(url);
- URLConnection conn = realUrl.openConnection();
- conn.setRequestProperty("accept", "*/*");
- conn.setRequestProperty("connection", "Keep-Alive");
- conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
- conn.setRequestProperty("Accept-Charset", "utf-8");
- conn.setRequestProperty("contentType", "utf-8");
- conn.setDoOutput(true);
- conn.setDoInput(true);
- out = new PrintWriter(conn.getOutputStream());
- out.print(param);
- out.flush();
- in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
- String line;
- while ((line = in.readLine()) != null)
- {
- result.append(line);
- }
- log.info("recv - {}", result);
- }
- catch (ConnectException e)
- {
- log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
- }
- catch (SocketTimeoutException e)
- {
- log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
- }
- catch (IOException e)
- {
- log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
- }
- catch (Exception e)
- {
- log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
- }
- finally
- {
- try
- {
- if (out != null)
- {
- out.close();
- }
- if (in != null)
- {
- in.close();
- }
- }
- catch (IOException ex)
- {
- log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
- }
- }
- return result.toString();
- }
-
-
/**
* 快递鸟向指定 URL 发送POST方法的请求
* url 发送请求的 URL
* params 请求的参数集合
+ *
* @return 远程资源的响应结果
*/
public static String kdSendPost(String url, Map params) {
@@ -385,7 +222,7 @@ public class HttpClientUtils {
StringBuilder result = new StringBuilder();
try {
URL realUrl = new URL(url);
- HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();
+ HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
@@ -399,27 +236,27 @@ public class HttpClientUtils {
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.connect();
// 获取URLConnection对象对应的输出流
- out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
+ out = new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8);
// 发送请求参数
if (params != null) {
StringBuilder param = new StringBuilder();
for (Map.Entry entry : params.entrySet()) {
- if(param.length()>0){
+ if (param.length() > 0) {
param.append("&");
}
param.append(entry.getKey());
param.append("=");
param.append(entry.getValue());
- log.info(entry.getKey()+":"+entry.getValue());
+ log.info(entry.getKey() + ":" + entry.getValue());
}
- log.info("param:"+param.toString());
+ log.info("param:" + param.toString());
out.write(param.toString());
}
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
- new InputStreamReader(conn.getInputStream(), "UTF-8"));
+ new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
String line;
while ((line = in.readLine()) != null) {
result.append(line);
@@ -428,22 +265,18 @@ public class HttpClientUtils {
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
- finally{
- try{
- if(out!=null){
+ finally {
+ try {
+ if (out != null) {
out.close();
}
- if(in!=null){
+ if (in != null) {
in.close();
}
- }
- catch(IOException ex){
+ } catch (IOException ex) {
ex.printStackTrace();
}
}
return result.toString();
}
-
-
}
-
diff --git a/src/main/java/com/peanut/common/utils/KdUtils.java b/src/main/java/com/peanut/common/utils/KdUtils.java
index 1f5140fd..252e1da0 100644
--- a/src/main/java/com/peanut/common/utils/KdUtils.java
+++ b/src/main/java/com/peanut/common/utils/KdUtils.java
@@ -43,8 +43,7 @@ public class KdUtils {
}
public static String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
- String result = URLEncoder.encode(str, charset);
- return result;
+ return URLEncoder.encode(str, charset);
}
/**
@@ -55,7 +54,7 @@ public class KdUtils {
* @throws UnsupportedEncodingException ,Exception
* @return DataSign签名
*/
- public static String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception
+ public static String encrypt (String content, String keyValue, String charset) throws Exception
{
if (keyValue != null)
{
diff --git a/src/main/java/com/peanut/common/utils/ReadProvinceUtil.java b/src/main/java/com/peanut/common/utils/ReadProvinceUtil.java
index c69bc00e..1d7295ec 100644
--- a/src/main/java/com/peanut/common/utils/ReadProvinceUtil.java
+++ b/src/main/java/com/peanut/common/utils/ReadProvinceUtil.java
@@ -3,9 +3,9 @@ package com.peanut.common.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.peanut.modules.book.entity.CityEntity;
-import com.peanut.modules.book.entity.CountyEntity;
-import com.peanut.modules.book.entity.ProvinceEntity;
+import com.peanut.modules.book.entity.City;
+import com.peanut.modules.book.entity.County;
+import com.peanut.modules.book.entity.Province;
import org.apache.commons.io.FileUtils;
import java.io.File;
@@ -14,7 +14,7 @@ import java.util.Date;
import java.util.List;
public class ReadProvinceUtil {
- public static List getFile(String filePath) {
+ public static List getFile(String filePath) {
JSONArray proJsonArray = null;
JSONArray cityJsonArray = null;
JSONArray countyJsonArray = null;
@@ -23,9 +23,9 @@ public class ReadProvinceUtil {
JSONObject countyJson = null;
Date date = new Date();
- List provinceList = null;
- List cityList = null;
- List countyList = null;
+ List provinceList = null;
+ List cityList = null;
+ List countyList = null;
// String path = request.getSession().getServletContext().getRealPath("/");
// path = path + filePath;
@@ -39,29 +39,29 @@ public class ReadProvinceUtil {
if (proJson != null) {
// 取出数据
proJsonArray = proJson.getJSONArray("china");
- provinceList = new ArrayList();
+ provinceList = new ArrayList();
if (proJsonArray != null) {
for (int i = 0; i < proJsonArray.size(); i++) {
- ProvinceEntity province = new ProvinceEntity();
+ Province province = new Province();
JSONObject temp = proJsonArray.getJSONObject(i);
province.setProvName(temp.getString("name"));
province.setCreateDate(date);
province.setRegionCode(temp.getString("code"));
cityJsonArray = JSONArray.parseArray(temp.getString("cityList"));
- cityList = new ArrayList();
+ cityList = new ArrayList();
if (cityJsonArray != null) {
for (int j = 0; j < cityJsonArray.size(); j++) {
- CityEntity city = new CityEntity();
+ City city = new City();
cityJson = cityJsonArray.getJSONObject(j);
city.setCityName(cityJson.getString("name"));
city.setRegionCode(cityJson.getString("code"));
city.setCreateDate(date);
countyJsonArray = JSONArray.parseArray(cityJson.getString("areaList"));
- countyList = new ArrayList();
+ countyList = new ArrayList();
if (countyJsonArray != null) {
for (int k = 0; k < countyJsonArray.size(); k++) {
- CountyEntity county = new CountyEntity();
+ County county = new County();
countyJson = countyJsonArray.getJSONObject(k);
county.setCountyName(countyJson.getString("name"));
county.setRegionCode(countyJson.getString("code"));
diff --git a/src/main/java/com/peanut/config/Constants.java b/src/main/java/com/peanut/config/Constants.java
index a2e9821e..de6e4a8f 100644
--- a/src/main/java/com/peanut/config/Constants.java
+++ b/src/main/java/com/peanut/config/Constants.java
@@ -56,4 +56,33 @@ public class Constants {
* 购买方式 - 购物车
*/
public static final String BUY_TYPE_CART = "1";
+
+ /**
+ * 快递鸟 API key
+ */
+ public static final String EXPRESS_API_KEY = "f4342e6c-5cfa-458f-997b-f973eb29eb1d";
+ /**
+ * business ID
+ */
+ public static final String EXPRESS_BUSINESS_ID = "1788532";
+ /**
+ * 顺丰月付码
+ */
+ public static final String EXPRESS_SF_MONTH_CODE = "0226032007";
+ /**
+ * 快递接口指令-下单
+ */
+ public static final String EXPRESS_REQUEST_TYPE_PLACE_ORDER = "1007";
+ /**
+ * 快递接口指令-下单
+ */
+ public static final String EXPRESS_REQUEST_TYPE_QUERY = "1002";
+ /**
+ * 快递接口 - 下单 URL
+ */
+ public static final String EXPRESS_PLACE_ORDER_URL = "https://api.kdniao.com/api/EOrderService";
+ /**
+ * 快递接口 - 查询 URL
+ */
+ public static final String EXPRESS_QUERY_URL = "https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";
}
\ No newline at end of file
diff --git a/src/main/java/com/peanut/modules/book/controller/BookClockinCommentController.java b/src/main/java/com/peanut/modules/book/controller/BookClockinCommentController.java
deleted file mode 100644
index ca8c33ee..00000000
--- a/src/main/java/com/peanut/modules/book/controller/BookClockinCommentController.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.peanut.modules.book.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.peanut.common.utils.PageUtils;
-import com.peanut.common.utils.R;
-import com.peanut.modules.book.entity.BookClockinCommentEntity;
-import com.peanut.modules.book.entity.BookClockInEntity;
-import com.peanut.modules.book.entity.BookClockinPunchEntity;
-import com.peanut.modules.book.service.BookClockinCommentService;
-import com.peanut.modules.book.service.BookClockinPunchService;
-import com.peanut.modules.book.service.BookClockInService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import java.util.Arrays;
-import java.util.Map;
-
-/**
- * 签到信息用户评论
- *
- */
-
-@RestController
-@RequestMapping("clockin/comment")
-public class BookClockinCommentController {
-
- @Autowired
- private BookClockinCommentService bookClockinCommentService;
- @Autowired
- private BookClockinPunchService bookClockinPunchService;
- @Autowired
- private BookClockInService bookClockinService;
-
- /**
- * 列表 倒叙
- */
- @RequestMapping("/applist")
- public R applist(@RequestParam Map params){
- PageUtils page = bookClockinCommentService.queryPage(params);
- return R.ok().put("page", page);
- }
-
-
- /**
- * 信息
- */
- @RequestMapping("/info/{id}")
- public R info(@PathVariable("id") Integer id){
- BookClockinCommentEntity commentEntity = bookClockinCommentService.getById(id);
-
- return R.ok().put("commentEntity", commentEntity);
- }
-
- /**
- * 保存
- */
- @RequestMapping("/save")
- public R save(@RequestBody BookClockinCommentEntity clockinComment){
- Integer bookid1 = clockinComment.getBookId();
- Integer userId = clockinComment.getUserId();
- Integer taskId = clockinComment.getTaskId();
-
-
- BookClockinCommentEntity bookClockinCommentEntity = bookClockinCommentService.getBaseMapper().selectOne(new QueryWrapper()
- .eq("book_id", bookid1)
- .eq("user_id", userId)
- .eq("task_id", taskId)
-
- );
- BookClockinPunchEntity ClockinCommen = bookClockinPunchService.getBaseMapper().selectOne(new QueryWrapper()
- .eq("book_id", bookid1)
- .eq("user_id", userId)
- .eq("t_id", taskId)
-
- );
-
-
-
- if (bookClockinCommentEntity !=null) {
- return R.error("该信息允许发布一条内容,请勿重复发布");
- }
-
- if (ClockinCommen!=null) {
- clockinComment.setPid(1);
- }
-
- bookClockinCommentService.save(clockinComment);
- return R.ok();
- }
-
-
- /**
- * 保存
- */
- @RequestMapping("/replysave")
- public R replysave(@RequestBody BookClockinCommentEntity clockinComment) {
- Integer bookid = clockinComment.getBookId();
- Integer userId = clockinComment.getUserId();
- Integer pid = clockinComment.getPid();
- BookClockInEntity bookClockinEntity = bookClockinService.getBaseMapper().selectOne(new QueryWrapper()
- .eq("id",pid)
- );
- clockinComment.setDelFlag(0);
- bookClockinCommentService.save(clockinComment);
-
- return R.ok();
- }
-
-
-
-
-
-
-
-
- /**
- * 修改
- */
- @RequestMapping("/update")
- public R update(@RequestBody BookClockinCommentEntity clockinComment){
-
- bookClockinCommentService.updateById(clockinComment);
- return R.ok();
- }
-
-
- /**
- * 删除
- */
- @RequestMapping("/delete")
- public R delete(@RequestBody Integer[] ids){
- bookClockinCommentService.removeByIds(Arrays.asList(ids));
-
- return R.ok();
- }
-
-
-
-
-
-}
-
-
-
-
diff --git a/src/main/java/com/peanut/modules/book/controller/BookClockinController.java b/src/main/java/com/peanut/modules/book/controller/BookClockinController.java
deleted file mode 100644
index bb2953c9..00000000
--- a/src/main/java/com/peanut/modules/book/controller/BookClockinController.java
+++ /dev/null
@@ -1,350 +0,0 @@
-package com.peanut.modules.book.controller;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.peanut.common.utils.PageUtils;
-import com.peanut.common.utils.R;
-import com.peanut.modules.book.entity.*;
-import com.peanut.modules.book.service.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import java.util.*;
-/**
- * 签到内容信息
- *
- */
-@RestController
-@RequestMapping("book/clockin")
-public class BookClockinController {
- @Autowired
- private BookClockInService bookClockinService;
- @Autowired
- private BookTaskService bookTaskService;
- @Autowired
- private BookClockinCommentService bookClockinCommentService;
- @Autowired
- private MyUserService myUserService;
- @Autowired
- private BookService bookService;
- @Autowired
- private BookClockinPunchService bookClockinPunchService;
- /**
- * 列表 app post请求
- */
- @RequestMapping("/applistSS")
- public R applist(@RequestParam Map params) {
- PageUtils page = bookClockinService.queryPage(params);
-
- return R.ok().put("page", page);
- }
-
-
- /**
- * 查看全部评价
- */
- @RequestMapping("/applist")
- public R applist(@RequestParam("bookid") String bookid,
- @RequestParam("taskid") String taskid) {
-
- List bookClockinEntityList = bookClockinService.getBaseMapper().selectList(new QueryWrapper()
- .eq("book_id", bookid).eq("task_id", taskid));
- List list = new ArrayList<>();
- for (BookClockInEntity bookClockinEntity : bookClockinEntityList) {
- Map map = new HashMap<>();
- String name = "";
- String avatar="";
- Integer id2 =null;
- Integer userId = bookClockinEntity.getUserId();
- Integer taskId = bookClockinEntity.getTaskId();
- Integer bookId = bookClockinEntity.getBookId();
- String conTent = bookClockinEntity.getContent();
- Integer id1 = bookClockinEntity.getId();
- String images = (String)bookClockinEntity.getImages();
- Date createTime = bookClockinEntity.getCreateTime();
- List id = myUserService.getBaseMapper().selectList(new QueryWrapper().eq("id", userId));
- for (MyUserEntity user : id) {
- name = user.getNickname();
- id2 = user.getId();
- avatar = user.getAvatar();
- }
-
- //评论信息
- map.put("userid", id2);
- map.put("name", name);
- map.put("avatar", avatar);
- map.put("bookid", bookId);
- map.put("taskId", taskId);
- map.put("content", conTent);
- map.put("images", images);
- map.put("createdate", createTime);
- list.add(map);
- }
- Collections.reverse(list);
- return R.ok().put("list", list);
- }
-
-
-
-
-
- /**
- * 列表 后台get请求
- */
- @RequestMapping("/list")
- public R list(@RequestParam Map params) {
- PageUtils page = bookClockinService.queryPage(params);
-
- return R.ok().put("page", page);
- }
-
-
- /**
- * 信息
- */
- @RequestMapping("/info/{id}")
- public R info(@PathVariable("id") Integer id) {
- BookClockInEntity bookClockinEntity = bookClockinService.getById(id);
- return R.ok().put("bookBuyConfig", bookClockinEntity);
- }
-
- /**
- * 保存
- */
- @RequestMapping("/save")
- public R save(@RequestBody BookClockInEntity bookClockinEntity) {
-
- Integer bookId = bookClockinEntity.getBookId();
- Integer userId = bookClockinEntity.getUserId();
- Integer taskId = bookClockinEntity.getTaskId();
- Integer dayId = bookClockinEntity.getDayId();
- BookClockinPunchEntity bookClockinPunchEntity = bookClockinPunchService.getBaseMapper().selectOne(new QueryWrapper()
- .eq("book_id", bookId)
- .eq("t_id", taskId)
- .eq("days", dayId)
- .eq("user_id", userId)
- );
- if (bookClockinPunchEntity==null) {
- return R.error("当天打卡内容未发布");
- }
- BookClockInEntity bookClockin = bookClockinService.getBaseMapper().selectOne(new QueryWrapper()
- .eq("book_id", bookId)
- .eq("task_id", taskId)
- .eq("day_id", dayId)
- .eq("user_id", userId)
- );
- if (bookClockin!=null) {
- return R.error("您已参与第"+dayId+"天签到评论");
- }
- List