diff --git a/pom.xml b/pom.xml index a23cc8bd..51525805 100644 --- a/pom.xml +++ b/pom.xml @@ -98,14 +98,6 @@ com.baidu.ueditor 1.1.2-offical - - - com.github.kuaidi100-api - sdk - 1.0.12 - - - org.springframework.boot spring-boot-starter-validation @@ -115,11 +107,6 @@ spring-boot-configuration-processor true - - - - - com.baomidou mybatis-plus-boot-starter @@ -145,9 +132,6 @@ - - - com.aliyun @@ -419,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/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/modules/book/entity/ExpressOrder.java b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java index dc36f8dd..a787d50a 100644 --- a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java @@ -26,6 +26,18 @@ public class ExpressOrder { * 用户地址 ID */ private int userAddressId; + /** + * 订单号 + */ + private String orderId; + /** + * 快递公司代码 + */ + private String expressCompanyCode; + /** + * 备注 + */ + private String remark; /** * 快递费 */ diff --git a/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java b/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java index 2ebf1efb..d95cf7c1 100644 --- a/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java @@ -14,5 +14,11 @@ public interface ExpressOrderService extends IService { */ int insertNewExpressOrder(ExpressOrder expressOrder); + void placeExpressOrder(Integer userAddressId, ExpressOrder expressOrder); + +// void printDeliveryBill(); +// +// void expressRealTimeQuery(); + } diff --git a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java index a35b1f2d..cda9aa2d 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java @@ -263,6 +263,5 @@ public class BuyOrderServiceImpl extends ServiceImpl implements ExpressOrderService { + + @Value("${express.sender.senderName}") + private String senderName; + @Value("${express.sender.mobile}") + private String senderMobile; + @Value("${express.sender.provinceName}") + private String senderProvinceName; + @Value("${express.sender.cityName}") + private String senderCityName; + @Value("${express.sender.expAreaName}") + private String senderExpAreaName; + @Value("${express.sender.address}") + private String senderAddress; + @Autowired private ExpressOrderDao expressOrderDao; + @Autowired + private UserAddressService userAddressService; + + @Autowired + private CountyService countyService; + + @Autowired + private CityService cityService; + + @Autowired + private ProvinceService provinceService; + @Override public int insertNewExpressOrder(ExpressOrder expressOrder) { expressOrderDao.insertNewExpressOrder(expressOrder); return expressOrder.getId(); } - public void createExpressOrder() throws Exception { - ExpressUserInfoVo receiver = new ExpressUserInfoVo(); - receiver.setName("张三"); - receiver.setMobile("12345678910"); - receiver.setPrintAddr("广东省深圳市南山区科技南十二路"); - + @Override + public void placeExpressOrder(Integer userAddressId, ExpressOrder expressOrder) { + ExpressOrderRequestVo orderRequestVo = new ExpressOrderRequestVo(); + // 订单号 + orderRequestVo.setOrderCode(expressOrder.getOrderId()); + orderRequestVo.setShipperCode(expressOrder.getExpressCompanyCode()); + orderRequestVo.setPayType(3); + orderRequestVo.setExpType(1); + // 发货人 ExpressUserInfoVo sender = new ExpressUserInfoVo(); - sender.setName("李四"); - sender.setMobile("12345678910"); - sender.setPrintAddr("北京市海淀区xxx路"); + sender.setName(senderName); + sender.setMobile(senderMobile); + sender.setProvinceName(senderProvinceName); + sender.setCityName(senderCityName); + sender.setExpAreaName(senderExpAreaName); + sender.setAddress(senderAddress); + // 收货人 + UserAddress userAddress = userAddressService.getById(userAddressId); + ExpressUserInfoVo receiver = buildReceiverBasedOnUserAddress(userAddress); + orderRequestVo.setSender(sender); + orderRequestVo.setReceiver(receiver); + ExpressCommodityVo commodityVo = new ExpressCommodityVo(); + commodityVo.setGoodsName("书籍"); + List commodityVoList = new ArrayList<>(); + orderRequestVo.setCommodity(commodityVoList); + //orderRequestVo.setWeight(expressOrder.getTotalWeight()); + orderRequestVo.setRemark(expressOrder.getRemark()); - ExpressOrderRequestVo request = new ExpressOrderRequestVo(); - request.setKuaidicom(CompanyConstant.ZJS); - request.setCount(1); - request.setSiid(siid); - request.setTempId("60f6c17c7c223700131d8bc3"); - request.setSendMan(sender); - request.setRecMan(receiver); - request.setPrintType(PrintType.CLOUD); - - String param = new Gson().toJson(request); - String t = System.currentTimeMillis() + ""; - - PrintReq printReq = new PrintReq(); - printReq.setT(t); - printReq.setKey(key); - printReq.setSign(SignUtils.printSign(param, t, key, secret)); - printReq.setMethod(ApiInfoConstant.ORDER); - printReq.setParam(param); - - IBaseClient baseClient = new LabelV2(); - System.out.println(baseClient.execute(printReq)); } - public void testPrintOld() throws Exception { - RepeatPrintReq repeatPrintReq = new RepeatPrintReq(); - - repeatPrintReq.setTaskId("027B34AD22DE4F299643A13642B70D5F"); - - String param = new Gson().toJson(repeatPrintReq); - String t = System.currentTimeMillis() + ""; - - PrintReq printReq = new PrintReq(); - printReq.setT(t); - printReq.setKey(key); - printReq.setSign(SignUtils.printSign(param, t, key, secret)); - printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_OLD_METHOD); - printReq.setParam(param); - - IBaseClient baseClient = new LabelV2(); - System.out.println(baseClient.execute(printReq)); + private ExpressUserInfoVo buildReceiverBasedOnUserAddress(UserAddress userAddress) { + ExpressUserInfoVo vo = new ExpressUserInfoVo(); + vo.setName(userAddress.getConsigneeName()); + vo.setMobile(userAddress.getConsigneePhone()); + vo.setAddress(userAddress.getDetailAddress()); + String regionCode = userAddress.getRegionCode(); + QueryWrapper countyQueryWrapper = new QueryWrapper<>(); + countyQueryWrapper.eq("region_code", regionCode); + CountyEntity county = countyService.getOne(countyQueryWrapper); + vo.setExpAreaName(county.getCountyName()); + String cityRegionCode; + if (regionCode.startsWith("11") || regionCode.startsWith("12") || regionCode.startsWith("31") || regionCode.startsWith("50")) { + cityRegionCode = regionCode.substring(0, 1).concat("0000"); + } else { + cityRegionCode = regionCode.substring(0, 3).concat("00"); + } + QueryWrapper cityQueryWrapper = new QueryWrapper<>(); + cityQueryWrapper.eq("region_code", cityRegionCode); + CityEntity city = cityService.getOne(cityQueryWrapper); + vo.setCityName(city.getCityName()); + String provinceRegionCode = regionCode.substring(0, 1).concat("0000"); + QueryWrapper provinceQueryWrapper = new QueryWrapper<>(); + provinceQueryWrapper.eq("region_code", provinceRegionCode); + ProvinceEntity province = provinceService.getOne(provinceQueryWrapper); + vo.setProvinceName(province.getProvName()); + return vo; } } diff --git a/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java b/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java index 1865ceff..0629b9e1 100644 --- a/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java +++ b/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java @@ -9,8 +9,32 @@ import lombok.Data; */ @Data public class ExpressCommodityVo { + /** + * 商品名称 + */ private String GoodsName; + /** + * 商品编码 + */ private String GoodsCode; - private int Goodsquantity; - private double GoodsPrice; + /** + * 商品数量 + */ + private Integer Goodsquantity; + /** + * 商品价格 + */ + private Double GoodsPrice; + /** + * 商品重量 + */ + private Double GoodsWeight; + /** + * 商品描述 + */ + private String GoodsDesc; + /** + * 商品体积 + */ + private Double GoodsVol; } diff --git a/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java b/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java index 43abe52e..d708541a 100644 --- a/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java +++ b/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java @@ -1,11 +1,8 @@ package com.peanut.modules.book.vo; -import com.kuaidi100.sdk.contant.PrintType; -import com.kuaidi100.sdk.request.ManInfo; import lombok.Data; -import java.util.List; -import java.util.Map; +import java.util.List ; /** * @Description: 快递请求 Value Object @@ -31,7 +28,25 @@ public class ExpressOrderRequestVo { * 快递公司业务类型 */ private int ExpType; - - + /** + * 发货人 + */ + private ExpressUserInfoVo Sender; + /** + * 收货人 + */ + private ExpressUserInfoVo Receiver; + /** + * 货物信息 + */ + private List Commodity; + /** + * 重量 + */ + private Double Weight; + /** + * 备注 + */ + private String Remark; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e167c270..ef7a961b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -26,7 +26,7 @@ spring: pathmatch: matching-strategy: ANT_PATH_MATCHER # resources: -# add-mappings: false + # add-mappings: false output: ansi: enabled: always @@ -73,3 +73,13 @@ renren: spring.jackson.serialization.FAIL_ON_EMPTY_BEANS: false + +express: + sender: + senderName: 众妙之门 + mobile: + provinceName: 天津 + cityName: 天津 + expAreaName: 南开 + address: 融创中心中南广场东区2号楼605 +