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 { + + + + + +}