浏览代码

修改请求api接口逻辑

tianboguang 3 年之前
父节点
当前提交
89bc273f5e

+ 222 - 0
platform-common/src/main/java/com/platform/utils/HttpClientUtil.java

@@ -0,0 +1,222 @@
+package com.platform.utils;
+
+import lombok.extern.log4j.Log4j2;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.entity.mime.HttpMultipartMode;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.net.URI;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @author abnerhou
+ * @date 2020/5/11 17:48
+ * @desciption
+ */
+@Slf4j
+public class HttpClientUtil {
+
+    public static String doGet(String url, Map<String, String> param) {
+
+        // 创建Httpclient对象
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        String resultString = "";
+        CloseableHttpResponse response = null;
+        try {
+            // 创建uri
+            URIBuilder builder = new URIBuilder(url);
+            if (param != null) {
+                for (String key : param.keySet()) {
+                    builder.addParameter(key, param.get(key));
+                }
+            }
+            URI uri = builder.build();
+
+            // 创建http GET请求
+            HttpGet httpGet = new HttpGet(uri);
+
+            // 执行请求
+            response = httpclient.execute(httpGet);
+            // 判断返回状态是否为200
+            if (response.getStatusLine().getStatusCode() == 200) {
+                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+            }
+        } catch (Exception e) {
+            log.error("http调用执行get出错:{}" , e);
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+                httpclient.close();
+            } catch (IOException e) {
+               log.error("http调用执行get关闭资源出错:{}" , e);
+            }
+        }
+        return resultString;
+    }
+
+    public static String doGet(String url) {
+        return doGet(url, null);
+    }
+
+    public static String doPost(String url, Map<String, String> param) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建参数列表
+            if (param != null) {
+                List<NameValuePair> paramList = new ArrayList<>();
+                for (String key : param.keySet()) {
+                    paramList.add(new BasicNameValuePair(key, param.get(key)));
+                }
+                // 模拟表单
+                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
+                httpPost.setEntity(entity);
+            }
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            log.error("http执行post调用出错:{}" , e);
+        } finally {
+            try {
+                if(null != response){
+                    response.close();
+                }
+            } catch (IOException e) {
+                log.error("http执行post调用关闭资源出错:{}" , e);
+            }
+        }
+
+        return resultString;
+    }
+
+    public static String doPost(String url) {
+        return doPost(url, null);
+    }
+
+    public static String doPostMultipartFileWithForm(String url, MultipartFile file){
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+
+            //处理文件 后面的setMode是用来解决文件名称乱码的问题:以浏览器兼容模式运行,防止文件名乱码。
+            MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.STRICT);
+            builder.setCharset(Charset.forName("UTF-8")).addBinaryBody("media", file.getBytes(), ContentType.MULTIPART_FORM_DATA, file.getOriginalFilename());
+            // 创建请求内容
+            HttpEntity httpEntity = builder.build();
+            httpPost.setEntity(httpEntity);
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            log.error("http执行post调用出错:{}" , e);
+        } finally {
+            try {
+                if(null != response){
+                    response.close();
+                }
+            } catch (IOException e) {
+                log.error("http执行post调用关闭资源出错:{}" , e);
+            }
+        }
+
+        return resultString;
+
+    }
+
+    public static String doPostJson(String url, String json) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建请求内容
+            StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
+            httpPost.setEntity(entity);
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            log.error("http执行post调用出错:{}" , e);
+        } finally {
+            try {
+                if(null != response){
+                    response.close();
+                }
+            } catch (IOException e) {
+                log.error("http执行post调用关闭资源出错:{}" , e);
+            }
+        }
+
+        return resultString;
+    }
+
+    public static String doPostJsonWithHeader(String url, String json ,Map<String, Object> headers) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建请求内容
+            StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
+            httpPost.setEntity(entity);
+
+            if(!CollectionUtils.isEmpty(headers)){
+                for (Map.Entry<String,Object> entry : headers.entrySet()){
+                    httpPost.addHeader(entry.getKey() , (String) entry.getValue());
+                }
+            }
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            log.error("http执行post调用出错:{}" , e);
+        } finally {
+            try {
+                if(null != response){
+                    response.close();
+                }
+            } catch (IOException e) {
+                log.error("http执行post调用关闭资源出错:{}" , e);
+            }
+        }
+
+        return resultString;
+    }
+
+}

+ 15 - 7
platform-shop/src/main/java/com/platform/controller/GoodsController.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.ResponseEntity;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
@@ -90,6 +91,9 @@ public class GoodsController extends AbstractController{
             } else if (roleId == 8) {
                 // 公司员工只能获取当前绑定当前用户直播间的商品数据
                 List<Long> brandIds = mySysUserBrandService.queryBrandIdList(userId);
+                if(ObjectUtils.isEmpty(brandIds)){
+                    return R.ok().put("page", pageUtil);
+                }
                 brandQuery.put("idList", brandIds);
             }
             List<BrandEntity> brandList = brandService.queryList(brandQuery);
@@ -186,10 +190,12 @@ public class GoodsController extends AbstractController{
             String sortMapStr = JSONObject.toJSONString(sortMap);
             log.info("待加密的数据={}" ,sortMapStr + appSecret + timeStamp);
             String sign  = SHAUtils.getSHA256(sortMapStr + appSecret + timeStamp);
-            String openApiurl = apiHostQueryUrl + "?appId={1}&sign={2}&token={3}&timeStamp={4}";
-            ResponseEntity<String> apiResultStr = restTemplate.postForEntity(openApiurl , sortMapStr,String.class,appId,sign,token,timeStamp);
-            log.info("api平台返回结果:{}" , apiResultStr.getBody());
-            return R.ok(apiResultStr.getBody());
+            String openApiurl = apiHostQueryUrl.concat("?appId=").concat(appId).concat("&sign=")
+                    .concat(sign).concat("&token=").concat(token).concat("&timeStamp=").concat(""+timeStamp);
+            log.info("请求链接:{}" ,openApiurl);
+            String apiResultStr = HttpClientUtil.doPostJson(openApiurl , sortMapStr);
+            log.info("api平台返回结果:{}" , apiResultStr);
+            return R.ok(apiResultStr);
         }else{
             log.info("当前商品[{}]的品牌没有vr场景或者场景码为空,不需要上送api平台" , goods.getId());
             return R.ok();
@@ -247,10 +253,12 @@ public class GoodsController extends AbstractController{
             String sortMapStr = JSONObject.toJSONString(sortMap);
             log.info("待加密的数据={}" ,sortMapStr + appSecret + timeStamp);
             String sign  = SHAUtils.getSHA256(sortMapStr + appSecret + timeStamp);
-            String openApiurl = apiHostQueryUrl + "?appId={1}&sign={2}&token={3}&timeStamp={4}";
-            ResponseEntity<String> apiResultStr = restTemplate.postForEntity(openApiurl , sortMapStr,String.class,appId,sign,token,timeStamp);
+            String openApiurl = apiHostQueryUrl .concat("?appId=").concat(appId).concat("&sign=")
+                    .concat(sign).concat("&token=").concat(token).concat("&timeStamp=").concat(""+timeStamp);
+            log.info("请求链接:{}" ,openApiurl);
+            String apiResultStr = HttpClientUtil.doPostJson(openApiurl , sortMapStr);
             log.info("api平台返回结果:{}" , apiResultStr);
-            return R.ok(apiResultStr.getBody());
+            return R.ok(apiResultStr);
         }else{
             log.info("当前商品[{}]的品牌没有vr场景或者场景码为空,不需要上送api平台" , goods.getId());
             return R.ok();