## 提现走绑定银行卡逻辑;银行卡添加4要素认证;

This commit is contained in:
cabbage 2025-09-17 12:00:09 +08:00
parent 903d21f4b7
commit d71c8ef105
31 changed files with 318 additions and 787 deletions

View File

@ -1,6 +1,5 @@
package com.hzs.member.account.dto; package com.hzs.member.account.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -8,12 +7,7 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
/** /**
* <p>
* 会员信息-银行卡信息 * 会员信息-银行卡信息
* </p>
*
* @author hzs
* @since 2022-08-31
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor

View File

@ -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);
} }

View File

@ -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
@ -28,12 +22,10 @@ public class BankCardParam implements Serializable {
* 姓名 * 姓名
*/ */
private String name; private String name;
/** /**
* 身份证号 * 身份证号
*/ */
private String idCard; private String idCard;
/** /**
* 手机号 * 手机号
*/ */

View File

@ -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,184 +30,144 @@ 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") @GetMapping("/list")
public AjaxResult isBindBank() { public AjaxResult getBankCardList() {
Long pkMember = SecurityUtils.getUserId(); Long pkMember = SecurityUtils.getUserId();
Integer pkCountry = SecurityUtils.getPkCountry(); Integer pkCountry = SecurityUtils.getPkCountry();
CuMemberBankVO cuMemberBank = cuMemberBankService.isBindBank(pkMember, pkCountry); return AjaxResult.success(iCuMemberBankService.selectBankCardByPkMember(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") @PostMapping("/verify-bank-card")
public AjaxResult verifyBankCard(@RequestBody CuMemberBankParam memberBankParam) { public AjaxResult verifyBankCard(@RequestBody CuMemberBankParam memberBankParam) {
BankCardParam bankCard = BankCardParam.builder().name(memberBankParam.getAccountName()) if (StringUtils.isEmpty(memberBankParam.getCardNumber())) {
.idCard(memberBankParam.getIdCard()).mobile(memberBankParam.getPhone()) return AjaxResult.error("银行卡号不能为空!");
.bankCard(StringUtils.deleteWhitespace(memberBankParam.getCardNumber())).build(); }
R result = bankCardServiceApi.verifyBankCard(bankCard); 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()
.name(memberBankParam.getAccountName())
.idCard(memberBankParam.getIdCard())
.mobile(memberBankParam.getPhone())
.bankCard(StringUtils.deleteWhitespace(memberBankParam.getCardNumber()))
.build();
R<?> result = iBankCardServiceApi.verifyBankCard(bankCard);
return result.isSuccess() ? AjaxResult.success() : AjaxResult.error(result.getMsg()); return result.isSuccess() ? AjaxResult.success() : AjaxResult.error(result.getMsg());
} }
/** /**
* 绑定银行卡 * 绑定银行卡
*
* @param cuMemberBankParam 银行卡入参
* @return AjaxResult
*/ */
@PostMapping("/add") @PostMapping("/add")
@RepeatSubmitSimple @RepeatSubmitSimple
public AjaxResult addBankInfo(@RequestBody CuMemberBankParam cuMemberBankParam) { public AjaxResult addBankInfo(@RequestBody CuMemberBankParam cuMemberBankParam) {
Integer pkCountry = SecurityUtils.getPkCountry(); Integer pkCountry = SecurityUtils.getPkCountry();
Long pkMember = SecurityUtils.getUserId(); 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 == cuMemberBankParam.getPkBank()) {
if (null != message) { return AjaxResult.error("银行名称不能为空");
return AjaxResult.error(message);
}
} }
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.setPkCountry(pkCountry);
cuMemberBankParam.setPkMember(pkMember); cuMemberBankParam.setPkMember(pkMember);
return toAjax(cuMemberBankService.saveMemberBank(cuMemberBankParam)); return toAjax(iCuMemberBankService.saveMemberBank(cuMemberBankParam));
} }
/**
@GetMapping("/list") * 解绑银行卡
public AjaxResult getBankCardList() { */
Long pkMember = SecurityUtils.getUserId(); @GetMapping("/unbind-bank")
public AjaxResult unbindBank(Long pkId) {
Assert.notNull(pkId, "银行卡号不能为空!");
Integer pkCountry = SecurityUtils.getPkCountry(); Integer pkCountry = SecurityUtils.getPkCountry();
return AjaxResult.success(cuMemberBankService.selectBankCardByPkMember(pkMember, pkCountry));
}
@GetMapping("/default-bank")
public AjaxResult getDefaultBankCard() {
Long pkMember = SecurityUtils.getUserId(); Long pkMember = SecurityUtils.getUserId();
Integer pkCountry = SecurityUtils.getPkCountry(); // 查询默认银行卡
return AjaxResult.success(cuMemberBankService.isBindBank(pkMember, pkCountry)); 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));
} }
} }

View File

