package com.nova.sankuai.domain.api.externalInterface; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.nova.sankuai.domain.api.externalInterface.yxqb.AESUtil; import com.nova.sankuai.domain.api.externalInterface.yxqb.YXCheckUserData; import com.nova.sankuai.domain.api.externalInterface.yxqb.YXRegisterDto; import com.nova.sankuai.domain.api.externalInterface.yxqb.YXRegisterResponse; import com.nova.sankuai.domain.entity.CustomerUser; import com.nova.sankuai.infra.constants.ResultCode; import com.nova.sankuai.infra.utils.RsaSecretUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.net.URLEncoder; /** * @Author Lilinhong * @Date 2022/6/15 9:19 */ @Component @Slf4j public class EIUtil { @Resource RsaSecretUtils rsaSecretUtils; /** * base64公钥 */ @Value("${loginrsa.key-pair.public}") private String publicKeyBase64; /** * base64私钥 */ @Value("${loginrsa.key-pair.private}") private String privateKeyBase64; @Value("${youxinqb.appid}") private String appId; @Value("${youxinqb.url}") private String url; @Value("${youxinqb.key}") private String key; private static final Logger logger = LoggerFactory.getLogger("autoLogger"); public CheckUserData checkUserDataParse(String uuId, String data) { try { byte[] decryptBytes = RsaSecretUtils.privateDecrypt(rsaSecretUtils.base642Byte(data), privateKeyBase64); logger.info("日志编号:" + uuId + "渠道方撞库原始数据解密数组" + decryptBytes); String decryptString = new String(decryptBytes); logger.info("日志编号:" + uuId + "渠道方撞库原始数据解密字符串" + decryptString); CheckUserData checkUserData = JSON.parseObject(decryptString, CheckUserData.class); return checkUserData; } catch (Exception e) { logger.info("日志编号:" + uuId + "渠道方撞库失败"); e.printStackTrace(); } return null; } public RegisterData rigisterDataParse(String uuId, String data) { try { byte[] decryptBytes = RsaSecretUtils.privateDecrypt(rsaSecretUtils.base642Byte(data), privateKeyBase64); logger.info("日志编号:" + uuId + "渠道方联登原始数据解密数组" + decryptBytes); String decryptString = new String(decryptBytes); logger.info("日志编号:" + uuId + "渠道方联登原始数据解密字符串" + decryptString); RegisterData registerData = JSON.parseObject(decryptString, RegisterData.class); return registerData; } catch (Exception e) { logger.info("日志编号:" + uuId + "渠道方联登失败"); e.printStackTrace(); } return null; } public String yXCheckUserDataParse(String uuId, YXCheckUserData data) { try { if (StringUtils.isNotEmpty(data.getPhone())) { String decrypt = AESUtil.decrypt(data.getPhone(), key); logger.info("日志编号:" + uuId + "有信钱包撞库原始数据解密字符串" + decrypt); return decrypt; } } catch (Exception e) { logger.info("日志编号:" + uuId + "有信钱包撞库失败"); e.printStackTrace(); } return null; } public YXRegisterResponse yxRegister(CustomerUser customerUser, YXRegisterResponse yxRegisterResponse, YXRegisterDto yxRegisterDto) { try { JSONObject jsonObject = new JSONObject(); jsonObject.put("appId", appId); jsonObject.put("phone", yxRegisterDto.getPhoneNo()); byte[] bytes = RsaSecretUtils.publicEncrypt(jsonObject.toJSONString().getBytes(), publicKeyBase64); String base64 = RsaSecretUtils.byte2Base64(bytes); String encode = URLEncoder.encode(base64, "UTF-8"); String urlEnCode = url + "/?" + "appId=" + appId + "&autodownload=" + encode; yxRegisterResponse.setUrl(urlEnCode); } catch (Exception e) { e.printStackTrace(); } if (customerUser != null) { yxRegisterResponse.setCode(String.valueOf(ResultCode.SERVER_ERROR.getCode())); yxRegisterResponse.setMsg("用户已存在"); yxRegisterResponse.setBusinessCode("0001"); } else { yxRegisterResponse.setCode("0000"); yxRegisterResponse.setMsg("success"); yxRegisterResponse.setBusinessCode("0000"); } return yxRegisterResponse; } }