From 618f535897f36718829a0f36689ee78e8ce0032f Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Wed, 12 Nov 2025 02:20:43 +0800
Subject: [PATCH] 1
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java | 212 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 192 insertions(+), 20 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
index ac14b1c..feb8d38 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
@@ -1,11 +1,18 @@
package com.ruoyi.web.controller.product;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.crypto.Mode;
+import cn.hutool.crypto.Padding;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.im.comm.Result;
import com.ruoyi.im.service.UserKycService;
import com.ruoyi.im.service.impl.UserKycServiceImpl;
+import com.ruoyi.im.util.SymmetricCryptoUtil;
+import com.ruoyi.system.domain.InsurancePosition;
import com.ruoyi.system.domain.UserAccount;
import com.ruoyi.system.domain.UserKyc;
import com.ruoyi.system.domain.UserPolicy;
@@ -13,15 +20,20 @@
import com.ruoyi.system.domain.dto.UserPolicyDto;
import com.ruoyi.system.mapper.UserKycMapper;
import com.ruoyi.system.service.UserAccountService;
+import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Date;
+import java.util.List;
+import java.util.Optional;
@RestController
@RequestMapping("/kyc")
-public class UserKycController {
+public class UserKycController extends BaseController {
@Autowired
UserKycService userKycService;
@@ -30,34 +42,73 @@
UserAccountService userAccountService;
/**
- * 保险购买申请
+ * 实名认证申请
*/
@PostMapping("/kycApply")
- public Result kycApply(@Valid @RequestBody UserKycDto dto) {
+ @Transactional
+ public Result kycApply(UserKycDto dto) {
try {
- UserAccount userAccount = userAccountService.getById(dto.getUserId());
+ UserAccount userAccount = userAccountService
+ .getOne(new LambdaQueryWrapper<UserAccount>()
+ .eq(UserAccount::getAccount,dto.getAccount()));
if(ObjectUtil.isEmpty(userAccount)){
return Result.error("请重新登录,未查询到你的信息!");
}
- UserKyc userKyc = new UserKyc();
- userKyc.setUserId(userAccount.getId());
- userKyc.setState(0);
- userKyc.setHeadPortraitImg(dto.getHeadPortraitImg());
- userKyc.setNationalEmblemImg(dto.getNationalEmblemImg());
- userKyc.setHandImg(dto.getHandImg());
- userKycService.save(userKyc);
+
+
+ long count = userKycService.count(new LambdaQueryWrapper<>(UserKyc.class)
+ .eq(UserKyc::getIdCard, dto.getIdCard())
+ .eq(UserKyc::getState, 1)
+ );
+ if(count > 0){
+ return Result.error("该身份证已实名认证!");
+ }
+
+ UserKyc userKyc = userKycService.getOne(new LambdaQueryWrapper<>(UserKyc.class)
+ .eq(UserKyc::getUserId, userAccount.getId())
+ );
+ if(ObjectUtil.isEmpty(userKyc)){
+ userKyc = new UserKyc();
+ userKyc.setUserId(userAccount.getId());
+ userKyc.setAccount(userAccount.getAccount());
+ userKyc.setState(0);
+ userKyc.setHeadPortraitImg(dto.getHeadPortraitImg());
+ userKyc.setNationalEmblemImg(dto.getNationalEmblemImg());
+ userKyc.setHandImg(dto.getHandImg());
+ userKyc.setName(dto.getName());
+ userKyc.setIdCard(dto.getIdCard());
+ userKycService.save(userKyc);
+ }else{
+ if(userKyc.getState() == 0){
+ return Result.error("资料审核中,请勿重复提交!");
+ }
+ userKyc.setState(0);
+ userKyc.setHeadPortraitImg(dto.getHeadPortraitImg());
+ userKyc.setNationalEmblemImg(dto.getNationalEmblemImg());
+ userKyc.setHandImg(dto.getHandImg());
+ userKyc.setName(dto.getName());
+ userKyc.setIdCard(dto.getIdCard());
+ userKycService.updateById(userKyc);
+ }
+ userAccount.setKycStatus(0);
+ userAccountService.updateById(userAccount);
return Result.success("提交成功,请等待审核!");
}catch (Exception e){
- e.getMessage();
- return Result.error("购买失败");
+ e.printStackTrace();
+ // 手动设置回滚
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return Result.error("提交失败");
}
}
/**
* 实名认证审批
*/
- @PostMapping("/examine")
- public AjaxResult examine(@RequestParam(value = "id") Integer id, @RequestParam(value = "approvalStatus") Integer approvalStatus, @RequestParam(value = "message",required = false) String message) {
+ @GetMapping("/examine")
+ @Transactional
+ public AjaxResult examine(@RequestParam(value = "id") Integer id,
+ @RequestParam(value = "approvalStatus") Integer approvalStatus,
+ @RequestParam(value = "message",required = false) String message) {
try {
UserKyc userKyc = userKycService.getById(id);
if(ObjectUtil.isEmpty(userKyc)){
@@ -69,14 +120,135 @@
if(approvalStatus == 2 && StringUtils.isEmpty(message)){
return AjaxResult.error("驳回理由不能为空!");
}
- userKyc.setState(approvalStatus);
- userKyc.setMessage(message);
- userKyc.setUpdatedAt(new Date());
- return AjaxResult.success("审批成功");
+ if(approvalStatus == 2){
+ userKyc.setState(approvalStatus);
+ userKyc.setMessage(message);
+ userKyc.setUpdatedAt(new Date());
+ userKyc.setHeadPortraitImg(null);
+ userKyc.setNationalEmblemImg(null);
+ userKyc.setHandImg(null);
+ userKyc.setName(null);
+ userKyc.setIdCard(null);
+ userKycService.updateById(userKyc);
+
+ userKycService.updateById(userKyc);
+ UserAccount userAccount = userAccountService.getById(userKyc.getUserId());
+ userAccount.setKycStatus(approvalStatus);
+ userAccountService.updateById(userAccount);
+ return AjaxResult.success("审批成功");
+ }else{
+ userKyc.setState(approvalStatus);
+ userKyc.setMessage(message);
+ userKyc.setUpdatedAt(new Date());
+ userKycService.updateById(userKyc);
+ UserAccount userAccount = userAccountService.getById(userKyc.getUserId());
+ userAccount.setKycStatus(approvalStatus);
+ userAccountService.updateById(userAccount);
+ return AjaxResult.success("审批成功");
+ }
}catch (Exception e){
- e.getMessage();
+ e.printStackTrace();
+ // 手动设置回滚
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error("审批失败!");
}
}
+ /**
+ * 实名认证列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(@RequestParam(value = "account",required = false) String account,
+ @RequestParam(value = "state",defaultValue = "0") Integer state
+
+ ) {
+ startPage();
+ LambdaQueryWrapper<UserKyc> wrapper = new LambdaQueryWrapper<>();
+ if(StringUtils.isNotEmpty(account)){
+ wrapper.eq(UserKyc::getAccount,account);
+ }
+ if(state != null && state != 3){
+ wrapper.eq(UserKyc::getState,state);
+ }else if(state == 3){
+ wrapper.ne(UserKyc::getState,0);
+ }
+ // 按创建时间倒序排列
+ wrapper.orderByDesc(UserKyc::getCreatedAt);
+ List<UserKyc> list = userKycService.list(wrapper);
+ return getDataTable(list);
+ }
+
+ /**
+ * 实名认证后台修改
+ */
+ @PostMapping("/updateKyc")
+ @Transactional
+ public Result updateKyc(UserKycDto dto) {
+ try {
+ UserKyc userKyc = userKycService.getById(dto.getId());
+ if(ObjectUtil.isEmpty(userKyc)){
+ return Result.error("用户数据不存在!");
+ }else{
+ userKyc.setName(dto.getName());
+ userKyc.setIdCard(dto.getIdCard());
+ userKycService.updateById(userKyc);
+ }
+ return Result.success("修改成功!");
+ }catch (Exception e){
+ e.printStackTrace();
+ // 手动设置回滚
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return Result.error("提交失败");
+ }
+ }
+
+
+ /**
+ * 根据账户查询实名认证信息
+ */
+ @GetMapping("/getByAccount")
+ public Result getByAccount(@RequestParam(value = "account") String account) {
+ LambdaQueryWrapper<UserKyc> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(UserKyc::getAccount,account);
+ // 按创建时间倒序排列
+ wrapper.orderByDesc(UserKyc::getCreatedAt);
+
+ // 查询用户KYC信息
+ UserKyc userKyc = userKycService.getOne(new LambdaQueryWrapper<UserKyc>()
+ .eq(UserKyc::getAccount, account));
+ // 如果KYC信息存在,补充昵称信息
+ UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>()
+ .eq(UserAccount::getAccount, account));
+ // 如果KYC信息不存在,创建空实体
+ if (ObjectUtil.isEmpty(userKyc)) {
+ userKyc = new UserKyc();
+ }
+ if (StringUtils.isNotEmpty(userAccount.getNickname())) {
+ userKyc.setNickName(userAccount.getNickname());
+ userKyc.setPhone(userAccount.getAccount());
+ }
+
+ return Result.success(userKyc);
+ }
+
+
+
+ /**
+ * 获取用户明文密码
+ */
+ @GetMapping("/getAccountPassword")
+ @Transactional
+ public AjaxResult getAccountPassword(@RequestParam(value = "account",required = false) String account) {
+ if(ObjectUtil.isEmpty(account)){
+ return AjaxResult.error("请输入查询账号!");
+ }
+ UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<>(UserAccount.class)
+ .eq(UserAccount::getAccount, account)
+ );
+ if(ObjectUtil.isEmpty(userAccount)){
+ return AjaxResult.error("用户不存在!");
+ }
+ String password = SymmetricCryptoUtil.decryptFromString(userAccount.getPassword(), Mode.CBC, Padding.ZeroPadding);
+ return AjaxResult.success(password);
+ }
}
--
Gitblit v1.9.3