diff --git a/api-mapper/src/main/java/com/heyu/api/data/constants/ApiConstants.java b/api-mapper/src/main/java/com/heyu/api/data/constants/ApiConstants.java
index 6c95caf..3f899d5 100644
--- a/api-mapper/src/main/java/com/heyu/api/data/constants/ApiConstants.java
+++ b/api-mapper/src/main/java/com/heyu/api/data/constants/ApiConstants.java
@@ -327,9 +327,8 @@ public class ApiConstants {
- public static final String bankcard_verification_2 = "bankcard_verification_2";
- public static final String bankcard_verification_3 = "bankcard_verification_3";
public static final String bankcard_verification_4 = "bankcard_verification_4";
+ public static final String mobile_verification_3 = "mobile_verification_3";
}
diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/api/ApiMobileMetaDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/api/ApiMobileMetaDao.java
new file mode 100644
index 0000000..2248d5e
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/dao/api/ApiMobileMetaDao.java
@@ -0,0 +1,54 @@
+package com.heyu.api.data.dao.api;
+/**
+*
+* 账户表 服务类
+*
+*
+* @author quyixiao
+* @since 2025-04-19
+*/
+import com.heyu.api.data.entity.api.ApiMobileMetaEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lz.mybatis.plugin.annotations.LIMIT;
+import com.lz.mybatis.plugin.annotations.Plus;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
+public interface ApiMobileMetaDao extends BaseMapper {
+
+
+ ApiMobileMetaEntity selectApiMobileMetaById(@Param("id")Long id);
+
+
+ Long insertApiMobileMeta(ApiMobileMetaEntity apiMobileMeta);
+
+
+ Long insertOrUpdateApiMobileMeta(ApiMobileMetaEntity apiMobileMeta);
+
+
+ int updateApiMobileMetaById(ApiMobileMetaEntity apiMobileMeta);
+
+
+ int updateCoverApiMobileMetaById(ApiMobileMetaEntity apiMobileMeta);
+
+
+ int deleteApiMobileMetaById(@Param("id")Long id);
+
+
+ @LIMIT
+ ApiMobileMetaEntity selectApiMobileMetaByMobileRealNameChannelEnableStatus(String mobile, String realName, String channel,Integer enableStatus);
+
+
+
+
+ @LIMIT
+ ApiMobileMetaEntity selectApiMobileMetaByMobileRealNameIdCardNumberChannelEnableStatus(String mobile, String realName,String idCardNumber, String channel,Integer enableStatus);
+
+
+
+
+ int updateApiMobileMetaUseCountById(@Plus Long useCount, Long id);
+
+
+
+}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/api/ApiMobileMetaEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/api/ApiMobileMetaEntity.java
new file mode 100644
index 0000000..eb8b4b3
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/entity/api/ApiMobileMetaEntity.java
@@ -0,0 +1,239 @@
+package com.heyu.api.data.entity.api;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.lz.mybatis.plugin.annotations.AS;
+
+import java.math.BigDecimal;
+import java.util.Date;import java.util.Date;
+/**
+*账户表
+* @author quyixiao
+* @since 2025-04-19
+*/
+
+@Data
+@TableName("api_mobile_meta")
+public class ApiMobileMetaEntity implements java.io.Serializable {
+private static final long serialVersionUID = 1L;
+
+ public final static String CLASS_NAME ="com.heyu.api.data.entity.api.ApiMobileMetaEntity:";
+
+ public final static String all = CLASS_NAME + "*";
+ public final static String id_ = CLASS_NAME + "id"; // 主键id
+ public final static String is_delete = CLASS_NAME + "is_delete"; // 是否删除:0 否 1 删除
+ public final static String create_time = CLASS_NAME + "create_time"; // 创建时间
+ public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间
+ public final static String mobile_ = CLASS_NAME + "mobile"; // 身份证
+ public final static String real_name = CLASS_NAME + "real_name"; // 真实姓名
+ public final static String id_card_number = CLASS_NAME + "id_card_number"; // 身份证号码
+ public final static String api_result = CLASS_NAME + "api_result"; // 结果
+ public final static String channel_ = CLASS_NAME + "channel"; // 渠道
+ public final static String use_count = CLASS_NAME + "use_count"; // 使用次数
+ public final static String enable_status = CLASS_NAME + "enable_status"; // 0 不可用,1 可用
+ //主键id
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ //是否删除:0 否 1 删除
+ private Integer isDelete;
+ //创建时间
+ private Date createTime;
+ //修改时间
+ private Date modifyTime;
+ //身份证
+ private String mobile;
+ //真实姓名
+ private String realName;
+ //身份证号码
+ private String idCardNumber;
+ //结果
+ private String apiResult;
+ //渠道
+ private String channel;
+ //使用次数
+ private Long useCount;
+ //0 不可用,1 可用
+ private Integer enableStatus;
+ /**
+ * 主键id
+ * @return
+ */
+ public Long getId() {
+ return id;
+ }
+ /**
+ * 主键id
+ * @param id
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /**
+ * 是否删除:0 否 1 删除
+ * @return
+ */
+ public Integer getIsDelete() {
+ return isDelete;
+ }
+ /**
+ * 是否删除:0 否 1 删除
+ * @param isDelete
+ */
+ public void setIsDelete(Integer isDelete) {
+ this.isDelete = isDelete;
+ }
+
+ /**
+ * 创建时间
+ * @return
+ */
+ public Date getCreateTime() {
+ return createTime;
+ }
+ /**
+ * 创建时间
+ * @param createTime
+ */
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ /**
+ * 修改时间
+ * @return
+ */
+ public Date getModifyTime() {
+ return modifyTime;
+ }
+ /**
+ * 修改时间
+ * @param modifyTime
+ */
+ public void setModifyTime(Date modifyTime) {
+ this.modifyTime = modifyTime;
+ }
+
+ /**
+ * 身份证
+ * @return
+ */
+ public String getMobile() {
+ return mobile;
+ }
+ /**
+ * 身份证
+ * @param mobile
+ */
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ /**
+ * 真实姓名
+ * @return
+ */
+ public String getRealName() {
+ return realName;
+ }
+ /**
+ * 真实姓名
+ * @param realName
+ */
+ public void setRealName(String realName) {
+ this.realName = realName;
+ }
+
+ /**
+ * 身份证号码
+ * @return
+ */
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+ /**
+ * 身份证号码
+ * @param idCardNumber
+ */
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ /**
+ * 结果
+ * @return
+ */
+ public String getApiResult() {
+ return apiResult;
+ }
+ /**
+ * 结果
+ * @param apiResult
+ */
+ public void setApiResult(String apiResult) {
+ this.apiResult = apiResult;
+ }
+
+ /**
+ * 渠道
+ * @return
+ */
+ public String getChannel() {
+ return channel;
+ }
+ /**
+ * 渠道
+ * @param channel
+ */
+ public void setChannel(String channel) {
+ this.channel = channel;
+ }
+
+ /**
+ * 使用次数
+ * @return
+ */
+ public Long getUseCount() {
+ return useCount;
+ }
+ /**
+ * 使用次数
+ * @param useCount
+ */
+ public void setUseCount(Long useCount) {
+ this.useCount = useCount;
+ }
+
+ /**
+ * 0 不可用,1 可用
+ * @return
+ */
+ public Integer getEnableStatus() {
+ return enableStatus;
+ }
+ /**
+ * 0 不可用,1 可用
+ * @param enableStatus
+ */
+ public void setEnableStatus(Integer enableStatus) {
+ this.enableStatus = enableStatus;
+ }
+
+ @Override
+ public String toString() {
+ return "ApiMobileMetaEntity{" +
+ ",id=" + id +
+ ",isDelete=" + isDelete +
+ ",createTime=" + createTime +
+ ",modifyTime=" + modifyTime +
+ ",mobile=" + mobile +
+ ",realName=" + realName +
+ ",idCardNumber=" + idCardNumber +
+ ",apiResult=" + apiResult +
+ ",channel=" + channel +
+ ",useCount=" + useCount +
+ ",enableStatus=" + enableStatus +
+ "}";
+ }
+}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/api/ApiMobileMetaService.java b/api-mapper/src/main/java/com/heyu/api/data/service/api/ApiMobileMetaService.java
new file mode 100644
index 0000000..be7dcdf
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/service/api/ApiMobileMetaService.java
@@ -0,0 +1,34 @@
+package com.heyu.api.data.service.api;
+/**
+*
+* 账户表 服务类
+*
+*
+* @author quyixiao
+* @since 2025-04-19
+*/
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.heyu.api.data.entity.api.ApiMobileMetaEntity;
+public interface ApiMobileMetaService extends IService {
+
+
+
+ ApiMobileMetaEntity selectApiMobileMetaById(Long id);
+
+
+ Long insertApiMobileMeta(ApiMobileMetaEntity apiMobileMeta);
+
+
+ Long insertOrUpdateApiMobileMeta(ApiMobileMetaEntity apiMobileMeta);
+
+
+ int updateApiMobileMetaById(ApiMobileMetaEntity apiMobileMeta);
+
+
+ int updateCoverApiMobileMetaById(ApiMobileMetaEntity apiMobileMeta);
+
+
+ int deleteApiMobileMetaById(Long id);
+
+
+}
\ No newline at end of file
diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiMobileMetaServiceImpl.java b/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiMobileMetaServiceImpl.java
new file mode 100644
index 0000000..7ce1eea
--- /dev/null
+++ b/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiMobileMetaServiceImpl.java
@@ -0,0 +1,68 @@
+package com.heyu.api.data.service.impl.api;
+/**
+*
+* 账户表 服务类
+*
+*
+* @author quyixiao
+* @since 2025-04-19
+*/
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.heyu.api.data.dao.api.ApiMobileMetaDao;
+import com.heyu.api.data.entity.api.ApiMobileMetaEntity;
+import com.heyu.api.data.service.api.ApiMobileMetaService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+@Service
+public class ApiMobileMetaServiceImpl extends ServiceImpl implements ApiMobileMetaService {
+
+
+ @Autowired
+ private ApiMobileMetaDao apiMobileMetaDao;
+
+
+
+ @Override
+ public ApiMobileMetaEntity selectApiMobileMetaById(Long id){
+ return apiMobileMetaDao.selectApiMobileMetaById(id);
+ }
+
+
+
+ @Override
+ public Long insertApiMobileMeta(ApiMobileMetaEntity apiMobileMeta){
+ return apiMobileMetaDao.insertApiMobileMeta(apiMobileMeta);
+ }
+
+
+
+ @Override
+ public Long insertOrUpdateApiMobileMeta(ApiMobileMetaEntity apiMobileMeta){
+ return apiMobileMetaDao.insertOrUpdateApiMobileMeta(apiMobileMeta);
+ }
+
+
+
+ @Override
+ public int updateApiMobileMetaById(ApiMobileMetaEntity apiMobileMeta){
+ return apiMobileMetaDao.updateApiMobileMetaById(apiMobileMeta);
+ }
+
+
+
+ @Override
+ public int updateCoverApiMobileMetaById(ApiMobileMetaEntity apiMobileMeta){
+ return apiMobileMetaDao.updateCoverApiMobileMetaById(apiMobileMeta);
+ }
+
+
+
+ @Override
+ public int deleteApiMobileMetaById(Long id){
+ return apiMobileMetaDao.deleteApiMobileMetaById(id);
+ }
+
+
+
+}
diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiRechargeMoneyServiceImpl.java b/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiRechargeMoneyServiceImpl.java
index cb98ab2..8f0acef 100644
--- a/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiRechargeMoneyServiceImpl.java
+++ b/api-mapper/src/main/java/com/heyu/api/data/service/impl/api/ApiRechargeMoneyServiceImpl.java
@@ -61,7 +61,7 @@ public class ApiRechargeMoneyServiceImpl extends ServiceImpl
+
+
+
+
+
diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java
index e34c74b..7c3c230 100644
--- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java
+++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java
@@ -93,7 +93,7 @@ public class MysqlMain_insert {
System.out.println(MysqlMain_insert.save_path);
List list = new ArrayList();
- list.add(new TablesBean("api_bank_card"));
+ list.add(new TablesBean("api_mobile_meta"));
List list2 = new ArrayList();
diff --git a/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ABank2MetaVerifyHandle.java b/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ABank2MetaVerifyHandle.java
index 13f3453..8136588 100644
--- a/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ABank2MetaVerifyHandle.java
+++ b/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ABank2MetaVerifyHandle.java
@@ -122,7 +122,7 @@ public class ABank2MetaVerifyHandle extends AlibabaBaseHandle {
}
+
+
+
+
+ public boolean checkMobileResp(TMobile3MetaVerificationResp bank2MetaVerifyResponse) {
+ if (bank2MetaVerifyResponse != null) {
+ if (bank2MetaVerifyResponse.getCode() == 400) {
+ return true;
+
+ }
+ if (bank2MetaVerifyResponse.getData() != null) {
+ if ("1".equals(bank2MetaVerifyResponse.getData().getResult())
+ || "2".equals(bank2MetaVerifyResponse.getData().getResult())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+
}
diff --git a/api-third/src/main/java/com/heyu/api/tencent/handle/TMobile2MetaHandle.java b/api-third/src/main/java/com/heyu/api/tencent/handle/TMobile2MetaHandle.java
new file mode 100644
index 0000000..67ac9e0
--- /dev/null
+++ b/api-third/src/main/java/com/heyu/api/tencent/handle/TMobile2MetaHandle.java
@@ -0,0 +1,120 @@
+package com.heyu.api.tencent.handle;
+
+import com.alibaba.fastjson.JSONObject;
+import com.heyu.api.data.constants.ApiConstants;
+import com.heyu.api.data.dao.api.ApiMobileMetaDao;
+import com.heyu.api.data.entity.api.ApiMobileMetaEntity;
+import com.heyu.api.data.service.api.ApiRechargeMoneyService;
+import com.heyu.api.data.utils.StringUtils;
+import com.heyu.api.tencent.TencentBaseHandle;
+import com.heyu.api.tencent.request.TMobile3MetaVerificationRequest;
+import com.heyu.api.tencent.resp.TMobile3MetaVerificationResp;
+import com.heyu.api.utils.HttpUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/***
+ * https://market.aliyun.com/apimarket/detail/cmapi00066757#sku=yuncode6075700003
+ *
+ *身份信息认证(二要素核验)
+ *
+ *
+ */
+@Component
+public class TMobile2MetaHandle extends TencentBaseHandle {
+
+
+ @Autowired
+ private ApiMobileMetaDao apiMobileMetaDao;
+
+ @Autowired
+ private ApiRechargeMoneyService apiRechargeMoneyService;
+
+
+
+ @Override
+ public String check(TMobile3MetaVerificationRequest tMobile3MetaVerificationRequest) {
+
+ if (StringUtils.isBlank(tMobile3MetaVerificationRequest.getMobile())
+ || StringUtils.isBlank(tMobile3MetaVerificationRequest.getRealName())) {
+
+
+ return "手机号 + 真实姓名不能为空";
+ }
+
+
+ return "";
+ }
+
+ @Override
+ public TMobile3MetaVerificationResp run(TMobile3MetaVerificationRequest ap) throws Exception {
+ TMobile3MetaVerificationResp resp = null;
+
+ ApiMobileMetaEntity apiMobileMeta = apiMobileMetaDao.selectApiMobileMetaByMobileRealNameChannelEnableStatus(ap.getMobile(), ap.getRealName(), ApiConstants.third, 1);
+ if (apiMobileMeta != null) {
+
+ resp = JSONObject.parseObject(apiMobileMeta.getApiResult(), TMobile3MetaVerificationResp.class);
+
+
+ apiMobileMetaDao.updateApiMobileMetaUseCountById(1L, apiMobileMeta.getId());
+ return resp;
+
+
+ }
+
+
+ String host = "https://kzmobilev2.market.alicloudapi.com";
+ String path = "/api-mall/mobile_two/check";
+ String method = "POST";
+ String appcode = ApiConstants.APP_CODE;
+
+ Map headers = new HashMap();
+ //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
+ headers.put("Authorization", "APPCODE " + appcode);
+ //根据API的要求,定义相对应的Content-Type
+ headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+ Map querys = new HashMap();
+ Map bodys = new HashMap();
+ bodys.put("mobile", ap.getMobile());
+ bodys.put("name", ap.getRealName());
+ /**
+ *
+ *
+ * 重要提示如下:
+ * HttpUtils请从
+ * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
+ * 下载
+ *
+ * 相应的依赖请参照
+ * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
+ */
+ HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
+
+ //获取response的body
+ String result = EntityUtils.toString(response.getEntity());
+
+ apiMobileMeta = new ApiMobileMetaEntity();
+ apiMobileMeta.setMobile(ap.getMobile());
+ apiMobileMeta.setRealName(ap.getRealName());
+ apiMobileMeta.setChannel(ApiConstants.third);
+ apiMobileMeta.setEnableStatus(1);
+ apiMobileMeta.setApiResult(result);
+ apiMobileMetaDao.insertApiMobileMeta(apiMobileMeta);
+
+
+
+
+
+
+ apiRechargeMoneyService.addUseCountAndSendWarnMsg(ApiConstants.mobile_verification_3, 1);
+
+
+ resp = JSONObject.parseObject(result, TMobile3MetaVerificationResp.class);
+ return resp;
+ }
+}
diff --git a/api-third/src/main/java/com/heyu/api/tencent/handle/TMobile3MetaHandle.java b/api-third/src/main/java/com/heyu/api/tencent/handle/TMobile3MetaHandle.java
new file mode 100644
index 0000000..b14723f
--- /dev/null
+++ b/api-third/src/main/java/com/heyu/api/tencent/handle/TMobile3MetaHandle.java
@@ -0,0 +1,112 @@
+package com.heyu.api.tencent.handle;
+
+import com.alibaba.fastjson.JSONObject;
+import com.heyu.api.data.constants.ApiConstants;
+import com.heyu.api.data.dao.api.ApiMobileMetaDao;
+import com.heyu.api.data.entity.api.ApiMobileMetaEntity;
+import com.heyu.api.data.service.api.ApiRechargeMoneyService;
+import com.heyu.api.data.utils.StringUtils;
+import com.heyu.api.tencent.TencentBaseHandle;
+import com.heyu.api.tencent.request.TMobile3MetaVerificationRequest;
+import com.heyu.api.tencent.resp.TMobile3MetaVerificationResp;
+import com.heyu.api.utils.HttpUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/***
+ * https://market.aliyun.com/apimarket/detail/cmapi00066757#sku=yuncode6075700003
+ *
+ *身份信息认证(二要素核验)
+ *
+ *
+ */
+@Component
+public class TMobile3MetaHandle extends TencentBaseHandle {
+
+
+ @Autowired
+ private ApiMobileMetaDao apiMobileMetaDao;
+
+ @Autowired
+ private ApiRechargeMoneyService apiRechargeMoneyService;
+
+
+ @Override
+ public String check(TMobile3MetaVerificationRequest tMobile3MetaVerificationRequest) {
+
+
+ if (StringUtils.isBlank(tMobile3MetaVerificationRequest.getMobile())
+ || StringUtils.isBlank(tMobile3MetaVerificationRequest.getRealName())
+ || StringUtils.isBlank(tMobile3MetaVerificationRequest.getIdCardNumber())
+
+ ) {
+
+
+ return "手机号 + 真实姓名 + 身份证号 不能为空";
+ }
+ return null;
+ }
+
+ @Override
+ public TMobile3MetaVerificationResp run(TMobile3MetaVerificationRequest ap) throws Exception {
+ ApiMobileMetaEntity apiMobileMeta2 = apiMobileMetaDao.selectApiMobileMetaByMobileRealNameChannelEnableStatus(ap.getMobile(), ap.getRealName(), ApiConstants.third, 1);
+ if (apiMobileMeta2 != null) {
+ TMobile3MetaVerificationResp resp = JSONObject.parseObject(apiMobileMeta2.getApiResult(), TMobile3MetaVerificationResp.class);
+ // 如果二要素都失败,那直接返回 ,这样增加撞库的次数,节约成本
+ if (checkMobileResp(resp)) {
+ apiMobileMetaDao.updateApiMobileMetaUseCountById(1L, apiMobileMeta2.getId());
+ return resp;
+ }
+ }
+
+
+ TMobile3MetaVerificationResp resp = null;
+ ApiMobileMetaEntity apiMobileMeta = apiMobileMetaDao.selectApiMobileMetaByMobileRealNameIdCardNumberChannelEnableStatus(ap.getMobile(), ap.getRealName(), ap.getIdCardNumber(), ApiConstants.third, 1);
+ if (apiMobileMeta != null) {
+ resp = JSONObject.parseObject(apiMobileMeta.getApiResult(), TMobile3MetaVerificationResp.class);
+ apiMobileMetaDao.updateApiMobileMetaUseCountById(1L, apiMobileMeta.getId());
+ return resp;
+ }
+
+
+ String host = "https://kzmobilev2.market.alicloudapi.com";
+ String path = "/api/mobile_three/check";
+ String method = "GET";
+ String appcode = ApiConstants.APP_CODE;
+ Map headers = new HashMap();
+ //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
+ headers.put("Authorization", "APPCODE " + appcode);
+ Map querys = new HashMap();
+ querys.put("mobile", ap.getMobile());
+ querys.put("name", ap.getRealName());
+ querys.put("idcard", ap.getIdCardNumber());
+
+
+ HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
+
+ //获取response的body
+ String result = EntityUtils.toString(response.getEntity());
+
+
+ apiMobileMeta = new ApiMobileMetaEntity();
+ apiMobileMeta.setMobile(ap.getMobile());
+ apiMobileMeta.setRealName(ap.getRealName());
+ apiMobileMeta.setIdCardNumber(ap.getIdCardNumber());
+
+ apiMobileMeta.setChannel(ApiConstants.third);
+ apiMobileMeta.setEnableStatus(1);
+ apiMobileMeta.setApiResult(result);
+ apiMobileMetaDao.insertApiMobileMeta(apiMobileMeta);
+
+
+ apiRechargeMoneyService.addUseCountAndSendWarnMsg(ApiConstants.mobile_verification_3, 1);
+
+ resp = JSONObject.parseObject(result, TMobile3MetaVerificationResp.class);
+ return resp;
+ }
+}
diff --git a/api-third/src/main/java/com/heyu/api/tencent/request/TMobile3MetaVerificationRequest.java b/api-third/src/main/java/com/heyu/api/tencent/request/TMobile3MetaVerificationRequest.java
new file mode 100644
index 0000000..514633a
--- /dev/null
+++ b/api-third/src/main/java/com/heyu/api/tencent/request/TMobile3MetaVerificationRequest.java
@@ -0,0 +1,41 @@
+package com.heyu.api.tencent.request;
+
+import com.heyu.api.tencent.TencentBaseRequest;
+import lombok.Data;
+
+/****
+ * https://console.cloud.tencent.com/api/explorer?Product=faceid&Version=2018-03-01&Action=PhoneVerification
+ *
+ * 手机号三要素核验
+ */
+@Data
+public class TMobile3MetaVerificationRequest extends TencentBaseRequest {
+
+
+
+
+
+
+ /***
+ * 是 String 手机号。
+ * 示例值:16137688175
+ */
+ private String mobile;
+
+
+ /***
+ * 姓名。
+ * 示例值:韦小宝
+ */
+ private String realName;
+
+
+ /***
+ *是 String 身份证号。
+ * 示例值:11204416541220243X
+ */
+ private String idCardNumber;
+
+
+
+}
diff --git a/api-third/src/main/java/com/heyu/api/tencent/resp/TMobile3MetaVerificationResp.java b/api-third/src/main/java/com/heyu/api/tencent/resp/TMobile3MetaVerificationResp.java
new file mode 100644
index 0000000..878a729
--- /dev/null
+++ b/api-third/src/main/java/com/heyu/api/tencent/resp/TMobile3MetaVerificationResp.java
@@ -0,0 +1,44 @@
+package com.heyu.api.tencent.resp;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/***
+ * {
+ * "msg": "成功",
+ * "success": true,
+ * "code": 200,
+ * "data": {
+ * "result": "0", //0一致 ,1不一致,2库无或销户
+ * "orderNo": "202406282055560705659",
+ * "desc": "一致"
+ * }
+ * }
+ */
+@NoArgsConstructor
+@Data
+public class TMobile3MetaVerificationResp {
+
+
+ @JsonProperty("msg")
+ private String msg;
+ @JsonProperty("success")
+ private Boolean success;
+ @JsonProperty("code")
+ private Integer code;
+ @JsonProperty("data")
+ private DataDTO data;
+
+ @NoArgsConstructor
+ @Data
+ public static class DataDTO {
+ @JsonProperty("result")
+ private String result;
+ @JsonProperty("orderNo")
+ private String orderNo;
+ @JsonProperty("desc")
+ private String desc;
+ }
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard234MetaController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard234MetaController.java
index 7b5ceb0..6dad5cc 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard234MetaController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard234MetaController.java
@@ -26,10 +26,12 @@ import org.springframework.web.bind.annotation.RestController;
*
*
*
+ * https://marketnext.console.aliyun.com/bizlist
+ *
*/
@Slf4j
@RestController
-@RequestMapping("/bank/card/4")
+@RequestMapping("/bank/card/234")
@NotIntercept
public class BankCard234MetaController extends BaseController {
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard4MetaController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard4MetaController.java
index a291ee3..9bd52e8 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard4MetaController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCard4MetaController.java
@@ -37,7 +37,7 @@ public class BankCard4MetaController extends BaseController {
public static final String SUCCESS_MSG = "银⾏卡号+姓名+身份证号+手机号信息匹配";
public static final String FAILED_MSG = "银⾏卡号+姓名+身份证号码+手机号信息不匹配";
- // http://localhost:8888/bank/card/4/verify?bankCard=6214855713516769&realName=%E7%9E%BF%E8%B4%BB%E6%99%93&idCardNumber=430529199209255030&mobile=18458195149
+ // http://localhost:8888/bank/card/4/verify?bankCard=6214855713516769&realName=瞿贻晓&idCardNumber=430529199209255030&mobile=18458195149
@RequestMapping("/verify")
@EbAuthentication(tencent = ApiConstants.TENCENT_AUTH)
public R verify(ABank4MetaVerifyRequest bankCard4MetaRequest) {
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile23MetaVerificationController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile23MetaVerificationController.java
new file mode 100644
index 0000000..8fe1cad
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile23MetaVerificationController.java
@@ -0,0 +1,97 @@
+package com.heyu.api.controller.mobile;
+
+import com.heyu.api.data.annotation.EbAuthentication;
+import com.heyu.api.data.annotation.NotIntercept;
+import com.heyu.api.data.constants.ApiConstants;
+import com.heyu.api.data.utils.ApiR;
+import com.heyu.api.data.utils.R;
+import com.heyu.api.data.utils.StringUtils;
+import com.heyu.api.resp.certificate.MobileMetaResp;
+import com.heyu.api.tencent.handle.TMobile2MetaHandle;
+import com.heyu.api.tencent.handle.TMobile3MetaHandle;
+import com.heyu.api.tencent.request.TMobile3MetaVerificationRequest;
+import com.heyu.api.tencent.resp.TMobile3MetaVerificationResp;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/***
+ *手机号三要素核验
+ */
+@Slf4j
+@RestController
+@RequestMapping("/mobile/23/meta")
+
+@NotIntercept
+public class Mobile23MetaVerificationController {
+
+
+ public static final String SUCCESS_MSG = "信息匹配";
+ public static final String FAILED_MSG = "信息不匹配";
+
+
+ @Autowired
+ private TMobile2MetaHandle tMobile2MetaHandle;
+
+
+ @Autowired
+ private TMobile3MetaHandle tMobile3MetaHandle;
+
+
+ @RequestMapping("/verification")
+ @EbAuthentication(tencent = ApiConstants.TENCENT_AUTH)
+ public R verification(TMobile3MetaVerificationRequest request) {
+ return doVerify(request);
+ }
+
+
+ public R doVerify(TMobile3MetaVerificationRequest request) {
+ MobileMetaResp mobileMetaResp = new MobileMetaResp();
+ ApiR tR = null;
+
+
+ if (StringUtils.isNotBlank(request.getMobile())
+ && StringUtils.isNotBlank(request.getRealName())
+ && StringUtils.isNotBlank(request.getIdCardNumber())
+ ) {
+ tR = tMobile3MetaHandle.handle(request);
+ } else if (StringUtils.isNotBlank(request.getMobile())
+ && StringUtils.isNotBlank(request.getRealName())
+ ) {
+ tR = tMobile2MetaHandle.handle(request);
+ } else {
+ return R.error("手机号 + 姓名 不能为空");
+ }
+
+
+ if (tR.isSuccess()) {
+ TMobile3MetaVerificationResp bankMetaVerifyResponse = tR.getData();
+
+ if (bankMetaVerifyResponse != null) {
+ if (bankMetaVerifyResponse.getCode() == 400) {
+ mobileMetaResp.setCheckResult(ApiConstants.FAILED);
+ mobileMetaResp.setDesc(bankMetaVerifyResponse.getMsg());
+ return R.ok().setData(mobileMetaResp);
+ }
+
+ if (bankMetaVerifyResponse.getCode() == 200 && bankMetaVerifyResponse.getData() != null) {
+ String result = bankMetaVerifyResponse.getData().getResult();
+ if ("0".equals(result)) {
+ mobileMetaResp.setCheckResult(ApiConstants.SUCCESS);
+ mobileMetaResp.setDesc(SUCCESS_MSG);
+ } else if ("1".equals(result)) {
+ mobileMetaResp.setCheckResult(ApiConstants.FAILED);
+ mobileMetaResp.setDesc(FAILED_MSG);
+ } else {
+ mobileMetaResp.setCheckResult(result + "");
+ mobileMetaResp.setDesc(bankMetaVerifyResponse.getData().getDesc());
+ }
+ }
+ return R.ok().setData(mobileMetaResp);
+ }
+ }
+ return R.error(tR.getErrorMsg());
+ }
+
+}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile2MetaVerificationController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile2MetaVerificationController.java
index 8b74bab..9792787 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile2MetaVerificationController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile2MetaVerificationController.java
@@ -1,21 +1,19 @@
package com.heyu.api.controller.mobile;
-import com.heyu.api.request.mobile.Mobile2MetaVerificationRequest;
-import com.heyu.api.resp.mobile.Mobile3MetaVerificationResp;
+import com.heyu.api.data.annotation.EbAuthentication;
import com.heyu.api.data.annotation.NotIntercept;
+import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
-import com.heyu.api.tencent.handle.TCheckPhoneAndNameHandle;
-import com.heyu.api.tencent.request.TCheckPhoneAndNameRequest;
-import com.tencentcloudapi.faceid.v20180301.models.CheckPhoneAndNameResponse;
+import com.heyu.api.resp.certificate.MobileMetaResp;
+import com.heyu.api.tencent.handle.TMobile2MetaHandle;
+import com.heyu.api.tencent.request.TMobile3MetaVerificationRequest;
+import com.heyu.api.tencent.resp.TMobile3MetaVerificationResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.HashMap;
-import java.util.Map;
-
/***
* 手机号二要素核验
*/
@@ -27,43 +25,54 @@ import java.util.Map;
public class Mobile2MetaVerificationController {
- public final static Map checkResult = new HashMap<>();
+ public static final String SUCCESS_MSG = "银⾏卡号+姓名信息匹配";
+ public static final String FAILED_MSG = "银⾏卡号+姓名信息不匹配";
@Autowired
- private TCheckPhoneAndNameHandle tCheckPhoneAndNameHandle;
+ private TMobile2MetaHandle tMobile2MetaHandle;
- @RequestMapping("/verification")
- public R verification(Mobile2MetaVerificationRequest request) {
- Mobile3MetaVerificationResp resp = new Mobile3MetaVerificationResp("1");
- TCheckPhoneAndNameRequest tPhone3MetaVerificationRequest = new TCheckPhoneAndNameRequest();
- tPhone3MetaVerificationRequest.setMobile(request.getMobile());
+ @RequestMapping("/verify")
+ @EbAuthentication(tencent = ApiConstants.TENCENT_AUTH)
+ public R verify(TMobile3MetaVerificationRequest request) {
- tPhone3MetaVerificationRequest.setName(request.getRealName());
+ return doVerify(request);
+ }
- ApiR tR = tCheckPhoneAndNameHandle.handle(tPhone3MetaVerificationRequest);
+
+
+ // http://localhost:8888/mobile/2/meta/verify?mobile=18458195149&realName=瞿贻晓
+ public R doVerify(TMobile3MetaVerificationRequest request) {
+ MobileMetaResp mobileMetaResp = new MobileMetaResp();
+ ApiR tR = tMobile2MetaHandle.handle(request);
if (tR.isSuccess()) {
- CheckPhoneAndNameResponse response = tR.getData();
- resp.setCheckResult(response.getResult());
- resp.setDesc(checkResult.get(response.getResult()));
- resp.setDescription(response.getDescription());
- return R.ok().setData(resp);
+ TMobile3MetaVerificationResp bankMetaVerifyResponse = tR.getData();
+ if (bankMetaVerifyResponse != null) {
+ if (bankMetaVerifyResponse.getCode() == 400) {
+ mobileMetaResp.setCheckResult(ApiConstants.FAILED);
+ mobileMetaResp.setDesc(bankMetaVerifyResponse.getMsg());
+ return R.ok().setData(mobileMetaResp);
+ }
+
+ if (bankMetaVerifyResponse.getCode() == 200 && bankMetaVerifyResponse.getData() != null) {
+ String result = bankMetaVerifyResponse.getData().getResult();
+ if ("0".equals(result)) {
+ mobileMetaResp.setCheckResult(ApiConstants.SUCCESS);
+ mobileMetaResp.setDesc(SUCCESS_MSG);
+ } else if ("1".equals(result)) {
+ mobileMetaResp.setCheckResult(ApiConstants.FAILED);
+ mobileMetaResp.setDesc(FAILED_MSG);
+ } else {
+ mobileMetaResp.setCheckResult(result + "");
+ mobileMetaResp.setDesc(bankMetaVerifyResponse.getData().getDesc());
+ }
+ }
+ return R.ok().setData(mobileMetaResp);
+ }
}
return R.error(tR.getErrorMsg());
}
-
- static {
- checkResult.put("0", "验证结果一致");
- checkResult.put("1", "验证结果不一致");
- checkResult.put("-1", "查无记录");
- checkResult.put("-2", "引擎未知错误");
- checkResult.put("-3", "引擎服务异常");
- checkResult.put("-4", "姓名校验不通过");
- checkResult.put("-5", "手机号码不合法");
- checkResult.put("-6", " 认证次数超过当日限制,请次日重试");
- }
-
}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile3MetaVerificationController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile3MetaVerificationController.java
index 7659616..4f59dcd 100644
--- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile3MetaVerificationController.java
+++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mobile/Mobile3MetaVerificationController.java
@@ -1,21 +1,19 @@
package com.heyu.api.controller.mobile;
-import com.heyu.api.request.mobile.Mobile3MetaVerificationRequest;
-import com.heyu.api.resp.mobile.Mobile3MetaVerificationResp;
+import com.heyu.api.data.annotation.EbAuthentication;
import com.heyu.api.data.annotation.NotIntercept;
+import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
-import com.heyu.api.tencent.handle.TPhone3MetaVerificationHandle;
-import com.heyu.api.tencent.request.TPhone3MetaVerificationRequest;
-import com.tencentcloudapi.faceid.v20180301.models.PhoneVerificationResponse;
+import com.heyu.api.resp.certificate.MobileMetaResp;
+import com.heyu.api.tencent.handle.TMobile3MetaHandle;
+import com.heyu.api.tencent.request.TMobile3MetaVerificationRequest;
+import com.heyu.api.tencent.resp.TMobile3MetaVerificationResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.HashMap;
-import java.util.Map;
-
/***
*手机号三要素核验
*/
@@ -27,56 +25,51 @@ import java.util.Map;
public class Mobile3MetaVerificationController {
- public final static Map checkResult = new HashMap<>();
- public final static Map resultDetailMap = new HashMap<>();
+ public static final String SUCCESS_MSG = "手机号+姓名+身份证信息匹配";
+ public static final String FAILED_MSG = "手机号+姓名+身份证信息不匹配";
+
@Autowired
- private TPhone3MetaVerificationHandle tPhone3MetaVerificationHandle;
+ private TMobile3MetaHandle tMobile3MetaHandle;
+
+ // http://localhost:8888/mobile/3/meta/verify?mobile=18458195149&realName=瞿贻晓&idCardNumber=430529199209255030
+ @RequestMapping("/verify")
+ @EbAuthentication(tencent = ApiConstants.TENCENT_AUTH)
+ public R verify(TMobile3MetaVerificationRequest request) {
+ return doVerify(request);
+ }
- @RequestMapping("/verification")
- public R verification(Mobile3MetaVerificationRequest request) {
- Mobile3MetaVerificationResp resp = new Mobile3MetaVerificationResp("-1");
- TPhone3MetaVerificationRequest tPhone3MetaVerificationRequest = new TPhone3MetaVerificationRequest();
- tPhone3MetaVerificationRequest.setPhone(request.getMobile());
- tPhone3MetaVerificationRequest.setIdCard(request.getIdCardNumber());
- tPhone3MetaVerificationRequest.setName(request.getRealName());
- ApiR tR = tPhone3MetaVerificationHandle.handle(tPhone3MetaVerificationRequest);
+ public R doVerify(TMobile3MetaVerificationRequest request) {
+ MobileMetaResp mobileMetaResp = new MobileMetaResp();
+ ApiR tR = tMobile3MetaHandle.handle(request);
if (tR.isSuccess()) {
- PhoneVerificationResponse response = tR.getData();
- resp.setCheckResult(response.getResult());
- resp.setDesc(checkResult.get(response.getResult()));
- resp.setIsp(response.getIsp());
- resp.setDescription(response.getDescription());
- resp.setResultDetail(response.getResultDetail());
+ TMobile3MetaVerificationResp bankMetaVerifyResponse = tR.getData();
+ if (bankMetaVerifyResponse != null) {
+ if (bankMetaVerifyResponse.getCode() == 400) {
+ mobileMetaResp.setCheckResult(ApiConstants.FAILED);
+ mobileMetaResp.setDesc(bankMetaVerifyResponse.getMsg());
+ return R.ok().setData(mobileMetaResp);
+ }
- resp.setResultDetailDesc(resultDetailMap.get(response.getResultDetail()));
-
- return R.ok().setData(resp);
-
+ if (bankMetaVerifyResponse.getCode() == 200 && bankMetaVerifyResponse.getData() != null) {
+ String result = bankMetaVerifyResponse.getData().getResult();
+ if ("0".equals(result)) {
+ mobileMetaResp.setCheckResult(ApiConstants.SUCCESS);
+ mobileMetaResp.setDesc(SUCCESS_MSG);
+ } else if ("1".equals(result)) {
+ mobileMetaResp.setCheckResult(ApiConstants.FAILED);
+ mobileMetaResp.setDesc(FAILED_MSG);
+ } else {
+ mobileMetaResp.setCheckResult(result + "");
+ mobileMetaResp.setDesc(bankMetaVerifyResponse.getData().getDesc());
+ }
+ }
+ return R.ok().setData(mobileMetaResp);
+ }
}
return R.error(tR.getErrorMsg());
}
-
- static {
- checkResult.put("0", "三要素信息一致");
- checkResult.put("-4", "三要素信息不一致");
- checkResult.put("-6", "手机号码不合法");
- checkResult.put("-7", "身份证号码有误");
- checkResult.put("-8", "姓名校验不通过");
- checkResult.put("-9", "没有记录");
- checkResult.put("-11", "验证中心服务繁忙");
- checkResult.put("-12", "认证次数超过当日限制,请次日重试");
-
-
-
- resultDetailMap.put("PhoneIdCardMismatch","手机号码与姓名一致,与身份证号不一致");
- resultDetailMap.put("PhoneNameMismatch","手机号码身份证号一致,与姓名不一致");
- resultDetailMap.put("PhoneNameIdCardMismatch","手机号码与姓名和身份证号均不一致");
- resultDetailMap.put("NameIdCardMismatch","姓名和身份证号不一致");
- resultDetailMap.put("OtherMismatch","其他不一致");
- }
-
}
diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/MobileMetaResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/MobileMetaResp.java
new file mode 100644
index 0000000..aaa3b06
--- /dev/null
+++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/MobileMetaResp.java
@@ -0,0 +1,13 @@
+package com.heyu.api.resp.certificate;
+
+
+import lombok.Data;
+
+@Data
+public class MobileMetaResp extends BaseCheckResultResp {
+
+
+
+
+
+}