分开绑定支付宝接口和实名认证接口

This commit is contained in:
谭凯凯
2025-01-08 20:46:48 +08:00
committed by Tankaikai
parent c03b171b0a
commit 9bf587dbf0

View File

@@ -100,6 +100,100 @@ public class AppController {
return userService.updatePhone(phone, msg, userId);
}
@Login
@RequestMapping(value = "/bindAlipay", method = RequestMethod.POST)
@ApiOperation("绑定支付宝")
@ResponseBody
@Debounce(interval = 3000, value = "#userId")
public Result bindAlipay(@RequestAttribute("userId") Long userId,
@RequestParam String zhiFuBao,
@RequestParam String certName
) {
if (StrUtil.isAllBlank(zhiFuBao, certName)) {
return Result.error("支付宝账号或姓名不能为空");
}
UserEntity userEntity = userService.getById(userId);
if (zhiFuBao.equals(userEntity.getZhiFuBao()) && certName.equals(userEntity.getZhiFuBaoName())) {
return Result.success();
}
int count = userService.count(new QueryWrapper<UserEntity>()
.ne("user_id", userId)
.eq("zhi_fu_bao_name", certName)
.eq("zhi_fu_bao", zhiFuBao));
if (count > 0) {
return Result.error("支付宝信息修改失败: 此支付宝账号已被绑定");
}
UserInfo userInfo = userInfoService.getByUserId(userId);
if (userInfo != null) {
if (StrUtil.isNotBlank(userInfo.getCertName()) && !certName.equals(userInfo.getCertName())) {
return Result.error("支付宝信息修改失败: 姓名与实名认证信息不相符");
}
}
if (!DataLimitUtil.isAccessAllowed(zhiFuBao + certName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) {
return Result.error("支付宝信息修改失败: 相同支付宝账号每月可绑定次数已用完");
}
if (!ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) {
return Result.error("支付宝信息修改失败: 每月可修改次数已用完,请联系管理员");
}
userEntity.setZhiFuBao(zhiFuBao);
userEntity.setZhiFuBaoName(certName);
userService.update(userEntity, new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getUserId, userId));
return Result.success();
}
@Login
@RequestMapping(value = "/realNameAuth", method = RequestMethod.POST)
@ApiOperation("实名认证")
@ResponseBody
@Debounce(interval = 3000, value = "#userId")
public Result bindAlipay(@RequestAttribute("userId") Long userId,
@RequestParam String certName,
@RequestParam String certNum,
@RequestParam String accountNo,
@RequestParam String mobile
) {
if (StrUtil.isAllBlank(certName, certNum, accountNo, mobile)) {
return Result.error("真实姓名、身份证号码、银行卡号、银行预留手机号缺一不可");
}
int count = userInfoService.count(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, userId).eq(UserInfo::getCertName, certName).eq(UserInfo::getCertNo, certNum).isNotNull(UserInfo::getAccountNo).isNotNull(UserInfo::getMobile));
if (count > 0) {
return Result.error("已完成实名认证,无需重复操作");
}
count = userInfoService.count(new LambdaQueryWrapper<UserInfo>().ne(UserInfo::getUserId, userId).eq(UserInfo::getCertName, certName).eq(UserInfo::getCertNo, certNum).isNotNull(UserInfo::getAccountNo).isNotNull(UserInfo::getMobile));
if (count > 0) {
return Result.error("实名认证失败: 此身份证信息已被其他账号绑定");
}
if (!ApiAccessLimitUtil.getCertAuthIsAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 5)) {
return Result.error("实名修改失败: 每月可修改次数已用完,请联系管理员");
}
String respJson = aliService.auth(certName, certNum, accountNo, mobile);
UserInfo userInfo = userInfoService.getByUserId(userId);
userInfo.setCertName(certName);
userInfo.setCertNo(certNum);
userInfo.setAccountNo(accountNo);
userInfo.setMobile(mobile);
userInfo.setRespJson(respJson);
userInfo.setUpdateTime(DateUtil.date());
boolean update = userInfoService.update(userInfo, new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getUserId, userId).eq(UserInfo::getId, userInfo.getId()));
if (!update) {
return Result.error("实名修改失败: 请稍后重试");
}
// 校验实名信息是否在黑名单里面
count = tbUserBlacklistMapper.selectCount(new LambdaQueryWrapper<TbUserBlacklist>().eq(TbUserBlacklist::getIdCardNo, certNum));
if (count > 0) {
UserEntity userEntity = userService.getById(userId);
userEntity.setStatus(0);
userService.update(userEntity, new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getUserId, userId));
log.warn("异常行为用户:实名信息异常: {}", userId);
return Result.error("异常行为: 您的实名信息存在异常行为");
}
ApiAccessLimitUtil.setCertAuthIsAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month");
return Result.success();
}
@Login
@RequestMapping(value = "/updateUser", method = RequestMethod.POST)
@ApiOperation("用户修改个人信息")