1.增加账号实名认证接口
2.去除自动提现
This commit is contained in:
20
pom.xml
20
pom.xml
@@ -53,6 +53,26 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>dytnsapi20200217</artifactId>
|
||||
<version>2.9.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>tea-openapi</artifactId>
|
||||
<version>0.3.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>tea-console</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>tea-util</artifactId>
|
||||
<version>0.2.23</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.volcengine</groupId>
|
||||
|
||||
@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.sqx.common.annotation.Debounce;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.app.annotation.Login;
|
||||
import com.sqx.modules.app.dao.AuthCertNoDTO;
|
||||
import com.sqx.modules.app.entity.UserEntity;
|
||||
import com.sqx.modules.app.service.IAppleService;
|
||||
import com.sqx.modules.app.service.UserService;
|
||||
@@ -19,6 +21,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import weixin.popular.api.SnsAPI;
|
||||
import weixin.popular.bean.sns.SnsToken;
|
||||
@@ -163,6 +166,13 @@ public class AppLoginController {
|
||||
return userService.sendMsg(phone, state,null);
|
||||
}
|
||||
|
||||
@Login
|
||||
@Debounce(value = "#authCertNoDTO.idNum")
|
||||
@PostMapping("/authCertNo")
|
||||
public Result authCertNo(@RequestBody @Validated AuthCertNoDTO authCertNoDTO, @RequestAttribute("userId") long userId) {
|
||||
return Result.success().put("data", userService.authCertNo(userId, authCertNoDTO));
|
||||
}
|
||||
|
||||
@ApiOperation("解密手机号")
|
||||
@RequestMapping(value = "/selectPhone",method = RequestMethod.POST)
|
||||
public Result getPhoneNumberBeanS5(@RequestBody WxPhone wxPhone) {
|
||||
|
||||
13
src/main/java/com/sqx/modules/app/dao/AuthCertNoDTO.java
Normal file
13
src/main/java/com/sqx/modules/app/dao/AuthCertNoDTO.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.sqx.modules.app.dao;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class AuthCertNoDTO {
|
||||
@NotBlank
|
||||
private String name;
|
||||
@NotBlank
|
||||
private String idNum;
|
||||
}
|
||||
@@ -199,5 +199,8 @@ public class UserEntity implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private Integer vipType;
|
||||
|
||||
private String certName;
|
||||
private String certNo;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.sqx.modules.app.service;
|
||||
|
||||
|
||||
public interface AliService {
|
||||
void authCertNo(String name, String idCard);
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.sqx.common.utils.PageUtils;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.app.dao.AuthCertNoDTO;
|
||||
import com.sqx.modules.app.entity.UserEntity;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -229,4 +230,8 @@ public interface UserService extends IService<UserEntity> {
|
||||
|
||||
void firstBindAwardsMoney(UserEntity entity);
|
||||
|
||||
/**
|
||||
* 二要素身份证认证
|
||||
*/
|
||||
Object authCertNo(long userId, AuthCertNoDTO authCertNoDTO);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.sqx.modules.app.service.impl;
|
||||
|
||||
import com.aliyun.dytnsapi20200217.Client;
|
||||
import com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationRequest;
|
||||
import com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationResponse;
|
||||
import com.aliyun.teautil.models.RuntimeOptions;
|
||||
import com.sqx.common.exception.SqxException;
|
||||
import com.sqx.modules.app.service.AliService;
|
||||
import com.sqx.modules.common.entity.CommonInfo;
|
||||
import com.sqx.modules.common.service.CommonInfoService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class AliServiceImpl implements AliService {
|
||||
private final CommonInfoService commonInfoService;
|
||||
private Client client;
|
||||
|
||||
public AliServiceImpl(CommonInfoService commonInfoService) {
|
||||
this.commonInfoService = commonInfoService;
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void init() throws Exception {
|
||||
CommonInfo keyIdInfo = commonInfoService.findOne(85);
|
||||
CommonInfo securityInfo = commonInfoService.findOne(86);
|
||||
|
||||
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
|
||||
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
|
||||
.setAccessKeyId(keyIdInfo.getValue())
|
||||
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
|
||||
.setAccessKeySecret(securityInfo.getValue());
|
||||
config.endpoint = "dytnsapi.aliyuncs.com";
|
||||
this.client = new Client(config);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void authCertNo(String name, String idCard) {
|
||||
log.info("阿里云二要素认证请求参数: {} {}", name, idCard);
|
||||
CertNoTwoElementVerificationRequest certNoTwoElementVerificationRequest = new com.aliyun.dytnsapi20200217.models.CertNoTwoElementVerificationRequest()
|
||||
.setAuthCode("t92K8i9ae6")
|
||||
.setCertName(name)
|
||||
.setCertNo(idCard);
|
||||
RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
|
||||
try {
|
||||
CertNoTwoElementVerificationResponse resp = client.certNoTwoElementVerificationWithOptions(certNoTwoElementVerificationRequest, runtime);
|
||||
log.info("阿里云二要素认证响应参数: {}", resp);
|
||||
if (resp.getStatusCode() != 200) {
|
||||
throw new SqxException("请求失败");
|
||||
}
|
||||
|
||||
if (!"OK".equals(resp.getBody().getCode())) {
|
||||
throw new SqxException(resp.getBody().getMessage());
|
||||
}
|
||||
|
||||
if (!"1".equals(resp.getBody().getData().getIsConsistent())) {
|
||||
throw new SqxException("身份证信息不匹配,认证失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ package com.sqx.modules.app.service.impl;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.core.util.IdcardUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -15,6 +17,7 @@ import com.aliyuncs.DefaultAcsClient;
|
||||
import com.aliyuncs.IAcsClient;
|
||||
import com.aliyuncs.http.MethodType;
|
||||
import com.aliyuncs.profile.DefaultProfile;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -32,16 +35,15 @@ import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
|
||||
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
|
||||
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
|
||||
import com.github.qcloudsms.SmsSingleSenderResult;
|
||||
import com.sqx.common.exception.SqxException;
|
||||
import com.sqx.common.utils.DateUtils;
|
||||
import com.sqx.common.utils.PageUtils;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.app.dao.AuthCertNoDTO;
|
||||
import com.sqx.modules.app.dao.MsgDao;
|
||||
import com.sqx.modules.app.dao.UserDao;
|
||||
import com.sqx.modules.app.entity.*;
|
||||
import com.sqx.modules.app.service.UserMoneyDetailsService;
|
||||
import com.sqx.modules.app.service.UserMoneyService;
|
||||
import com.sqx.modules.app.service.UserService;
|
||||
import com.sqx.modules.app.service.UserVipService;
|
||||
import com.sqx.modules.app.service.*;
|
||||
import com.sqx.modules.app.utils.JwtUtils;
|
||||
import com.sqx.modules.app.utils.UserConstantInterface;
|
||||
import com.sqx.modules.common.entity.CommonInfo;
|
||||
@@ -69,6 +71,7 @@ import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import weixin.popular.api.SnsAPI;
|
||||
@@ -117,12 +120,17 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
||||
private DiscSpinningService discSpinningService;
|
||||
@Autowired
|
||||
private SysUserService sysUserService;
|
||||
private final AliService aliService;
|
||||
|
||||
@Value("${spring.profiles.active}")
|
||||
private String profiles;
|
||||
|
||||
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
|
||||
|
||||
public UserServiceImpl(@Lazy AliService aliService) {
|
||||
this.aliService = aliService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result authenticationRegister(JSONObject jsonObject, HttpServletRequest request) {
|
||||
reentrantReadWriteLock.writeLock().lock();
|
||||
@@ -1535,4 +1543,35 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object authCertNo(long userId, AuthCertNoDTO authCertNoDTO) {
|
||||
authCertNoDTO.setName(StrUtil.trim(authCertNoDTO.getName()));
|
||||
authCertNoDTO.setIdNum(StrUtil.trim(authCertNoDTO.getIdNum()));
|
||||
if (!IdcardUtil.isValidCard(authCertNoDTO.getIdNum())) {
|
||||
throw new SqxException("身份证号码有误");
|
||||
}
|
||||
|
||||
UserEntity userEntity = baseMapper.selectById(userId);
|
||||
if (userEntity == null) {
|
||||
throw new SqxException("用户信息不存在");
|
||||
}
|
||||
|
||||
if (userEntity.getCertName() != null) {
|
||||
throw new SqxException("此账号已认证");
|
||||
}
|
||||
|
||||
Integer count = baseMapper.selectCount(new LambdaQueryWrapper<UserEntity>()
|
||||
.eq(UserEntity::getCertName, authCertNoDTO.getName())
|
||||
.eq(UserEntity::getCertNo, authCertNoDTO.getIdNum()));
|
||||
if (count > 1) {
|
||||
throw new SqxException("此实名信息已存在");
|
||||
}
|
||||
|
||||
aliService.authCertNo(authCertNoDTO.getName(), authCertNoDTO.getIdNum());
|
||||
|
||||
userEntity.setCertName(authCertNoDTO.getName());
|
||||
userEntity.setCertNo(authCertNoDTO.getIdNum());
|
||||
return updateById(userEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,10 +101,11 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
|
||||
userMoneyService.updateAmount(1, receive.getUserId(), receive.getNumber().doubleValue());
|
||||
|
||||
|
||||
if (receive.getNumber().compareTo(new BigDecimal("0.1")) > 0 && StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) {
|
||||
//提现
|
||||
withdraw(userInfo, receive.getNumber().doubleValue());
|
||||
}
|
||||
// 去除自动提现
|
||||
// if (receive.getNumber().compareTo(new BigDecimal("0.1")) > 0 && StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) {
|
||||
// //提现
|
||||
// withdraw(userInfo, receive.getNumber().doubleValue());
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -455,6 +455,13 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
|
||||
if (StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
|
||||
return Result.error(9999, "请先绑定支付宝账号!");
|
||||
}
|
||||
if (StrUtil.isBlank(userInfo.getCertName())) {
|
||||
return Result.error(9999, "请先实名认证!");
|
||||
}
|
||||
|
||||
if (!userInfo.getZhiFuBaoName().equals(userInfo.getCertName())) {
|
||||
return Result.error(9999, "支付宝和实名姓名不太无法提现!");
|
||||
}
|
||||
alipayAccount = userInfo.getZhiFuBao();
|
||||
alipayName = userInfo.getZhiFuBaoName();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user