临时提交
This commit is contained in:
parent
5441c04743
commit
435907a5a5
|
@ -55,4 +55,9 @@ public class CacheConstants
|
|||
* 舆情分析
|
||||
*/
|
||||
public static final String BRIEF = DASHBOARD_PREFIX + "brief";
|
||||
|
||||
/**
|
||||
* 活体检测Token
|
||||
*/
|
||||
public static final String LIVENESS_TOKEN = "liveness:";
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.ruoyi.common.valid.liveness;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import com.ruoyi.common.utils.ServiceUtil;
|
||||
import com.ruoyi.common.utils.http.AliHttpUtils;
|
||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||
|
@ -21,6 +22,7 @@ public class LivenessUtils {
|
|||
public static final String APP_KEY = SpringUtils.getRequiredProperty("liveness.appKey");
|
||||
public static final String APP_CODE = SpringUtils.getRequiredProperty("liveness.appCode");
|
||||
public static final String APP_SECRET = SpringUtils.getRequiredProperty("liveness.appSecret");
|
||||
public static final String JUMP_URL = SpringUtils.getRequiredProperty("liveness.jumpUrl");
|
||||
|
||||
|
||||
/**
|
||||
|
@ -43,7 +45,10 @@ public class LivenessUtils {
|
|||
|
||||
try {
|
||||
HttpResponse res = AliHttpUtils.doGet(host, path, method, headers, querys);
|
||||
LivenessResponseBody<LivenessResponseTokenData> body = JSON.parseObject(EntityUtils.toString(res.getEntity()), LivenessResponseBody.class);
|
||||
|
||||
TypeReference<LivenessResponseBody<LivenessResponseTokenData>> typeRef
|
||||
= new TypeReference<LivenessResponseBody<LivenessResponseTokenData>>() {};
|
||||
LivenessResponseBody<LivenessResponseTokenData> body = JSON.parseObject(EntityUtils.toString(res.getEntity()), typeRef);
|
||||
ServiceUtil.assertion(body.getCode() == null || !body.getCode().equals("200"), body.getMsg());
|
||||
return body.getData();
|
||||
} catch (Exception e) {
|
||||
|
@ -67,7 +72,10 @@ public class LivenessUtils {
|
|||
|
||||
try {
|
||||
HttpResponse res = AliHttpUtils.doGet(host, path, method, headers, querys);
|
||||
LivenessResponseBody<LivenessResponseQueryData> body = JSON.parseObject(EntityUtils.toString(res.getEntity()), LivenessResponseBody.class);
|
||||
|
||||
TypeReference<LivenessResponseBody<LivenessResponseQueryData>> typeRef
|
||||
= new TypeReference<LivenessResponseBody<LivenessResponseQueryData>>() {};
|
||||
LivenessResponseBody<LivenessResponseQueryData> body = JSON.parseObject(EntityUtils.toString(res.getEntity()), typeRef);
|
||||
ServiceUtil.assertion(body.getCode() == null || !body.getCode().equals("200"), body.getMsg());
|
||||
return body.getData();
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package com.ruoyi.ss.user.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 用户人脸识别DTO
|
||||
* @author wjh
|
||||
* 2024/9/20
|
||||
*/
|
||||
@Data
|
||||
public class UserFaceDTO {
|
||||
|
||||
private String token;
|
||||
private Long userId;
|
||||
private String name;
|
||||
private String idCard;
|
||||
private String mobile;
|
||||
|
||||
}
|
|
@ -34,6 +34,4 @@ public class UserRealNameDTO {
|
|||
@Pattern(regexp = RegexpUtils.MOBILE_PHONE_REGEXP, message = "手机号格式错误")
|
||||
private String realPhone;
|
||||
|
||||
private String faceReturnUrl;
|
||||
|
||||
}
|
||||
|
|
|
@ -13,4 +13,7 @@ public class UserRealNameVO {
|
|||
@ApiModelProperty("人脸识别token")
|
||||
private String faceToken;
|
||||
|
||||
@ApiModelProperty("跳转URL")
|
||||
private String jumpUrl;
|
||||
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.ruoyi.ss.recordBalance.domain.enums.RecordBalanceBstType;
|
|||
import com.ruoyi.ss.user.domain.SmUserQuery;
|
||||
import com.ruoyi.ss.user.domain.SmUserVo;
|
||||
import com.ruoyi.ss.user.domain.dto.UserRealNameDTO;
|
||||
import com.ruoyi.ss.user.domain.vo.UserRealNameVO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
@ -208,7 +209,7 @@ public interface ISmUserService
|
|||
/**
|
||||
* 实名认证
|
||||
*/
|
||||
int realName(UserRealNameDTO dto);
|
||||
UserRealNameVO realName(UserRealNameDTO dto);
|
||||
|
||||
/**
|
||||
* 标记已读商户协议
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
package com.ruoyi.ss.user.service.impl;
|
||||
|
||||
import com.ruoyi.common.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.domain.entity.SmUser;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.enums.UserType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.ServiceUtil;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||
import com.ruoyi.common.valid.liveness.LivenessResponseTokenData;
|
||||
import com.ruoyi.common.valid.liveness.LivenessUtils;
|
||||
import com.ruoyi.common.valid.realName.RealNameValidUtils;
|
||||
import com.ruoyi.ss.device.domain.DeviceQuery;
|
||||
|
@ -18,7 +23,9 @@ import com.ruoyi.ss.store.domain.StoreVo;
|
|||
import com.ruoyi.ss.store.service.StoreService;
|
||||
import com.ruoyi.ss.user.domain.SmUserQuery;
|
||||
import com.ruoyi.ss.user.domain.SmUserVo;
|
||||
import com.ruoyi.ss.user.domain.dto.UserFaceDTO;
|
||||
import com.ruoyi.ss.user.domain.dto.UserRealNameDTO;
|
||||
import com.ruoyi.ss.user.domain.vo.UserRealNameVO;
|
||||
import com.ruoyi.ss.user.mapper.SmUserMapper;
|
||||
import com.ruoyi.ss.user.service.ISmUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -31,6 +38,7 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -57,6 +65,12 @@ public class SmUserServiceImpl implements ISmUserService
|
|||
@Autowired
|
||||
private RecordBalanceService recordBalanceService;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
// 活体检测返回地址
|
||||
public static final String LIVENESS_RETURN_URL = SpringUtils.getRequiredProperty("liveness.returnUrl");
|
||||
|
||||
/**
|
||||
* 查询普通用户信息
|
||||
*
|
||||
|
@ -279,7 +293,7 @@ public class SmUserServiceImpl implements ISmUserService
|
|||
}
|
||||
|
||||
@Override
|
||||
public int realName(UserRealNameDTO dto) {
|
||||
public UserRealNameVO realName(UserRealNameDTO dto) {
|
||||
SmUserVo user = selectSmUserByUserId(dto.getUserId());
|
||||
ServiceUtil.assertion(user == null, "用户信息不存在");
|
||||
ServiceUtil.assertion(user.getIsReal() != null && user.getIsReal(), "您已进行过实名认证,无需再次认证");
|
||||
|
@ -289,9 +303,24 @@ public class SmUserServiceImpl implements ISmUserService
|
|||
ServiceUtil.assertion(!check, "请输入正确的身份信息:姓名、身份证、手机号需要一致");
|
||||
|
||||
// 获取活体检测token
|
||||
LivenessUtils.getToken(dto.getFaceReturnUrl(), );
|
||||
LivenessResponseTokenData tokenData = LivenessUtils.getToken(LIVENESS_RETURN_URL, null, null);
|
||||
ServiceUtil.assertion(tokenData == null || StringUtils.isBlank(tokenData.getToken()), "获取活体检测token失败");
|
||||
|
||||
// TODO 存入缓存
|
||||
// 存入缓存:10分钟
|
||||
String cacheKey = CacheConstants.LIVENESS_TOKEN + tokenData.getToken();
|
||||
UserFaceDTO faceDto = new UserFaceDTO();
|
||||
faceDto.setUserId(dto.getUserId());
|
||||
faceDto.setToken(tokenData.getToken());
|
||||
faceDto.setName(dto.getRealName());
|
||||
faceDto.setMobile(dto.getRealPhone());
|
||||
faceDto.setIdCard(dto.getRealIdCard());
|
||||
redisCache.setCacheObject(cacheKey, faceDto, 10, TimeUnit.MINUTES);
|
||||
|
||||
// 返回数据
|
||||
UserRealNameVO vo = new UserRealNameVO();
|
||||
vo.setFaceToken(tokenData.getToken());
|
||||
vo.setJumpUrl(LivenessUtils.JUMP_URL + "?token=" + tokenData.getToken());
|
||||
return vo;
|
||||
|
||||
// 修改实名信息
|
||||
// SmUser data = new SmUserQuery();
|
||||
|
|
|
@ -107,3 +107,7 @@ syb:
|
|||
sm2TlPubKey: MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEBQicgWm0KAMqhO3bdqMUEDrKQvYg8cCXHhdGwq7CGE6oJDzJ1P/94HpuVdBf1KidmPxr7HOH+0DAnpeCcx9TcQ==
|
||||
# 支付通知地址
|
||||
notifyUrl: http://124.221.246.124:2290/app/pay/notify/tl
|
||||
|
||||
# 活体检测跳转地址
|
||||
liveness:
|
||||
returnUrl: http://192.168.2.81:3001/liveness
|
||||
|
|
|
@ -107,3 +107,7 @@ syb:
|
|||
sm2TlPubKey: MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEBQicgWm0KAMqhO3bdqMUEDrKQvYg8cCXHhdGwq7CGE6oJDzJ1P/94HpuVdBf1KidmPxr7HOH+0DAnpeCcx9TcQ==
|
||||
# 支付通知地址
|
||||
notifyUrl: https://kg.chuangtewl.com/prod-api/app/pay/notify/tl
|
||||
|
||||
# 活体检测跳转地址
|
||||
liveness:
|
||||
returnUrl: https://kg.chuangtewl.com/liveness
|
||||
|
|
|
@ -58,6 +58,7 @@ liveness:
|
|||
appKey: 204590328
|
||||
appCode: 32b6c6445b1a42ed862dd4202392c47d
|
||||
appSecret: td0vlGZRy9GxlrpinlrxSXFXVW34JxDh
|
||||
jumpUrl: https://liveness.shumaidata.com/index
|
||||
# 人像比对
|
||||
face:
|
||||
appKey: 204590328
|
||||
|
|
Loading…
Reference in New Issue
Block a user