From 53ebaf2c56879a87f46fb936da8304be2cddbb30 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 24 Jun 2024 15:39:05 +0800 Subject: [PATCH] 充值提现 --- src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java | 7 -- src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java | 1 src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java | 16 +++++ src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java | 34 +++++++---- src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 29 +++++---- src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 33 ++++++++-- src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 3 + src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 7 ++ src/main/java/cc/mrbird/febs/mall/dto/ApiChargeBalanceDto.java | 7 -- src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java | 3 + src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 3 + src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java | 2 13 files changed, 101 insertions(+), 46 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index ae59db1..d358127 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -5,9 +5,12 @@ @Getter public enum DataDictionaryEnum { + //充值金额 USDT_PRICE("USDT_PRICE","USDT_PRICE"), //充值金额 + WITHDRAW_AMOUNT_FEE("WITHDRAW_AMOUNT_FEE","WITHDRAW_AMOUNT_FEE"), + //充值金额 WITHDRAW_AMOUNT("WITHDRAW_AMOUNT","WITHDRAW_AMOUNT"), //充值金额 CHARGE_AMOUNT("CHARGE_AMOUNT","CHARGE_AMOUNT"), diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java index 683dacd..a88d5ae 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java @@ -9,6 +9,8 @@ **/ @Getter public enum GameFlowTypeEnum { + PLAYER_WITHDRAW_NO(6,"提现失败"), + PLAYER_WITHDRAW(5,"提现至:{},手续费:{}"), PLAYER_CHARGE(4,"充值"), OWNER_PERK(3,"开奖结果:{},{}"), PLAYER_PERK(2,"开奖结果:{},{},您的选择:{}"), diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java index 7b8609b..ffbeba9 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java @@ -4,9 +4,7 @@ import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; -import cc.mrbird.febs.common.enumerates.FlowTypeNewEnum; -import cc.mrbird.febs.common.enumerates.MoneyFlowTypeNewEnum; -import cc.mrbird.febs.common.enumerates.ProductEnum; +import cc.mrbird.febs.common.enumerates.*; import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; @@ -122,10 +120,17 @@ } mallMemberWithdraw.setStatus(3); mallMemberWithdrawMapper.updateById(mallMemberWithdraw); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberWithdraw.getMemberId()); + mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(mallMemberWithdraw.getAmount().abs())); + mallMemberWalletMapper.updateBalanceWithVersion(mallMemberWallet); - MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallMemberWithdraw.getMemberId()); - mallMemberAmount.setFcmCntAva(mallMemberAmount.getFcmCntAva().subtract(mallMemberWithdraw.getAmount())); - mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmount); + mallMoneyFlowService.addMoneyFlow( + mallMemberWithdraw.getMemberId(), + mallMemberWithdraw.getAmount().abs(), + GameFlowTypeEnum.PLAYER_WITHDRAW_NO.getValue(), + MallUtils.getOrderNum("TX"), + GameFlowTypeEnum.PLAYER_WITHDRAW_NO.getDescrition()); + } return new FebsResponse().success(); } @@ -145,15 +150,15 @@ mallMemberWithdraw.setStatus(2); mallMemberWithdrawMapper.updateById(mallMemberWithdraw); - String orderNo = MallUtils.getOrderNum("BF"); mallMoneyFlowService.addMoneyFlow( mallMemberWithdraw.getMemberId(), mallMemberWithdraw.getAmount(), - MoneyFlowTypeNewEnum.FCM_INSIDE_OUT.getValue(), - orderNo, - mallMemberWithdraw.getId(), - FlowTypeNewEnum.FCM_COIN.getValue(), - MoneyFlowTypeNewEnum.FCM_INSIDE_OUT.getDescrition()); + GameFlowTypeEnum.PLAYER_WITHDRAW.getValue(), + MallUtils.getOrderNum("TX"), + StrUtil.format( + GameFlowTypeEnum.PLAYER_WITHDRAW.getDescrition(), + mallMemberWithdraw.getRemark(), + mallMemberWithdraw.getAmountFee())); } return new FebsResponse().success(); } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java index 1a6c9f6..41de6d5 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java @@ -45,6 +45,13 @@ return memberService.findMemberInfo(); } + + @ApiOperation(value = "GUESS绑定充值提现地址", notes = "GUESS绑定充值提现地址") + @PostMapping(value = "/bindAddress") + public FebsResponse bindAddress(@RequestBody @Valid ApiBindAddressDto apiBindAddressDto) { + return memberService.bindAddress(apiBindAddressDto); + } + @ApiOperation(value = "GUESS充值", notes = "GUESS充值") @PostMapping(value = "/chargeBalance") public FebsResponse chargeBalance(@RequestBody @Valid ApiChargeBalanceDto apiChargeBalanceDto) { diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java new file mode 100644 index 0000000..e2c0c87 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java @@ -0,0 +1,16 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiAddCommentDtos", description = "参数接收类") +public class ApiBindAddressDto { + + @NotNull(message = "地址不能为空") + @ApiModelProperty(value = "地址", example = "1") + private String address; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiChargeBalanceDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiChargeBalanceDto.java index 787eee5..141e8e1 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/ApiChargeBalanceDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiChargeBalanceDto.java @@ -15,11 +15,4 @@ @ApiModelProperty(value = "金额", example = "1") private BigDecimal amount; - @NotNull(message = "地址不能为空") - @ApiModelProperty(value = "地址", example = "1") - private String address; - - @NotNull(message = "交易密码不能为空") - @ApiModelProperty(value = "交易密码", example = "1") - private String tradePassword; } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java index e0d6c8c..98b3c54 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java @@ -19,11 +19,4 @@ @ApiModelProperty(value = "金额") private BigDecimal amount; - @NotBlank(message = "参数不能为空") - @ApiModelProperty(value = "交易密码") - private String tradePwd; - - @NotBlank(message = "地址不能为空") - @ApiModelProperty(value = "地址") - private String address; } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java index 99c31b3..5a6ff90 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java @@ -98,4 +98,6 @@ FebsResponse moneyFlowInside(MoneyFlowDto moneyFlowDto); FebsResponse chargeBalance(ApiChargeBalanceDto apiChargeBalanceDto); + + FebsResponse bindAddress(ApiBindAddressDto apiBindAddressDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index f4abe29..2e94d45 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -935,6 +935,10 @@ public FebsResponse chargeBalance(ApiChargeBalanceDto apiChargeBalanceDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = this.baseMapper.selectById(memberId); + if(ObjectUtil.isEmpty(mallMember.getBindPhone())){ + throw new FebsException("请绑定充值提取地址"); + } + String address = mallMember.getBindPhone(); BigDecimal amount = apiChargeBalanceDto.getAmount(); DataDictionaryCustom chargeAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.CHARGE_AMOUNT.getType(), @@ -945,21 +949,34 @@ throw new FebsException("充值金额需要大于"+chargeAmount); } - if (StrUtil.isBlank(mallMember.getTradePassword())) { - throw new FebsException("请设置交易密码"); - } - - if (!mallMember.getTradePassword().equals(SecureUtil.md5(apiChargeBalanceDto.getTradePassword()))) { - throw new FebsException("交易密码错误"); - } MallMemberCharge mallMemberCharge = new MallMemberCharge(); mallMemberCharge.setMemberId(memberId); mallMemberCharge.setAmount(amount); - mallMemberCharge.setAddress(apiChargeBalanceDto.getAddress()); + mallMemberCharge.setAddress(address); mallMemberCharge.setState(1); mallMemberChargeMapper.insert(mallMemberCharge); + return new FebsResponse().success().message("操作成功"); + } + @Override + public FebsResponse bindAddress(ApiBindAddressDto apiBindAddressDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + + MallMember mallMember = this.baseMapper.selectById(memberId); + if(ObjectUtil.isNotEmpty(mallMember.getBindPhone())){ + throw new FebsException("账号已绑定,请勿重复提交"); + } + + String address = apiBindAddressDto.getAddress().toLowerCase(); + QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("bind_phone",address); + List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMembers)){ + throw new FebsException("请使用未绑定的地址"); + } + mallMember.setBindPhone(address); + this.baseMapper.updateById(mallMember); return new FebsResponse().success().message("操作成功"); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java index 8f347cc..6218867 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java @@ -197,6 +197,7 @@ ApiStartGameVo apiStartGameVo = new ApiStartGameVo(); apiStartGameVo.setRoomType(gameRoom.getRoomType()); apiStartGameVo.setRoomId(gameRoom.getId()); + apiStartGameVo.setGameId(gameGame.getId()); apiStartGameVo.setPassword(gameRoom.getPassword()); apiStartGameVo.setState(gameRoom.getState()); apiStartGameVo.setCreatedTime(gameGame.getCreatedTime()); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java index 1f51e8a..c0027a3 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java @@ -183,11 +183,8 @@ public void withdrawalBalance(WithdrawalBalanceDto withdrawalBalanceDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = mallMemberService.getById(memberId); - if (StrUtil.isBlank(mallMember.getTradePassword())) { - throw new FebsException("未设置支付密码"); - } - if (!mallMember.getTradePassword().equals(SecureUtil.md5(withdrawalBalanceDto.getTradePwd()))) { - throw new FebsException("支付密码错误"); + if(ObjectUtil.isEmpty(mallMember.getBindPhone())){ + throw new FebsException("请绑定充值提取地址"); } DataDictionaryCustom withdrawAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( @@ -197,12 +194,26 @@ BigDecimal amount = withdrawalBalanceDto.getAmount(); BigDecimal withdrawAmount = new BigDecimal(withdrawAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); if(withdrawAmount.compareTo(amount) > 0){ - throw new FebsException("至少为"+withdrawAmount); + throw new FebsException("最小金额:"+withdrawAmount); } - MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); - mallMemberAmount.setFcmCntAva(mallMemberAmount.getFcmCntAva().subtract(amount)); - mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmount); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); + BigDecimal balance = mallMemberWallet.getBalance(); + if(amount.compareTo(balance) > 0){ + throw new FebsException("账户余额不足"); + } + + DataDictionaryCustom feeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.WITHDRAW_AMOUNT_FEE.getType(), + DataDictionaryEnum.WITHDRAW_AMOUNT_FEE.getCode() + ); + BigDecimal fee = new BigDecimal(feeDic.getValue()) + .multiply(new BigDecimal("0.01")) + .multiply(amount) + .setScale(2, BigDecimal.ROUND_DOWN); + + mallMemberWallet.setBalance(mallMemberWallet.getBalance().subtract(amount)); + mallMemberWalletMapper.updateBalanceWithVersion(mallMemberWallet); String orderNo = MallUtils.getOrderNum("W"); MallMemberWithdraw withdraw = new MallMemberWithdraw(); @@ -210,9 +221,8 @@ withdraw.setMemberId(memberId); withdraw.setAmount(amount.negate()); withdraw.setStatus(1); - withdraw.setAmountFee(BigDecimal.ZERO); - withdraw.setRemark(withdrawalBalanceDto.getAddress()); + withdraw.setAmountFee(fee); + withdraw.setRemark(mallMember.getBindPhone()); this.baseMapper.insert(withdraw); - } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java index ed5b9ef..a4e4759 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java @@ -14,6 +14,9 @@ @ApiModelProperty(value = "房间ID") private Long roomId; + @ApiModelProperty(value = "游戏ID") + private Long gameId; + @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房") private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java index 4dd994d..0665eda 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java @@ -25,6 +25,9 @@ @ApiModelProperty(value = "邀请码") private String inviteId; + @ApiModelProperty(value = "绑定充值提现地址") + private String bindPhone; + /** * 账户状态;1-正常 2-禁用 */ -- Gitblit v1.9.1