@ -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;
@ -25,6 +24,7 @@ import com.hzs.member.account.service.ICuMemberAccountService;
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.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.CuMemberWithdrawVO; import com.hzs.member.account.vo.CuMemberWithdrawVO;
import com.hzs.member.account.vo.CuMemberWithdrawalAddVO; import com.hzs.member.account.vo.CuMemberWithdrawalAddVO;
import com.hzs.member.base.service.ICuMemberService; import com.hzs.member.base.service.ICuMemberService;
@ -45,18 +45,18 @@ import java.util.List;
public class ApiCuMemberWithdrawController extends BaseController { public class ApiCuMemberWithdrawController extends BaseController {
@Autowired @Autowired
private ICuMemberBankService cuMemberBankService; private ICuMemberBankService iCuMemberBankService;
@Autowired @Autowired
private ICuMemberService cuMemberService; private ICuMemberService iCuMemberService;
@Autowired @Autowired
private ICuMemberBaseService baseService; private ICuMemberBaseService iCuMemberBaseService;
@Autowired @Autowired
private ICuMemberAccountService cuMemberAccountService; private ICuMemberAccountService iCuMemberAccountService;
@Autowired @Autowired
private ICuMemberWithdrawService cuMemberWithdrawService; private ICuMemberWithdrawService iCuMemberWithdrawService;
@DubboReference @DubboReference
IWithdrawalServiceApi withdrawalServiceApi; IWithdrawalServiceApi iWithdrawalServiceApi;
/** /**
* 提现时展示信息 * 提现时展示信息
@ -74,18 +74,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())
@ -100,84 +100,83 @@ public class ApiCuMemberWithdrawController extends BaseController {
* @param cuMemberWithdrawParam 提现入参 * @param cuMemberWithdrawParam 提现入参
* @return AjaxResult * @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(); 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);
//校验是否实名 // 校验是否实名
Boolean existRealName = baseService.isExistRealName(pkMember, pkCountry, EBusinessModule.WITHDRAWAL.getValue()); Boolean existRealName = iCuMemberBaseService.isExistRealName(pkMember, pkCountry, EBusinessModule.WITHDRAWAL.getValue());
if (!existRealName) { if (!existRealName) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.REAL_NAME_NOT_EXIST)); 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 (cashAmount.compareTo(minAmount) < 0) { if (cashAmount.compareTo(minAmount) < 0) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_AMOUNT_GREATER_MINIMUM_AMOUNT)); return AjaxResult.error("提现金额必须大于最低提现金额");
} }
if (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;
@ -189,42 +188,48 @@ 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));
} }
@ -242,7 +247,6 @@ public class ApiCuMemberWithdrawController extends BaseController {
return Boolean.FALSE; return Boolean.FALSE;
} }
/** /**
* 获取余额 * 获取余额
* *
@ -261,7 +265,7 @@ public class ApiCuMemberWithdrawController extends BaseController {
} }
} else { } else {
//其它配置账户余额 //其它配置账户余额
balance = cuMemberWithdrawService.getAccountBalance(accountsType, cuMemberAccount); balance = iCuMemberWithdrawService.getAccountBalance(accountsType, cuMemberAccount);
} }
return balance; return balance;
} }
@ -292,7 +296,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]);
@ -301,13 +305,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));
} }
} }
} }

View File

@ -35,30 +35,22 @@ import java.util.*;
/** /**
* 会员提现表 前端控制器 * 会员提现表 前端控制器
*
* @author hzs
* @since 2022-09-06
*/ */
@RestController @RestController
@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
private ICuMemberBaseService baseService; private ICuMemberBaseService iCuMemberBaseService;
@Autowired @Autowired
ICuMemberWithdrawService cuMemberWithdrawService; ICuMemberWithdrawService iCuMemberWithdrawService;
@Autowired @Autowired
ITransactionCommonService iTransactionCommonService; ITransactionCommonService iTransactionCommonService;
@DubboReference @DubboReference
IMenuColumnServiceApi menuColumnServiceApi; IMenuColumnServiceApi iMenuColumnServiceApi;
/** /**
* 发起签呈显示 * 发起签呈显示
@ -72,11 +64,11 @@ public class CuMemberWithdrawController extends BaseController {
if (CollUtil.isEmpty(pkIds)) { if (CollUtil.isEmpty(pkIds)) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.SELECT_INITIATING_SIGNATURE_RECORD)); return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.SELECT_INITIATING_SIGNATURE_RECORD));
} }
List<CuMemberWithdrawVO> cuMemberWithdrawList = cuMemberWithdrawService.checkWithdrawPetitionByState(pkIds, EApproveStatus.WAIT_SUBMIT.getValue()); List<CuMemberWithdrawVO> cuMemberWithdrawList = iCuMemberWithdrawService.checkWithdrawPetitionByState(pkIds, EApproveStatus.WAIT_SUBMIT.getValue());
if (CollUtil.isNotEmpty(cuMemberWithdrawList)) { if (CollUtil.isNotEmpty(cuMemberWithdrawList)) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.SELECTED_RECORD_DUPLICATE_SIGNATURE_RECORD)); return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.SELECTED_RECORD_DUPLICATE_SIGNATURE_RECORD));
} }
return AjaxResult.success(cuMemberWithdrawService.showMemberWithdrawPetition(pkIds, null)); return AjaxResult.success(iCuMemberWithdrawService.showMemberWithdrawPetition(pkIds, null));
} }
/** /**
@ -91,7 +83,7 @@ public class CuMemberWithdrawController extends BaseController {
LoginUser loginUser = userTokenService.getLoginUser(); LoginUser loginUser = userTokenService.getLoginUser();
cuMemberPetitionVO.setLoginUser(loginUser); cuMemberPetitionVO.setLoginUser(loginUser);
cuMemberPetitionVO.setPkCreat(SecurityUtils.getUserId()); cuMemberPetitionVO.setPkCreat(SecurityUtils.getUserId());
return AjaxResult.success(cuMemberWithdrawService.confirmWithdrawPetition(cuMemberPetitionVO)); return AjaxResult.success(iCuMemberWithdrawService.confirmWithdrawPetition(cuMemberPetitionVO));
} }
@ -117,7 +109,7 @@ public class CuMemberWithdrawController extends BaseController {
} }
} }
startPage(); startPage();
Object[] objects = cuMemberWithdrawService.selectMemberWithdrawList(cuMemberWithdrawVO); Object[] objects = iCuMemberWithdrawService.selectMemberWithdrawList(cuMemberWithdrawVO);
//处理分页 //处理分页
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]);
@ -126,7 +118,7 @@ public class CuMemberWithdrawController extends BaseController {
/** /**
* 充值明细列表导出 * 明细列表导出
* *
* @param response 入参 * @param response 入参
* @param cuMemberWithdrawVO 查询入参 * @param cuMemberWithdrawVO 查询入参
@ -137,18 +129,18 @@ public class CuMemberWithdrawController extends BaseController {
Integer pkCountry = SecurityUtils.getPkCountry(); Integer pkCountry = SecurityUtils.getPkCountry();
cuMemberWithdrawVO.setPkCountry(pkCountry); cuMemberWithdrawVO.setPkCountry(pkCountry);
cuMemberWithdrawVO.setSystemType(SecurityUtils.getSystemType()); cuMemberWithdrawVO.setSystemType(SecurityUtils.getSystemType());
List<CuMemberWithdrawVO> cuMemberWithdrawList = (List<CuMemberWithdrawVO>) cuMemberWithdrawService.selectMemberWithdrawList(cuMemberWithdrawVO)[1]; List<CuMemberWithdrawVO> cuMemberWithdrawList = (List<CuMemberWithdrawVO>) iCuMemberWithdrawService.selectMemberWithdrawList(cuMemberWithdrawVO)[1];
//枚举翻译 //枚举翻译
Map<String, String> transactionMap = iTransactionCommonService.exportEnumTransaction(EApproveStatus.values(), EWithdrawStatus.values()); Map<String, String> transactionMap = iTransactionCommonService.exportEnumTransaction(EApproveStatus.values(), EWithdrawStatus.values());
if (CollUtil.isNotEmpty(cuMemberWithdrawList)) { if (CollUtil.isNotEmpty(cuMemberWithdrawList)) {
for (CuMemberWithdrawVO memberWithdraw : cuMemberWithdrawList) { for (CuMemberWithdrawVO memberWithdraw : cuMemberWithdrawList) {
Integer pkAccount = memberWithdraw.getPkAccount(); Integer pkAccount = memberWithdraw.getPkAccount();
memberWithdraw.setPkAccountVal(baseService.getAccountTranslateFromDataBase(pkAccount)); memberWithdraw.setPkAccountVal(iCuMemberBaseService.getAccountTranslateFromDataBase(pkAccount));
memberWithdraw.setApproveStateVal(transactionMap.get(EnumsPrefixConstants.APPROVE_STATUS + memberWithdraw.getApproveState())); memberWithdraw.setApproveStateVal(transactionMap.get(EnumsPrefixConstants.APPROVE_STATUS + memberWithdraw.getApproveState()));
memberWithdraw.setStatusVal(transactionMap.get(EnumsPrefixConstants.ENU_WITHDRAW_STATUS + memberWithdraw.getStatus())); memberWithdraw.setStatusVal(transactionMap.get(EnumsPrefixConstants.ENU_WITHDRAW_STATUS + memberWithdraw.getStatus()));
} }
} }
ExcelUtil<CuMemberWithdrawVO> util = new ExcelUtil<>(CuMemberWithdrawVO.class, menuColumnServiceApi.queryMenuColumn("CashDetails", SecurityUtils.getUserId()).getData()); ExcelUtil<CuMemberWithdrawVO> util = new ExcelUtil<>(CuMemberWithdrawVO.class, iMenuColumnServiceApi.queryMenuColumn("CashDetails", SecurityUtils.getUserId()).getData());
util.exportExcel(response, cuMemberWithdrawList, TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_DETAILS_EXPORT)); util.exportExcel(response, cuMemberWithdrawList, TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_DETAILS_EXPORT));
} }
@ -162,7 +154,7 @@ public class CuMemberWithdrawController extends BaseController {
@GetMapping("/details") @GetMapping("/details")
public AjaxResult findWithdrawDetails(Long pkId) { public AjaxResult findWithdrawDetails(Long pkId) {
Assert.notNull(pkId, TransactionUtils.getContent(FinanceMsgConstants.SELECT_WITHDRAWAL_RECORD)); Assert.notNull(pkId, TransactionUtils.getContent(FinanceMsgConstants.SELECT_WITHDRAWAL_RECORD));
CuMemberWithdrawVO cuMemberRechargeDetailVO = cuMemberWithdrawService.queryCuMemberWithdrawDetail(pkId); CuMemberWithdrawVO cuMemberRechargeDetailVO = iCuMemberWithdrawService.queryCuMemberWithdrawDetail(pkId);
return AjaxResult.success(cuMemberRechargeDetailVO); return AjaxResult.success(cuMemberRechargeDetailVO);
} }
@ -178,7 +170,7 @@ public class CuMemberWithdrawController extends BaseController {
public AjaxResult withdrawPayment(@RequestBody CuMemberWithdrawVO memberWithdrawVO) { public AjaxResult withdrawPayment(@RequestBody CuMemberWithdrawVO memberWithdrawVO) {
List<Long> pkIds = memberWithdrawVO.getPkIds(); List<Long> pkIds = memberWithdrawVO.getPkIds();
Assert.notNull(pkIds, TransactionUtils.getContent(FinanceMsgConstants.SELECT_PAID_RECORD)); Assert.notNull(pkIds, TransactionUtils.getContent(FinanceMsgConstants.SELECT_PAID_RECORD));
List<CuMemberWithdraw> withdrawApproveStateByIds = cuMemberWithdrawService.getWithdrawApproveStateByIds(pkIds, EApproveStatus.FINISH.getValue()); List<CuMemberWithdraw> withdrawApproveStateByIds = iCuMemberWithdrawService.getWithdrawApproveStateByIds(pkIds, EApproveStatus.FINISH.getValue());
if (CollUtil.isNotEmpty(withdrawApproveStateByIds)) { if (CollUtil.isNotEmpty(withdrawApproveStateByIds)) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.DATA_UNAPPROVED_DATA)); return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.DATA_UNAPPROVED_DATA));
} }
@ -188,7 +180,7 @@ public class CuMemberWithdrawController extends BaseController {
memberWithdrawVO.setPayer(pkMember); memberWithdrawVO.setPayer(pkMember);
memberWithdrawVO.setPaymentTime(new Date()); memberWithdrawVO.setPaymentTime(new Date());
memberWithdrawVO.setPkModified(pkMember); memberWithdrawVO.setPkModified(pkMember);
return toAjax(cuMemberWithdrawService.withdrawPaymentByPkId(memberWithdrawVO)); return toAjax(iCuMemberWithdrawService.withdrawPaymentByPkId(memberWithdrawVO));
} }
@ -207,13 +199,13 @@ public class CuMemberWithdrawController extends BaseController {
memberWithdrawVO.setPayer(SecurityUtils.getUserId()); memberWithdrawVO.setPayer(SecurityUtils.getUserId());
memberWithdrawVO.setPayerRemarks(memberWithdrawVO.getPayerRemarks()); memberWithdrawVO.setPayerRemarks(memberWithdrawVO.getPayerRemarks());
memberWithdrawVO.setPaymentTime(new Date()); memberWithdrawVO.setPaymentTime(new Date());
return toAjax(cuMemberWithdrawService.withdrawPaymentPositiveByPkId(memberWithdrawVO)); return toAjax(iCuMemberWithdrawService.withdrawPaymentPositiveByPkId(memberWithdrawVO));
} }
@Log(module = EOperationModule.WITHDRAWAL_DETAIL, business = EOperationBusiness.WITHDRAWAL_DETAIL, method = EOperationMethod.REJECT) @Log(module = EOperationModule.WITHDRAWAL_DETAIL, business = EOperationBusiness.WITHDRAWAL_DETAIL, method = EOperationMethod.REJECT)
@PostMapping("/reject") @PostMapping("/reject")
public AjaxResult reject(@RequestBody CuMemberWithdrawRejectParam param) { public AjaxResult reject(@RequestBody CuMemberWithdrawRejectParam param) {
cuMemberWithdrawService.withdrawReject(param); iCuMemberWithdrawService.withdrawReject(param);
return AjaxResult.success(); return AjaxResult.success();
} }

View File

@ -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

View File

@ -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> {
/** /**
* 根据会员批量重置银行卡 * 根据会员批量重置银行卡
* *

View File

@ -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;
@ -20,56 +20,44 @@ import java.util.Date;
import java.util.List; import java.util.List;
/** /**
* <p>
* 会员信息-银行卡信息 服务实现类 * 会员信息-银行卡信息 服务实现类
* </p>
*
* @author hzs
* @since 2022-08-31
*/ */
@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);
@ -83,26 +71,16 @@ public class CuMemberBankServiceImpl extends ServiceImpl<CuMemberBankMapper, CuM
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
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

View File

@ -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;
@ -32,7 +31,6 @@ import com.hzs.member.account.service.*;
import com.hzs.member.account.vo.CuMemberPetitionVO; import com.hzs.member.account.vo.CuMemberPetitionVO;
import com.hzs.member.account.vo.CuMemberTradeVO; import com.hzs.member.account.vo.CuMemberTradeVO;
import com.hzs.member.account.vo.CuMemberWithdrawVO; import com.hzs.member.account.vo.CuMemberWithdrawVO;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IWithdrawalProcessServiceApi; import com.hzs.system.config.IWithdrawalProcessServiceApi;
import com.hzs.system.config.IWithdrawalTaxServiceApi; import com.hzs.system.config.IWithdrawalTaxServiceApi;
@ -58,29 +56,19 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMapper, CuMemberWithdraw> implements ICuMemberWithdrawService { public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMapper, CuMemberWithdraw> implements ICuMemberWithdrawService {
@Autowired
private ICuMemberTradeService iCuMemberTradeService;
@Autowired
private ICuMemberAccountService iCuMemberAccountService;
@Autowired
private ICuMemberBaseService iCuMemberBaseService;
@DubboReference @DubboReference
IWithdrawalTaxServiceApi withdrawalTaxServiceApi; IWithdrawalTaxServiceApi iWithdrawalTaxServiceApi;
@Autowired
ICuMemberTradeService cuMemberTradeService;
@Autowired
ICuMemberAccountService cuMemberAccountService;
@Autowired
ICuMemberBaseService cuMemberBaseService;
@Autowired
ICuMemberBankService cuMemberBankService;
@Autowired
ICuMemberService cuMemberService;
@DubboReference @DubboReference
IWithdrawalProcessServiceApi withdrawalProcessServiceApi; IWithdrawalProcessServiceApi iWithdrawalProcessServiceApi;
@DubboReference @DubboReference
IApprovalServiceApi approvalServiceApi; IApprovalServiceApi iApprovalServiceApi;
@Override @Override
@ -91,8 +79,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);
} }
@ -130,7 +118,6 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
throw new ServiceException("提现失败,请确认后重试"); throw new ServiceException("提现失败,请确认后重试");
} }
return row; return row;
} }
/** /**
@ -141,10 +128,10 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
*/ */
public Integer updateTradeAndBalancd(CuMemberWithdraw cuMemberWithdraw, EOperationMethod eMethodType) { public Integer updateTradeAndBalancd(CuMemberWithdraw cuMemberWithdraw, EOperationMethod eMethodType) {
CuMemberTrade cuMemberTrade = this.getCuMemberTrade(cuMemberWithdraw, eMethodType); CuMemberTrade cuMemberTrade = this.getCuMemberTrade(cuMemberWithdraw, eMethodType);
cuMemberTradeService.save(cuMemberTrade); iCuMemberTradeService.save(cuMemberTrade);
//更新余额表 //更新余额表
Integer pkAccount = cuMemberWithdraw.getPkAccount(); Integer pkAccount = cuMemberWithdraw.getPkAccount();
int accountType = cuMemberBaseService.getAccount(pkAccount).getFieldValue(); int accountType = iCuMemberBaseService.getAccount(pkAccount).getFieldValue();
//提现金额 //提现金额
BigDecimal cashAmount = cuMemberWithdraw.getCashAmount(); BigDecimal cashAmount = cuMemberWithdraw.getCashAmount();
BigDecimal amount = eMethodType.equals(EOperationMethod.INSERT) ? cashAmount.negate() : cashAmount; BigDecimal amount = eMethodType.equals(EOperationMethod.INSERT) ? cashAmount.negate() : cashAmount;
@ -157,7 +144,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
.pkCountry(cuMemberWithdraw.getPkCountry()) .pkCountry(cuMemberWithdraw.getPkCountry())
.transferType(ETransferType.TRANSFER_IN.getValue()) .transferType(ETransferType.TRANSFER_IN.getValue())
.build(); .build();
return cuMemberAccountService.updateMemberAccountByMemberCode(param); return iCuMemberAccountService.updateMemberAccountByMemberCode(param);
} }
/** /**
@ -179,9 +166,9 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
Integer tradeType = eMethodType.equals(EOperationMethod.INSERT) ? ETradeType.WITHDRAW.getValue() : ETradeType.WITHDRAWAL_REFUSED.getValue(); Integer tradeType = eMethodType.equals(EOperationMethod.INSERT) ? ETradeType.WITHDRAW.getValue() : ETradeType.WITHDRAWAL_REFUSED.getValue();
Integer pkAccount = cuMemberWithdraw.getPkAccount(); Integer pkAccount = cuMemberWithdraw.getPkAccount();
//账户值 //账户值
Integer accountValue = cuMemberBaseService.getAccountValueById(pkAccount); Integer accountValue = iCuMemberBaseService.getAccountValueById(pkAccount);
//查询余额 //查询余额
BigDecimal balance = cuMemberAccountService.selectBalanceByMemberCode(pkMember, accountValue); BigDecimal balance = iCuMemberAccountService.selectBalanceByMemberCode(pkMember, accountValue);
CuMemberTrade memberTrade = CuMemberTrade.builder().pkMember(pkMember) CuMemberTrade memberTrade = CuMemberTrade.builder().pkMember(pkMember)
.tradeCode(tradeCode) .tradeCode(tradeCode)
.pkAccount(pkAccount) .pkAccount(pkAccount)
@ -247,18 +234,18 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
Integer pkRate = memberWithdraw.getPkRate(); Integer pkRate = memberWithdraw.getPkRate();
if (null != pkRate) { if (null != pkRate) {
//汇率 //汇率
exchangeRate = cuMemberBaseService.getCurrencyById(memberWithdraw.getPkRate()).getInExchangeRate(); exchangeRate = iCuMemberBaseService.getCurrencyById(memberWithdraw.getPkRate()).getInExchangeRate();
} else { } else {
//取最新的汇率 //取最新的汇率
CurrencyDTO currencyDTO = cuMemberBaseService.getCurrency(cuMemberWithdrawVO.getPkCountry()); CurrencyDTO currencyDTO = iCuMemberBaseService.getCurrency(cuMemberWithdrawVO.getPkCountry());
exchangeRate = currencyDTO.getInExchangeRate(); exchangeRate = currencyDTO.getInExchangeRate();
} }
//查询提现账户 //查询提现账户
Integer pkAccount = memberWithdraw.getPkAccount(); Integer pkAccount = memberWithdraw.getPkAccount();
Integer accountsType = cuMemberBaseService.getAccountValueById(pkAccount); Integer accountsType = iCuMemberBaseService.getAccountValueById(pkAccount);
//查询账户余额 //查询账户余额
CuMemberAccount cuMemberAccount = cuMemberAccountService.queryCuMemberAccountByPkMember(memberWithdraw.getPkMember()); CuMemberAccount cuMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(memberWithdraw.getPkMember());
BigDecimal availableBalance; BigDecimal availableBalance;
if (accountsType.equals(EAccount.BONUS.getValue())) { if (accountsType.equals(EAccount.BONUS.getValue())) {
BigDecimal balance = ReflectUtils.invokeGetter(cuMemberAccount, MemberFieldConstants.WITHDRAW_ACCOUNT + accountsType); BigDecimal balance = ReflectUtils.invokeGetter(cuMemberAccount, MemberFieldConstants.WITHDRAW_ACCOUNT + accountsType);
@ -290,7 +277,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
cuMemberWithdrawVO.setSettleServiceCharge(settleServiceCharge); cuMemberWithdrawVO.setSettleServiceCharge(settleServiceCharge);
cuMemberWithdrawVO.setSettleCashAmount(settleCashAmount); cuMemberWithdrawVO.setSettleCashAmount(settleCashAmount);
cuMemberWithdrawVO.setSettleIssuedAmount(settleIssuedAmount); cuMemberWithdrawVO.setSettleIssuedAmount(settleIssuedAmount);
cuMemberWithdrawVO.setPkAccount(cuMemberBaseService.translateAccountValue(pkAccount)); cuMemberWithdrawVO.setPkAccount(iCuMemberBaseService.translateAccountValue(pkAccount));
} }
@ -327,27 +314,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;
}
/** /**
* 获取账户余额 * 获取账户余额
* *
@ -372,7 +338,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
@Override @Override
public BigDecimal computeIncomeTaxValue(Long pkMember, BigDecimal cashAmount, Integer pkCountry, BigDecimal minAmount) { public BigDecimal computeIncomeTaxValue(Long pkMember, BigDecimal cashAmount, Integer pkCountry, BigDecimal minAmount) {
//获取个税配置 //获取个税配置
R<BdWithdrawalTaxExt> bdWithdrawalTaxExtR = withdrawalTaxServiceApi.queryWithdrawalTax(pkCountry); R<BdWithdrawalTaxExt> bdWithdrawalTaxExtR = iWithdrawalTaxServiceApi.queryWithdrawalTax(pkCountry);
BdWithdrawalTaxExt withdrawalTax = bdWithdrawalTaxExtR.getData(); BdWithdrawalTaxExt withdrawalTax = bdWithdrawalTaxExtR.getData();
if (null == withdrawalTax) { if (null == withdrawalTax) {
return BigDecimal.ZERO; return BigDecimal.ZERO;
@ -405,7 +371,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
@Override @Override
public BigDecimal computeServiceCharge(Integer pkCountry, BigDecimal cashAmount) { public BigDecimal computeServiceCharge(Integer pkCountry, BigDecimal cashAmount) {
BdWithdrawalProcess withdrawalProcess = withdrawalProcessServiceApi.queryBdWithdrawalProcess(pkCountry).getData(); BdWithdrawalProcess withdrawalProcess = iWithdrawalProcessServiceApi.queryBdWithdrawalProcess(pkCountry).getData();
//手续费类型 //手续费类型
Integer serviceType = withdrawalProcess.getServiceType(); Integer serviceType = withdrawalProcess.getServiceType();
BigDecimal serviceRatio = withdrawalProcess.getServiceRatio(); BigDecimal serviceRatio = withdrawalProcess.getServiceRatio();
@ -418,7 +384,6 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
//手续费金额 = 本次提现金额 * 手续费比例 //手续费金额 = 本次提现金额 * 手续费比例
return cashAmount.multiply(serviceChargeeRatio).setScale(4, BigDecimal.ROUND_HALF_UP); return cashAmount.multiply(serviceChargeeRatio).setScale(4, BigDecimal.ROUND_HALF_UP);
} }
} }
@Override @Override
@ -432,13 +397,11 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
return roundIngAmount; return roundIngAmount;
} }
@Override @Override
public List<CuMemberWithdraw> getWithdrawApproveStateByIds(List<Long> pkIds, Integer approveState) { public List<CuMemberWithdraw> getWithdrawApproveStateByIds(List<Long> pkIds, Integer approveState) {
return baseMapper.getWithdrawApproveStateByIds(pkIds, approveState); return baseMapper.getWithdrawApproveStateByIds(pkIds, approveState);
} }
@Override @Override
public CuMemberPetitionVO showMemberWithdrawPetition(List<Long> pkIds, Integer approveState) { public CuMemberPetitionVO showMemberWithdrawPetition(List<Long> pkIds, Integer approveState) {
CuMemberPetitionVO memberPetitionVo = new CuMemberPetitionVO(); CuMemberPetitionVO memberPetitionVo = new CuMemberPetitionVO();
@ -451,7 +414,6 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
return memberPetitionVo; return memberPetitionVo;
} }
@Override @Override
public List<CuMemberWithdrawVO> checkWithdrawPetitionByState(List<Long> pkIds, Integer approveState) { public List<CuMemberWithdrawVO> checkWithdrawPetitionByState(List<Long> pkIds, Integer approveState) {
return BeanUtil.copyToList(baseMapper.showMemberWithdrawPetition(pkIds, approveState), CuMemberWithdrawVO.class); return BeanUtil.copyToList(baseMapper.showMemberWithdrawPetition(pkIds, approveState), CuMemberWithdrawVO.class);
@ -475,7 +437,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
List<String> withdrawCodeList = cuMemberWithdrawExts.stream().map(CuMemberWithdrawExt::getWithdrawCode).collect(Collectors.toList()); List<String> withdrawCodeList = cuMemberWithdrawExts.stream().map(CuMemberWithdrawExt::getWithdrawCode).collect(Collectors.toList());
CuMemberTradeVO memberTradeVO = CuMemberTradeVO.builder().sourceCode(businessNo) CuMemberTradeVO memberTradeVO = CuMemberTradeVO.builder().sourceCode(businessNo)
.tradeCodes(withdrawCodeList).pkModified(loginUser.getUserId()).build(); .tradeCodes(withdrawCodeList).pkModified(loginUser.getUserId()).build();
cuMemberTradeService.updateSourceCodeByTradeCode(memberTradeVO); iCuMemberTradeService.updateSourceCodeByTradeCode(memberTradeVO);
List<CuMemberWithdrawVO> memberWithdrawList = memberPetitionVo.getMemberWithdrawList(); List<CuMemberWithdrawVO> memberWithdrawList = memberPetitionVo.getMemberWithdrawList();
//提交提现用户 //提交提现用户
@ -488,7 +450,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
.remark(memberPetitionVo.getDescription()) .remark(memberPetitionVo.getDescription())
.pkMemberList(pkMembers).build(); .pkMemberList(pkMembers).build();
//调用审批接口 //调用审批接口
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, loginUser); R<String> submit = iApprovalServiceApi.submit(approvalSubmitDTO, loginUser);
if (!submit.isSuccess()) { if (!submit.isSuccess()) {
throw new RuntimeException(submit.getMsg()); throw new RuntimeException(submit.getMsg());
} }
@ -524,7 +486,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
.freeSignFlag(false).build(); .freeSignFlag(false).build();
} }
businessLogDTOList.add(businessLog); businessLogDTOList.add(businessLog);
cuMemberBaseService.operationLogMQ(businessLogDTOList); iCuMemberBaseService.operationLogMQ(businessLogDTOList);
} }
} }
@ -535,7 +497,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
List<CuMemberWithdrawExt> cuMemberWithdrawList = baseMapper.selectMemberWithdrawListByPkMember(pkMember, pkCountry); List<CuMemberWithdrawExt> cuMemberWithdrawList = baseMapper.selectMemberWithdrawListByPkMember(pkMember, pkCountry);
if (CollUtil.isNotEmpty(cuMemberWithdrawList)) { if (CollUtil.isNotEmpty(cuMemberWithdrawList)) {
//查询币种值 //查询币种值
List<BdAccount> allAccounts = cuMemberBaseService.getAccountByCountryId(pkCountry); List<BdAccount> allAccounts = iCuMemberBaseService.getAccountByCountryId(pkCountry);
Map<Integer, BdAccount> map = allAccounts.stream().collect(Collectors.toMap(BdAccount::getPkId, o -> o)); Map<Integer, BdAccount> map = allAccounts.stream().collect(Collectors.toMap(BdAccount::getPkId, o -> o));
for (CuMemberWithdrawExt ext : cuMemberWithdrawList) { for (CuMemberWithdrawExt ext : cuMemberWithdrawList) {
cuMemberWithdrawVO = BeanUtil.copyProperties(ext, CuMemberWithdrawVO.class); cuMemberWithdrawVO = BeanUtil.copyProperties(ext, CuMemberWithdrawVO.class);
@ -557,18 +519,18 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
BigDecimal backAmount = cuMemberWithdraw.getCashAmount(); BigDecimal backAmount = cuMemberWithdraw.getCashAmount();
if (backAmount.compareTo(BigDecimal.ZERO) > 0) { if (backAmount.compareTo(BigDecimal.ZERO) > 0) {
//插入交易明细表 //插入交易明细表
cuMemberTradeService.save(getCuMemberTradeInfo(cuMemberWithdraw)); iCuMemberTradeService.save(getCuMemberTradeInfo(cuMemberWithdraw));
//更新余额表 //更新余额表
CuMemberAccount cuMemberAccount = this.getCuMemberAccount(cuMemberWithdraw, backAmount); CuMemberAccount cuMemberAccount = this.getCuMemberAccount(cuMemberWithdraw, backAmount);
cuMemberAccount.setPkCountry(cuMemberWithdraw.getPkCountry()); cuMemberAccount.setPkCountry(cuMemberWithdraw.getPkCountry());
cuMemberAccountService.updateMemberAccount(cuMemberAccount, pkModified); iCuMemberAccountService.updateMemberAccount(cuMemberAccount, pkModified);
} }
return baseMapper.updateWithdrawStatusByPkId(pkId, pkModified); return baseMapper.updateWithdrawStatusByPkId(pkId, pkModified);
} }
private CuMemberAccount getCuMemberAccount(CuMemberWithdraw cuMemberWithdraw, BigDecimal backAmount) { private CuMemberAccount getCuMemberAccount(CuMemberWithdraw cuMemberWithdraw, BigDecimal backAmount) {
Integer pkAccount = cuMemberWithdraw.getPkAccount(); Integer pkAccount = cuMemberWithdraw.getPkAccount();
BdAccount account = cuMemberBaseService.getAccount(pkAccount); BdAccount account = iCuMemberBaseService.getAccount(pkAccount);
if (account.getFieldValue().equals(EAccount.BONUS.getValue())) { if (account.getFieldValue().equals(EAccount.BONUS.getValue())) {
return CuMemberAccount.builder() return CuMemberAccount.builder()
.account4(backAmount) .account4(backAmount)
@ -592,11 +554,11 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
private CuMemberTrade getCuMemberTradeInfo(CuMemberWithdraw cuMemberWithdraw) { private CuMemberTrade getCuMemberTradeInfo(CuMemberWithdraw cuMemberWithdraw) {
Long pkMember = cuMemberWithdraw.getPkMember(); Long pkMember = cuMemberWithdraw.getPkMember();
Integer pkAccount = cuMemberWithdraw.getPkAccount(); Integer pkAccount = cuMemberWithdraw.getPkAccount();
BdAccount account = cuMemberBaseService.getAccount(pkAccount); BdAccount account = iCuMemberBaseService.getAccount(pkAccount);
//交易金额 //交易金额
BigDecimal tradeAmount = cuMemberWithdraw.getCashAmount(); BigDecimal tradeAmount = cuMemberWithdraw.getCashAmount();
//查询余额 //查询余额
BigDecimal balance = cuMemberAccountService.selectBalanceByMemberCode(pkMember, account.getFieldValue()); BigDecimal balance = iCuMemberAccountService.selectBalanceByMemberCode(pkMember, account.getFieldValue());
CuMemberTrade memberTrade = CuMemberTrade.builder().pkMember(pkMember) CuMemberTrade memberTrade = CuMemberTrade.builder().pkMember(pkMember)
.tradeCode(CommonUtil.createSerialNumber(EOrderPrefix.WITHDRAWAL_CODE.getValue())) .tradeCode(CommonUtil.createSerialNumber(EOrderPrefix.WITHDRAWAL_CODE.getValue()))
.pkAccount(pkAccount) .pkAccount(pkAccount)
@ -647,7 +609,7 @@ public class CuMemberWithdrawServiceImpl extends ServiceImpl<CuMemberWithdrawMap
.tradeCode(cuMemberWithdraw.getWithdrawCode()).pkCountry(pkCountry) .tradeCode(cuMemberWithdraw.getWithdrawCode()).pkCountry(pkCountry)
.tradeType(EApprovalBusiness.WITHDRAWAL.getValue()) .tradeType(EApprovalBusiness.WITHDRAWAL.getValue())
.pkCreator(SecurityUtils.getUserId()).build(); .pkCreator(SecurityUtils.getUserId()).build();
cuMemberTradeService.businessCommissionReject(businessCommissionDTO); iCuMemberTradeService.businessCommissionReject(businessCommissionDTO);
} }
} }
} }

View File

@ -1,7 +1,5 @@
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;
@ -18,7 +16,6 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
public class CuMemberBankVO implements Serializable { public class CuMemberBankVO implements Serializable {
/** /**
* 银行主键 * 银行主键
*/ */

