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-禁用 */