|
|
@ -2,11 +2,8 @@ package com.ruoyi.gysl.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.crypto.SmUtil;
|
|
|
|
import cn.hutool.crypto.SmUtil;
|
|
|
|
import cn.hutool.http.HttpRequest;
|
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
|
import cn.hutool.http.HttpResponse;
|
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
@ -14,6 +11,7 @@ import com.ruoyi.common.exception.ServiceException;
|
|
|
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
|
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
|
|
import com.ruoyi.gysl.entity.Cybq;
|
|
|
|
import com.ruoyi.gysl.entity.Cybq;
|
|
|
|
import com.ruoyi.gysl.entity.request.CybqRequest;
|
|
|
|
import com.ruoyi.gysl.entity.request.CybqRequest;
|
|
|
|
|
|
|
|
import com.ruoyi.gysl.login.util.SM2Demo;
|
|
|
|
import com.ruoyi.gysl.login.util.SM4Demo;
|
|
|
|
import com.ruoyi.gysl.login.util.SM4Demo;
|
|
|
|
import com.ruoyi.gysl.service.CybqService;
|
|
|
|
import com.ruoyi.gysl.service.CybqService;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
@ -25,15 +23,17 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.*;
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
|
|
|
|
import java.io.DataOutputStream;
|
|
|
|
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
|
|
|
|
import java.io.Serializable;
|
|
|
|
import java.net.HttpURLConnection;
|
|
|
|
import java.net.HttpURLConnection;
|
|
|
|
import java.net.URL;
|
|
|
|
import java.net.URL;
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Base64;
|
|
|
|
import java.util.Base64;
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 产业标签(GyslCybq)表控制层
|
|
|
|
* 产业标签(GyslCybq)表控制层
|
|
|
@ -62,81 +62,76 @@ public class CybqController extends BaseController {
|
|
|
|
@ApiOperation("企业经济标签信息(统一社会信用代码)")
|
|
|
|
@ApiOperation("企业经济标签信息(统一社会信用代码)")
|
|
|
|
@GetMapping("/getCybq")
|
|
|
|
@GetMapping("/getCybq")
|
|
|
|
public AjaxResult getCybq() throws Exception {
|
|
|
|
public AjaxResult getCybq() throws Exception {
|
|
|
|
if(true){
|
|
|
|
if (isZs) {
|
|
|
|
String contacts = "http://172.21.10.46/api/invoke/323018/qyjjbqxx";
|
|
|
|
String contacts = "http://172.21.10.46/api/invoke/323018/qyjjbqxx";
|
|
|
|
String uscc = Base64.getEncoder().encodeToString((byte[])
|
|
|
|
String uscc = Base64.getEncoder().encodeToString((byte[])
|
|
|
|
SM4Demo.exec("91320594067622605M".getBytes(),
|
|
|
|
SM4Demo.exec("91320594067622605M".getBytes(),
|
|
|
|
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null));
|
|
|
|
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), null));
|
|
|
|
String pageIndex = Base64.getEncoder().encodeToString((byte[])
|
|
|
|
String pageIndex = Base64.getEncoder().encodeToString((byte[])
|
|
|
|
SM4Demo.exec("1".getBytes(),
|
|
|
|
SM4Demo.exec("1".getBytes(),
|
|
|
|
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null));
|
|
|
|
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), null));
|
|
|
|
String pageSize = Base64.getEncoder().encodeToString((byte[])
|
|
|
|
//生成sm3签名
|
|
|
|
SM4Demo.exec("10".getBytes(),
|
|
|
|
String input = "pageIndex=1&uscc=91320594067622605M";
|
|
|
|
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null));
|
|
|
|
try {
|
|
|
|
//生成sm3签名
|
|
|
|
// 1. 构建 URL(含签名参数,处理特殊符号)
|
|
|
|
String input = "pageIndex=1&pageSize=10&uscc=91320594067622605M";
|
|
|
|
String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8")
|
|
|
|
// contacts+= "?signature="+ SmUtil.sm3(input);
|
|
|
|
.replace("+", "%20"); // 确保 + 不被编码为空格
|
|
|
|
System.out.println(contacts);
|
|
|
|
String fullUrl = contacts + "?signature=" + encodedSignature;
|
|
|
|
System.out.println(uscc);
|
|
|
|
// 2. 创建连接
|
|
|
|
System.out.println(pageIndex);
|
|
|
|
URL url = new URL(fullUrl);
|
|
|
|
System.out.println(pageSize);
|
|
|
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
|
|
|
|
|
|
conn.setRequestMethod("POST");
|
|
|
|
try {
|
|
|
|
conn.setDoOutput(true);
|
|
|
|
// 1. 构建 URL(含签名参数,处理特殊符号)
|
|
|
|
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
|
|
|
|
String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8")
|
|
|
|
|
|
|
|
.replace("+", "%20"); // 确保 + 不被编码为空格
|
|
|
|
// 3. 构建请求体(严格对齐 curl -F 格式)
|
|
|
|
String fullUrl = contacts + "?signature=" + encodedSignature;
|
|
|
|
try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) {
|
|
|
|
System.out.println(fullUrl);
|
|
|
|
// 参数 uscc
|
|
|
|
// 2. 创建连接
|
|
|
|
writeFormField(out, "uscc", uscc);
|
|
|
|
URL url = new URL(fullUrl);
|
|
|
|
// 参数 pageIndex
|
|
|
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
|
|
writeFormField(out, "pageIndex", pageIndex);
|
|
|
|
conn.setRequestMethod("POST");
|
|
|
|
// 结束标记
|
|
|
|
conn.setDoOutput(true);
|
|
|
|
out.writeBytes("--" + BOUNDARY + "--\r\n");
|
|
|
|
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
|
|
|
|
}
|
|
|
|
|
|
|
|
// 4. 处理响应
|
|
|
|
// 3. 构建请求体(严格对齐 curl -F 格式)
|
|
|
|
int statusCode = conn.getResponseCode();
|
|
|
|
try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) {
|
|
|
|
StringBuilder response = new StringBuilder();
|
|
|
|
// 参数 uscc
|
|
|
|
try (BufferedReader in = new BufferedReader(new InputStreamReader(
|
|
|
|
writeFormField(out, "uscc", uscc);
|
|
|
|
(statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(),
|
|
|
|
// 参数 pageIndex
|
|
|
|
StandardCharsets.UTF_8))) {
|
|
|
|
writeFormField(out, "pageIndex", pageIndex);
|
|
|
|
String line;
|
|
|
|
// 参数 pageSize
|
|
|
|
while ((line = in.readLine()) != null) {
|
|
|
|
writeFormField(out, "pageSize", pageSize);
|
|
|
|
response.append(line);
|
|
|
|
// 结束标记
|
|
|
|
|
|
|
|
out.writeBytes("--" + BOUNDARY + "--\r\n");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// 4. 处理响应
|
|
|
|
if (statusCode == 200) {
|
|
|
|
int statusCode = conn.getResponseCode();
|
|
|
|
JSONObject jsonObj = JSONObject.parseObject(String.valueOf(response));
|
|
|
|
StringBuilder response = new StringBuilder();
|
|
|
|
if ("200".equals(jsonObj.getString("code"))) { // 使用 getString 避免类型问题
|
|
|
|
try (BufferedReader in = new BufferedReader(new InputStreamReader(
|
|
|
|
// 直接获取 data 字段为 JSONObject(无需转换 String)
|
|
|
|
(statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(),
|
|
|
|
JSONObject reqData = jsonObj.getJSONObject("data");
|
|
|
|
StandardCharsets.UTF_8))) {
|
|
|
|
String responseParams = reqData.getString("responseParams"); // 直接获取字符串值
|
|
|
|
String line;
|
|
|
|
String s = new String((byte[]) SM2Demo.dexec(Base64.getDecoder().decode(responseParams), "C1C2C3", Base64.getDecoder().decode("MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgefIcY79Be48T8ryF9tMOKDFZ4XmeB9JzBSmEZHGmvhKhRANCAAQmjPisOvJfv2r7mpj06FszOkAlJiyVL6OoefMmXmqSANNqyT8ZxnFpnToYgtqjQqX44IG8fXk49eLjKXQSfJ2J")), StandardCharsets.UTF_8);
|
|
|
|
while ((line = in.readLine()) != null) {
|
|
|
|
// 解析解密后的 JSON
|
|
|
|
response.append(line);
|
|
|
|
JSONObject getAllData = JSONObject.parseObject(s);
|
|
|
|
|
|
|
|
// 提取 data 字段为 JSONArray
|
|
|
|
|
|
|
|
JSONArray js1 = getAllData.getJSONArray("data");
|
|
|
|
|
|
|
|
// 转换为 Java 对象列表
|
|
|
|
|
|
|
|
List<Cybq> returnData = new ArrayList<>();
|
|
|
|
|
|
|
|
for (int i = 0; i < js1.size(); i++) {
|
|
|
|
|
|
|
|
JSONObject item = js1.getJSONObject(i);
|
|
|
|
|
|
|
|
Cybq res = item.toJavaObject(Cybq.class);
|
|
|
|
|
|
|
|
returnData.add(res);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return AjaxResult.success(returnData);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
System.out.println("状态码: " + statusCode);
|
|
|
|
|
|
|
|
System.out.println("响应内容:\n" + response.toString());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception y) {
|
|
|
|
// if (response.getStatus() == 200) {
|
|
|
|
y.printStackTrace();
|
|
|
|
// System.out.println(response.body());
|
|
|
|
|
|
|
|
// JSONObject jsonObj = JSONUtil.parseObj(response.body());
|
|
|
|
|
|
|
|
// if ("200".equals(jsonObj.get("code"))) {
|
|
|
|
|
|
|
|
// JSONObject reqData = JSONUtil.parseObj(jsonObj.get("data"));
|
|
|
|
|
|
|
|
// JSONArray arr = reqData.getJSONArray("data"); // 直接获取数组,无需再次解析
|
|
|
|
|
|
|
|
// int total = reqData.getInt("total"); // 只需解析一次total并转换为整数
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return success();
|
|
|
|
return success();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void writeFormField(DataOutputStream out, String name, String value) throws Exception {
|
|
|
|
private static void writeFormField(DataOutputStream out, String name, String value) throws Exception {
|
|
|
|
out.writeBytes("--" + BOUNDARY + "\r\n");
|
|
|
|
out.writeBytes("--" + BOUNDARY + "\r\n");
|
|
|
|
out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"\r\n");
|
|
|
|
out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"\r\n");
|
|
|
@ -147,7 +142,7 @@ public class CybqController extends BaseController {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 分页查询所有数据
|
|
|
|
* 分页查询所有数据
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param page 分页对象
|
|
|
|
* @param page 分页对象
|
|
|
|
* @param gyslCybq 查询实体
|
|
|
|
* @param gyslCybq 查询实体
|
|
|
|
* @return 所有数据
|
|
|
|
* @return 所有数据
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -164,7 +159,7 @@ public class CybqController extends BaseController {
|
|
|
|
* @return 单条数据
|
|
|
|
* @return 单条数据
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@GetMapping("/{id}")
|
|
|
|
@GetMapping("/{id}")
|
|
|
|
@ApiOperation(value = "通过主键查询单条数据",response = Cybq.class)
|
|
|
|
@ApiOperation(value = "通过主键查询单条数据", response = Cybq.class)
|
|
|
|
public AjaxResult selectOne(@PathVariable Serializable id) {
|
|
|
|
public AjaxResult selectOne(@PathVariable Serializable id) {
|
|
|
|
return success(cybqService.getById(id));
|
|
|
|
return success(cybqService.getById(id));
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -230,7 +225,7 @@ public class CybqController extends BaseController {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@ApiOperation(value = "根据条件导出所有产业标签")
|
|
|
|
@ApiOperation(value = "根据条件导出所有产业标签")
|
|
|
|
@PostMapping(value = "/export")
|
|
|
|
@PostMapping(value = "/export")
|
|
|
|
public void exportMl(HttpServletResponse response, CybqRequest req){
|
|
|
|
public void exportMl(HttpServletResponse response, CybqRequest req) {
|
|
|
|
List<Cybq> filteredList = cybqService.page(req);
|
|
|
|
List<Cybq> filteredList = cybqService.page(req);
|
|
|
|
ExcelUtil<Cybq> util = new ExcelUtil<>(Cybq.class);
|
|
|
|
ExcelUtil<Cybq> util = new ExcelUtil<>(Cybq.class);
|
|
|
|
util.exportExcel(response, filteredList, "产业标签");
|
|
|
|
util.exportExcel(response, filteredList, "产业标签");
|
|
|
|