forked from gzzfw/backEnd/gz-dyh

xusd
2024-09-18 6ae0901878f342a9c1025c8edc302bdf03f58a6d
新增获取企业信息接口
5 files added
1 files modified
220 ■■■■■ changed files
dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/AesUtils.java 45 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridCompanyController.java 28 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/dto/GridCompanyDTO.java 32 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyRequestVo.java 9 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyVo.java 33 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridCompanyService.java 73 ●●●●● patch | view | raw | blame | history
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编码
     *
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridCompanyController.java
New file
@@ -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);
    }
}
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/dto/GridCompanyDTO.java
New file
@@ -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;
    }
}
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyRequestVo.java
New file
@@ -0,0 +1,9 @@
package cn.huge.module.grid.domain.vo;
import lombok.Data;
@Data
public class GridCompanyRequestVo {
    private HeadVo headVo;
    private GridCompanyVo bodyVo;
}
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/domain/vo/GridCompanyVo.java
New file
@@ -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;
}
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/service/GridCompanyService.java
New file
@@ -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;
    }
}