package com.ydtech.modules.admin.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.components.UnionPayRequestApiComponent; import com.ydtech.modules.admin.components.request.UnionPayRequest; import com.ydtech.modules.admin.components.response.UnionPayResponse; import com.ydtech.modules.admin.dao.SysUserBankCardMapper; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.po.SysUserBankCard; import com.ydtech.modules.admin.model.po.SysUserBankCardHistory; import com.ydtech.modules.admin.model.vo.SysUserBankCardVO; import com.ydtech.modules.admin.service.*; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.modules.protocol.utils.AssertionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @author Administrator * @description 针对表【sys_user_bank_card(银行卡号)】的数据库操作Service实现 * @createDate 2024-03-05 11:52:30 */ @Service public class SysUserBankCardServiceImpl extends ServiceImpl implements SysUserBankCardService { @Resource private SysUserBankCardService sysUserBankCardService; @Resource private SysUserBankCardHistoryService sysUserBankCardHistoryService; @Resource private UnionPayRequestApiComponent unionPayRequestApiComponent; @Resource private SysUserService sysUserService; @Resource private SysPartnerService sysPartnerService; @Resource private SysAgencyLeaderService sysAgencyLeaderService; @Override public BasePageResult queryByVo(SysUserBankCardVO sysUserBankCardVO) { Page page = new Page<>(sysUserBankCardVO.getPageNum(), sysUserBankCardVO.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.isNotEmpty(sysUserBankCardVO.getUserId())) { wrapper.eq(SysUserBankCard::getUserId, sysUserBankCardVO.getUserId()); } if (StringUtils.isNotEmpty(sysUserBankCardVO.getBankNumber())) { wrapper.eq(SysUserBankCard::getBankNumber, sysUserBankCardVO.getBankNumber()); } if (StringUtils.isNotEmpty(sysUserBankCardVO.getBankAccount())) { wrapper.eq(SysUserBankCard::getBankAccount, sysUserBankCardVO.getBankAccount()); } if (StringUtils.isNotEmpty(sysUserBankCardVO.getBankAddress())) { wrapper.eq(SysUserBankCard::getBankAddress, sysUserBankCardVO.getBankAddress()); } if (StringUtils.isNotEmpty(sysUserBankCardVO.getUserName())) { wrapper.eq(SysUserBankCard::getUserName, sysUserBankCardVO.getUserName()); } if (sysUserBankCardVO.getAuditStatus() != null) { wrapper.eq(SysUserBankCard::getAuditStatus, sysUserBankCardVO.getAuditStatus()); } wrapper.orderByAsc(SysUserBankCard::getAuditTime); Page insOrdersPage = page(page, wrapper); return new BasePageResult<>(sysUserBankCardVO.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), insOrdersPage.getRecords()); } @Override public void deleteSysUserBank(Long id) { boolean b = removeById(id); AssertionUtils.isSucceed(b, "删除失败"); } @Override public void unbind(SysUserBankCard sysUserBankCard) { SysUserBankCard sub = sysUserBankCardService.getById(sysUserBankCard.getId()); if (!sub.getAuditStatus().equals("1")) { throw new SystemException("该卡审核还未通过,不可解绑"); } sub.setDelFlag(sysUserBankCard.getDelFlag()); sub.setAuditStatus(sub.getAuditStatus()); sub.setAuditTime(null); sub.setAuditUserName(null); sub.setAuditUserId(null); sub.setRemark(""); sysUserBankCardService.updateById(sub); SysUserBankCardHistory sysUserBankCardHistory = new SysUserBankCardHistory(); sysUserBankCardHistory.setBankNumber(sysUserBankCard.getBankNumber()); sysUserBankCardHistory.setType("unbind"); sysUserBankCardHistory.setCreateTime(new Date()); sysUserBankCardHistory.setCreator(BaseController.getUser().getId()); sysUserBankCardHistory.setBankNumberUserId(sub.getUserId()); sysUserBankCardHistoryService.save(sysUserBankCardHistory); } @Override public void rebind(SysUserBankCard sysUserBankCard) { SysUserBankCard sub = sysUserBankCardService.getOne(new LambdaQueryWrapper() .eq(SysUserBankCard::getBankNumber, sysUserBankCard.getBankNumber())); sub.setDelFlag(sysUserBankCard.getDelFlag()); sub.setAuditStatus("0"); sub.setAuditTime(null); sub.setAuditUserId(null); sub.setAuditUserName(null); sysUserBankCardService.updateById(sub); SysUserBankCardHistory sysUserBankCardHistory = new SysUserBankCardHistory(); sysUserBankCardHistory.setBankNumber(sysUserBankCard.getBankNumber()); sysUserBankCardHistory.setType("rebind"); sysUserBankCardHistory.setCreateTime(new Date()); sysUserBankCardHistory.setCreator(BaseController.getUser().getId()); sysUserBankCardHistory.setBankNumberUserId(sub.getUserId()); sysUserBankCardHistoryService.save(sysUserBankCardHistory); } @Override public void uodate(SysUserBankCardVO sysUserBankCardVO) { SysUserBankCard sysUserBankCard = new SysUserBankCard(); BeanUtils.copyProperties(sysUserBankCardVO, sysUserBankCard); super.updateById(sysUserBankCard); } @Override public HttpResult getByUserId(String userId) { return baseMapper.getByUserId(userId); } @Override public SysUserBankCard getByBankNumber(String bankNumber, String userId) { return baseMapper.getByBankNumber(bankNumber, userId); } @Override @Transactional public HttpResult insertByBankNumber(SysUserBankCardVO sysUserBankCardVO,boolean flag) { //个贷验证银行卡 SysUser sysUser; String userId = sysUserBankCardVO.getUserId(); // 传入userid为后台绑定 if (StringUtils.isNotEmpty(userId)) { sysUser = sysUserService.getByUserId(userId); //不传为应用绑定 } else { sysUser = sysUserService.getByUserId(StpUtil.getLoginId().toString()); } UnionPayResponse response = new UnionPayResponse(); if ("2".equals(sysUser.getManagementSource())) { UnionPayRequest request = new UnionPayRequest(); request.setCardNo(sysUserBankCardVO.getBankNumber()); request.setPhoneNo(sysUserBankCardVO.getPhoneNo()); request.setName(sysUser.getName()); request.setCertNo(sysUser.getIdentity()); if(flag) { response = unionPayRequestApiComponent.bankCardVerifyRequest(request); if (response != null && !"00".equals(response.getRespCode())) { return HttpResult.error("未通过银行卡认证:" + response.getDetailRespMsg()); } } } SysUserBankCard findSysUserBankCard = sysUserBankCardService.getOne(new LambdaQueryWrapper() .eq(SysUserBankCard::getBankNumber, sysUserBankCardVO.getBankNumber()) .eq(SysUserBankCard::getUserId, sysUserBankCardVO.getUserId())); if (findSysUserBankCard != null) { findSysUserBankCard.setDelFlag("0"); findSysUserBankCard.setAuditStatus("0"); findSysUserBankCard.setAuditUserId(null); findSysUserBankCard.setAuditUserName(null); findSysUserBankCard.setAuditTime(null); findSysUserBankCard.setRemark(""); findSysUserBankCard.setBankAddress(sysUserBankCardVO.getBankAddress()); findSysUserBankCard.setBankAccount(sysUserBankCardVO.getBankAccount()); findSysUserBankCard.setRealUserName(sysUserBankCardVO.getRealUserName()); findSysUserBankCard.setBankVerify(response != null && "00".equals(response.getRespCode()) ? 1 : 0); sysUserBankCardService.updateById(findSysUserBankCard); SysUserBankCardHistory sysUserBankCardHistory = new SysUserBankCardHistory(); sysUserBankCardHistory.setBankNumber(sysUserBankCardVO.getBankNumber()); sysUserBankCardHistory.setType("rebind"); sysUserBankCardHistory.setCreateTime(new Date()); sysUserBankCardHistory.setCreator(BaseController.getUser().getId()); sysUserBankCardHistory.setBankNumberUserId(findSysUserBankCard.getUserId()); sysUserBankCardHistoryService.save(sysUserBankCardHistory); } else { SysUserBankCard sysUserBankCard = new SysUserBankCard(); BeanUtils.copyProperties(sysUserBankCardVO, sysUserBankCard); sysUserBankCard.setDelFlag("0"); sysUserBankCard.setCreateTime(new Date()); sysUserBankCard.setAuditStatus("0"); //待审核 sysUserBankCard.setIsDefault(0); sysUserBankCard.setBankNumber(sysUserBankCardVO.getBankNumber().replaceAll("\\s+", "")); sysUserBankCard.setUserName(sysUserBankCardVO.getUserName()); sysUserBankCard.setUserId(sysUserBankCardVO.getUserId()); sysUserBankCard.setBankVerify(response != null && "00".equals(response.getRespCode()) ? 1 : 0); //校验登录用户是否为合伙人或者是机构负责人 boolean a = sysPartnerService.checkPartner(sysUser.getId()); boolean b = sysAgencyLeaderService.checkUserId(sysUser.getId()); if (a) { //a:合伙人绑卡 sysUserBankCard.setAscription("a"); } else if (b) { //b:机构负责人绑卡 sysUserBankCard.setAscription("b"); } else { sysUserBankCard.setAscription(sysUser.getManagementSource()); } baseMapper.insert(sysUserBankCard); SysUserBankCardHistory sysUserBankCardHistory = new SysUserBankCardHistory(); sysUserBankCardHistory.setBankNumber(sysUserBankCardVO.getBankNumber()); sysUserBankCardHistory.setType("add"); sysUserBankCardHistory.setCreateTime(new Date()); sysUserBankCardHistory.setCreator(BaseController.getUser().getId()); sysUserBankCardHistory.setBankNumberUserId(sysUserBankCardVO.getUserId()); sysUserBankCardHistoryService.save(sysUserBankCardHistory); } return HttpResult.ok("新增成功"); } @Override @Transactional public void auditByBankNumber(SysUserBankCardVO sysUserBankCardVO) { SysUserBankCard sysUserBankCard = sysUserBankCardService.getById(sysUserBankCardVO.getId()); if (sysUserBankCard != null && StringUtils.isNotBlank(sysUserBankCard.getAuditStatus()) && !"0".equals(sysUserBankCard.getAuditStatus())) { throw new SystemException("账户已审核不能重复审核"); } sysUserBankCard.setAuditStatus(sysUserBankCardVO.getAuditStatus()); sysUserBankCard.setAuditTime(new Date()); sysUserBankCard.setAuditUserId(BaseController.getUser().getId()); sysUserBankCard.setAuditUserName(BaseController.getUser().getName()); sysUserBankCard.setRemark(sysUserBankCardVO.getRemark()); sysUserBankCardService.updateById(sysUserBankCard); if (sysUserBankCardVO.getAuditStatus().equals("1")) { SysUserBankCardHistory sysUserBankCardHistory = new SysUserBankCardHistory(); sysUserBankCardHistory.setBankNumber(sysUserBankCard.getBankNumber()); sysUserBankCardHistory.setType("pass"); sysUserBankCardHistory.setCreateTime(new Date()); sysUserBankCardHistory.setCreator(BaseController.getUser().getId()); sysUserBankCardHistory.setBankNumberUserId(sysUserBankCard.getUserId()); sysUserBankCardHistoryService.save(sysUserBankCardHistory); } if (sysUserBankCardVO.getAuditStatus().equals("2")) { SysUserBankCardHistory sysUserBankCardHistory = new SysUserBankCardHistory(); sysUserBankCardHistory.setBankNumber(sysUserBankCard.getBankNumber()); sysUserBankCardHistory.setType("refuse"); sysUserBankCardHistory.setCreateTime(new Date()); sysUserBankCardHistory.setCreator(BaseController.getUser().getId()); sysUserBankCardHistory.setBankNumberUserId(sysUserBankCard.getUserId()); sysUserBankCardHistoryService.save(sysUserBankCardHistory); } } @Override public List queryUsableCard(SysUserBankCard sysUserBankCard) { return baseMapper.queryUsableCard(sysUserBankCard); } @Override public HttpResult> getUserBankList(SysUserBankCard sysUserBankCard) { sysUserBankCard.setUserId(BaseController.getUser().getId()); List sysUserBankCardList = baseMapper.getUserBankList(sysUserBankCard); return HttpResult.ok("success", sysUserBankCardList); } public HttpResult> getUserBankListByQueryParam(SysUserBankCard sysUserBankCard) { sysUserBankCard.setUserId(sysUserBankCard.getUserId()); List sysUserBankCardList = baseMapper.getUserBankList(sysUserBankCard); return HttpResult.ok("success", sysUserBankCardList); } @Override public HttpResult> getUserBankCardHistoryList(SysUserBankCardHistory sysUserBankCardHistory) { List sysUserBankCardHistoryList = baseMapper.getUserBankCardHistoryList(sysUserBankCardHistory); return HttpResult.ok("success", sysUserBankCardHistoryList); } }