jiazx0107@163.com
2023-12-07 9b5c86d852fd94c0f01497d7571b27419ab17c58
src/main/java/com/fzzy/push/whhpjl/WhjlApiRemoteService.java
@@ -8,14 +8,11 @@
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.service.ApiRemoteService;
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.AESUtils;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.MyMD5Util;
import com.fzzy.api.utils.RedisUtil;
import com.fzzy.api.utils.*;
import com.fzzy.api.view.repository.*;
import com.fzzy.push.whhpjl.dto.WhjlReqDto;
import com.fzzy.push.whhpjl.dto.WhjlRespDto;
import com.fzzy.whjl.WhjlConstant;
import com.fzzy.otherview.whhpjl.WhjlConstant;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -42,6 +39,8 @@
    private ApiTriggerService apiTriggerService;
    @Autowired
    private ApiLogRep apiLogRep;
    @Autowired
    private Whjl2023HttpClientUtil whjl2023HttpClientUtil;
    @Override
    public String getProtocol() {
@@ -67,7 +66,7 @@
            ApiLog apiLog = new ApiLog();
            apiLog.setId(ContextUtil.getUUID());
            apiLog.setInteId(inteId);
            String jsonData = getJsonData(inteId, data);
            String jsonData = getJsonData(data);
            log.info("接口数据信息=" + jsonData);
            inteId = getInteId(inteId);
            if (StringUtils.isEmpty(inteId)) {
@@ -88,31 +87,39 @@
                apiLogRep.save(apiLog);
                return responseDto;
            }
            //封装推送数据
            WhjlReqDto reqData = new WhjlReqDto();
            //报文标识ID
            reqData.setId(ContextUtil.getUUID());
            reqData.setUid(conf.getKqdm());
            //TODO 指令id待确认
            reqData.setOrderid("");
            reqData.setAppcode(conf.getUserName());
            reqData.setTimestamp(ContextUtil.getCurTimeMillis());
            //身份ID
            reqData.setUid(conf.getUserName());
            //获取指令id
            String key = RedisConst.buildKey(RedisConst.KYE_ORDER, conf.getKqdm());
            String orderId = (String)redisUtil.get(key);
            if(StringUtils.isEmpty(orderId)){
                orderId = reqData.getId();
            }
            reqData.setOrderid(orderId);
            //应用码
            reqData.setAppcode(conf.getAppCode());
            //时间戳
            reqData.setTimestamp(Long.valueOf(ContextUtil.getCurTimeMillis()));
            //身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名
            String accessToken = reqData.getAppcode() +"_" + conf.getPassword() +"_" + reqData.getUid() + "_" + reqData.getId() + "_" + reqData.getTimestamp();
            log.info("身份签名:" + accessToken);
            reqData.setAccesstoken(MyMD5Util.encrypt(accessToken));
            //数据总条数
            List<Object> list  = (List<Object>)data;
            reqData.setDatalength(list.size());
            //数据进行SM4加密
            reqData.setData(AESUtils.encrypt(jsonData, conf.getPublicKey()));
            reqData.setOperator("insert");
            //数据主体,进行SM4加密
            reqData.setData(SM4Util.encryptEcb(conf.getPublicKey(), jsonData));
            //摘要,数据主体的MD5值
            reqData.setDigst(MyMD5Util.encrypt(jsonData));
            //身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名
            StringBuffer buffer = new StringBuffer();
            buffer.append(reqData.getAppcode()).append("_");
            buffer.append(conf.getPublicKey()).append("_");
            buffer.append(conf.getKqmc()).append("_");
            buffer.append(reqData.getId()).append("_");
            buffer.append(reqData.getTimestamp());
            reqData.setDigst(MyMD5Util.encrypt(buffer.toString()));
            reqData.setDigest(MyMD5Util.encrypt(jsonData));
            //操作类型
            reqData.setOperator("insert");
            WhjlRespDto responseDto = Whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData, conf);
            WhjlRespDto responseDto = whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData);
            apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode());
            apiLog.setResult(responseDto.getResult());
            apiLogRep.save(apiLog);
@@ -128,15 +135,16 @@
    }
    /**
     * 调整数据封装,获取json数据
     * 调整数据封装成list,获取json数据
     *
     * @param inteId
     * @param data
     * @return
     * @throws Exception
     */
    private String getJsonData(String inteId, Object data) {
        return JSON.toJSONString(data);
    private String getJsonData(Object data) {
        List<Object> list = new ArrayList<>();
        list.add(data);
        return JSON.toJSONString(list);
    }
    private String getInteId(String inteId) {