View File

@ -13,15 +13,8 @@ import java.util.Date;
import java.util.List; import java.util.List;
/** /**
* <p>
* 会员提现表 * 会员提现表
* </p>
*
* @author hzs
* @since 2022-09-06
*/ */
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@Builder @Builder
@ -121,7 +114,6 @@ public class CuMemberWithdrawVO extends CuMemberBaseVO {
/** /**
* 汇率 * 汇率
*/ */
@Excel(name = "汇率", scale = 4)
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.0000")
private BigDecimal exchangeRate; private BigDecimal exchangeRate;
@ -160,13 +152,11 @@ public class CuMemberWithdrawVO extends CuMemberBaseVO {
/** /**
* 开户支行省 * 开户支行省
*/ */
@Excel(name = "开户支行省")
private String accountProvince; private String accountProvince;
/** /**
* 开户支行市 * 开户支行市
*/ */
@Excel(name = "开户支行市")
private String accountCity; private String accountCity;
/** /**
@ -185,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;
/** /**
@ -317,7 +305,7 @@ public class CuMemberWithdrawVO extends CuMemberBaseVO {
/** /**
* 查询状态 * 查询状态
*/ */
private Integer queryStatus; private Integer queryStatus;
/** /**
* 会员编号集合 * 会员编号集合

View File

@ -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,22 +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>

View File

@ -34,19 +34,6 @@
<result column="BATCH" property="batch"/> <result column="BATCH" property="batch"/>
</resultMap> </resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DEL_FLAG
,
PK_COUNTRY,
PK_CREATOR,
CREATION_TIME,
PK_MODIFIED,
MODIFIED_TIME,
PK_ID, PK_MEMBER, WITHDRAW_CODE, PK_ACCOUNT, PK_BANK, PK_RATE, CASH_AMOUNT, SERVICE_CHARGE, INCOME_TAX,
ISSUED_AMOUNT,APPROVE_STATE, PAYMENT_TIME, PAYER, REMARKS, APPROVER, APPROVE_TIME, PK_ROLE, ROLE_NAME,STATUS,PAYER_REMARKS,APPROVE_REMARKS
</sql>
<sql id="select_base"> <sql id="select_base">
SELECT r.*, SELECT r.*,
m.member_code memberCode, m.member_code memberCode,

View File

@ -4,21 +4,15 @@ import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.system.sys.dto.LoginUser; import com.hzs.system.sys.dto.LoginUser;
/** /**
* @Description: 撤单的service * 撤单的service
* @Author: sui q
* @Time: 2022/10/27 10:49
* @Classname: ISaOrderRevokeService
* @PackageName: com.hzs.sale.order.service
*/ */
public interface ISaOrderRevokeService { public interface ISaOrderRevokeService {
/** /**
* 撤销订单 * 撤销订单
* @param saOrder 需要销售的订单信息 *
* @param saOrder 需要销售的订单信息
* @param loginUser 登录用户 * @param loginUser 登录用户
* @return: void */
* @Author: sui q
* @Date: 2022/10/27 10:51
*/
void revokeSaOrder(SaOrder saOrder, LoginUser loginUser); void revokeSaOrder(SaOrder saOrder, LoginUser loginUser);
} }

View File

@ -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);
} }
} }

