KKSU
2025-01-03 50cde33273f01e9f96e48652c0500216982c2b50
feat(mall): 新增购买 VIP 可减免金额接口并调整接口访问方式

- 新增 ApiReduceAmountVo 类用于返回可减免金额信息
- 在 ApiRunVipController 中添加 reduceAmount 接口,用于获取可减免金额
- 在 IRunVipService 接口中添加 reduceAmount 方法
- 在 RunVipServiceImpl 中实现 reduceAmount 方法,计算并返回可减免金额
- 将 growInfo 接口的访问方式从 POST 改为 GET
1 files added
3 files modified
52 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiReduceAmountVo.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
@@ -76,7 +76,7 @@
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiGrowInfoVo.class)
    })
    @PostMapping(value = "/growInfo")
    @GetMapping(value = "/growInfo")
    public FebsResponse growInfo() {
        return iRunVipService.growInfo();
    }
@@ -98,6 +98,15 @@
        return iRunVipService.growCharge(apiGrowChargeDto);
    }
    @ApiOperation(value = "【购买VIP】可减免金额", notes = "【购买VIP】可减免金额")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiReduceAmountVo.class)
    })
    @GetMapping(value = "/reduceAmount")
    public FebsResponse reduceAmount() {
        return iRunVipService.reduceAmount();
    }
    @ApiOperation(value = "【购买VIP】APP支付", notes = "【购买VIP】APP支付")
    @PostMapping(value = "/balanceBuy")
    @SubmitRepeat
src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
@@ -30,4 +30,6 @@
    FebsResponse growBuy(ApiGrowBuyDto apiGrowBuyDto);
    FebsResponse growCharge(ApiGrowChargeDto apiGrowChargeDto);
    FebsResponse reduceAmount();
}
src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
@@ -447,6 +447,7 @@
            apiGrowInfoVo.setLevelNow(runVipNow.getVipCode());
            apiGrowInfoVo.setAmountNow(runVipNow.getPresentPrice());
            //获取runVips中的orderNumber为runVipNow.getOrderNumber() + 1的那个元素
            RunVip runVipNext = runVips.stream().filter(runVip -> runVip.getOrderNumber() == runVipNow.getOrderNumber() + 1).findFirst().orElse(null);
            if(runVipNext != null){
@@ -668,4 +669,26 @@
        mallChargeMapper.insert(mallCharge);
        return new FebsResponse().success().data("操作成功");
    }
    @Override
    public FebsResponse reduceAmount() {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        ApiReduceAmountVo apiReduceAmountVo = new ApiReduceAmountVo();
        MallMember mallMember = mallMemberMapper.selectById(memberId);
        //减免价格
        RunVip runVip = this.baseMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, mallMember.getLevel()));
        BigDecimal reduceAmount = runVip.getPresentPrice();
        RunVipGrow runVipGrow = runVipGrowMapper.selectList(
                new LambdaQueryWrapper<RunVipGrow>()
                        .eq(RunVipGrow::getMemberId, memberId)
                        .eq(RunVipGrow::getLevelNow, mallMember.getLevel())
                        .orderByDesc(RunVipGrow::getId)
        ).stream().findFirst().orElse(null);
        if(runVipGrow != null){
            BigDecimal amountNow = runVipGrow.getAmountNow();
            reduceAmount = reduceAmount.add(amountNow);
        }
        apiReduceAmountVo.setReduceAmount(reduceAmount);
        return new FebsResponse().success().data(apiReduceAmountVo);
    }
}
src/main/java/cc/mrbird/febs/mall/vo/ApiReduceAmountVo.java
New file
@@ -0,0 +1,16 @@
package cc.mrbird.febs.mall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "ApiReduceAmountVo", description = "信息返回类")
public class ApiReduceAmountVo {
    @ApiModelProperty(value = "可减免金额")
    private BigDecimal reduceAmount = BigDecimal.ZERO;
}