KKSU
2024-06-24 53ebaf2c56879a87f46fb936da8304be2cddbb30
充值提现
12 files modified
1 files added
147 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiChargeBalanceDto.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 33 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java 3 ●●●●● patch | view | raw | blame | history
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"),
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,"开奖结果:{},{},您的选择:{}"),
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();
    }
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) {
src/main/java/cc/mrbird/febs/mall/dto/ApiBindAddressDto.java
New file
@@ -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;
}
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;
}
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;
}
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);
}
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("操作成功");
    }
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());
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);
    }
}
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-尊爵房
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-禁用
     */