1.实名认证接口修改

This commit is contained in:
张松
2025-01-02 15:35:39 +08:00
parent e97c0dc581
commit 9af991348f
3 changed files with 81 additions and 25 deletions

View File

@@ -127,6 +127,11 @@ public class ApiAccessLimitUtil {
return false; return false;
} }
public static void removeKey(String id, String key) {
String redisKey = generateRedisKey(key, id);
redisUtils.delete(redisKey);
}
public static<T> T runFunAndCheckKey(Supplier<T> supplier, String lockKey, Integer seconds) { public static<T> T runFunAndCheckKey(Supplier<T> supplier, String lockKey, Integer seconds) {
try{ try{

View File

@@ -1,17 +1,23 @@
package com.sqx.modules.app.controller.app; package com.sqx.modules.app.controller.app;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sqx.common.annotation.Debounce; import com.sqx.common.annotation.Debounce;
import com.sqx.common.exception.SqxException;
import com.sqx.common.utils.ApiAccessLimitUtil; import com.sqx.common.utils.ApiAccessLimitUtil;
import com.sqx.common.utils.DataLimitUtil; import com.sqx.common.utils.DataLimitUtil;
import com.sqx.common.utils.Result; import com.sqx.common.utils.Result;
import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.annotation.Login;
import com.sqx.modules.app.annotation.LoginUser; import com.sqx.modules.app.annotation.LoginUser;
import com.sqx.modules.app.entity.UserEntity; import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.app.entity.UserInfo;
import com.sqx.modules.app.service.AliService;
import com.sqx.modules.app.service.AppService; import com.sqx.modules.app.service.AppService;
import com.sqx.modules.app.service.UserInfoService;
import com.sqx.modules.app.service.UserService; import com.sqx.modules.app.service.UserService;
import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.common.service.CommonInfoService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -36,6 +42,13 @@ public class AppController {
private AppService appService; private AppService appService;
@Autowired @Autowired
private CommonInfoService commonRepository; private CommonInfoService commonRepository;
private final UserInfoService userInfoService;
private final AliService aliService;
public AppController(UserInfoService userInfoService, AliService aliService) {
this.userInfoService = userInfoService;
this.aliService = aliService;
}
@PostMapping("/authenticationRegister") @PostMapping("/authenticationRegister")
@ApiOperation("认证创建账号") @ApiOperation("认证创建账号")
@@ -79,43 +92,81 @@ public class AppController {
@ApiOperation("用户修改个人信息") @ApiOperation("用户修改个人信息")
@ResponseBody @ResponseBody
@Debounce(interval = 3000, value = "#userId") @Debounce(interval = 3000, value = "#userId")
public Result updateUserImageUrl(@RequestAttribute("userId") Long userId, String zhiFuBao, String zhiFuBaoName) { public Result updateUserImageUrl(@RequestAttribute("userId") Long userId, @RequestParam(required = false) String zhiFuBao,
if (StrUtil.isEmpty(zhiFuBao) || StrUtil.isEmpty(zhiFuBaoName)) { @RequestParam String certName, @RequestParam(required = false) String certNum) {
return Result.error("支付宝账户及姓名不能为空!"); if (StrUtil.isAllBlank(zhiFuBao, certNum)) {
} return Result.error("支付宝账号或实名身份证号码必须传递一个");
if (!DataLimitUtil.isAccessAllowed(zhiFuBao+zhiFuBaoName, Integer.parseInt(commonRepository.findOne(924).getValue()), "month")) {
return Result.error("修改失败,相同支付宝账号每月可绑定次数已用完");
} }
UserInfo userInfo = userInfoService.getByUserId(userId);
UserEntity userEntity = userService.getById(userId);
int count = userService.count(new QueryWrapper<UserEntity>() int count = userService.count(new QueryWrapper<UserEntity>()
.ne("user_id", userId) .ne("user_id", userId)
.eq("zhi_fu_bao_name", zhiFuBaoName) .eq("zhi_fu_bao_name", certName)
.eq("zhi_fu_bao", zhiFuBao)); .eq("zhi_fu_bao", zhiFuBao));
if (count > 0) { if (StrUtil.isNotBlank(zhiFuBao) && count > 0) {
return Result.error("一个支付宝账号仅可绑定一个用户"); return Result.error("一个支付宝账号仅可绑定一个用户");
} }
if (!ApiAccessLimitUtil.isAccessAllowed(userId.toString(), "updateZFB", Integer.parseInt(commonRepository.findOne(925).getValue()), "month")) {
return Result.error("每月可修改次数已用完,请联系管理员"); if (StrUtil.isNotBlank(zhiFuBao)) {
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 old = userService.getById(userId);
String accountNo = old.getZhiFuBao();
String accountName = old.getZhiFuBaoName(); if (StrUtil.isNotBlank(certNum)) {
boolean isFirstBind = false; if (StrUtil.isNotBlank(userEntity.getZhiFuBaoName()) && !certName.equals(userEntity.getZhiFuBaoName())) {
if (StrUtil.isEmpty(accountNo) && StrUtil.isEmpty(accountName)) { return Result.error("姓名与绑定支付宝信息不相符");
isFirstBind = true; }
if (!IdcardUtil.isValidCard(certNum)) {
throw new SqxException("身份证号码有误");
}
Integer idCount = userInfoService.countCertCount(certName, certNum);
if (idCount > 1) {
throw new SqxException("此实名信息已存在");
}
if (!ApiAccessLimitUtil.isAccessAllowed(String.valueOf(userId), "updateAuthCertInfo", 1, "month")) {
return Result.error("每月可修改次数已用完,请联系管理员");
}
} }
UserEntity userEntity = new UserEntity();
userEntity.setZhiFuBao(zhiFuBao);
userEntity.setZhiFuBaoName(zhiFuBaoName); if (StrUtil.isNotBlank(zhiFuBao)) {
userEntity.setUserId(userId); userEntity.setZhiFuBao(zhiFuBao);
old.setZhiFuBao(userEntity.getZhiFuBao()); userEntity.setZhiFuBaoName(certName);
old.setZhiFuBaoName(userEntity.getZhiFuBaoName()); userService.updateById(userEntity);
boolean bool = userService.updateById(userEntity); }
if (StrUtil.isNotBlank(certNum)) {
try {
aliService.authCertNo(certName, certNum);
}catch (Exception e) {
ApiAccessLimitUtil.removeKey(String.valueOf(userId), "updateAuthCertInfo");
return Result.error(e.getMessage());
}
userInfo.setCertName(certName);
userInfo.setCertNo(certNum);
userInfo.setUpdateTime(DateUtil.date());
userInfoService.updateById(userInfo);
}
return Result.success();
// 去除首绑支付宝奖励 // 去除首绑支付宝奖励
// if (bool && isFirstBind) { // if (bool && isFirstBind) {
// userService.firstBindAwardsMoney(old); // userService.firstBindAwardsMoney(old);
// } // }
return Result.success();
} }

View File

@@ -61,7 +61,7 @@ public class AliServiceImpl implements AliService {
throw new SqxException("身份证信息不匹配,认证失败"); throw new SqxException("身份证信息不匹配,认证失败");
} }
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new SqxException(e.getMessage());
} }
} }
} }