| | |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.IMallMoneyFlowService; |
| | | import cc.mrbird.febs.mall.service.IRunVipService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | |
| | | private final MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | private final MallMemberWalletMapper mallMemberWalletMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | private final IApiMallMemberWalletService walletService; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | @Override |
| | | public List<ApiRunVipVo> vipInfo() { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse balanceBuy(ApiBalanceBuyDto apiBalanceBuyDto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember mallMember = mallMemberMapper.selectById(memberId); |
| | | if (StrUtil.isBlank(mallMember.getTradePassword())) { |
| | | throw new FebsException("未设置资金密码"); |
| | | } |
| | | |
| | | if (!mallMember.getTradePassword().equals(SecureUtil.md5(apiBalanceBuyDto.getTradeWord()))) { |
| | | throw new FebsException("资金密码错误"); |
| | | } |
| | | Long runVipId = apiBalanceBuyDto.getRunVipId(); |
| | | RunVip runVip = this.baseMapper.selectById(runVipId); |
| | | if(runVip.getState() != YesOrNoEnum.YES.getValue()){ |
| | | throw new FebsException("会员套餐已下架"); |
| | | } |
| | | //价格 |
| | | BigDecimal presentAmount = runVip.getPresentPrice().setScale(2,BigDecimal.ROUND_DOWN); |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); |
| | | if(mallMemberWallet.getCommission().compareTo(BigDecimal.ZERO) <= 0){ |
| | | throw new FebsException("余额不足"); |
| | | } |
| | | if(mallMemberWallet.getCommission().compareTo(presentAmount) < 0){ |
| | | throw new FebsException("余额不足"); |
| | | } |
| | | |
| | | String orderNo = MallUtils.getOrderNum(); |
| | | walletService.reduceCommission(presentAmount,memberId); |
| | | mallMoneyFlowService.runVipMoneyFlowAdd( |
| | | memberId, |
| | | memberId, |
| | | orderNo, |
| | | FlowTypeEnum.COMMISSION.getValue(), |
| | | RunVipMoneyFlowTypeEnum.COMMISSION_PAY.getValue(), |
| | | presentAmount, |
| | | StrUtil.format(RunVipMoneyFlowTypeEnum.COMMISSION_PAY.getDescription(),presentAmount), |
| | | YesOrNoEnum.YES.getValue() |
| | | ); |
| | | |
| | | MallCharge mallCharge = new MallCharge(); |
| | | mallCharge.setMemberId(memberId); |
| | | mallCharge.setOrderNo(orderNo); |
| | | mallCharge.setState(YesOrNoEnum.YES.getValue()); |
| | | mallCharge.setType(StrUtil.format(RunVipMoneyFlowTypeEnum.COMMISSION_PAY.getDescription(),presentAmount)); |
| | | mallCharge.setAddress(mallMember.getPhone()); |
| | | mallCharge.setAmount(presentAmount); |
| | | mallCharge.setVipCode(runVip.getVipCode()); |
| | | mallCharge.setVipName(runVip.getVipName()); |
| | | mallCharge.setVipCnt(apiBalanceBuyDto.getVipCnt()); |
| | | mallChargeMapper.insert(mallCharge); |
| | | |
| | | agentProducer.sendBuyVipSuccessMsg(mallCharge.getId()); |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse goChargeInfo(ApiGoChargeInfoDto apiGoChargeInfoDto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | String orderNo = apiGoChargeInfoDto.getOrderNo(); |