View File

@ -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;

View File

@ -2305,15 +2305,6 @@ public class EnumsController extends BaseController {
return AjaxResult.success(enumEntityList); return AjaxResult.success(enumEntityList);
} }
@GetMapping("/get-grant-way")
public AjaxResult getGrantWay() {
List<EnumEntity> enumEntityList = new ArrayList<>();
for (EGrantWay value : EGrantWay.values()) {
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.GRANT_WAY_TYPE));
}
return AjaxResult.success(enumEntityList);
}
/** /**
* 数据类型(安置) * 数据类型(安置)
@ -2410,7 +2401,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);
} }

View File

@ -576,11 +576,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()));

View File

@ -2,27 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.system.config.mapper.BdWithdrawalAutoMapper"> <mapper namespace="com.hzs.system.config.mapper.BdWithdrawalAutoMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdWithdrawalAuto">
<id column="PK_ID" property="pkId" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="CREATION_TIME" property="creationTime" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="PK_WITHDRAWAL" property="pkWithdrawal" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DEL_FLAG,
PK_COUNTRY,
PK_CREATOR,
CREATION_TIME,
PK_MODIFIED,
MODIFIED_TIME,
PK_ID, PK_WITHDRAWAL, LOWER_BOUND, UPPER_BOUND
</sql>
</mapper> </mapper>

View File

@ -816,11 +816,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_";
/** /**
* 数据类型(业绩查询) * 数据类型(业绩查询)
*/ */
@ -831,11 +826,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_";
/** /**
* 点位状态 * 点位状态
*/ */

