UserBankCardService.java 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.izouma.nineth.service;
  2. import com.alipay.api.domain.UserIdentity;
  3. import com.izouma.nineth.domain.IdentityAuth;
  4. import com.izouma.nineth.domain.User;
  5. import com.izouma.nineth.dto.BankValidate;
  6. import com.izouma.nineth.dto.BindCardRequest;
  7. import com.izouma.nineth.dto.UserBankCard;
  8. import com.izouma.nineth.enums.AuthStatus;
  9. import com.izouma.nineth.exception.BusinessException;
  10. import com.izouma.nineth.repo.IdentityAuthRepo;
  11. import com.izouma.nineth.repo.UserBalanceRepo;
  12. import com.izouma.nineth.repo.UserBankCardRepo;
  13. import com.izouma.nineth.repo.UserRepo;
  14. import com.izouma.nineth.utils.BankUtils;
  15. import lombok.AllArgsConstructor;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.apache.commons.lang3.StringUtils;
  18. import org.springframework.stereotype.Service;
  19. import java.util.HashMap;
  20. import java.util.Map;
  21. import java.util.Optional;
  22. @Service
  23. @Slf4j
  24. @AllArgsConstructor
  25. public class UserBankCardService {
  26. private final UserRepo userRepo;
  27. private final UserService userService;
  28. private final UserBankCardRepo userBankCardRepo;
  29. private final IdentityAuthRepo identityAuthRepo;
  30. private final PayEaseService payEaseService;
  31. private final UserBalanceRepo userBalanceRepo;
  32. public Map<String, String> bindCard(Long userId, String phone, String bankNo) {
  33. IdentityAuth identityAuth = identityAuthRepo.findFirstByUserIdAndStatusAndDelFalseOrderByCreatedAtDesc(userId, AuthStatus.SUCCESS)
  34. .orElseThrow(new BusinessException("请先完成实名认证"));
  35. BindCardRequest request = new BindCardRequest(userId.toString(), bankNo, phone, identityAuth.getRealName(),
  36. identityAuth.getIdNo(), null);
  37. String bindCardId = payEaseService.bindCard(request);
  38. Map<String, String> map = new HashMap<>();
  39. map.put("bindCardId", bindCardId);
  40. return map;
  41. }
  42. public void bindCardConfirm(String bindCardId, String code) {
  43. BindCardRequest request = payEaseService.bindCardConfirm(bindCardId, code);
  44. BankValidate validate = new BankValidate();
  45. try {
  46. validate = BankUtils.validate(request.getBankNo());
  47. } catch (Exception ignored) {
  48. }
  49. userBankCardRepo.deleteByUserId(Long.parseLong(request.getUserId()));
  50. userBankCardRepo.save(UserBankCard.builder()
  51. .bank(validate.getBank())
  52. .bankName(Optional.ofNullable(validate.getBankName()).orElse(validate.getBankName()))
  53. .cardType(validate.getCardType())
  54. .cardTypeDesc(validate.getCardTypeDesc())
  55. .bankNo(request.getBankNo())
  56. .idNo(request.getIdNo())
  57. .bindCardId(request.getBindCardId())
  58. .realName(request.getName())
  59. .userId(Long.parseLong(request.getUserId()))
  60. .phone(request.getPhone())
  61. .bindCardId(request.getBindCardId())
  62. .build());
  63. userBalanceRepo.unlock(Long.parseLong(request.getUserId()));
  64. User user = userRepo.findById(Long.parseLong(request.getUserId())).orElse(null);
  65. if (user != null) {
  66. user.setSettleAccountId(request.getBindCardId());
  67. userService.save(user);
  68. log.info("绑卡成功,加积分{}", user.getId());
  69. //加积分加限购
  70. userService.savePoint(user);
  71. }
  72. userBalanceRepo.unlock(Long.parseLong(request.getUserId()));
  73. }
  74. public void bindCardCaptcha(String bindCardId) {
  75. payEaseService.bindCardCaptcha(bindCardId);
  76. }
  77. public void unbind(Long userId) {
  78. User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
  79. userBankCardRepo.findByUserId(userId).forEach(userBankCard -> {
  80. if (StringUtils.isNotEmpty(userBankCard.getBindCardId())) {
  81. payEaseService.unbind(userId.toString(), userBankCard.getBindCardId());
  82. }
  83. userBankCardRepo.delete(userBankCard);
  84. });
  85. user.setSettleAccountId(null);
  86. userService.save(user);
  87. }
  88. }