提交 a9b4db51 作者: zhenjie

用户企业认证、加盟相关功能

上级 00fdc6ce
package com.mmc.iuav.user.model.vo;
/**
* @author: zj
* @Date: 2023/5/17 13:42
*/
public class CompanyAuthVO {
}
package com.mmc.iuav.user.model.vo;
/**
* @author: zj
* @Date: 2023/5/17 21:27
*/
public class CooperationTagVO {
}
package com.mmc.iuav.user.model.vo;
/**
* @author: zj
* @Date: 2023/5/16 21:18
*/
public class UserAccountDTO {
}
package com.mmc.iuav.user.model.vo;
/**
* @author: zj
* @Date: 2023/5/17 22:02
*/
public class UserApplyTagVO {
}
package com.mmc.csf.common.util.web;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import static java.lang.System.out;
public class HttpHelper {
// get 请求
public static String httpGet(String url, Header[] headers) throws Exception {
HttpUriRequest uriRequest = new HttpGet(url);
if (null != headers)
uriRequest.setHeaders(headers);
CloseableHttpClient httpClient = null;
try {
httpClient = declareHttpClientSSL(url);
CloseableHttpResponse httpresponse = httpClient.execute(uriRequest);
HttpEntity httpEntity = httpresponse.getEntity();
String result = EntityUtils.toString(httpEntity, REQ_ENCODEING_UTF8);
return result;
} catch (ClientProtocolException e) {
out.println(String.format("http请求失败,uri{%s},exception{%s}", new Object[] { url, e }));
} catch (IOException e) {
out.println(String.format("IO Exception,uri{%s},exception{%s}", new Object[] { url, e }));
} finally {
if (null != httpClient)
httpClient.close();
}
return null;
}
// post 请求
public static String httpPost(String url, String params) throws Exception {
HttpPost post = new HttpPost(url);
post.addHeader("Content-Type", "application/json;charset=" + REQ_ENCODEING_UTF8);
// 设置传输编码格式
StringEntity stringEntity = new StringEntity(params, REQ_ENCODEING_UTF8);
stringEntity.setContentEncoding(REQ_ENCODEING_UTF8);
post.setEntity(stringEntity);
HttpResponse httpresponse = null;
CloseableHttpClient httpClient = null;
try {
httpClient = declareHttpClientSSL(url);
httpresponse = httpClient.execute(post);
HttpEntity httpEntity = httpresponse.getEntity();
String result = EntityUtils.toString(httpEntity, REQ_ENCODEING_UTF8);
return result;
} catch (ClientProtocolException e) {
out.println(String.format("http请求失败,uri{%s},exception{%s}", new Object[] { url, e }));
} catch (IOException e) {
out.println(String.format("IO Exception,uri{%s},exception{%s}", new Object[] { url, e }));
} finally {
if (null != httpClient)
httpClient.close();
}
return null;
}
private static CloseableHttpClient declareHttpClientSSL(String url) {
if (url.startsWith("https://")) {
return sslClient();
} else {
return HttpClientBuilder.create().setConnectionManager(httpClientConnectionManager).build();
}
}
/**
* 设置SSL请求处理
*
* @param httpClient
*/
private static CloseableHttpClient sslClient() {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] xcs, String str) {
}
public void checkServerTrusted(X509Certificate[] xcs, String str) {
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactory.getSocketFactory();
return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
} catch (KeyManagementException e) {
throw new RuntimeException(e);
}
}
// this is config
private static final String REQ_ENCODEING_UTF8 = "utf-8";
private static PoolingHttpClientConnectionManager httpClientConnectionManager;
public HttpHelper() {
httpClientConnectionManager = new PoolingHttpClientConnectionManager();
httpClientConnectionManager.setMaxTotal(100);
httpClientConnectionManager.setDefaultMaxPerRoute(20);
}
// get 请求
public static String httpGet(String url) throws Exception {
return httpGet(url, null);
}
}
package com.mmc.iuav.user.controller;
/**
* @author: zj
* @Date: 2023/5/17 13:33
*/
public class CompanyAuthController {
}
package com.mmc.iuav.user.controller;
/**
* @author: zj
* @Date: 2023/5/17 21:17
*/
public class CooperationController {
}
package com.mmc.iuav.user.controller;
/**
* @author: zj
* @Date: 2023/5/17 11:16
*/
public class WxController {
}
package com.mmc.iuav.user.dao;
/**
* @author: zj
* @Date: 2023/5/17 13:38
*/
public interface CompanyAuthDao {
}
package com.mmc.iuav.user.dao;
/**
* @author: zj
* @Date: 2023/5/17 21:20
*/
public interface CooperationDao {
}
package com.mmc.iuav.user.entity;
/**
* @author: zj
* @Date: 2023/5/17 14:22
*/
public class CompanyAuthDO {
}
package com.mmc.iuav.user.entity;
/**
* @author: zj
* @Date: 2023/5/17 21:24
*/
public class CooperationTagDO {
}
package com.mmc.iuav.user.entity;
/**
* @author: zj
* @Date: 2023/5/17 21:59
*/
public class UserApplyTagDO {
}
package com.mmc.iuav.user.service;
/**
* @author: zj
* @Date: 2023/5/17 13:37
*/
public interface CompanyAuthService {
}
package com.mmc.iuav.user.service;
/**
* @author: zj
* @Date: 2023/5/17 21:19
*/
public interface CooperationService {
}
package com.mmc.iuav.user.service.impl;
/**
* @author: zj
* @Date: 2023/5/17 13:38
*/
public class CompanyAuthServiceImpl {
}
package com.mmc.iuav.user.service.impl;
/**
* @author: zj
* @Date: 2023/5/17 21:19
*/
public class CooperationServiceImpl {
}
package util;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.csf.common.util.web.HttpHelper;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.methods.HttpHead;
import java.io.IOException;
import java.util.regex.Pattern;
/**
* author:zhenjie
* Date:2023/4/23
* time:16:12
*/
public class QCCEntAuthUtil {
private static final String appkey = "5015e664848d406ab1ca4b505c3da803";
private static final String secretKey = "7C4DB8CCECC148175E46392CC0A1B410";
public static String check(String companyName, String creditCode, String operName){
String reqInterNme = "https://api.qichacha.com/ECIThreeElVerify/GetInfo";
String status = "";
try {
HttpHead reqHeader = new HttpHead();
String[] autherHeader = RandomAuthentHeader();
reqHeader.setHeader("Token", autherHeader[0]);
reqHeader.setHeader("Timespan", autherHeader[1]);
final String reqUri = reqInterNme.concat("?key=").concat(appkey).concat("&companyName=").concat(companyName).concat("&creditCode=").concat(creditCode).concat("&operName=").concat(operName);
String tokenJson = HttpHelper.httpGet(reqUri, reqHeader.getAllHeaders());
//out.println(String.format("==========================>this is response:{%s}", tokenJson));
System.out.println(String.format("==========================>this is response:{%s}", tokenJson));
status = FormartJson(tokenJson, "Status");
//out.println(String.format("==========================>Status:{%s}", status));
System.out.println(String.format("==========================>Status:{%s}", status));
if (!HttpCodeRegex.isAbnornalRequest(status)) {
PrettyPrintJson(tokenJson);
}
return tokenJson;
} catch (Exception e1) {
e1.printStackTrace();
}
return null;
}
// 获取返回码 Res Code
static class HttpCodeRegex {
private static final String ABNORMAL_REGIX = "(101)|(102)";
private static final Pattern pattern = Pattern.compile(ABNORMAL_REGIX);
protected static boolean isAbnornalRequest(final String status) {
return pattern.matcher(status).matches();
}
}
// 获取Auth Code
protected static final String[] RandomAuthentHeader() {
String timeSpan = String.valueOf(System.currentTimeMillis() / 1000);
String[] authentHeaders = new String[] { DigestUtils.md5Hex(appkey.concat(timeSpan).concat(secretKey)).toUpperCase(), timeSpan };
return authentHeaders;
}
// 解析JSON
public static String FormartJson(String jsonString, String key) throws JSONException {
//JSONObject jObject = new JSONObject(jsonString);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
return (String) jsonObject.get(key);
}
// 解析JSON
public static Integer resultFormatJson(String jsonString) throws JSONException {
//JSONObject jObject = new JSONObject(jsonString);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
Object object = jsonObject.get("Result");
JSONObject result = JSONObject.parseObject(object.toString());
return (Integer) result.get("VerifyResult");
}
// pretty print 返回值
protected static void PrettyPrintJson(String jsonString) throws JSONException {
try {
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(jsonString, Object.class);
String indented = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
System.out.println(indented);
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.iuav.user.dao.CompanyAuthDao">
<!-- <resultMap id="companyAuthResultMAp" type="com.mmc.iuav.user.entity.CompanyAuthDO">-->
<!-- <id column="id" property="id"/>-->
<!-- <result property="authStatus" column="auth_status"/>-->
<!-- <result property="userAccountId" column="user_account_id"/>-->
<!-- <result property="companyName" column="company_name"/>-->
<!-- <result property="creditCode" column="credit_code"/>-->
<!-- <result property="licenseImg" column="license_img"/>-->
<!-- </resultMap>-->
<insert id="addCompanyAuth" parameterType="com.mmc.iuav.user.entity.CompanyAuthDO"
keyProperty="id" useGeneratedKeys="true">
insert into company_auth(user_account_id,company_name,credit_code,license_img,auth_status,create_time)
values (#{userAccountId}, #{companyName}, #{creditCode}, #{licenseImg}, #{authStatus}, NOW())
</insert>
<!-- <select id="getCompanyAuth" resultMap="companyAuthResultMAp">-->
<!-- select id,user_account_id,company_name,credit_code,license_img,auth_status-->
<!-- from company_auth where user_account_id = #{userAccountId}-->
<!-- </select>-->
<select id="getCompanyAuth" resultType="com.mmc.iuav.user.entity.CompanyAuthDO">
select id,user_account_id,company_name,credit_code,license_img,auth_status
from company_auth where user_account_id = #{userAccountId}
</select>
</mapper>
\ No newline at end of file
......@@ -32,10 +32,53 @@
#{remark}, #{portType}, NOW())
</insert>
<update id="update" parameterType="com.mmc.iuav.user.entity.UserAccountDO">
update user_account
<set>
<if test="phoneNum != null">
phone_num = #{phoneNum},
</if>
<if test="userName != null">
user_name = #{userName},
</if>
<if test="nickName != null">
nick_name = #{nickName},
</if>
<if test="userImg != null">
user_img = #{userImg},
</if>
<if test="userSex != null">
user_sex = #{userSex},
</if>
<if test="email != null">
email = #{email},
</if>
<if test="accountStatus != null">
account_status = #{accountStatus},
</if>
<if test="remark != null">
remark = #{remark},
</if>
<if test="portType != null">
port_type = #{portType}
</if>
</set>
<where>
id = #{id}
</where>
</update>
<select id="getUserAccountInfoByUnionId" resultType="com.mmc.iuav.user.entity.UserAccountDO">
select id, account_type, uid, phone_num, user_name, nick_name, user_img, open_id, union_id, user_sex, email, source, account_status, remark,
port_type, is_deleted, create_time, update_time
from user_account
where union_id = #{unionId} and is_deleted = 0
</select>
<select id="getUserAccountById" resultType="com.mmc.iuav.user.entity.UserAccountDO">
select id, account_type, uid, phone_num, user_name, nick_name, user_img, open_id, union_id, user_sex, email, source, account_status, remark,
port_type, is_deleted, create_time, update_time
from user_account
where id = #{id}
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论