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() .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, @RequestParam(value = "state",defaultValue = "0") Integer state ) { startPage(); LambdaQueryWrapper 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 list = userKycService.list(wrapper); return getDataTable(list); } }