From fb8ad9392d5ea43deaff90b1a9bedd316037bfdc Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 01 十一月 2024 12:00:40 +0800
Subject: [PATCH] 订单导入

---
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java        |  137 +++++++++++++
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java |   47 ++++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/Geocodes.java            |    2 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/CityInfoVO.java          |    6 
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/DemoDataListener.java      |   39 +++
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/HttpUtil.java                    |  312 +++++++++++++++++++++++++++++++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java     |    6 
 7 files changed, 546 insertions(+), 3 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
index 0972c3c..8b48a51 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
@@ -189,14 +189,16 @@
     public static Result<CityInfoVO> getAddressInfo(String address) {
         // 返回起始地startAddr与目的地endAddr之间的距离,单位:米
         String queryUrl = "https://restapi.amap.com/v3/geocode/geo?address=" + address
-                + "&key=" + GAO_DE_KEY;
+                + "&output=json&key=" + GAO_DE_KEY;
         String queryResult = getResponse(queryUrl);
         GaoDeAddressInfoVO data = JSONObject.parseObject(queryResult, GaoDeAddressInfoVO.class);
         List<Geocodes> geocodes = data.getGeocodes();
         Geocodes info = geocodes.get(0);
         String adcode = info.getAdcode();
         String city = info.getCity();
-        return Result.succeed(new CityInfoVO(city, adcode), "距离计算成功!");
+        String location = info.getLocation();
+        String[] split = location.split(",");
+        return Result.succeed(new CityInfoVO(city, adcode,Double.valueOf(split[0]),Double.valueOf(split[1])), "距离计算成功!");
     }
 
     /**
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/CityInfoVO.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/CityInfoVO.java
index 24085a4..23b9f83 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/CityInfoVO.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/CityInfoVO.java
@@ -13,12 +13,16 @@
     private String city;
 
     private String code;
+    private Double longitude;
+    private Double latitude;
 
     public CityInfoVO() {
     }
 
-    public CityInfoVO(String city, String code) {
+    public CityInfoVO(String city, String code,Double longitude,Double latitude) {
         this.city = city;
         this.code = code;
+        this.longitude = longitude;
+        this.latitude = latitude;
     }
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/Geocodes.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/Geocodes.java
index b978f35..5313462 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/Geocodes.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/vo/Geocodes.java
@@ -24,4 +24,6 @@
 
     private String adcode;
 
+    private String location;
+
 }
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
index 3597c00..a06e937 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
@@ -1,13 +1,19 @@
 package com.ruoyi.admin.controller;
 
 
+import cn.hutool.http.HttpStatus;
+import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.admin.entity.*;
+import com.ruoyi.admin.importExcel.DemoDataListener;
+import com.ruoyi.admin.importExcel.FrozenBuckleImportDTO;
 import com.ruoyi.admin.netty.NettyChannelMap;
 import com.ruoyi.admin.netty.NettyWebSocketController;
 import com.ruoyi.admin.service.*;
 import com.ruoyi.admin.utils.DescribeInstances;
+import com.ruoyi.admin.utils.HttpUtil;
 import com.ruoyi.admin.vo.OrderByServeRecordVO;
 import com.ruoyi.admin.vo.OrderDetailVO;
 import com.ruoyi.admin.vo.OrderReasinDto;
@@ -16,7 +22,10 @@
 import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.GaoDeMapUtil;
 import com.ruoyi.common.core.utils.SnowflakeIdWorker;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.core.vo.CityInfoVO;
 import com.ruoyi.common.core.vo.PaperInVo;
 import com.ruoyi.common.core.vo.PrintDto;
 import com.ruoyi.common.redis.service.RedisService;
@@ -37,8 +46,11 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
+import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -47,13 +59,17 @@
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * <p>
@@ -63,6 +79,7 @@
  * @author hjl
  * @since 2024-05-29
  */
+@Slf4j
 @RestController
 @RequestMapping("/order")
 @Api(tags = {"后台-订单管理"})
@@ -739,6 +756,126 @@
 //        return R.ok(list);
 //    }
 
