1.增加账号实名认证接口
2.去除自动提现
This commit is contained in:
20
pom.xml
20
pom.xml
@@ -53,6 +53,26 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<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>
|
<dependency>
|
||||||
<groupId>com.volcengine</groupId>
|
<groupId>com.volcengine</groupId>
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.sqx.common.annotation.Debounce;
|
import com.sqx.common.annotation.Debounce;
|
||||||
import com.sqx.common.utils.Result;
|
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.entity.UserEntity;
|
||||||
import com.sqx.modules.app.service.IAppleService;
|
import com.sqx.modules.app.service.IAppleService;
|
||||||
import com.sqx.modules.app.service.UserService;
|
import com.sqx.modules.app.service.UserService;
|
||||||
@@ -19,6 +21,7 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import weixin.popular.api.SnsAPI;
|
import weixin.popular.api.SnsAPI;
|
||||||
import weixin.popular.bean.sns.SnsToken;
|
import weixin.popular.bean.sns.SnsToken;
|
||||||
@@ -163,6 +166,13 @@ public class AppLoginController {
|
|||||||
return userService.sendMsg(phone, state,null);
|
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("解密手机号")
|
@ApiOperation("解密手机号")
|
||||||
@RequestMapping(value = "/selectPhone",method = RequestMethod.POST)
|
@RequestMapping(value = "/selectPhone",method = RequestMethod.POST)
|
||||||
public Result getPhoneNumberBeanS5(@RequestBody WxPhone wxPhone) {
|
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)
|
@TableField(exist = false)
|
||||||
private Integer vipType;
|
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.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.sqx.common.utils.PageUtils;
|
import com.sqx.common.utils.PageUtils;
|
||||||
import com.sqx.common.utils.Result;
|
import com.sqx.common.utils.Result;
|
||||||
|
import com.sqx.modules.app.dao.AuthCertNoDTO;
|
||||||
import com.sqx.modules.app.entity.UserEntity;
|
import com.sqx.modules.app.entity.UserEntity;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -229,4 +230,8 @@ public interface UserService extends IService<UserEntity> {
|
|||||||
|
|
||||||
void firstBindAwardsMoney(UserEntity entity);
|
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.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
|
import cn.hutool.core.util.IdcardUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
@@ -15,6 +17,7 @@ import com.aliyuncs.DefaultAcsClient;
|
|||||||
import com.aliyuncs.IAcsClient;
|
import com.aliyuncs.IAcsClient;
|
||||||
import com.aliyuncs.http.MethodType;
|
import com.aliyuncs.http.MethodType;
|
||||||
import com.aliyuncs.profile.DefaultProfile;
|
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.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.Aps;
|
||||||
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
|
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
|
||||||
import com.github.qcloudsms.SmsSingleSenderResult;
|
import com.github.qcloudsms.SmsSingleSenderResult;
|
||||||
|
import com.sqx.common.exception.SqxException;
|
||||||
import com.sqx.common.utils.DateUtils;
|
import com.sqx.common.utils.DateUtils;
|
||||||
import com.sqx.common.utils.PageUtils;
|
import com.sqx.common.utils.PageUtils;
|
||||||
import com.sqx.common.utils.Result;
|
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.MsgDao;
|
||||||
import com.sqx.modules.app.dao.UserDao;
|
import com.sqx.modules.app.dao.UserDao;
|
||||||
import com.sqx.modules.app.entity.*;
|
import com.sqx.modules.app.entity.*;
|
||||||
import com.sqx.modules.app.service.UserMoneyDetailsService;
|
import com.sqx.modules.app.service.*;
|
||||||
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.utils.JwtUtils;
|
import com.sqx.modules.app.utils.JwtUtils;
|
||||||
import com.sqx.modules.app.utils.UserConstantInterface;
|
import com.sqx.modules.app.utils.UserConstantInterface;
|
||||||
import com.sqx.modules.common.entity.CommonInfo;
|
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.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import weixin.popular.api.SnsAPI;
|
import weixin.popular.api.SnsAPI;
|
||||||
@@ -117,12 +120,17 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
|
|||||||
private DiscSpinningService discSpinningService;
|
private DiscSpinningService discSpinningService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysUserService sysUserService;
|
private SysUserService sysUserService;
|
||||||
|
private final AliService aliService;
|
||||||
|
|
||||||
@Value("${spring.profiles.active}")
|
@Value("${spring.profiles.active}")
|
||||||
private String profiles;
|
private String profiles;
|
||||||
|
|
||||||
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
|
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
|
||||||
|
|
||||||
|
public UserServiceImpl(@Lazy AliService aliService) {
|
||||||
|
this.aliService = aliService;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result authenticationRegister(JSONObject jsonObject, HttpServletRequest request) {
|
public Result authenticationRegister(JSONObject jsonObject, HttpServletRequest request) {
|
||||||
reentrantReadWriteLock.writeLock().lock();
|
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());
|
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())) {
|
// 去除自动提现
|
||||||
//提现
|
// if (receive.getNumber().compareTo(new BigDecimal("0.1")) > 0 && StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) {
|
||||||
withdraw(userInfo, receive.getNumber().doubleValue());
|
// //提现
|
||||||
}
|
// withdraw(userInfo, receive.getNumber().doubleValue());
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -455,6 +455,13 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
|
|||||||
if (StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
|
if (StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
|
||||||
return Result.error(9999, "请先绑定支付宝账号!");
|
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();
|
alipayAccount = userInfo.getZhiFuBao();
|
||||||
alipayName = userInfo.getZhiFuBaoName();
|
alipayName = userInfo.getZhiFuBaoName();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user