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