From b6612cd3b5c176ae6ef5243f710aa0bfd5f4eb05 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 12 Feb 2025 14:52:20 +0800 Subject: [PATCH] feat(mall): 为 AdminRunVipController 中的碳积分系统设置接口添加操作日志 --- src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java | 152 +++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 123 insertions(+), 29 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java index 69534ef..a0b48ca 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java @@ -1,10 +1,7 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.enumerates.FlowTypeEnum; -import cc.mrbird.febs.common.enumerates.RunVipDataDictionaryEnum; -import cc.mrbird.febs.common.enumerates.RunVipMoneyFlowTypeEnum; -import cc.mrbird.febs.common.enumerates.YesOrNoEnum; +import cc.mrbird.febs.common.enumerates.*; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.MallUtils; @@ -33,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -105,10 +101,12 @@ .orderByDesc(RunVipGrow::getId) ).stream().findFirst().orElse(null); if(runVipGrow != null){ - BigDecimal amountNow = runVipGrow.getAmountNow(); - reduceAmount = reduceAmount.add(amountNow); + reduceAmount = runVipGrow.getAmountNow(); } presentAmount = presentAmount.subtract(reduceAmount); + if(BigDecimal.ZERO.compareTo(presentAmount) >= 0){ + throw new FebsException("支付异常,请刷新页面重试"); + } Long addressId = apiGoChargeDto.getAddressId(); MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(addressId); @@ -202,10 +200,12 @@ .orderByDesc(RunVipGrow::getId) ).stream().findFirst().orElse(null); if(runVipGrow != null){ - BigDecimal amountNow = runVipGrow.getAmountNow(); - reduceAmount = reduceAmount.add(amountNow); + reduceAmount = runVipGrow.getAmountNow(); } presentAmount = presentAmount.subtract(reduceAmount); + if(BigDecimal.ZERO.compareTo(presentAmount) >= 0){ + throw new FebsException("支付异常,请刷新页面重试"); + } MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); if(mallMemberWallet.getCommission().compareTo(BigDecimal.ZERO) <= 0){ @@ -493,7 +493,7 @@ if(runVipNext == null){ throw new FebsException("无法升级会员权益"); } - if(runVip.getOrderNumber() < runVipNext.getOrderNumber()){ + if(runVip.getOrderNumber() >= runVipNext.getOrderNumber()){ throw new FebsException("用户无法升级"); } @@ -535,28 +535,18 @@ BigDecimal subtract = amountAll.subtract(amountNow); if(subtract.compareTo(amount) <= 0){ - runVipGrow.setAmountNow(amountAll); - mallCharge.setVipCode(runVipGrow.getLevelNext()); }else{ - runVipGrow.setAmountNow(amountNow.add(amount).setScale(2, RoundingMode.DOWN)); - mallCharge.setVipCode(memberLevel); } - runVipGrow.setAmount(amount); - runVipGrowMapper.updateById(runVipGrow); }else{ - runVipGrow = new RunVipGrow(); - runVipGrow.setMemberId(memberId); - runVipGrow.setLevelNow(memberLevel); - runVipGrow.setLevelNext(runVipNext.getVipCode()); - runVipGrow.setAmountAll(runVipNext.getPresentPrice()); - runVipGrow.setAmount(amount); - runVipGrow.setAmountNow(amount); - runVipGrowMapper.insert(runVipGrow); - if(runVipGrow.getAmountAll().compareTo(amount) <= 0){ - mallCharge.setVipCode(runVipGrow.getLevelNext()); + BigDecimal presentPrice = runVip.getPresentPrice(); + BigDecimal add = presentPrice.add(amount); + + BigDecimal presentPriceNext = runVipNext.getPresentPrice(); + if(presentPriceNext.compareTo(add) <= 0){ + mallCharge.setVipCode(runVipNext.getVipCode()); } } mallChargeMapper.insert(mallCharge); @@ -597,7 +587,7 @@ if(runVipNext == null){ throw new FebsException("无法升级会员权益"); } - if(runVip.getOrderNumber() < runVipNext.getOrderNumber()){ + if(runVip.getOrderNumber() >= runVipNext.getOrderNumber()){ throw new FebsException("用户无法升级"); } @@ -663,7 +653,8 @@ mallCharge.setVipCode(runVipGrow.getLevelNext()); } }else{ - if(runVipNext.getPresentPrice().compareTo(amount) <= 0){ + BigDecimal add = runVip.getPresentPrice().add(amount); + if(runVipNext.getPresentPrice().compareTo(add) <= 0){ mallCharge.setVipCode(runVipNext.getVipCode()); } } @@ -703,9 +694,112 @@ ).stream().findFirst().orElse(null); if(runVipGrow != null){ BigDecimal amountNow = runVipGrow.getAmountNow(); - reduceAmount = reduceAmount.add(amountNow); + reduceAmount = amountNow; } apiReduceAmountVo.setReduceAmount(reduceAmount); return new FebsResponse().success().data(apiReduceAmountVo); } + + @Override + public FebsResponse goChargeUSDT(ApiGoChargeUSDTDto apiGoChargeDto) { + + Long memberId = LoginUserUtil.getLoginUser().getId(); + + ApiGoChargeVo apiGoChargeVo = new ApiGoChargeVo(); + + BigDecimal amount = apiGoChargeDto.getAmount(); + if(BigDecimal.ZERO.compareTo(amount) >= 0){ + throw new FebsException("金额异常"); + } + + MallMember mallMember = mallMemberMapper.selectById(memberId); + if (StrUtil.isBlank(mallMember.getTradePassword())) { + throw new FebsException("未设置资金密码"); + } + + if (!mallMember.getTradePassword().equals(SecureUtil.md5(apiGoChargeDto.getTradeWord()))) { + throw new FebsException("资金密码错误"); + } + + Long addressId = apiGoChargeDto.getAddressId(); + MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(addressId); + if(ObjectUtil.isEmpty(mallMemberPayment)){ + return new FebsResponse().fail().message("请先绑定你的地址"); + } + + //判断系统的充值地址 + String trcType = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getType(), + RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getCode() + ).getValue(); + String sysAddress = ""; + if(trcType.equals(mallMemberPayment.getBankNo())){ + sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getType(), + RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getCode() + ).getValue(); + }else{ + sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_BSC.getType(), + RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_BSC.getCode() + ).getValue(); + } + String failMinutes = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + RunVipDataDictionaryEnum.CHARGE_SYS_FAIL_TIME.getType(), + RunVipDataDictionaryEnum.CHARGE_SYS_FAIL_TIME.getCode() + ).getValue(); + DateTime failTime = DateUtil.offsetMinute(DateUtil.date(), Integer.parseInt(failMinutes)); + + MallCharge mallCharge = new MallCharge(); + String orderNo = MallUtils.getOrderNum("C"); + mallCharge.setMemberId(memberId); + mallCharge.setOrderNo(orderNo); + mallCharge.setState(YesOrNoEnum.ING.getValue()); + mallCharge.setType(mallMemberPayment.getBankNo()); + mallCharge.setAddress(mallMemberPayment.getBank()); + mallCharge.setFailTime(failTime); + mallCharge.setSysAddress(sysAddress); + + mallCharge.setAmount(amount); + mallCharge.setVipName(RunVipMoneyFlowTypeEnum.COMMISSION_PAY_CHARGE.getTypeDec()); + mallChargeMapper.insert(mallCharge); + + apiGoChargeVo.setFailTime(mallCharge.getFailTime()); + apiGoChargeVo.setAddress(mallCharge.getAddress()); + apiGoChargeVo.setAmount(mallCharge.getAmount()); + apiGoChargeVo.setSysAddress(mallCharge.getSysAddress()); + apiGoChargeVo.setSysAddressType(mallCharge.getType()); + + /** + * 充值接口调用后,发送一个延时队列 + * 功能:延迟时间为【failMinutes】后,更新充值记录为失败。 + */ + ApiMemberChargeFailDto apiMemberChargeFailDto = new ApiMemberChargeFailDto(); + apiMemberChargeFailDto.setChargeId(mallCharge.getId()); + apiMemberChargeFailDto.setFailTime(Integer.parseInt(failMinutes) * 60L* 1000L); + agentProducer.sendMemberChargeFailMsg(apiMemberChargeFailDto); + return new FebsResponse().success().data(apiGoChargeVo); + } + + @Override + public FebsResponse goChargeUSDTInfo(ApiGoChargeInfoDto apiGoChargeInfoDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + String orderNo = apiGoChargeInfoDto.getOrderNo(); + + LambdaQueryWrapper<MallCharge> objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); + objectLambdaQueryWrapper.eq(MallCharge::getMemberId,memberId); + objectLambdaQueryWrapper.eq(MallCharge::getOrderNo,orderNo); + MallCharge mallCharge = mallChargeMapper.selectOne(objectLambdaQueryWrapper); + + ApiGoChargeVo apiGoChargeVo = new ApiGoChargeVo(); + if(null == mallCharge){ + throw new FebsException("记录不存在"); + } + apiGoChargeVo.setFailTime(mallCharge.getFailTime()); + apiGoChargeVo.setAddress(mallCharge.getAddress()); + apiGoChargeVo.setAmount(mallCharge.getAmount()); + apiGoChargeVo.setSysAddress(mallCharge.getSysAddress()); + apiGoChargeVo.setSysAddressType(mallCharge.getType()); + return new FebsResponse().success().data(apiGoChargeVo); + } } -- Gitblit v1.9.1