From 6ae0901878f342a9c1025c8edc302bdf03f58a6d Mon Sep 17 00:00:00 2001 From: xusd <hugeinfo123> Date: Wed, 18 Sep 2024 17:37:00 +0800 Subject: [PATCH] 新增获取企业信息接口 --- dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridCompanyService.java | 73 ++++++++++++++++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/dto/GridCompanyDTO.java | 32 ++++++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyVo.java | 33 ++++++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridCompanyController.java | 28 +++++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyRequestVo.java | 9 ++ dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/AesUtils.java | 45 ++++++++++ 6 files changed, 217 insertions(+), 3 deletions(-) diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/AesUtils.java b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/AesUtils.java index 81bf49d..573f867 100644 --- a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/AesUtils.java +++ b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/AesUtils.java @@ -2,10 +2,17 @@ import cn.huge.base.common.exception.BaseException; import com.thoughtworks.xstream.core.util.Base64Encoder; +import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Base64; +import org.apache.commons.codec.binary.Hex; -import javax.crypto.Cipher; +import javax.crypto.*; +import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; +import java.io.UnsupportedEncodingException; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; /** * @title: aes加密工具 @@ -29,8 +36,13 @@ */ public static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding"; + private static final String iv = "1qaz#EDC123456(,"; + private static final String Algorithm = "AES"; + private static final String AlgorithmProvider = "AES/CBC/PKCS5Padding"; + /** * 加密 + * * @param content * @return * @throws Exception @@ -51,6 +63,7 @@ /** * 加密 + * * @param content * @return * @throws Exception @@ -71,6 +84,7 @@ /** * 加密 + * * @param data 返回数据 * @return ReturnBo * @throws Exception @@ -78,7 +92,7 @@ public static byte[] encodeByte(Object data) { try { //加密 - byte[] raw =AES_PASSWORD.getBytes(); + byte[] raw = AES_PASSWORD.getBytes(); SecretKeySpec skeySpec = new SecretKeySpec(raw, KEY_ALGORITHM); Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); @@ -92,6 +106,7 @@ /** * 解密 + * * @param content * @return * @throws Exception @@ -113,6 +128,7 @@ /** * 解密 + * * @param content * @return * @throws Exception @@ -128,12 +144,35 @@ byte[] contentByte = new Base64().decode(content); byte[] result = cipher.doFinal(contentByte); //AES解密 - return new String(result,"utf-8"); + return new String(result, "utf-8"); } catch (Exception e) { throw new BaseException("AesUtils.decode", e); } } + + public static String decrypt(String enc, String uniqueKey) throws NoSuchPaddingException, NoSuchAlgorithmException, UnsupportedEncodingException, InvalidAlgorithmParameterException, InvalidKeyException, DecoderException, IllegalBlockSizeException, BadPaddingException { + byte[] key = uniqueKey.getBytes(); + SecretKey secretKey = new SecretKeySpec(key, Algorithm); + IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("utf-8")); + Cipher cipher = Cipher.getInstance(AlgorithmProvider); + cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec); + byte[] hexBytes = hexStringToBytes(enc); + byte[] plainBytes = cipher.doFinal(hexBytes); + return new String(plainBytes, "UTF-8"); + } + + /** + * 将16进制字符串转换为byte数组 + * + * @param hexString + * @return + */ + private static byte[] hexStringToBytes(String hexString) throws DecoderException { + return Hex.decodeHex(hexString); + } + + /** * 字节数组转Base64编码 * diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridCompanyController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridCompanyController.java new file mode 100644 index 0000000..c5fbdc9 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridCompanyController.java @@ -0,0 +1,28 @@ +package cn.huge.module.grid.controller; + +import cn.huge.base.common.bo.R; +import cn.huge.module.grid.domain.dto.GridCompanyDTO; +import cn.huge.module.grid.domain.vo.GridCompanyVo; +import cn.huge.module.grid.domain.vo.GridTokenVo; +import cn.huge.module.grid.domain.vo.GridUserVo; +import cn.huge.module.grid.service.GridCompanyService; +import lombok.extern.slf4j.Slf4j; +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.RestController; + +import javax.annotation.Resource; + +@Slf4j +@RestController +@RequestMapping("/api/thrid/grid/company") +public class GridCompanyController { + @Resource + private GridCompanyService gridCompanyService; + + @PostMapping("/get-company-list") + public R<GridCompanyDTO> getCompanyList(@RequestBody GridCompanyVo gridCompanyVo) throws Exception { + return gridCompanyService.getCompanyList(gridCompanyVo); + } +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/dto/GridCompanyDTO.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/dto/GridCompanyDTO.java new file mode 100644 index 0000000..19ada28 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/dto/GridCompanyDTO.java @@ -0,0 +1,32 @@ +package cn.huge.module.grid.domain.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class GridCompanyDTO { + private long current; + private long size; + private long total; + private long pages; + private List<UnitDTO> records; + + @Data + public static class UnitDTO { + private String id; + private String name; + private String socialCreditCode; + private String businessRegAddress; + private String state; + private String gridCode; + private String gridName; + private String legalRepresent; + private String idCardType; + private String idNumber; + private String legalPersonTelephone; + + } + + +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyRequestVo.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyRequestVo.java new file mode 100644 index 0000000..57a5877 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyRequestVo.java @@ -0,0 +1,9 @@ +package cn.huge.module.grid.domain.vo; + +import lombok.Data; + +@Data +public class GridCompanyRequestVo { + private HeadVo headVo; + private GridCompanyVo bodyVo; +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyVo.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyVo.java new file mode 100644 index 0000000..e158209 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyVo.java @@ -0,0 +1,33 @@ +package cn.huge.module.grid.domain.vo; + +import lombok.Data; + +@Data +public class GridCompanyVo { + /** + * 综合查询 + */ + private String integratedQuery; + /** + * 自助申报状态 + */ + private Integer state; + /** + * 网格编码 + */ + private String gridCode; + /** + * 是否需要返回总数 + */ + private Boolean needCount; + /** + * 页码 + */ + + private int page; + /** + * 页面size + */ + + private int pageSize; +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridCompanyService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridCompanyService.java new file mode 100644 index 0000000..1a14f5a --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridCompanyService.java @@ -0,0 +1,73 @@ +package cn.huge.module.grid.service; + +import cn.huge.base.common.bo.R; +import cn.huge.base.common.utils.AesUtils; +import cn.huge.base.common.utils.HttpClientUtils; +import cn.huge.module.grid.domain.dto.GridCompanyDTO; +import cn.huge.module.grid.domain.vo.*; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.util.Base64; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import static cn.huge.base.common.utils.AesUtils.KEY_ALGORITHM; + +@Slf4j +@Service +public class GridCompanyService { + @Value("${grid.url:http://219.137.166.84:8061}") + private String gridUrl; + @Value("${grid.username:mtxt0011}") + private String userName; + @Value("${grid.password}") + private String passWord; + + public R<GridCompanyDTO> getCompanyList(@RequestBody GridCompanyVo gridCompanyVo) throws Exception { + HeadVo headVo = initHeadVo(); + GridCompanyRequestVo requestVo = new GridCompanyRequestVo(); + requestVo.setHeadVo(headVo); + requestVo.setBodyVo(gridCompanyVo); + log.info("xsd:{}", JSON.toJSONString(requestVo)); + log.info("xsd:{}", gridUrl + "/sbss/unit/getList"); + String s = null; + try { + s = HttpClientUtils.httpPostRaw(gridUrl + "/sbss/unit/getList", JSON.toJSONString(requestVo), new HashMap<>(), "utf-8"); + } catch (Exception e) { + log.info("xsderror:{}", e); + throw new RuntimeException(e); + } + log.info("xsd:{}", s); + JSONObject object = JSONObject.parseObject(s); + if (object.getInteger("code") != null && object.getInteger("code") == 0) { + GridCompanyDTO data = object.getObject("data", GridCompanyDTO.class); + List<GridCompanyDTO.UnitDTO> records = data.getRecords(); + for(GridCompanyDTO.UnitDTO item :records){ + item.setLegalRepresent(AesUtils.decrypt(item.getLegalRepresent(),"eb4KhdJRyDwS4ndTBc2NTDNaSEP6KbwQ")); + + } + return R.ok(data); + } else { + return R.fail("获取企业信息失败"); + } + } + + public HeadVo initHeadVo() { + HeadVo headVo = new HeadVo(); + headVo.setUsername(userName); + headVo.setPassword(passWord); + headVo.setRequestId(UUID.randomUUID().toString()); + headVo.setSource("string"); + return headVo; + } + +} -- Gitblit v1.8.0