View File

@ -125,11 +125,6 @@ public class FinanceMsgConstants {
*/ */
public static final String RECHAGER_IMPOR_CODE_ERROR = "编号导入有误,请核对!"; public static final String RECHAGER_IMPOR_CODE_ERROR = "编号导入有误,请核对!";
/**
* 导入的编号未支付请核对 -- 导入的编号未支付请核对
*/
public static final String RECHAGER_NO_PAY = "导入的编号未支付,请核对!";
/** /**
* 钱包明细导出 -- 钱包明细导出 * 钱包明细导出 -- 钱包明细导出
*/ */
@ -198,56 +193,16 @@ public class FinanceMsgConstants {
*/ */
public static final String CONFIGURE_WITHDRAWAL_INFO = "请配置提现信息"; public static final String CONFIGURE_WITHDRAWAL_INFO = "请配置提现信息";
/**
* 请绑定银行卡 -- 请绑定银行卡
*/
public static final String BIND_BANK_CARD = "请绑定银行卡";
/**
* 暂时不请允许提现请先升级 -- 暂时不请允许提现请先升级
*/
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 = "提现金额必须小于最高提现金额";
/** /**
* 余额不足 -- 余额不足 * 余额不足 -- 余额不足
*/ */
@ -263,11 +218,6 @@ public class FinanceMsgConstants {
*/ */
public static final String TRANSFER_OUT_ACCOUNT_NOT_EMPTY = "请选择要转出的账户"; public static final String TRANSFER_OUT_ACCOUNT_NOT_EMPTY = "请选择要转出的账户";
/**
* 转账金额有误 -- 转账金额有误
*/
public static final String INCORRECT_TRANSFER_AMOUNT = "转账金额有误";
/** /**
* 转账金额不能低于0且小数位数最多只能有2位 * 转账金额不能低于0且小数位数最多只能有2位
@ -293,11 +243,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 = "请先实名认证";
/** /**
* 实名认证的真实姓名与营业执照的法人姓名是不一致 -- 法人姓名与实名认证的真实姓名不一致 * 实名认证的真实姓名与营业执照的法人姓名是不一致 -- 法人姓名与实名认证的真实姓名不一致
*/ */
@ -331,26 +276,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 = "开户支行不能为空!";
/** /**
* 开户支行不能为空 -- 真实姓名不能为空 * 开户支行不能为空 -- 真实姓名不能为空
*/ */
@ -444,16 +374,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的整数倍
*/
public static final String WITHDRAW_AMOUNT_MULTIPLE = "提现金额必须为100的整数倍";
/** /**
* 身份证的图片地址不能为空 * 身份证的图片地址不能为空
*/ */

View File

@ -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

View File

@ -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;
} }

View File

@ -1,49 +0,0 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Description:
* @Author: yuhui
* @Time: 2023/5/15 10:57
* @Classname: EGrantWay
* @PackageName: com.hzs.common.core.enums
*/
@AllArgsConstructor
@Getter
public enum EGrantWay {
/**
* 商品展示
*/
TYPE_0(0, "实物", 0, EnumsPrefixConstants.GRANT_WAY_TYPE + "0"),
TYPE_1(1, "消费账户", 0, EnumsPrefixConstants.GRANT_WAY_TYPE + "1"),
TYPE_2(2, "现金账户", 0, EnumsPrefixConstants.GRANT_WAY_TYPE + "2"),
TYPE_6(6, "积分账户", 0, EnumsPrefixConstants.GRANT_WAY_TYPE + "6"),
TYPE_8(8, "复购券", 0, EnumsPrefixConstants.GRANT_WAY_TYPE + "8"),
TYPE_11(11, "直播代金券", 0, EnumsPrefixConstants.GRANT_WAY_TYPE + "11");
/**
* 实际值
*/
private final int value;
/**
* 显示标签
*/
private final String label;
/**
* 是否启用0=,1= -- 来源EYesNo
*/
private final int enable;
/**
* 国际化翻译key值
*/
private final String key;
}

View File

@ -11,12 +11,7 @@ import lombok.experimental.Accessors;
import java.util.Date; import java.util.Date;
/** /**
* <p>
* 会员信息-银行卡信息 * 会员信息-银行卡信息
* </p>
*
* @author hzs
* @since 2022-08-31
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)

View File

@ -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";
}

View File

@ -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);
} }
} }

View File

@ -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);
} }

View File

@ -1,16 +1,14 @@
package com.hzs.third.bankcard.service.impl; package com.hzs.third.bankcard.service.impl;
import cn.hutool.http.Header; import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.google.gson.JsonObject; import cn.hutool.json.JSONObject;
import com.google.gson.JsonParser; import cn.hutool.json.JSONUtil;
import com.hzs.common.core.constant.HttpStatus; import com.hzs.common.core.constant.HttpStatus;
import com.hzs.common.core.domain.R; 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.dto.BankCardParam;
import com.hzs.third.bankcard.service.BankCardService; import com.hzs.third.bankcard.service.IBankCardService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -20,16 +18,10 @@ import java.util.Map;
/** /**
* 银行卡验证接口 * 银行卡验证接口
*
* @Description:
* @Author: ljc
* @Time: 2022/11/24 18:14
* @Classname: BankCardServiceImpl
* @Package_name: com.hz.bankCard.service.impl
*/ */
@Slf4j @Slf4j
@Service @Service
public class BankCardServiceImpl implements BankCardService { public class BankCardServiceImpl implements IBankCardService {
@Value("${bankCard.url}") @Value("${bankCard.url}")
private String url; private String url;
@ -39,65 +31,53 @@ public class BankCardServiceImpl implements BankCardService {
private String appCode; private String appCode;
@Override @Override
public R verifyBankCard(BankCardParam bankCardParam) { public R<?> verifyBankCard(BankCardParam bankCardParam) {
String authorization = "APPCODE " + appCode; Map<String, Object> param = new HashMap<>();
HttpResponse response = HttpRequest.post(url) param.put("bankcard", bankCardParam.getBankCard());
.header(Header.AUTHORIZATION, authorization) param.put("idcard", bankCardParam.getIdCard());
.header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=UTF-8") param.put("name", bankCardParam.getName());
.form(getInParam(bankCardParam)) param.put("mobile", bankCardParam.getMobile());
.timeout(20000)
.execute();
return parseResult(response, bankCardParam);
}
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);
}
/** /**
* 解析返回的结果集 * 解析返回的结果集
* <p>
* 1200 银行卡验证一致 收费
* 1201 银行卡验证不一致 收费
* 1203 银行卡状态错误 收费
* 1206 验证失败 免费
*
* @param response 响应信息
* @return bankCardVO
*/ */
private R parseResult(HttpResponse response, BankCardParam bankCardParam) { private R<?> parseResult(HttpResponse response) {
String result = response.body(); String result = response.body();
log.info("调用接口返回信息: " + result); log.info("调用银行卡认证接口返回信息: " + result);
if (response.getStatus() == HttpStatus.SUCCESS) {
JsonObject resultJson = JsonParser.parseString(result).getAsJsonObject(); if (HttpStatus.SUCCESS == response.getStatus()) {
//状态码 JSONObject resultObj = JSONUtil.parseObj(result);
String code = resultJson.get("code").getAsString(); if ("200".equals(resultObj.getStr("code"))) {
//返回信息 // 返回成功
String message = resultJson.get("message").getAsString(); JSONObject dataObj = resultObj.getJSONObject("data");
if (code.equals(HttpConstant.BANK_CARD_SAME)) { int resultInt = dataObj.getInt("result");
return R.ok(); if (resultInt == 0) {
// 一致
return R.ok();
} else if (resultInt == 1) {
// 不一致
return R.fail("银行卡预留信息不一致,请确认后重试");
} else {
// 查不到卡信息
return R.fail("银行卡信息不存在,请确认银行卡是否有效");
}
} else { } else {
log.info("银行卡四要素校验接口正常返回状态值: {},信息为: {}", code, message); // 返回失败
return R.fail(message); return R.fail(resultObj.getStr("msg"));
} }
} else { } else {
String message = "认证失败"; log.error("调用银行卡认证接口失败");
log.info("银行卡四要素校验接口异常返回状态值: {},信息为: {}", response.getStatus(), message); return R.fail("银行卡认证失败,请重试");
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;
}
} }

View File

@ -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
* @Version1.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());
} }
} }