1
zj
2025-09-23 ddac27814805530e7714de844a6752c1682d3d0e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.ruoyi.web.controller.product;
 
import cn.hutool.core.util.ObjectUtil;
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.system.domain.InsurancePosition;
import com.ruoyi.system.domain.UserAccount;
import com.ruoyi.system.domain.UserKyc;
import com.ruoyi.system.domain.UserPolicy;
import com.ruoyi.system.domain.dto.UserKycDto;
import com.ruoyi.system.domain.dto.UserPolicyDto;
import com.ruoyi.system.mapper.UserKycMapper;
import com.ruoyi.system.service.UserAccountService;
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;
 
@RestController
@RequestMapping("/kyc")
public class UserKycController extends BaseController {
 
    @Autowired
    UserKycService userKycService;
 
    @Autowired
    UserAccountService userAccountService;
 
    /**
     * 实名认证申请
     */
    @PostMapping("/kycApply")
    @Transactional
    public Result kycApply(UserKycDto dto) {
        try {
            UserAccount userAccount = userAccountService
                    .getOne(new LambdaQueryWrapper<UserAccount>()
                            .eq(UserAccount::getAccount,dto.getAccount()));
            if(ObjectUtil.isEmpty(userAccount)){
                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());
                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());
                userKycService.updateById(userKyc);
            }
            userAccount.setKycStatus(0);
            userAccountService.updateById(userAccount);
            return Result.success("提交成功,请等待审核!");
        }catch (Exception e){
            e.printStackTrace();
            // 手动设置回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return Result.error("提交失败");
        }
    }
 
    /**
     * 实名认证审批
     */
    @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)){
                return AjaxResult.error("实名认证数据不存在");
            }
            if(userKyc.getState() != 0){
                return AjaxResult.error("订单已审批!");
            }
            if(approvalStatus == 2 && StringUtils.isEmpty(message)){
                return AjaxResult.error("驳回理由不能为空!");
            }
            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.printStackTrace();
            // 手动设置回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return AjaxResult.error("审批失败!");
        }
    }
 
    /**
     * 什么认证列表
     */
    @GetMapping("/list")
    public TableDataInfo list(@RequestParam(value = "account",required = false) String account) {
        startPage();
        LambdaQueryWrapper<UserKyc> wrapper = new LambdaQueryWrapper<>();
        if(StringUtils.isNotEmpty(account)){
            wrapper.eq(UserKyc::getAccount,account);
        }
        // 按创建时间倒序排列
        wrapper.orderByDesc(UserKyc::getCreatedAt);
        List<UserKyc> list = userKycService.list(wrapper);
        return getDataTable(list);
    }
}