forked from angelo/java-retail-app
## 提现走绑定银行卡逻辑;银行卡添加4要素认证;
This commit is contained in:
parent
107ad34c32
commit
da35abc4f8
|
@ -5,20 +5,15 @@ import com.hzs.third.bankcard.dto.BankCardParam;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡四要素认证
|
* 银行卡四要素认证
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2023/2/9 14:04
|
|
||||||
* @Classname: BankCardService
|
|
||||||
* @Package_name: com.hzs.third.bankCard
|
|
||||||
*/
|
*/
|
||||||
public interface IBankCardServiceApi {
|
public interface IBankCardServiceApi {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡四要素验证
|
* 银行卡四要素验证
|
||||||
*
|
*
|
||||||
* @param bankCardParam 银行卡入参
|
* @param bankCardParam 银行卡入参
|
||||||
* @return R
|
* @return R
|
||||||
*/
|
*/
|
||||||
R verifyBankCard(BankCardParam bankCardParam);
|
R<?> verifyBankCard(BankCardParam bankCardParam);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,12 +9,6 @@ import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡校验参数
|
* 银行卡校验参数
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2022/11/24 18:19
|
|
||||||
* @Classname: BankCardVO
|
|
||||||
* @Package_name: com.hz.bankCard.vo
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
|
@ -38,6 +32,7 @@ public class BankCardParam implements Serializable {
|
||||||
* 手机号
|
* 手机号
|
||||||
*/
|
*/
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡号
|
* 银行卡号
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,21 +2,14 @@ package com.hzs.member.account.controller.api;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
||||||
import com.hzs.common.core.constant.CountryConstants;
|
|
||||||
import com.hzs.common.core.constant.msg.FinanceMsgConstants;
|
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.EBusinessModule;
|
|
||||||
import com.hzs.common.core.enums.EYesNo;
|
|
||||||
import com.hzs.common.core.utils.StringUtils;
|
import com.hzs.common.core.utils.StringUtils;
|
||||||
import com.hzs.common.core.web.controller.BaseController;
|
import com.hzs.common.core.web.controller.BaseController;
|
||||||
import com.hzs.common.core.web.domain.AjaxResult;
|
import com.hzs.common.core.web.domain.AjaxResult;
|
||||||
import com.hzs.common.domain.member.account.CuMemberBank;
|
import com.hzs.common.domain.member.account.CuMemberBank;
|
||||||
import com.hzs.common.domain.system.config.BdTradeWhiteConfig;
|
|
||||||
import com.hzs.common.security.utils.SecurityUtils;
|
import com.hzs.common.security.utils.SecurityUtils;
|
||||||
import com.hzs.common.util.TransactionUtils;
|
|
||||||
import com.hzs.member.account.dto.CuMemberBankParam;
|
import com.hzs.member.account.dto.CuMemberBankParam;
|
||||||
import com.hzs.member.account.service.ICuMemberBankService;
|
import com.hzs.member.account.service.ICuMemberBankService;
|
||||||
import com.hzs.member.account.service.ICuMemberBaseService;
|
|
||||||
import com.hzs.member.account.service.ICuMemberWithdrawService;
|
import com.hzs.member.account.service.ICuMemberWithdrawService;
|
||||||
import com.hzs.member.account.vo.CuMemberBankVO;
|
import com.hzs.member.account.vo.CuMemberBankVO;
|
||||||
import com.hzs.member.sms.service.IApiAliSmsService;
|
import com.hzs.member.sms.service.IApiAliSmsService;
|
||||||
|
@ -37,181 +30,145 @@ import java.util.List;
|
||||||
public class ApiCuMemberBankController extends BaseController {
|
public class ApiCuMemberBankController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberBankService cuMemberBankService;
|
private ICuMemberBankService iCuMemberBankService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICuMemberBaseService iCuMemberBaseService;
|
private ICuMemberWithdrawService iCuMemberWithdrawService;
|
||||||
@Autowired
|
|
||||||
private ICuMemberWithdrawService cuMemberWithdrawService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IApiAliSmsService iApiAliSmsService;
|
private IApiAliSmsService iApiAliSmsService;
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IBankCardServiceApi bankCardServiceApi;
|
IBankCardServiceApi iBankCardServiceApi;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否绑定银行卡
|
* 银行卡列表
|
||||||
*
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
*/
|
||||||
@GetMapping("/is-bind")
|
|
||||||
public AjaxResult isBindBank() {
|
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
|
||||||
CuMemberBankVO cuMemberBank = cuMemberBankService.isBindBank(pkMember, pkCountry);
|
|
||||||
String flag = null == cuMemberBank.getDefaultCard() ? EYesNo.NO.getValue() : EYesNo.YES.getValue();
|
|
||||||
return AjaxResult.success().put("flag", flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解绑银行卡
|
|
||||||
*
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
|
||||||
@GetMapping("/unbind-bank")
|
|
||||||
public AjaxResult unbindBank(Long pkId) {
|
|
||||||
Assert.notNull(pkId, TransactionUtils.getContent(FinanceMsgConstants.BANK_CARD_CANNOT_EMPTY));
|
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
|
||||||
//查询默认银行卡
|
|
||||||
CuMemberBankVO cuMemberBankVO = cuMemberBankService.selectCuMemberBankById(pkId);
|
|
||||||
//解绑默认银行卡需校验是否有进行的提现
|
|
||||||
if (null != cuMemberBankVO) {
|
|
||||||
List<Long> pkIds = cuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember);
|
|
||||||
if (CollUtil.isNotEmpty(pkIds)) {
|
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_APPROVAL));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return AjaxResult.success(cuMemberBankService.unbindBank(pkId, pkMember));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验开户名
|
|
||||||
*
|
|
||||||
* @param accountName 开户名
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
|
||||||
@GetMapping("/check-account-name")
|
|
||||||
public AjaxResult checkAccountName(String accountName) {
|
|
||||||
Assert.notNull(accountName, TransactionUtils.getContent(FinanceMsgConstants.ACCOUNT_NAME_CANNOT_EMPTY));
|
|
||||||
String memberCode = SecurityUtils.getMemberCode();
|
|
||||||
String flag = memberCode.equals(accountName) ? EYesNo.YES.getValue() : EYesNo.NO.getValue();
|
|
||||||
return AjaxResult.success().put("flag", flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 银行卡四要素验证
|
|
||||||
*
|
|
||||||
* @param memberBankParam 银行卡信息
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
|
||||||
@PostMapping("/verify-bank-card")
|
|
||||||
public AjaxResult verifyBankCard(@RequestBody CuMemberBankParam memberBankParam) {
|
|
||||||
BankCardParam bankCard = BankCardParam.builder().name(memberBankParam.getAccountName())
|
|
||||||
.idCard(memberBankParam.getIdCard()).mobile(memberBankParam.getPhone())
|
|
||||||
.bankCard(StringUtils.deleteWhitespace(memberBankParam.getCardNumber())).build();
|
|
||||||
R result = bankCardServiceApi.verifyBankCard(bankCard);
|
|
||||||
return result.isSuccess() ? AjaxResult.success() : AjaxResult.error(result.getMsg());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定银行卡
|
|
||||||
*
|
|
||||||
* @param cuMemberBankParam 银行卡入参
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
|
||||||
@PostMapping("/add")
|
|
||||||
@RepeatSubmitSimple
|
|
||||||
public AjaxResult addBankInfo(@RequestBody CuMemberBankParam cuMemberBankParam) {
|
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
|
||||||
//是否配置提现白名单
|
|
||||||
String configWhite = getConfigWhite(pkCountry, pkMember);
|
|
||||||
//海外不校验验证码、四要素 国内配置了提现白名单不校验
|
|
||||||
if (pkCountry.equals(CountryConstants.CHINA_COUNTRY) && configWhite.equals(EYesNo.NO.getValue())) {
|
|
||||||
String verificationCode = cuMemberBankParam.getVerificationCode();
|
|
||||||
if (StringUtils.isEmpty(verificationCode)) {
|
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.VERIFICATION_CODE_CANNOT_EMPTY));
|
|
||||||
}
|
|
||||||
//支行名称
|
|
||||||
String subBankName = cuMemberBankParam.getSubBankName();
|
|
||||||
if (StringUtils.isEmpty(subBankName)) {
|
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.OPENING_BRANCH_CANNOT_EMPTY));
|
|
||||||
}
|
|
||||||
//银行卡号去空格
|
|
||||||
String cardNumber = cuMemberBankParam.getCardNumber();
|
|
||||||
cuMemberBankParam.setCardNumber(StringUtils.deleteWhitespace(cardNumber));
|
|
||||||
|
|
||||||
String message = iApiAliSmsService.checkCode(cuMemberBankParam.getPhone(), verificationCode, null, pkMember);
|
|
||||||
if (null != message) {
|
|
||||||
return AjaxResult.error(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cuMemberBankParam.setPkCountry(pkCountry);
|
|
||||||
cuMemberBankParam.setPkMember(pkMember);
|
|
||||||
return toAjax(cuMemberBankService.saveMemberBank(cuMemberBankParam));
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public AjaxResult getBankCardList() {
|
public AjaxResult getBankCardList() {
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||||
return AjaxResult.success(cuMemberBankService.selectBankCardByPkMember(pkMember, pkCountry));
|
return AjaxResult.success(iCuMemberBankService.selectBankCardByPkMember(pkMember, pkCountry));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/default-bank")
|
/**
|
||||||
public AjaxResult getDefaultBankCard() {
|
* 银行卡四要素验证
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
*/
|
||||||
|
@PostMapping("/verify-bank-card")
|
||||||
|
public AjaxResult verifyBankCard(@RequestBody CuMemberBankParam memberBankParam) {
|
||||||
|
if (StringUtils.isEmpty(memberBankParam.getCardNumber())) {
|
||||||
|
return AjaxResult.error("银行卡号不能为空!");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(memberBankParam.getIdCard())) {
|
||||||
|
return AjaxResult.error("身份证号码不能为空!");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(memberBankParam.getAccountName())) {
|
||||||
|
return AjaxResult.error("开户姓名不能为空!");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(memberBankParam.getPhone())) {
|
||||||
|
return AjaxResult.error("手机号不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
BankCardParam bankCard = BankCardParam.builder()
|
||||||
|
.bankCard(StringUtils.deleteWhitespace(memberBankParam.getCardNumber()))
|
||||||
|
.name(memberBankParam.getAccountName())
|
||||||
|
.idCard(memberBankParam.getIdCard())
|
||||||
|
.mobile(memberBankParam.getPhone())
|
||||||
|
.build();
|
||||||
|
R<?> result = iBankCardServiceApi.verifyBankCard(bankCard);
|
||||||
|
return result.isSuccess() ? AjaxResult.success() : AjaxResult.error(result.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定银行卡
|
||||||
|
*/
|
||||||
|
@RepeatSubmitSimple
|
||||||
|
@PostMapping("/add")
|
||||||
|
public AjaxResult addBankInfo(@RequestBody CuMemberBankParam cuMemberBankParam) {
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||||
return AjaxResult.success(cuMemberBankService.isBindBank(pkMember, pkCountry));
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
|
|
||||||
|
if (null == cuMemberBankParam.getPkBank()) {
|
||||||
|
return AjaxResult.error("银行名称不能为空");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(cuMemberBankParam.getSubBankName())) {
|
||||||
|
return AjaxResult.error("开户支行不能为空");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(cuMemberBankParam.getCardNumber())) {
|
||||||
|
return AjaxResult.error("银行卡号不能为空!");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(cuMemberBankParam.getAccountName())) {
|
||||||
|
return AjaxResult.error("开户姓名不能为空!");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(cuMemberBankParam.getIdCard())) {
|
||||||
|
return AjaxResult.error("证件号码不能为空!");
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(cuMemberBankParam.getPhone())) {
|
||||||
|
return AjaxResult.error("联系方式不能为空!");
|
||||||
|
}
|
||||||
|
String verificationCode = cuMemberBankParam.getVerificationCode();
|
||||||
|
if (StringUtils.isEmpty(verificationCode)) {
|
||||||
|
return AjaxResult.error("验证码不能为空!");
|
||||||
|
}
|
||||||
|
String message = iApiAliSmsService.checkCode(cuMemberBankParam.getPhone(), verificationCode, null, pkMember);
|
||||||
|
if (null != message) {
|
||||||
|
return AjaxResult.error(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 银行卡号去空格
|
||||||
|
String cardNumber = cuMemberBankParam.getCardNumber();
|
||||||
|
cuMemberBankParam.setCardNumber(StringUtils.deleteWhitespace(cardNumber));
|
||||||
|
cuMemberBankParam.setPkCountry(pkCountry);
|
||||||
|
cuMemberBankParam.setPkMember(pkMember);
|
||||||
|
return toAjax(iCuMemberBankService.saveMemberBank(cuMemberBankParam));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解绑银行卡
|
||||||
|
*/
|
||||||
|
@GetMapping("/unbind-bank")
|
||||||
|
public AjaxResult unbindBank(Long pkId) {
|
||||||
|
Assert.notNull(pkId, "银行卡号不能为空!");
|
||||||
|
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||||
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
|
// 查询默认银行卡
|
||||||
|
CuMemberBankVO cuMemberBankVO = iCuMemberBankService.selectCuMemberBankById(pkId);
|
||||||
|
// 解绑默认银行卡需校验是否有进行的提现
|
||||||
|
if (null != cuMemberBankVO) {
|
||||||
|
List<Long> pkIds = iCuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember);
|
||||||
|
if (CollUtil.isNotEmpty(pkIds)) {
|
||||||
|
return AjaxResult.error("提现正在审批中,请稍后再试");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return AjaxResult.success(iCuMemberBankService.unbindBank(pkId, pkMember));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改默认银行卡
|
* 修改默认银行卡
|
||||||
*
|
|
||||||
* @param pkId ID
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
*/
|
||||||
@GetMapping("/update-default")
|
@GetMapping("/update-default")
|
||||||
public AjaxResult updateDefault(Long pkId) {
|
public AjaxResult updateDefault(Long pkId) {
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||||
//查询银行卡
|
// 查询银行卡
|
||||||
CuMemberBank cuMemberBank = cuMemberBankService.getById(pkId);
|
CuMemberBank cuMemberBank = iCuMemberBankService.getById(pkId);
|
||||||
//解绑默认银行卡需校验是否有进行的提现
|
// 解绑默认银行卡需校验是否有进行的提现
|
||||||
if (null != cuMemberBank) {
|
if (null != cuMemberBank) {
|
||||||
List<Long> pkIds = cuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember);
|
List<Long> pkIds = iCuMemberWithdrawService.selectWithdrawMember(pkCountry, pkMember);
|
||||||
if (CollUtil.isNotEmpty(pkIds)) {
|
if (CollUtil.isNotEmpty(pkIds)) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_APPROVAL));
|
return AjaxResult.error("提现正在审批中,请稍后再试");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return toAjax(cuMemberBankService.updateDefault(pkId, pkMember, pkCountry));
|
return toAjax(iCuMemberBankService.updateDefault(pkId, pkMember, pkCountry));
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询是否设置提现白名单
|
|
||||||
*
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
|
||||||
@GetMapping("/is-white-list")
|
|
||||||
public AjaxResult isWhiteList() {
|
|
||||||
String flag = getConfigWhite(SecurityUtils.getPkCountry(), SecurityUtils.getUserId());
|
|
||||||
return AjaxResult.success().put("flag", flag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询提现白名单配置
|
* 默认银行卡
|
||||||
*
|
|
||||||
* @param pkCountry 国家ID
|
|
||||||
* @param pkMember 会员ID
|
|
||||||
* @return String
|
|
||||||
*/
|
*/
|
||||||
private String getConfigWhite(Integer pkCountry, Long pkMember) {
|
@GetMapping("/default-bank")
|
||||||
BdTradeWhiteConfig bdTradeWhiteConfig = iCuMemberBaseService.selectConfigWhite(pkMember, pkCountry, EBusinessModule.WITHDRAWAL.getValue());
|
public AjaxResult getDefaultBankCard() {
|
||||||
return null == bdTradeWhiteConfig ? EYesNo.NO.getValue() : EYesNo.YES.getValue();
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
|
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||||
|
return AjaxResult.success(iCuMemberBankService.isBindBank(pkMember, pkCountry));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.hzs.member.account.controller.api;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
import com.hzs.common.core.annotation.RepeatSubmitSimple;
|
||||||
import com.hzs.common.core.constant.CountryConstants;
|
|
||||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||||
import com.hzs.common.core.constant.MemberFieldConstants;
|
import com.hzs.common.core.constant.MemberFieldConstants;
|
||||||
import com.hzs.common.core.constant.msg.FinanceMsgConstants;
|
import com.hzs.common.core.constant.msg.FinanceMsgConstants;
|
||||||
|
@ -48,26 +47,20 @@ import java.util.List;
|
||||||
public class ApiCuMemberWithdrawController extends BaseController {
|
public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
ICuMemberBankService cuMemberBankService;
|
private ICuMemberBankService iCuMemberBankService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
ICuMemberService cuMemberService;
|
private ICuMemberService iCuMemberService;
|
||||||
|
@Autowired
|
||||||
|
private ICuMemberBaseService iCuMemberBaseService;
|
||||||
|
@Autowired
|
||||||
|
private ICuMemberAccountService iCuMemberAccountService;
|
||||||
|
@Autowired
|
||||||
|
private ICuMemberWithdrawService iCuMemberWithdrawService;
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IWithdrawalServiceApi withdrawalServiceApi;
|
IWithdrawalServiceApi iWithdrawalServiceApi;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
ICuMemberBaseService baseService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
ICuMemberAccountService cuMemberAccountService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
ICuMemberWithdrawService cuMemberWithdrawService;
|
|
||||||
|
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IGradeServiceApi gradeServiceApi;
|
IGradeServiceApi iGradeServiceApi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提现时展示信息
|
* 提现时展示信息
|
||||||
|
@ -85,18 +78,18 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.ENTER_WITHDRAWAL_AMOUNT));
|
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.ENTER_WITHDRAWAL_AMOUNT));
|
||||||
}
|
}
|
||||||
//提现配置信息
|
//提现配置信息
|
||||||
BdWithdrawal bdWithdrawal = withdrawalServiceApi.queryWithdrawal(pkCountry, pkAccount).getData();
|
BdWithdrawal bdWithdrawal = iWithdrawalServiceApi.queryWithdrawal(pkCountry, pkAccount).getData();
|
||||||
if (null == bdWithdrawal) {
|
if (null == bdWithdrawal) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.CONFIGURE_WITHDRAWAL_INFO));
|
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.CONFIGURE_WITHDRAWAL_INFO));
|
||||||
}
|
}
|
||||||
CuMemberAccount cuMemberAccount = cuMemberAccountService.queryCuMemberAccountByPkMember(pkMember);
|
CuMemberAccount cuMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(pkMember);
|
||||||
Integer accountValue = baseService.getAccountValueById(pkAccount);
|
Integer accountValue = iCuMemberBaseService.getAccountValueById(pkAccount);
|
||||||
//余额
|
//余额
|
||||||
BigDecimal balance = ReflectUtils.invokeGetter(cuMemberAccount, MemberFieldConstants.ACCOUNT + accountValue);
|
BigDecimal balance = ReflectUtils.invokeGetter(cuMemberAccount, MemberFieldConstants.ACCOUNT + accountValue);
|
||||||
//可用金额
|
//可用金额
|
||||||
BigDecimal availableBalance = getAvailableBalance(accountValue, cuMemberAccount);
|
BigDecimal availableBalance = getAvailableBalance(accountValue, cuMemberAccount);
|
||||||
//手续费金额
|
//手续费金额
|
||||||
BigDecimal serviceChargeAmount = accountValue.equals(EAccount.BONUS.getValue()) ? cuMemberWithdrawService.computeServiceCharge(pkCountry, cashAmount) : BigDecimal.ZERO;
|
BigDecimal serviceChargeAmount = accountValue.equals(EAccount.BONUS.getValue()) ? iCuMemberWithdrawService.computeServiceCharge(pkCountry, cashAmount) : BigDecimal.ZERO;
|
||||||
|
|
||||||
CuMemberWithdrawalAddVO cuMemberWithdrawalAddVO = CuMemberWithdrawalAddVO.builder()
|
CuMemberWithdrawalAddVO cuMemberWithdrawalAddVO = CuMemberWithdrawalAddVO.builder()
|
||||||
.minAmount(bdWithdrawal.getMinAmount()).maxAmount(bdWithdrawal.getMaxAmount())
|
.minAmount(bdWithdrawal.getMinAmount()).maxAmount(bdWithdrawal.getMaxAmount())
|
||||||
|
@ -107,94 +100,88 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
/**
|
/**
|
||||||
* 用户提现
|
* 用户提现
|
||||||
* 提现时先扣账户的钱,撤销时返回账户的钱
|
* 提现时先扣账户的钱,撤销时返回账户的钱
|
||||||
*
|
|
||||||
* @param cuMemberWithdrawParam 提现入参
|
|
||||||
* @return AjaxResult
|
|
||||||
*/
|
*/
|
||||||
@PostMapping("/add")
|
|
||||||
@RepeatSubmitSimple
|
@RepeatSubmitSimple
|
||||||
|
@PostMapping("/add")
|
||||||
public AjaxResult addWithdrawInfo(@RequestBody CuMemberWithdrawParam cuMemberWithdrawParam) {
|
public AjaxResult addWithdrawInfo(@RequestBody CuMemberWithdrawParam cuMemberWithdrawParam) {
|
||||||
Integer pkCountry = SecurityUtils.getPkCountry();
|
Integer pkCountry = SecurityUtils.getPkCountry();
|
||||||
Long pkMember = SecurityUtils.getUserId();
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
String memberCode = SecurityUtils.getMemberCode();
|
|
||||||
|
|
||||||
CuMemberExt cuMemberLoginExt = cuMemberService.getMemberByCode(memberCode);
|
CuMemberExt cuMemberLoginExt = iCuMemberService.getMemberById(pkMember);
|
||||||
if (null == cuMemberLoginExt) {
|
if (null == cuMemberLoginExt) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.RECHAGER_USER_NOT_EXIST));
|
return AjaxResult.error("会员不存在,请核对后再操作!");
|
||||||
}
|
}
|
||||||
//获取银行卡信息
|
//获取银行卡信息
|
||||||
// Long pkBank = cuMemberWithdrawParam.getPkBank();
|
Long pkBank = cuMemberWithdrawParam.getPkBank();
|
||||||
// CuMemberBankVO memberBank = cuMemberBankService.selectCuMemberBankById(pkBank);
|
CuMemberBankVO memberBank = iCuMemberBankService.selectCuMemberBankById(pkBank);
|
||||||
// if (null == memberBank) {
|
if (null == memberBank) {
|
||||||
// return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.BIND_BANK_CARD));
|
return AjaxResult.error("请绑定银行卡");
|
||||||
// }
|
}
|
||||||
//校验支付密码
|
//校验支付密码
|
||||||
String payPwd = cuMemberLoginExt.getPayPwd();
|
String payPwd = cuMemberLoginExt.getPayPwd();
|
||||||
if (StringUtils.isEmpty(payPwd) || !SecurityUtils.matchesPassword(cuMemberWithdrawParam.getPayPwd(), payPwd)) {
|
if (StringUtils.isEmpty(payPwd) || !SecurityUtils.matchesPassword(cuMemberWithdrawParam.getPayPwd(), payPwd)) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.PAYMENT_PASSWORD_ERROR));
|
return AjaxResult.error("支付密码错误!");
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询提现账户
|
//查询提现账户
|
||||||
Integer pkAccount = cuMemberWithdrawParam.getPkAccount();
|
Integer pkAccount = cuMemberWithdrawParam.getPkAccount();
|
||||||
if (null == pkAccount) {
|
if (null == pkAccount) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.SELECT_WITHDRAWAL_ACCOUNT));
|
return AjaxResult.error("请选择提现账户");
|
||||||
}
|
}
|
||||||
Integer accountsType = baseService.getAccountValueById(pkAccount);
|
Integer accountsType = iCuMemberBaseService.getAccountValueById(pkAccount);
|
||||||
|
|
||||||
if (pkCountry.equals(CountryConstants.CHINA_COUNTRY)) {
|
// 结算等级为1 (目前是会员)不允许提现
|
||||||
//结算等级为1 (目前是会员)不允许提现
|
GradeDTO gradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.START_UP.getValue(), pkCountry).getData();
|
||||||
GradeDTO gradeDTO = gradeServiceApi.getGradeByGradeValue(EGrade.START_UP.getValue(), pkCountry).getData();
|
if (cuMemberLoginExt.getPkSettleGrade().equals(gradeDTO.getPkId())) {
|
||||||
if (cuMemberLoginExt.getPkSettleGrade().equals(gradeDTO.getPkId())) {
|
return AjaxResult.error("暂时不请允许提现,请先升级");
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.NOT_WITHDRAWAL_UPGRADE));
|
|
||||||
}
|
|
||||||
//校验是否实名
|
|
||||||
Boolean existRealName = baseService.isExistRealName(pkMember, pkCountry, EBusinessModule.WITHDRAWAL.getValue());
|
|
||||||
if (!existRealName) {
|
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.REAL_NAME_NOT_EXIST));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// 校验是否实名
|
||||||
|
Boolean existRealName = iCuMemberBaseService.isExistRealName(pkMember, pkCountry, EBusinessModule.WITHDRAWAL.getValue());
|
||||||
|
if (!existRealName) {
|
||||||
|
return AjaxResult.error("请先实名认证");
|
||||||
|
}
|
||||||
|
|
||||||
//查询账户信息
|
//查询账户信息
|
||||||
CuMemberAccount cuMemberAccount = cuMemberAccountService.queryCuMemberAccountByPkMember(pkMember);
|
CuMemberAccount cuMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(pkMember);
|
||||||
//是否可提现
|
//是否可提现
|
||||||
Integer isWithdraw = cuMemberAccount.getIsWithdraw();
|
Integer isWithdraw = cuMemberAccount.getIsWithdraw();
|
||||||
//不允许提现
|
//不允许提现
|
||||||
if (isWithdraw.equals(EYesNo.NO.getIntValue())) {
|
if (isWithdraw.equals(EYesNo.NO.getIntValue())) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.NOT_ALLOWED_WITHDRAWAL));
|
return AjaxResult.error("不允许提现");
|
||||||
}
|
}
|
||||||
//提现配置信息
|
//提现配置信息
|
||||||
BdWithdrawal bdWithdrawal = withdrawalServiceApi.queryWithdrawal(pkCountry, pkAccount).getData();
|
BdWithdrawal bdWithdrawal = iWithdrawalServiceApi.queryWithdrawal(pkCountry, pkAccount).getData();
|
||||||
//提现次数
|
//提现次数
|
||||||
Integer withdrawalNumber = bdWithdrawal.getWithdrawalNumber();
|
Integer withdrawalNumber = bdWithdrawal.getWithdrawalNumber();
|
||||||
// 只能发起配置项次数待审核提现 必须通过或者驳回之后才能发起下一笔
|
// 只能发起配置项次数待审核提现 必须通过或者驳回之后才能发起下一笔
|
||||||
List<CuMemberWithdraw> memberWithdraws = cuMemberWithdrawService.getWithdrawTimes(pkMember);
|
List<CuMemberWithdraw> memberWithdraws = iCuMemberWithdrawService.getWithdrawTimes(pkMember);
|
||||||
if (CollUtil.isNotEmpty(memberWithdraws) && memberWithdraws.size() >= withdrawalNumber) {
|
if (CollUtil.isNotEmpty(memberWithdraws) && memberWithdraws.size() >= withdrawalNumber) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.EXCEEDING_WITHDRAWALS_NUMBER));
|
return AjaxResult.error("超过提现次数");
|
||||||
}
|
}
|
||||||
//提现金额校验
|
//提现金额校验
|
||||||
BigDecimal minAmount = bdWithdrawal.getMinAmount();
|
BigDecimal minAmount = bdWithdrawal.getMinAmount();
|
||||||
BigDecimal maxAmount = bdWithdrawal.getMaxAmount();
|
BigDecimal maxAmount = bdWithdrawal.getMaxAmount();
|
||||||
if (null == minAmount || null == maxAmount) {
|
if (null == minAmount || null == maxAmount) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.CONFIGURE_WITHDRAWAL_AMOUNT_LIMIT));
|
return AjaxResult.error("请配置提现金额限制");
|
||||||
}
|
}
|
||||||
BigDecimal cashAmount = cuMemberWithdrawParam.getCashAmount();
|
BigDecimal cashAmount = cuMemberWithdrawParam.getCashAmount();
|
||||||
if (null == cashAmount) {
|
if (null == cashAmount) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.ENTER_WITHDRAWAL_AMOUNT));
|
return AjaxResult.error("请输入提现金额");
|
||||||
}
|
}
|
||||||
//提现金额是否输入整数值
|
//提现金额是否输入整数值
|
||||||
Integer isRounding = bdWithdrawal.getIsRounding();
|
Integer isRounding = bdWithdrawal.getIsRounding();
|
||||||
if (isRounding.equals(EYesNo.YES.getIntValue()) && Boolean.TRUE.equals(!isIntegerValue(cashAmount))) {
|
if (isRounding.equals(EYesNo.YES.getIntValue()) && Boolean.TRUE.equals(!isIntegerValue(cashAmount))) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.ENTER_INTEGER_VALUE));
|
return AjaxResult.error("请输入整数值");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null != cashAmount && cashAmount.compareTo(minAmount) < 0) {
|
if (cashAmount.compareTo(minAmount) < 0) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_AMOUNT_GREATER_MINIMUM_AMOUNT));
|
return AjaxResult.error("提现金额必须大于最低提现金额");
|
||||||
}
|
}
|
||||||
if (null != cashAmount && cashAmount.compareTo(maxAmount) > 0) {
|
if (cashAmount.compareTo(maxAmount) > 0) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_AMOUNT_LESS_MAXIMUM_AMOUNT));
|
return AjaxResult.error("提现金额必须小于最高提现金额");
|
||||||
}
|
}
|
||||||
//校验倍数
|
//校验倍数
|
||||||
if (pkCountry.equals(CountryConstants.CHINA_COUNTRY) && !remainder(cashAmount)) {
|
if (!remainder(cashAmount)) {
|
||||||
return AjaxResult.error(FinanceMsgConstants.WITHDRAW_AMOUNT_MULTIPLE);
|
return AjaxResult.error("提现金额必须为100的整数倍");
|
||||||
}
|
}
|
||||||
//本次应缴个税
|
//本次应缴个税
|
||||||
BigDecimal payIncomeTax = BigDecimal.ZERO;
|
BigDecimal payIncomeTax = BigDecimal.ZERO;
|
||||||
|
@ -206,43 +193,47 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
//奖金账户余额(兼容奖金账户奖金余额小于可提现金额时)
|
//奖金账户余额(兼容奖金账户奖金余额小于可提现金额时)
|
||||||
if (accountsType.equals(EAccount.BONUS.getValue())) {
|
if (accountsType.equals(EAccount.BONUS.getValue())) {
|
||||||
//账户余额
|
//账户余额
|
||||||
BigDecimal accountBalance = cuMemberWithdrawService.getAccountBalance(accountsType, cuMemberAccount);
|
BigDecimal accountBalance = iCuMemberWithdrawService.getAccountBalance(accountsType, cuMemberAccount);
|
||||||
//可提现余额
|
//可提现余额
|
||||||
BigDecimal balance = getAvailableBalance(accountsType, cuMemberAccount);
|
BigDecimal balance = getAvailableBalance(accountsType, cuMemberAccount);
|
||||||
//余额不足
|
//余额不足
|
||||||
if (balance.compareTo(cashAmount) < 0 || accountBalance.compareTo(cashAmount) < 0) {
|
if (balance.compareTo(cashAmount) < 0 || accountBalance.compareTo(cashAmount) < 0) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.BALANCE_NOT_ENOUGH));
|
return AjaxResult.error("余额不足");
|
||||||
}
|
}
|
||||||
//奖金账户个税、手续费根据配置、其它用户暂不收取
|
//奖金账户个税、手续费根据配置、其它用户暂不收取
|
||||||
//本次应缴个税
|
//本次应缴个税
|
||||||
payIncomeTax = cuMemberWithdrawService.computeIncomeTaxValue(pkMember, cashAmount, pkCountry, minAmount);
|
payIncomeTax = iCuMemberWithdrawService.computeIncomeTaxValue(pkMember, cashAmount, pkCountry, minAmount);
|
||||||
//手续费金额
|
//手续费金额
|
||||||
serviceChargeAmount = cuMemberWithdrawService.computeServiceCharge(pkCountry, cashAmount);
|
serviceChargeAmount = iCuMemberWithdrawService.computeServiceCharge(pkCountry, cashAmount);
|
||||||
issuedAmount = cashAmount.subtract(payIncomeTax).subtract(serviceChargeAmount);
|
issuedAmount = cashAmount.subtract(payIncomeTax).subtract(serviceChargeAmount);
|
||||||
} else { //其它用户的余额
|
} else { //其它用户的余额
|
||||||
BigDecimal balance = getAvailableBalance(accountsType, cuMemberAccount);
|
BigDecimal balance = getAvailableBalance(accountsType, cuMemberAccount);
|
||||||
//余额不足
|
//余额不足
|
||||||
if (balance.compareTo(cashAmount) < 0) {
|
if (balance.compareTo(cashAmount) < 0) {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.BALANCE_NOT_ENOUGH));
|
return AjaxResult.error("余额不足");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
String code = CommonUtil.createSerialNumber(EOrderPrefix.WITHDRAWAL_CODE.getValue());
|
String code = CommonUtil.createSerialNumber(EOrderPrefix.WITHDRAWAL_CODE.getValue());
|
||||||
//汇率
|
//汇率
|
||||||
CurrencyDTO currencyDTO = baseService.getCurrency(pkCountry);
|
CurrencyDTO currencyDTO = iCuMemberBaseService.getCurrency(pkCountry);
|
||||||
|
|
||||||
CuMemberWithdraw cuMemberWithdraw = CuMemberWithdraw.builder().pkMember(pkMember)
|
CuMemberWithdraw cuMemberWithdraw = CuMemberWithdraw.builder()
|
||||||
// .pkAccount(pkAccount).pkBank(pkBank).remarks(cuMemberWithdrawParam.getRemarks())
|
.pkMember(pkMember)
|
||||||
.pkAccount(pkAccount).pkBank(0L).remarks(cuMemberWithdrawParam.getRemarks())
|
.pkAccount(pkAccount)
|
||||||
.pkRate(currencyDTO.getPkId()).cashAmount(cashAmount)
|
.pkBank(pkBank)
|
||||||
.serviceCharge(serviceChargeAmount).incomeTax(payIncomeTax)
|
.remarks(cuMemberWithdrawParam.getRemarks())
|
||||||
.issuedAmount(issuedAmount).withdrawCode(code).build();
|
.pkRate(currencyDTO.getPkId())
|
||||||
|
.cashAmount(cashAmount)
|
||||||
|
.serviceCharge(serviceChargeAmount)
|
||||||
|
.incomeTax(payIncomeTax)
|
||||||
|
.issuedAmount(issuedAmount)
|
||||||
|
.withdrawCode(code)
|
||||||
|
.build();
|
||||||
cuMemberWithdraw.setApproveState(EApproveStatus.WAIT_SUBMIT.getValue());
|
cuMemberWithdraw.setApproveState(EApproveStatus.WAIT_SUBMIT.getValue());
|
||||||
cuMemberWithdraw.setDelFlag(EDelFlag.UN_DELETE.getValue());
|
cuMemberWithdraw.setDelFlag(EDelFlag.UN_DELETE.getValue());
|
||||||
cuMemberWithdraw.setPkCountry(pkCountry);
|
cuMemberWithdraw.setPkCountry(pkCountry);
|
||||||
cuMemberWithdraw.setPkCreator(pkMember);
|
cuMemberWithdraw.setPkCreator(pkMember);
|
||||||
return toAjax(cuMemberWithdrawService.saveMemberWithdrawInfo(cuMemberWithdraw));
|
return toAjax(iCuMemberWithdrawService.saveMemberWithdrawInfo(cuMemberWithdraw));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -259,7 +250,6 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取余额
|
* 获取余额
|
||||||
*
|
*
|
||||||
|
@ -278,12 +268,11 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//其它配置账户余额
|
//其它配置账户余额
|
||||||
balance = cuMemberWithdrawService.getAccountBalance(accountsType, cuMemberAccount);
|
balance = iCuMemberWithdrawService.getAccountBalance(accountsType, cuMemberAccount);
|
||||||
}
|
}
|
||||||
return balance;
|
return balance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否为整数值
|
* 是否为整数值
|
||||||
*
|
*
|
||||||
|
@ -301,7 +290,6 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询列表(会员端)
|
* 查询列表(会员端)
|
||||||
*
|
*
|
||||||
|
@ -310,7 +298,7 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
@GetMapping("/list-detail")
|
@GetMapping("/list-detail")
|
||||||
public TableDataInfo memberWithdrawDetail() {
|
public TableDataInfo memberWithdrawDetail() {
|
||||||
startPage();
|
startPage();
|
||||||
Object[] objects = cuMemberWithdrawService.selectMemberWithdrawListByPkMember(SecurityUtils.getUserId(), SecurityUtils.getPkCountry());
|
Object[] objects = iCuMemberWithdrawService.selectMemberWithdrawListByPkMember(SecurityUtils.getUserId(), SecurityUtils.getPkCountry());
|
||||||
//处理分页
|
//处理分页
|
||||||
TableDataInfo tableDataInfo = getDataTable((List<CuMemberWithdrawExt>) objects[0]);
|
TableDataInfo tableDataInfo = getDataTable((List<CuMemberWithdrawExt>) objects[0]);
|
||||||
tableDataInfo.setRows((List<CuMemberWithdrawVO>) objects[1]);
|
tableDataInfo.setRows((List<CuMemberWithdrawVO>) objects[1]);
|
||||||
|
@ -319,13 +307,12 @@ public class ApiCuMemberWithdrawController extends BaseController {
|
||||||
|
|
||||||
@GetMapping("/cancel")
|
@GetMapping("/cancel")
|
||||||
public AjaxResult cancelMemberWithdrawD(Long pkId) {
|
public AjaxResult cancelMemberWithdrawD(Long pkId) {
|
||||||
CuMemberWithdraw cuMemberWithdraw = cuMemberWithdrawService.getById(pkId);
|
CuMemberWithdraw cuMemberWithdraw = iCuMemberWithdrawService.getById(pkId);
|
||||||
if (cuMemberWithdraw.getApproveState().equals(EApproveStatus.WAIT_SUBMIT.getValue()) && cuMemberWithdraw.getStatus().equals(EWithdrawStatus.NORMAL.getValue())) {
|
if (cuMemberWithdraw.getApproveState().equals(EApproveStatus.WAIT_SUBMIT.getValue()) && cuMemberWithdraw.getStatus().equals(EWithdrawStatus.NORMAL.getValue())) {
|
||||||
return toAjax(cuMemberWithdrawService.updateWithdrawStatusByPkId(pkId, SecurityUtils.getUserId()));
|
return toAjax(iCuMemberWithdrawService.updateWithdrawStatusByPkId(pkId, SecurityUtils.getUserId()));
|
||||||
} else {
|
} else {
|
||||||
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_NOT_CANCEL));
|
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_NOT_CANCEL));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,6 @@ import java.util.*;
|
||||||
@RequestMapping("/manager/withdraw")
|
@RequestMapping("/manager/withdraw")
|
||||||
public class CuMemberWithdrawController extends BaseController {
|
public class CuMemberWithdrawController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserTokenService userTokenService;
|
private UserTokenService userTokenService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -120,7 +119,7 @@ public class CuMemberWithdrawController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充值明细列表导出
|
* 明细列表导出
|
||||||
*
|
*
|
||||||
* @param response 入参
|
* @param response 入参
|
||||||
* @param cuMemberWithdrawVO 查询入参
|
* @param cuMemberWithdrawVO 查询入参
|
||||||
|
|
|
@ -1,18 +1,12 @@
|
||||||
package com.hzs.member.account.dto;
|
package com.hzs.member.account.dto;
|
||||||
|
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 会员信息-银行卡信息
|
* 会员信息-银行卡信息
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2022-08-31
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -63,7 +57,6 @@ public class CuMemberBankParam implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String verificationCode;
|
private String verificationCode;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开户支行省
|
* 开户支行省
|
||||||
*/
|
*/
|
||||||
|
@ -87,5 +80,4 @@ public class CuMemberBankParam implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer isLongTerm;
|
private Integer isLongTerm;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,13 +8,8 @@ import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 提现参数类
|
* 提现参数类
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2022/9/27 15:32
|
|
||||||
* @Classname: CuMemberWithdrawParam
|
|
||||||
* @Package_name: com.hzs.member.account.param
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@ -32,7 +27,6 @@ public class CuMemberWithdrawParam implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Long pkBank;
|
private Long pkBank;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提现金额
|
* 提现金额
|
||||||
*/
|
*/
|
||||||
|
@ -42,9 +36,9 @@ public class CuMemberWithdrawParam implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer pkAccount;
|
private Integer pkAccount;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String remarks;
|
private String remarks;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,14 +8,10 @@ import org.apache.ibatis.annotations.Param;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 会员信息-银行卡信息 Mapper 接口
|
* 会员信息-银行卡信息 Mapper 接口
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author hzs
|
|
||||||
* @since 2022-08-31
|
|
||||||
*/
|
*/
|
||||||
public interface CuMemberBankMapper extends BaseMapper<CuMemberBank> {
|
public interface CuMemberBankMapper extends BaseMapper<CuMemberBank> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据会员批量重置银行卡
|
* 根据会员批量重置银行卡
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package com.hzs.member.account.service.impl;
|
package com.hzs.member.account.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.common.core.enums.EBankCardStatus;
|
import com.hzs.common.core.enums.EBankCardStatus;
|
||||||
import com.hzs.common.core.enums.EDefault;
|
import com.hzs.common.core.enums.EDefault;
|
||||||
|
@ -25,46 +25,39 @@ import java.util.List;
|
||||||
@Service
|
@Service
|
||||||
public class CuMemberBankServiceImpl extends ServiceImpl<CuMemberBankMapper, CuMemberBank> implements ICuMemberBankService {
|
public class CuMemberBankServiceImpl extends ServiceImpl<CuMemberBankMapper, CuMemberBank> implements ICuMemberBankService {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CuMemberBankVO selectCuMemberBankById(Long pkId) {
|
public CuMemberBankVO selectCuMemberBankById(Long pkId) {
|
||||||
QueryWrapper<CuMemberBank> queryWrapper = new QueryWrapper<>();
|
LambdaQueryWrapper<CuMemberBank> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq("PK_ID", pkId);
|
queryWrapper.eq(CuMemberBank::getPkId, pkId);
|
||||||
queryWrapper.eq("DEFAULT_CARD", EDefault.YES.getValue());
|
queryWrapper.eq(CuMemberBank::getDefaultCard, EDefault.YES.getValue());
|
||||||
CuMemberBank cuMemberBank = this.getOne(queryWrapper);
|
CuMemberBank cuMemberBank = this.getOne(queryWrapper);
|
||||||
return cuMemberBank == null ? null : BeanUtil.copyProperties(cuMemberBank, CuMemberBankVO.class);
|
return cuMemberBank == null ? null : BeanUtil.copyProperties(cuMemberBank, CuMemberBankVO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CuMemberBankVO isBindBank(Long pkMember, Integer pkCountry) {
|
public CuMemberBankVO isBindBank(Long pkMember, Integer pkCountry) {
|
||||||
QueryWrapper<CuMemberBank> queryWrapper = new QueryWrapper<>();
|
LambdaQueryWrapper<CuMemberBank> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq("PK_COUNTRY", pkCountry);
|
queryWrapper.eq(CuMemberBank::getPkCountry, pkCountry);
|
||||||
queryWrapper.eq("PK_MEMBER", pkMember);
|
queryWrapper.eq(CuMemberBank::getPkMember, pkMember);
|
||||||
queryWrapper.eq("DEFAULT_CARD", EDefault.YES.getValue());
|
queryWrapper.eq(CuMemberBank::getDefaultCard, EDefault.YES.getValue());
|
||||||
return BeanUtil.copyProperties(this.getOne(queryWrapper), CuMemberBankVO.class);
|
return BeanUtil.copyProperties(this.getOne(queryWrapper), CuMemberBankVO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean unbindBank(Long pkId, Long pkMember) {
|
public Boolean unbindBank(Long pkId, Long pkMember) {
|
||||||
UpdateWrapper<CuMemberBank> updateWrapper = new UpdateWrapper<>();
|
LambdaUpdateWrapper<CuMemberBank> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.set("DEL_FLAG", EDelFlag.DELETE.getValue())
|
updateWrapper.set(CuMemberBank::getDelFlag, EDelFlag.DELETE.getValue())
|
||||||
.set("MODIFIED_TIME", new Date())
|
.set(CuMemberBank::getModifiedTime, new Date())
|
||||||
.set("PK_MODIFIED", pkMember)
|
.set(CuMemberBank::getPkModified, pkMember)
|
||||||
.eq("PK_ID", pkId);
|
.eq(CuMemberBank::getPkId, pkId);
|
||||||
return update(updateWrapper);
|
return update(updateWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer saveMemberBank(CuMemberBankParam cuMemberBankParam) {
|
public Integer saveMemberBank(CuMemberBankParam cuMemberBankParam) {
|
||||||
CuMemberBank cuMemberBank = new CuMemberBank();
|
CuMemberBankVO bindCard = isBindBank(cuMemberBankParam.getPkMember(), cuMemberBankParam.getPkCountry());
|
||||||
BeanUtil.copyProperties(cuMemberBankParam, cuMemberBank);
|
|
||||||
//是否绑定银行卡
|
|
||||||
Long pkMember = cuMemberBankParam.getPkMember();
|
|
||||||
Integer pkCountry = cuMemberBankParam.getPkCountry();
|
|
||||||
CuMemberBankVO bindCard = isBindBank(pkMember, pkCountry);
|
|
||||||
int isDefault = null != bindCard.getDefaultCard() ? EBankCardStatus.NO.getValue() : EBankCardStatus.YES.getValue();
|
int isDefault = null != bindCard.getDefaultCard() ? EBankCardStatus.NO.getValue() : EBankCardStatus.YES.getValue();
|
||||||
|
CuMemberBank cuMemberBank = BeanUtil.copyProperties(cuMemberBankParam, CuMemberBank.class);
|
||||||
cuMemberBank.setDefaultCard(isDefault);
|
cuMemberBank.setDefaultCard(isDefault);
|
||||||
cuMemberBank.setPkCreator(cuMemberBankParam.getPkMember());
|
cuMemberBank.setPkCreator(cuMemberBankParam.getPkMember());
|
||||||
return baseMapper.insert(cuMemberBank);
|
return baseMapper.insert(cuMemberBank);
|
||||||
|
@ -75,29 +68,19 @@ public class CuMemberBankServiceImpl extends ServiceImpl<CuMemberBankMapper, CuM
|
||||||
return BeanUtil.copyToList(baseMapper.selectBankCardByPkMember(pkMember, pkCountry), CuMemberBankVO.class);
|
return BeanUtil.copyToList(baseMapper.selectBankCardByPkMember(pkMember, pkCountry), CuMemberBankVO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@Override
|
||||||
public Boolean updateDefault(Long pkId, Long pkMember, Integer pkCountry) {
|
public Boolean updateDefault(Long pkId, Long pkMember, Integer pkCountry) {
|
||||||
updateMemberBankCardToDefault(pkMember, pkCountry);
|
LambdaUpdateWrapper<CuMemberBank> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
UpdateWrapper<CuMemberBank> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set(CuMemberBank::getDefaultCard, EBankCardStatus.NO.getValue())
|
||||||
updateWrapper.set("DEFAULT_CARD", EBankCardStatus.YES.getValue()).eq("PK_ID", pkId);
|
.eq(CuMemberBank::getDefaultCard, EBankCardStatus.YES.getValue())
|
||||||
return update(updateWrapper);
|
.eq(CuMemberBank::getPkMember, pkMember)
|
||||||
}
|
.eq(CuMemberBank::getPkCountry, pkCountry);
|
||||||
|
|
||||||
/**
|
LambdaUpdateWrapper<CuMemberBank> newUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
* 绑定的银行卡更新为非默认
|
newUpdateWrapper.set(CuMemberBank::getDefaultCard, EBankCardStatus.YES.getValue())
|
||||||
*
|
.eq(CuMemberBank::getPkId, pkId);
|
||||||
* @param pkMember 会员ID
|
return update(newUpdateWrapper);
|
||||||
* @param pkCountry 国家ID
|
|
||||||
* @return Boolean
|
|
||||||
*/
|
|
||||||
public Boolean updateMemberBankCardToDefault(Long pkMember, Integer pkCountry) {
|
|
||||||
UpdateWrapper<CuMemberBank> updateWrapper = new UpdateWrapper<>();
|
|
||||||
updateWrapper.set("DEFAULT_CARD", EBankCardStatus.NO.getValue())
|
|
||||||
.eq("DEFAULT_CARD", EBankCardStatus.YES.getValue())
|
|
||||||
.eq("PK_MEMBER", pkMember)
|
|
||||||
.eq("PK_COUNTRY", pkCountry);
|
|
||||||
return update(updateWrapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -298,7 +298,8 @@ public class CuMemberBaseServiceImpl implements ICuMemberBaseService {
|
||||||
BdTradeWhiteConfig whiteConfig = tradeConfigServiceApi.selectTradeWhiteConfigByCondition(whiteDTO).getData();
|
BdTradeWhiteConfig whiteConfig = tradeConfigServiceApi.selectTradeWhiteConfigByCondition(whiteDTO).getData();
|
||||||
if (null != whiteConfig) {
|
if (null != whiteConfig) {
|
||||||
return whiteConfig;
|
return whiteConfig;
|
||||||
} else {//查询伞下配置白名单
|
} else {
|
||||||
|
//查询伞下配置白名单
|
||||||
return iCuMemberService.selectMemberByUnderBlood(pkMember, ETradeMemberWhite.BLOOD_UNDER_UMBRELLA.getValue());
|
return iCuMemberService.selectMemberByUnderBlood(pkMember, ETradeMemberWhite.BLOOD_UNDER_UMBRELLA.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.hzs.common.core.constant.MemberFieldConstants;
|
import com.hzs.common.core.constant.MemberFieldConstants;
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
|
@ -79,8 +78,8 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
|
||||||
@Override
|
@Override
|
||||||
public List<CuMemberWithdraw> selectWithdrawByBatch(String batchNO) {
|
public List<CuMemberWithdraw> selectWithdrawByBatch(String batchNO) {
|
||||||
//根据单号查询充值信息
|
//根据单号查询充值信息
|
||||||
QueryWrapper<CuMemberWithdraw> queryWrapper = new QueryWrapper<>();
|
LambdaQueryWrapper<CuMemberWithdraw> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq("BATCH", batchNO);
|
queryWrapper.eq(CuMemberWithdraw::getBatch, batchNO);
|
||||||
return baseMapper.selectList(queryWrapper);
|
return baseMapper.selectList(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,10 +111,11 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public Integer saveMemberWithdrawInfo(CuMemberWithdraw cuMemberWithdraw) {
|
public Integer saveMemberWithdrawInfo(CuMemberWithdraw cuMemberWithdraw) {
|
||||||
Integer row = baseMapper.insert(cuMemberWithdraw);
|
int row = baseMapper.insert(cuMemberWithdraw);
|
||||||
this.updateTradeAndBalancd(cuMemberWithdraw, EOperationMethod.INSERT);
|
if (row != 0) {
|
||||||
|
this.updateTradeAndBalancd(cuMemberWithdraw, EOperationMethod.INSERT);
|
||||||
|
}
|
||||||
return row;
|
return row;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -304,27 +304,6 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取余额
|
|
||||||
*
|
|
||||||
* @param accountsType 账户值
|
|
||||||
* @param cuMemberAccount 账户信息
|
|
||||||
* @return BigDecimal
|
|
||||||
*/
|
|
||||||
private BigDecimal getAvailableBalance(Integer accountsType, CuMemberAccount cuMemberAccount) {
|
|
||||||
//账户余额
|
|
||||||
BigDecimal accountBalance = getAccountBalance(accountsType, cuMemberAccount);
|
|
||||||
//可提现账户余额
|
|
||||||
BigDecimal withdrawBalance = ReflectUtils.invokeGetter(cuMemberAccount, MemberFieldConstants.WITHDRAW_ACCOUNT + accountsType);
|
|
||||||
withdrawBalance = withdrawBalance == null ? BigDecimal.ZERO : withdrawBalance;
|
|
||||||
BigDecimal lockAccount = ReflectUtils.invokeGetter(cuMemberAccount, MemberFieldConstants.LOCK_WITHDRAW_ACCOUNT + accountsType);
|
|
||||||
if (null != lockAccount && lockAccount.compareTo(BigDecimal.ZERO) > 0) {
|
|
||||||
withdrawBalance = withdrawBalance.subtract(lockAccount);
|
|
||||||
}
|
|
||||||
//取最小余额
|
|
||||||
return accountBalance.compareTo(withdrawBalance) < 0 ? accountBalance : withdrawBalance;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取账户余额
|
* 获取账户余额
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,28 +1,21 @@
|
||||||
package com.hzs.member.account.vo;
|
package com.hzs.member.account.vo;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.hzs.common.core.annotation.Transaction;
|
import com.hzs.common.core.annotation.Transaction;
|
||||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员银行卡VO
|
* 会员银行卡VO
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2023/2/9 15:31
|
|
||||||
* @Classname: CuMemberBankVO
|
|
||||||
* @Package_name: com.hzs.member.account.vo
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class CuMemberBankVO implements Serializable {
|
public class CuMemberBankVO implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行主键
|
* 银行主键
|
||||||
*/
|
*/
|
||||||
|
@ -66,5 +59,5 @@ public class CuMemberBankVO implements Serializable {
|
||||||
/**
|
/**
|
||||||
* logo图片
|
* logo图片
|
||||||
*/
|
*/
|
||||||
private String logo;
|
private String logo;
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,6 @@ public class CuMemberWithdrawVO extends CuMemberBaseVO {
|
||||||
/**
|
/**
|
||||||
* 汇率
|
* 汇率
|
||||||
*/
|
*/
|
||||||
@Excel(name = "汇率", scale = 4)
|
|
||||||
@BigDecimalFormat("#0.0000")
|
@BigDecimalFormat("#0.0000")
|
||||||
private BigDecimal exchangeRate;
|
private BigDecimal exchangeRate;
|
||||||
|
|
||||||
|
@ -153,13 +152,11 @@ public class CuMemberWithdrawVO extends CuMemberBaseVO {
|
||||||
/**
|
/**
|
||||||
* 开户支行省
|
* 开户支行省
|
||||||
*/
|
*/
|
||||||
@Excel(name = "开户支行省")
|
|
||||||
private String accountProvince;
|
private String accountProvince;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开户支行市
|
* 开户支行市
|
||||||
*/
|
*/
|
||||||
@Excel(name = "开户支行市")
|
|
||||||
private String accountCity;
|
private String accountCity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -178,12 +175,10 @@ public class CuMemberWithdrawVO extends CuMemberBaseVO {
|
||||||
* 有效期起始日期
|
* 有效期起始日期
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
@Excel(name = "有效期起始日期", width = 30, dateFormat = "yyyy-MM-dd")
|
|
||||||
private Date validStartDate;
|
private Date validStartDate;
|
||||||
/**
|
/**
|
||||||
* 有效期截止日期
|
* 有效期截止日期
|
||||||
*/
|
*/
|
||||||
@Excel(name = "有效期截止日期")
|
|
||||||
private String validEndDate;
|
private String validEndDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,27 +4,27 @@
|
||||||
|
|
||||||
<!-- 通用查询映射结果 -->
|
<!-- 通用查询映射结果 -->
|
||||||
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.account.CuMemberBank">
|
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.account.CuMemberBank">
|
||||||
<id column="PK_ID" property="pkId" />
|
<id column="PK_ID" property="pkId"/>
|
||||||
<result column="DEL_FLAG" property="delFlag" />
|
<result column="DEL_FLAG" property="delFlag"/>
|
||||||
<result column="PK_CREATOR" property="pkCreator" />
|
<result column="PK_CREATOR" property="pkCreator"/>
|
||||||
<result column="CREATION_TIME" property="creationTime" />
|
<result column="CREATION_TIME" property="creationTime"/>
|
||||||
<result column="PK_MODIFIED" property="pkModified" />
|
<result column="PK_MODIFIED" property="pkModified"/>
|
||||||
<result column="MODIFIED_TIME" property="modifiedTime" />
|
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||||
<result column="PK_COUNTRY" property="pkCountry" />
|
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||||
<result column="PK_MEMBER" property="pkMember"/>
|
<result column="PK_MEMBER" property="pkMember"/>
|
||||||
<result column="BANK_NAME" property="bankName" />
|
<result column="BANK_NAME" property="bankName"/>
|
||||||
<result column="SUB_BANK_NAME" property="subBankName" />
|
<result column="SUB_BANK_NAME" property="subBankName"/>
|
||||||
<result column="ACCOUNT_NAME" property="accountName" />
|
<result column="ACCOUNT_NAME" property="accountName"/>
|
||||||
<result column="CARD_NUMBER" property="cardNumber" />
|
<result column="CARD_NUMBER" property="cardNumber"/>
|
||||||
<result column="ID_CARD" property="idCard" />
|
<result column="ID_CARD" property="idCard"/>
|
||||||
<result column="PHONE" property="phone" />
|
<result column="PHONE" property="phone"/>
|
||||||
<result column="PK_BANK" property="pkBank" />
|
<result column="PK_BANK" property="pkBank"/>
|
||||||
<result column="DEFAULT_CARD" property="defaultCard" />
|
<result column="DEFAULT_CARD" property="defaultCard"/>
|
||||||
<result column="ACCOUNT_PROVINCE" property="accountProvince" />
|
<result column="ACCOUNT_PROVINCE" property="accountProvince"/>
|
||||||
<result column="ACCOUNT_CITY" property="accountCity" />
|
<result column="ACCOUNT_CITY" property="accountCity"/>
|
||||||
<result column="VALID_START_DATE" property="validStartDate" />
|
<result column="VALID_START_DATE" property="validStartDate"/>
|
||||||
<result column="VALID_END_DATE" property="validEndDate" />
|
<result column="VALID_END_DATE" property="validEndDate"/>
|
||||||
<result column="IS_LONG_TERM" property="isLongTerm" />
|
<result column="IS_LONG_TERM" property="isLongTerm"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<update id="batchUpdateBankBypkMembers">
|
<update id="batchUpdateBankBypkMembers">
|
||||||
|
@ -37,23 +37,22 @@
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<select id="selectBankCardByPkMember" resultType="com.hzs.common.domain.member.account.CuMemberBankExt">
|
<select id="selectBankCardByPkMember" resultType="com.hzs.common.domain.member.account.CuMemberBankExt">
|
||||||
select mb.pk_id pkId,
|
select mb.pk_id pkId,
|
||||||
mb.card_number cardNumber,
|
mb.card_number cardNumber,
|
||||||
mb.default_card defaultCard,
|
mb.default_card defaultCard,
|
||||||
b.pk_transaction pkBank,
|
b.pk_transaction pkBank,
|
||||||
b.background_img backgroundImg,
|
b.background_img backgroundImg,
|
||||||
b.bank_name bankName,
|
b.bank_name bankName,
|
||||||
b.logo
|
b.logo
|
||||||
from cu_member_bank mb
|
from cu_member_bank mb
|
||||||
left join bd_bank b
|
left join bd_bank b
|
||||||
on mb.pk_bank = b.pk_id
|
on mb.pk_bank = b.pk_id
|
||||||
and b.del_flag = 0
|
and b.del_flag = 0
|
||||||
and b.enable_state = 0
|
and b.enable_state = 0
|
||||||
where mb.del_flag = 0
|
where mb.del_flag = 0
|
||||||
and mb.pk_country = #{pkCountry}
|
and mb.pk_country = #{pkCountry}
|
||||||
and mb.pk_member = #{pkMember}
|
and mb.pk_member = #{pkMember}
|
||||||
order by mb.default_card desc
|
order by mb.default_card desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -386,9 +386,7 @@
|
||||||
AND cmw.status != 3
|
AND cmw.status != 3
|
||||||
AND cmw.pk_country = #{pkCountry}
|
AND cmw.pk_country = #{pkCountry}
|
||||||
AND cmw.pk_member = #{pkMember}
|
AND cmw.pk_member = #{pkMember}
|
||||||
AND cmw.approve_state IN (1
|
AND cmw.approve_state IN (1, 2, 3)
|
||||||
, 2
|
|
||||||
, 3)
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package com.hzs.sale.order.service.impl;
|
package com.hzs.sale.order.service.impl;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.hzs.common.core.enums.EApprovalBusiness;
|
import com.hzs.common.core.enums.EApprovalBusiness;
|
||||||
import com.hzs.common.domain.sale.order.SaOrder;
|
import com.hzs.common.domain.sale.order.SaOrder;
|
||||||
import com.hzs.common.security.utils.SecurityUtils;
|
|
||||||
import com.hzs.sale.order.service.ISaOrderRevokeService;
|
import com.hzs.sale.order.service.ISaOrderRevokeService;
|
||||||
import com.hzs.system.sys.IApprovalServiceApi;
|
import com.hzs.system.sys.IApprovalServiceApi;
|
||||||
import com.hzs.system.sys.dto.ApprovalSubmitDTO;
|
import com.hzs.system.sys.dto.ApprovalSubmitDTO;
|
||||||
|
@ -13,17 +11,13 @@ import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 撤单逻辑类
|
* 撤单逻辑类
|
||||||
* @Author: sui q
|
|
||||||
* @Time: 2022/10/27 10:50
|
|
||||||
* @Classname: SaOrderRevokeServiceImpl
|
|
||||||
* @PackageName: com.hzs.sale.order.service.impl
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class SaOrderRevokeServiceImpl implements ISaOrderRevokeService {
|
public class SaOrderRevokeServiceImpl implements ISaOrderRevokeService {
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private IApprovalServiceApi approvalServiceApi;
|
IApprovalServiceApi iApprovalServiceApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void revokeSaOrder(SaOrder saOrder, LoginUser loginUser) {
|
public void revokeSaOrder(SaOrder saOrder, LoginUser loginUser) {
|
||||||
|
@ -32,6 +26,6 @@ public class SaOrderRevokeServiceImpl implements ISaOrderRevokeService {
|
||||||
.businessCode(saOrder.getOrderCode())
|
.businessCode(saOrder.getOrderCode())
|
||||||
.businessData(JSONUtil.toJsonStr(saOrder))
|
.businessData(JSONUtil.toJsonStr(saOrder))
|
||||||
.build();
|
.build();
|
||||||
approvalServiceApi.submit(approvalSubmitDTO, loginUser);
|
iApprovalServiceApi.submit(approvalSubmitDTO, loginUser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,12 +13,6 @@ import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 交易配置
|
* 交易配置
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2023/8/18 11:14
|
|
||||||
* @Classname: BdTradeConfigVO
|
|
||||||
* @Package_name: com.hzs.system.config.vo
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -42,7 +36,6 @@ public class BdTradeConfigVO implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 1:提现 2:转账 (来源枚举EBusinessModule)
|
* 1:提现 2:转账 (来源枚举EBusinessModule)
|
||||||
*/
|
*/
|
||||||
@Transaction(transactionKey = EnumsPrefixConstants.BUSINESS_MODULE)
|
|
||||||
private Integer businessModule;
|
private Integer businessModule;
|
||||||
|
|
||||||
private String businessModuleVal;
|
private String businessModuleVal;
|
||||||
|
|
|
@ -2433,7 +2433,7 @@ public class EnumsController extends BaseController {
|
||||||
public AjaxResult businessModule() {
|
public AjaxResult businessModule() {
|
||||||
List<EnumEntity> enumEntityList = new ArrayList<>();
|
List<EnumEntity> enumEntityList = new ArrayList<>();
|
||||||
for (EBusinessModule value : EBusinessModule.values()) {
|
for (EBusinessModule value : EBusinessModule.values()) {
|
||||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.BUSINESS_MODULE));
|
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel()));
|
||||||
}
|
}
|
||||||
return AjaxResult.success(enumEntityList);
|
return AjaxResult.success(enumEntityList);
|
||||||
}
|
}
|
||||||
|
|
|
@ -567,11 +567,6 @@ public class EnumsInitController {
|
||||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 交易配置 业务类型
|
|
||||||
for (EBusinessModule value : EBusinessModule.values()) {
|
|
||||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 点位状态
|
// 点位状态
|
||||||
for (EPointStatus value : EPointStatus.values()) {
|
for (EPointStatus value : EPointStatus.values()) {
|
||||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||||
|
|
|
@ -814,11 +814,6 @@ public class EnumsPrefixConstants {
|
||||||
*/
|
*/
|
||||||
public static final String RATIO_TYPE = "ENU_R_T_";
|
public static final String RATIO_TYPE = "ENU_R_T_";
|
||||||
|
|
||||||
/**
|
|
||||||
* 抽奖奖品发放方式
|
|
||||||
*/
|
|
||||||
public static final String GRANT_WAY_TYPE = "GRANT_WAY_TYPE_";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据类型(业绩查询)
|
* 数据类型(业绩查询)
|
||||||
*/
|
*/
|
||||||
|
@ -829,11 +824,6 @@ public class EnumsPrefixConstants {
|
||||||
*/
|
*/
|
||||||
public static final String RECOMMEND_DADA_TYPE = "ENU_R_D_T_";
|
public static final String RECOMMEND_DADA_TYPE = "ENU_R_D_T_";
|
||||||
|
|
||||||
/**
|
|
||||||
* 交易配置 业务类型
|
|
||||||
*/
|
|
||||||
public static final String BUSINESS_MODULE = "ENU_B_M_";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点位状态
|
* 点位状态
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -193,51 +193,16 @@ public class FinanceMsgConstants {
|
||||||
*/
|
*/
|
||||||
public static final String CONFIGURE_WITHDRAWAL_INFO = "请配置提现信息";
|
public static final String CONFIGURE_WITHDRAWAL_INFO = "请配置提现信息";
|
||||||
|
|
||||||
/**
|
|
||||||
* 暂时不请允许提现,请先升级 -- 暂时不请允许提现,请先升级
|
|
||||||
*/
|
|
||||||
public static final String NOT_WITHDRAWAL_UPGRADE = "暂时不请允许提现,请先升级";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请选择提现账户 -- 请选择提现账户
|
* 请选择提现账户 -- 请选择提现账户
|
||||||
*/
|
*/
|
||||||
public static final String SELECT_WITHDRAWAL_ACCOUNT = "请选择提现账户";
|
public static final String SELECT_WITHDRAWAL_ACCOUNT = "请选择提现账户";
|
||||||
|
|
||||||
/**
|
|
||||||
* 不允许提现 -- 不允许提现
|
|
||||||
*/
|
|
||||||
public static final String NOT_ALLOWED_WITHDRAWAL = "不允许提现";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 超过提现次数 -- 超过提现次数
|
|
||||||
*/
|
|
||||||
public static final String EXCEEDING_WITHDRAWALS_NUMBER = "超过提现次数";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 请配置提现金额限制 -- 请配置提现金额限制
|
|
||||||
*/
|
|
||||||
public static final String CONFIGURE_WITHDRAWAL_AMOUNT_LIMIT = "请配置提现金额限制";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请输入提现金额 -- 请输入提现金额
|
* 请输入提现金额 -- 请输入提现金额
|
||||||
*/
|
*/
|
||||||
public static final String ENTER_WITHDRAWAL_AMOUNT = "请输入提现金额";
|
public static final String ENTER_WITHDRAWAL_AMOUNT = "请输入提现金额";
|
||||||
|
|
||||||
/**
|
|
||||||
* 请输入整数值 -- 请输入整数值
|
|
||||||
*/
|
|
||||||
public static final String ENTER_INTEGER_VALUE = "请输入整数值";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提现金额必须大于最低提现金额 -- 提现金额必须大于最低提现金额
|
|
||||||
*/
|
|
||||||
public static final String WITHDRAWAL_AMOUNT_GREATER_MINIMUM_AMOUNT = "提现金额必须大于最低提现金额";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提现金额必须小于最高提现金额 -- 提现金额必须小于最高提现金额
|
|
||||||
*/
|
|
||||||
public static final String WITHDRAWAL_AMOUNT_LESS_MAXIMUM_AMOUNT = "提现金额必须小于最高提现金额";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 余额不足 -- 余额不足
|
* 余额不足 -- 余额不足
|
||||||
*/
|
*/
|
||||||
|
@ -277,11 +242,6 @@ public class FinanceMsgConstants {
|
||||||
*/
|
*/
|
||||||
public static final String NOT_ALLOWED_TRANSFER = "该账号不允许转账";
|
public static final String NOT_ALLOWED_TRANSFER = "该账号不允许转账";
|
||||||
|
|
||||||
/**
|
|
||||||
* 请先实名认证 -- 请先实名认证
|
|
||||||
*/
|
|
||||||
public static final String REAL_NAME_NOT_EXIST = "请先实名认证";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实名认证的真实姓名与营业执照的法人姓名是不一致 -- 法人姓名与实名认证的真实姓名不一致
|
* 实名认证的真实姓名与营业执照的法人姓名是不一致 -- 法人姓名与实名认证的真实姓名不一致
|
||||||
*/
|
*/
|
||||||
|
@ -315,26 +275,11 @@ public class FinanceMsgConstants {
|
||||||
*/
|
*/
|
||||||
public static final String RECHARGE_DETAILS_EXPORT = "充值明细导出";
|
public static final String RECHARGE_DETAILS_EXPORT = "充值明细导出";
|
||||||
|
|
||||||
/**
|
|
||||||
* 银行卡号不能为空 -- 银行卡号不能为空!
|
|
||||||
*/
|
|
||||||
public static final String BANK_CARD_CANNOT_EMPTY = "银行卡号不能为空!";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 开户名不能为空 -- 开户名不能为空!
|
|
||||||
*/
|
|
||||||
public static final String ACCOUNT_NAME_CANNOT_EMPTY = "开户名不能为空!";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证码不能为空 -- 验证码不能为空!
|
* 验证码不能为空 -- 验证码不能为空!
|
||||||
*/
|
*/
|
||||||
public static final String VERIFICATION_CODE_CANNOT_EMPTY = "验证码不能为空!";
|
public static final String VERIFICATION_CODE_CANNOT_EMPTY = "验证码不能为空!";
|
||||||
|
|
||||||
/**
|
|
||||||
* 开户支行不能为空 -- 开户支行不能为空!
|
|
||||||
*/
|
|
||||||
public static final String OPENING_BRANCH_CANNOT_EMPTY = "开户支行不能为空!";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开户支行不能为空 -- 真实姓名不能为空!
|
* 开户支行不能为空 -- 真实姓名不能为空!
|
||||||
*/
|
*/
|
||||||
|
@ -428,11 +373,6 @@ public class FinanceMsgConstants {
|
||||||
*/
|
*/
|
||||||
public static final String BUSINESS_LICENSE_REFUSE_RESET = "营业执照审核未通过,请勿操作重置";
|
public static final String BUSINESS_LICENSE_REFUSE_RESET = "营业执照审核未通过,请勿操作重置";
|
||||||
|
|
||||||
/**
|
|
||||||
* 提现正在审批中,请稍后再试 -- 提现正在审批中,请稍后再试
|
|
||||||
*/
|
|
||||||
public static final String WITHDRAWAL_APPROVAL = "提现正在审批中,请稍后再试";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提现金额必须为100的整数倍
|
* 提现金额必须为100的整数倍
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,12 +5,6 @@ import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡默认状态
|
* 银行卡默认状态
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2023/2/9 15:14
|
|
||||||
* @Classname: EBankCardStatus
|
|
||||||
* @Package_name: com.hzs.common.core.enums
|
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
|
|
@ -1,17 +1,10 @@
|
||||||
package com.hzs.common.core.enums;
|
package com.hzs.common.core.enums;
|
||||||
|
|
||||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 交易配置 业务类型
|
* 交易配置 业务类型
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2023/8/18 10:01
|
|
||||||
* @Classname: EBusinessModule
|
|
||||||
* @Package_name: com.hzs.common.core.enums
|
|
||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -20,11 +13,11 @@ public enum EBusinessModule {
|
||||||
/**
|
/**
|
||||||
* 1=提现
|
* 1=提现
|
||||||
*/
|
*/
|
||||||
WITHDRAWAL(1, "提现", 0, EnumsPrefixConstants.BUSINESS_MODULE + "1"),
|
WITHDRAWAL(1, "提现", 0),
|
||||||
/**
|
/**
|
||||||
* 2=转账
|
* 2=转账
|
||||||
*/
|
*/
|
||||||
TRANSFER_ACCOUNTS(2, "转账", 0, EnumsPrefixConstants.BUSINESS_MODULE + "2"),
|
TRANSFER_ACCOUNTS(2, "转账", 0),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -40,9 +33,5 @@ public enum EBusinessModule {
|
||||||
* 是否启用(0=是,1=否) -- 来源EYesNo
|
* 是否启用(0=是,1=否) -- 来源EYesNo
|
||||||
*/
|
*/
|
||||||
private final int enable;
|
private final int enable;
|
||||||
/**
|
|
||||||
* 国际化翻译key值
|
|
||||||
*/
|
|
||||||
private final String key;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
package com.hzs.third.bankcard.common;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 银行卡验证返回状态
|
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2022/11/25 10:42
|
|
||||||
* @Classname: HttpConstant
|
|
||||||
* @Package_name: com.hz.bankCard.common
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class HttpConstant {
|
|
||||||
/**
|
|
||||||
* 一致
|
|
||||||
*/
|
|
||||||
public static final String BANK_CARD_SAME = "1200";
|
|
||||||
/**
|
|
||||||
* 不一致
|
|
||||||
*/
|
|
||||||
public static final String BANK_CARD_DIFFERENT = "1201";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 银行卡状态错误
|
|
||||||
*/
|
|
||||||
public static final String BANK_CARD_STATUS_EEOR = "1203";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证失败
|
|
||||||
*/
|
|
||||||
public static final String BANK_CARD_FAIL = "1206";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证错误
|
|
||||||
*/
|
|
||||||
public static final String BANK_CARD_EEOR = "1206";
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,29 +4,21 @@ import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.utils.StringUtils;
|
import com.hzs.common.core.utils.StringUtils;
|
||||||
import com.hzs.third.bankcard.IBankCardServiceApi;
|
import com.hzs.third.bankcard.IBankCardServiceApi;
|
||||||
import com.hzs.third.bankcard.dto.BankCardParam;
|
import com.hzs.third.bankcard.dto.BankCardParam;
|
||||||
import com.hzs.third.bankcard.service.BankCardService;
|
import com.hzs.third.bankcard.service.IBankCardService;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡四要素验证服务
|
* 银行卡四要素验证服务
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2023/2/9 9:05
|
|
||||||
* @Classname: BankCardValidateProvider
|
|
||||||
* @Package_name: com.hzs.third.bankCard.provider
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@DubboService
|
@DubboService
|
||||||
public class BankCardValidateProvider implements IBankCardServiceApi {
|
public class BankCardValidateProvider implements IBankCardServiceApi {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
BankCardService bankCardService;
|
private IBankCardService IBankCardService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R verifyBankCard(BankCardParam bankCardParam) {
|
public R<?> verifyBankCard(BankCardParam bankCardParam) {
|
||||||
|
|
||||||
if (StringUtils.isEmpty(bankCardParam.getIdCard())) {
|
if (StringUtils.isEmpty(bankCardParam.getIdCard())) {
|
||||||
return R.fail("身份证号码不能为空!");
|
return R.fail("身份证号码不能为空!");
|
||||||
}
|
}
|
||||||
|
@ -36,12 +28,10 @@ public class BankCardValidateProvider implements IBankCardServiceApi {
|
||||||
if (StringUtils.isEmpty(bankCardParam.getMobile())) {
|
if (StringUtils.isEmpty(bankCardParam.getMobile())) {
|
||||||
return R.fail("手机号不能为空!");
|
return R.fail("手机号不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isEmpty(bankCardParam.getBankCard())) {
|
if (StringUtils.isEmpty(bankCardParam.getBankCard())) {
|
||||||
return R.fail("银行卡号不能为空!");
|
return R.fail("银行卡号不能为空!");
|
||||||
}
|
}
|
||||||
return bankCardService.verifyBankCard(bankCardParam);
|
return IBankCardService.verifyBankCard(bankCardParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,14 +5,8 @@ import com.hzs.third.bankcard.dto.BankCardParam;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡验证接口
|
* 银行卡验证接口
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2022/11/24 18:03
|
|
||||||
* @Classname: BankCardService
|
|
||||||
* @Package_name: com.hz.bankCard.service.impl
|
|
||||||
*/
|
*/
|
||||||
public interface BankCardService {
|
public interface IBankCardService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行卡四要素校验
|
* 银行卡四要素校验
|
||||||
|
@ -20,5 +14,6 @@ public interface BankCardService {
|
||||||
* @param bankCardParam 入参
|
* @param bankCardParam 入参
|
||||||
* @return BankCardVO
|
* @return BankCardVO
|
||||||
*/
|
*/
|
||||||
R verifyBankCard(BankCardParam bankCardParam);
|
R<?> verifyBankCard(BankCardParam bankCardParam);
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,103 +0,0 @@
|
||||||
package com.hzs.third.bankcard.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.http.Header;
|
|
||||||
import cn.hutool.http.HttpRequest;
|
|
||||||
import cn.hutool.http.HttpResponse;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.google.gson.JsonParser;
|
|
||||||
import com.hzs.common.core.constant.HttpStatus;
|
|
||||||
import com.hzs.common.core.domain.R;
|
|
||||||
import com.hzs.third.bankcard.common.HttpConstant;
|
|
||||||
import com.hzs.third.bankcard.dto.BankCardParam;
|
|
||||||
import com.hzs.third.bankcard.service.BankCardService;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 银行卡验证接口
|
|
||||||
*
|
|
||||||
* @Description:
|
|
||||||
* @Author: ljc
|
|
||||||
* @Time: 2022/11/24 18:14
|
|
||||||
* @Classname: BankCardServiceImpl
|
|
||||||
* @Package_name: com.hz.bankCard.service.impl
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Service
|
|
||||||
public class BankCardServiceImpl implements BankCardService {
|
|
||||||
|
|
||||||
@Value("${bankCard.url}")
|
|
||||||
private String url;
|
|
||||||
@Value("${bankCard.appKey}")
|
|
||||||
private String appKey;
|
|
||||||
@Value("${bankCard.appCode}")
|
|
||||||
private String appCode;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public R verifyBankCard(BankCardParam bankCardParam) {
|
|
||||||
String authorization = "APPCODE " + appCode;
|
|
||||||
HttpResponse response = HttpRequest.post(url)
|
|
||||||
.header(Header.AUTHORIZATION, authorization)
|
|
||||||
.header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=UTF-8")
|
|
||||||
.form(getInParam(bankCardParam))
|
|
||||||
.timeout(20000)
|
|
||||||
.execute();
|
|
||||||
return parseResult(response, bankCardParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析返回的结果集
|
|
||||||
* <p>
|
|
||||||
* 1200 银行卡验证一致 收费
|
|
||||||
* 1201 银行卡验证不一致 收费
|
|
||||||
* 1203 银行卡状态错误 收费
|
|
||||||
* 1206 验证失败 免费
|
|
||||||
*
|
|
||||||
* @param response 响应信息
|
|
||||||
* @return bankCardVO
|
|
||||||
*/
|
|
||||||
private R parseResult(HttpResponse response, BankCardParam bankCardParam) {
|
|
||||||
String result = response.body();
|
|
||||||
log.info("调用接口返回信息: " + result);
|
|
||||||
if (response.getStatus() == HttpStatus.SUCCESS) {
|
|
||||||
JsonObject resultJson = JsonParser.parseString(result).getAsJsonObject();
|
|
||||||
//状态码
|
|
||||||
String code = resultJson.get("code").getAsString();
|
|
||||||
//返回信息
|
|
||||||
String message = resultJson.get("message").getAsString();
|
|
||||||
if (code.equals(HttpConstant.BANK_CARD_SAME)) {
|
|
||||||
return R.ok();
|
|
||||||
} else {
|
|
||||||
log.info("银行卡四要素校验接口正常返回状态值: {},信息为: {}", code, message);
|
|
||||||
return R.fail(message);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
String message = "认证失败";
|
|
||||||
log.info("银行卡四要素校验接口异常返回状态值: {},信息为: {}", response.getStatus(), message);
|
|
||||||
return R.fail(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取入参
|
|
||||||
*
|
|
||||||
* @param bankCardParam 银行卡入参
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
private Map getInParam(BankCardParam bankCardParam) {
|
|
||||||
JsonObject jsonObject = new JsonObject();
|
|
||||||
jsonObject.addProperty("name", bankCardParam.getName());
|
|
||||||
jsonObject.addProperty("mobile", bankCardParam.getMobile());
|
|
||||||
jsonObject.addProperty("bankcard", bankCardParam.getBankCard());
|
|
||||||
jsonObject.addProperty("idcard", bankCardParam.getIdCard());
|
|
||||||
Map<String, String> param = new HashMap<>();
|
|
||||||
param.put("biz_content", jsonObject.toString());
|
|
||||||
return param;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
package com.hzs.third.bankcard.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.http.Header;
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import cn.hutool.http.HttpResponse;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.hzs.common.core.constant.HttpStatus;
|
||||||
|
import com.hzs.common.core.domain.R;
|
||||||
|
import com.hzs.third.bankcard.dto.BankCardParam;
|
||||||
|
import com.hzs.third.bankcard.service.IBankCardService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银行卡验证接口
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class IBankCardServiceImpl implements IBankCardService {
|
||||||
|
|
||||||
|
@Value("${bankCard.url}")
|
||||||
|
private String url;
|
||||||
|
@Value("${bankCard.appKey}")
|
||||||
|
private String appKey;
|
||||||
|
@Value("${bankCard.appCode}")
|
||||||
|
private String appCode;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> verifyBankCard(BankCardParam bankCardParam) {
|
||||||
|
Map<String, Object> param = new HashMap<>();
|
||||||
|
param.put("bankcard", bankCardParam.getBankCard());
|
||||||
|
param.put("idcard", bankCardParam.getIdCard());
|
||||||
|
param.put("name", bankCardParam.getName());
|
||||||
|
param.put("mobile", bankCardParam.getMobile());
|
||||||
|
|
||||||
|
HttpResponse response = HttpRequest.post(url)
|
||||||
|
.header(Header.AUTHORIZATION, "APPCODE " + appCode)
|
||||||
|
.header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=UTF-8")
|
||||||
|
.form(param)
|
||||||
|
.timeout(10000)
|
||||||
|
.execute();
|
||||||
|
return parseResult(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析返回的结果集
|
||||||
|
*/
|
||||||
|
private R<?> parseResult(HttpResponse response) {
|
||||||
|
String result = response.body();
|
||||||
|
log.info("调用银行卡认证接口返回信息: " + result);
|
||||||
|
|
||||||
|
if (HttpStatus.SUCCESS == response.getStatus()) {
|
||||||
|
JSONObject resultObj = JSONUtil.parseObj(result);
|
||||||
|
if ("200".equals(resultObj.getStr("code"))) {
|
||||||
|
// 返回成功
|
||||||
|
JSONObject dataObj = resultObj.getJSONObject("data");
|
||||||
|
int resultInt = dataObj.getInt("result");
|
||||||
|
if (resultInt == 0) {
|
||||||
|
// 一致
|
||||||
|
return R.ok();
|
||||||
|
} else if (resultInt == 1) {
|
||||||
|
// 不一致
|
||||||
|
return R.fail("银行卡预留信息不一致,请确认后重试");
|
||||||
|
} else {
|
||||||
|
// 查不到卡信息
|
||||||
|
return R.fail("银行卡信息不存在,请确认银行卡是否有效");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 返回失败
|
||||||
|
return R.fail(resultObj.getStr("msg"));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.error("调用银行卡认证接口失败");
|
||||||
|
return R.fail("银行卡认证失败,请重试");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -20,12 +20,8 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 快递100
|
* 快递100
|
||||||
* @Author: ljc
|
|
||||||
* @Date: 2022/8/24 14:38
|
|
||||||
* @Version:1.0
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ExpressServiceImpl implements IExpressService {
|
public class ExpressServiceImpl implements IExpressService {
|
||||||
|
@ -33,7 +29,6 @@ public class ExpressServiceImpl implements IExpressService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ExpressConfig expressConfig;
|
private ExpressConfig expressConfig;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R<ExpressDTO> expressTrackInfo(String trackingNumber, String mobile) {
|
public R<ExpressDTO> expressTrackInfo(String trackingNumber, String mobile) {
|
||||||
String customer = expressConfig.getCustomer();
|
String customer = expressConfig.getCustomer();
|
||||||
|
@ -41,7 +36,6 @@ public class ExpressServiceImpl implements IExpressService {
|
||||||
String url = expressConfig.getUrl();
|
String url = expressConfig.getUrl();
|
||||||
|
|
||||||
QueryTrackParam queryTrackParam = new QueryTrackParam();
|
QueryTrackParam queryTrackParam = new QueryTrackParam();
|
||||||
// queryTrackParam.setCom("JD");
|
|
||||||
queryTrackParam.setNum(trackingNumber);
|
queryTrackParam.setNum(trackingNumber);
|
||||||
queryTrackParam.setPhone(mobile);
|
queryTrackParam.setPhone(mobile);
|
||||||
String param = new Gson().toJson(queryTrackParam);
|
String param = new Gson().toJson(queryTrackParam);
|
||||||
|
@ -119,10 +113,9 @@ public class ExpressServiceImpl implements IExpressService {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
private String querySign(String param, String key, String customer) {
|
private String querySign(String param, String key, String customer) {
|
||||||
StringBuilder sb = new StringBuilder();
|
String sb = param +
|
||||||
sb.append(param);
|
key +
|
||||||
sb.append(key);
|
customer;
|
||||||
sb.append(customer);
|
return sign(sb);
|
||||||
return sign(sb.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class IdCardServiceImpl implements IdCardService {
|
||||||
return R.fail(message);
|
return R.fail(message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String message = (String) getErrorMessage().get(status);
|
String message = getErrorMessage().get(status);
|
||||||
String result = message == null ? "请上传清晰的身份证图片" : message;
|
String result = message == null ? "请上传清晰的身份证图片" : message;
|
||||||
log.info("身份证ORC接口异常返回状态值: {},信息为: {}", response.getStatus(), result);
|
log.info("身份证ORC接口异常返回状态值: {},信息为: {}", response.getStatus(), result);
|
||||||
return R.fail(result);
|
return R.fail(result);
|
||||||
|
|
Loading…
Reference in New Issue