+    /**
+     * 管理后台-订单导入
+     */
+    @ApiOperation(value = "订单导入", tags = {"管理后台"})
+    @PostMapping(value = "/importOrder")
+    public R<String> importOrder(@RequestParam("file") MultipartFile file) {
 
+        if (!file.isEmpty()) {
+            //文件名称
+            int begin = Objects.requireNonNull(file.getOriginalFilename()).indexOf(".");
+            //文件名称长度
+            int last = file.getOriginalFilename().length();
+            //判断文件格式是否正确
+            String fileName = file.getOriginalFilename().substring(begin, last);
+            if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) {
+                throw new IllegalArgumentException("上传文件格式错误");
+            }
+        } else {
+            throw new IllegalArgumentException("文件不能为空");
+        }
+        try (InputStream inputStream = file.getInputStream()) {
+            return simpleRead(inputStream);
+        } catch (IOException e) {
+            System.out.println(e.getMessage());
+        }
+        return R.ok();
+    }
+
+
+    /**
+     * 最简单的读的监听器
+     */
+    private R<String> simpleRead(InputStream inputStream){
+        //获取正确数据
+        ArrayList<FrozenBuckleImportDTO> successArrayList = new ArrayList<>();
+        //获取错误数据
+        EasyExcel.read(inputStream)
+                .head(FrozenBuckleImportDTO.class)
+                .registerReadListener(new DemoDataListener(
+                        // 监听器中doAfterAllAnalysed执行此方法;所有读取完成之后处理逻辑
+                        successArrayList::addAll))
+                // 设置sheet,默认读取第一个
+                .sheet()
+                // 设置标题(字段列表)所在行数
+                .headRowNumber(2)
+                .doRead();
+        System.err.println(successArrayList);
+
+        List<Site> sites = siteService.list(Wrappers.lambdaQuery(Site.class).eq(Site::getIsDelete, 0));
+        List<MasterWorker> masterWorkers = masterWorkerService.list(Wrappers.lambdaQuery(MasterWorker.class).eq(MasterWorker::getIsDelete, 0));
+        List<RecoveryServe> recoveryServes =recoveryServeService.list(Wrappers.lambdaQuery(RecoveryServe.class).eq(RecoveryServe::getIsDelete, 0));
+
+        for (FrozenBuckleImportDTO frozenBuckleImportDTO : successArrayList) {
+            OrderRequest order = new OrderRequest();
+            BeanUtils.copyProperties(frozenBuckleImportDTO,order);
+            String province = frozenBuckleImportDTO.getProvince();
+            String city = frozenBuckleImportDTO.getCity();
+            String area = frozenBuckleImportDTO.getArea();
+            String address = frozenBuckleImportDTO.getReservationAddress();
+
+            // 解析地址经纬度
+            CityInfoVO cityInfoVO = GaoDeMapUtil.getAddressInfo(province + city + area + address).getDatas();
+            String areaCode = cityInfoVO.getCode();
+            String provinceCode = areaCode.substring(0, 2) + "0000";
+            String cityCode = areaCode.substring(0, 4) + "00";
+            order.setProvinceCode(provinceCode);
+            order.setCityCode(cityCode);
+            order.setAreaCode(areaCode);
+            order.setLongitude(cityInfoVO.getLongitude());
+            order.setLatitude(cityInfoVO.getLatitude());
+
+            // 站点信息
+            Site site = sites.stream().filter(e -> e.getSiteName().equals(frozenBuckleImportDTO.getSiteName())).findFirst().orElse(null);
+            if(Objects.nonNull(site)){
+                order.setSiteId(site.getId());
+            }
+            // 师傅信息
+            if (StringUtils.hasLength(order.getServerName())) {
+                MasterWorker masterWorker = masterWorkers.stream().filter(e -> e.getRealName().equals(frozenBuckleImportDTO.getServerName())).findFirst().orElse(null);
+                if(Objects.nonNull(masterWorker)){
+                    order.setServerId(masterWorker.getId());
+                    order.setServerPhone(masterWorker.getPhone());
+                }
+                order.setAcceptTime(new Date());
+                // 待上门
+                order.setState(Constants.ONE);
+            } else {
+                // 待派单状态
+                order.setState(Constants.ZERO);
+            }
+            // 后台订单
+            order.setType(Constants.ONE);
+            order.setSubsidy(BigDecimal.ZERO);
+            order.setOrderNumber(String.valueOf(SNOW_FLAKE_ID_WORKER.nextId()));
+            // 回收服务信息
+            RecoveryServe recoveryServe = recoveryServes.stream().filter(e->e.getServeName().equals(frozenBuckleImportDTO.getServeName())).findFirst().orElse(null);
+            if(Objects.nonNull(recoveryServe)){
+                order.setServeId(recoveryServe.getId());
+                order.setServePrice(recoveryServe.getDefaultPrice());
+            }
+            RecoveryServePrice one = recoveryServePriceService.lambdaQuery().eq(RecoveryServePrice::getCity, order.getCityCode()).eq(RecoveryServePrice::getRecoveryServeId, order.getServeId()).eq(BaseEntity::getIsDelete, 0).one();
+            if (one==null) {
+                order.setOrderMoney(recoveryServe.getDefaultPrice());
+            }else {
+                order.setOrderMoney(one.getRecoveryPrice());
+            }
+            Boolean data = orderClient.save(order).getData();
+            if (null == data) {
+                return R.fail(orderClient.save(order).getMsg());
+            }
+            System.out.println("服务人员id:" + order.getServerId());
+            ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(order.getServerId()));
+            System.out.println("socket连接信息:" + context);
+            if (null != context) {
+                System.out.println("服务端发送消息到: " + order.getServerId());
+                NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
+            }
+            return data ? R.ok() : R.fail();
+        }
+        return R.ok();
+    }
 
 }
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/DemoDataListener.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/DemoDataListener.java
new file mode 100644
index 0000000..1393a4d
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/DemoDataListener.java
@@ -0,0 +1,39 @@
+package com.ruoyi.admin.importExcel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.google.common.collect.Lists;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.function.Consumer;
+
+/**
+ * 读取excel数据
+ */
+public class DemoDataListener extends AnalysisEventListener<FrozenBuckleImportDTO> {
+
+    /**临时存储正常数据集合,最大存储100*/
+    private List<FrozenBuckleImportDTO> successDataList = Lists.newArrayListWithExpectedSize(100);
+
+    /**自定义消费者函数接口用于自定义监听器中数据组装*/
+    private final Consumer<List<FrozenBuckleImportDTO>> successConsumer;
+
+    public DemoDataListener(Consumer<List<FrozenBuckleImportDTO>> successConsumer) {
+        this.successConsumer = successConsumer;
+    }
+
+    @Override
+    public void invoke(FrozenBuckleImportDTO goodsImportExcel, AnalysisContext analysisContext) {
+        successDataList.add(goodsImportExcel);
+        System.out.println("数据:"+goodsImportExcel);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        if (CollectionUtils.isNotEmpty(successDataList)) {
+            successConsumer.accept(successDataList);
+        }
+    }
+}
+
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java
new file mode 100644
index 0000000..fb8575c
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java
@@ -0,0 +1,47 @@
+package com.ruoyi.admin.importExcel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 导入模板
+ */
+@Data
+public class FrozenBuckleImportDTO implements Serializable {
+    @ExcelProperty(value = "站点名称")
+    private String siteName;
+
+    @ExcelProperty(value = "服务信息")
+    private String serveName;
+
+    @ExcelProperty(value = "预约姓名")
+    private String reservationName;
+    @ExcelProperty(value = "预约电话")
+    private String reservationPhone;
+    @ExcelProperty(value = "省份")
+    private String province;
+    @ExcelProperty(value = "市")
+    private String city;
+    @ExcelProperty(value = "区")
+    private String area;
+    @ExcelProperty(value = "详细地址")
+    private String reservationAddress;
+    @ExcelProperty(value = "上门时间")
+    private String custClass;
+    @ExcelProperty(value = "服务人员")
+    private String serverName;
+    @ExcelProperty(value = "备注")
+    private String reservationRemark;
+
+    private Integer siteId;
+    private Integer serverId;
+    private Integer serveId;
+    private Double longitude;
+    private Double latitude;
+    private String provinceCode;
+    private String cityCode;
+    private String areaCode;
+    private String serverPhone;
+}
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/HttpUtil.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/HttpUtil.java
new file mode 100644
index 0000000..e3a338b
--- /dev/null
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/HttpUtil.java
@@ -0,0 +1,312 @@
+package com.ruoyi.admin.utils;
+
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.*;
+import java.nio.charset.StandardCharsets;
+import java.security.cert.X509Certificate;
+
+/**
+ * 通用http发送方法
+ * 
+ * @author ruoyi
+ */
+public class HttpUtil
+{
+    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url)
+    {
+        return sendGet(url, StringUtils.EMPTY);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param)
+    {
+        return sendGet(url, param, Constants.UTF8);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @param contentType 编码类型
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param, String contentType)
+    {
+        StringBuilder result = new StringBuilder();
+        BufferedReader in = null;
+        try
+        {
+            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
+            log.info("sendGet - {}", urlNameString);
+            URL realUrl = new URL(urlNameString);
+            URLConnection connection = realUrl.openConnection();
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            connection.connect();
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (Exception ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * 向指定 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();
+    }
+
+    public static String sendSSLPost(String url, String param)
+    {
+        StringBuilder result = new StringBuilder();
+        String urlNameString = url + "?" + param;
+        try
+        {
+            log.info("sendSSLPost - {}", urlNameString);
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
+            URL console = new URL(urlNameString);
+            HttpsURLConnection conn = (HttpsURLConnection) console.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);
+
+            conn.setSSLSocketFactory(sc.getSocketFactory());
+            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+            conn.connect();
+            InputStream is = conn.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+            String ret = "";
+            while ((ret = br.readLine()) != null)
+            {
+                if (ret != null && !"".equals(ret.trim()))
+                {
+                    result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
+                }
+            }
+            log.info("recv - {}", result);
+            conn.disconnect();
+            br.close();
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
+        }
+        return result.toString();
+    }
+
+    public static String post(String strURL, String params) {
+        String result = "";
+        BufferedReader reader = null;
+        try {
+            URL url = new URL(strURL);// 创建连接
+            HttpURLConnection connection = (HttpURLConnection) url
+                    .openConnection();
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            connection.setInstanceFollowRedirects(true);
+            connection.setRequestMethod("POST"); // 设置请求方式
+            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
+            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
+            connection.connect();
+            if (params != null && !StringUtils.isEmpty(params)) {
+                byte[] writebytes = params.getBytes();
+                // 设置文件长度
+                //   connection.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
+                OutputStream outwritestream = connection.getOutputStream();
+                outwritestream.write(params.getBytes());
+                outwritestream.flush();
+                outwritestream.close();
+                // Log.d("hlhupload", "doJsonPost: conn"+connection.getResponseCode());
+            }
+            if (connection.getResponseCode() == 200) {
+                log.info("<<<<<<<<<<<<<请求响应:{}", connection.getResponseMessage());
+                reader = new BufferedReader(
+                        new InputStreamReader(connection.getInputStream()));
+                result = reader.readLine();
+                log.info("<<<<<<<<<<<<<请求响应:{}", result);
+            } else {
+                throw new ServiceException(connection.getResponseMessage());
+            }
+        } catch (Exception e) {
+            throw new ServiceException("http的post请求异常!" + e.getMessage());
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return result;
+    }
+
+    private static class TrustAnyTrustManager implements X509TrustManager
+    {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers()
+        {
+            return new X509Certificate[] {};
+        }
+    }
+
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier
+    {
+        @Override
+        public boolean verify(String hostname, SSLSession session)
+        {
+            return true;
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.7.1