From b71d11796454bb3d844be6e00cfb4c877519870d Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 16 Dec 2024 15:52:53 +0800 Subject: [PATCH] feat(mall): 添加 VIP购买相关接口和功能 --- src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java | 37 ++++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java | 44 ++++++++++++++ src/main/java/cc/mrbird/febs/mall/conversion/RunVipConversion.java | 15 +++++ src/main/java/cc/mrbird/febs/common/enumerates/YesOrNoEnum.java | 23 +++++++ src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java | 11 +++ src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java | 39 +++++++++++++ 6 files changed, 169 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/YesOrNoEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/YesOrNoEnum.java new file mode 100644 index 0000000..fdee3bf --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/YesOrNoEnum.java @@ -0,0 +1,23 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +@Getter +public enum YesOrNoEnum { + + /** + * 是否,同意拒绝,上线下线 + */ + YES(1, "是"), + + NO(0, "否"); + + private final int value; + + private final String desc; + + YesOrNoEnum(int value, String desc) { + this.value = value; + this.desc = desc; + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java new file mode 100644 index 0000000..d2dfb14 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.mall.controller; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.service.IRunVipService; +import cc.mrbird.febs.mall.vo.ApiRunVipVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@Validated +@RestController +@CrossOrigin("*") +@RequiredArgsConstructor +@RequestMapping(value = "/api/runVip") +@Api(value = "ApiRunVipController", tags = "碳积分接口") +public class ApiRunVipController { + + private final IRunVipService iRunVipService; + + @ApiOperation(value = "会员中心-购买VIP", notes = "会员中心-购买VIP") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiRunVipVo.class) + }) + @GetMapping(value = "/vipInfo") + public FebsResponse vipInfo() { + return new FebsResponse().success().data(iRunVipService.vipInfo()); + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/RunVipConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/RunVipConversion.java new file mode 100644 index 0000000..043e458 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/conversion/RunVipConversion.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.mall.conversion; + +import cc.mrbird.febs.mall.entity.RunVip; +import cc.mrbird.febs.mall.vo.ApiRunVipVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public abstract class RunVipConversion { + public static final RunVipConversion INSTANCE = Mappers.getMapper(RunVipConversion.class); + + public abstract List<ApiRunVipVo> entityToVos(List<RunVip> runVips); +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java b/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java new file mode 100644 index 0000000..beefd97 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.mall.service; + +import cc.mrbird.febs.mall.entity.RunVip; +import cc.mrbird.febs.mall.vo.ApiRunVipVo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface IRunVipService extends IService<RunVip> { + List<ApiRunVipVo> vipInfo(); +} 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 new file mode 100644 index 0000000..f1d39ed --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java @@ -0,0 +1,44 @@ +package cc.mrbird.febs.mall.service.impl; + +import cc.mrbird.febs.common.enumerates.YesOrNoEnum; +import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.mall.conversion.RunVipConversion; +import cc.mrbird.febs.mall.entity.MallMember; +import cc.mrbird.febs.mall.entity.RunVip; +import cc.mrbird.febs.mall.mapper.RunVipMapper; +import cc.mrbird.febs.mall.service.IRunVipService; +import cc.mrbird.febs.mall.vo.ApiRunVipVo; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class RunVipServiceImpl extends ServiceImpl<RunVipMapper, RunVip> implements IRunVipService { + @Override + public List<ApiRunVipVo> vipInfo() { + MallMember member = LoginUserUtil.getLoginUser(); + List<ApiRunVipVo> apiRunVipVos = new ArrayList<>(); + if (StrUtil.isEmpty(member.getLevel())) { + return apiRunVipVos; + } + String level = member.getLevel(); + //获取当前用户的VIP等级 + RunVip runVip = this.baseMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, level)); + //获取大于当前用户等级序号的所有的VIP等级 + LambdaQueryWrapper<RunVip> runVipLambdaQueryWrapper = new LambdaQueryWrapper<>(); + runVipLambdaQueryWrapper.eq(RunVip::getState, YesOrNoEnum.YES.getValue()); + runVipLambdaQueryWrapper.gt(RunVip::getOrderNumber, runVip.getOrderNumber()); + List<RunVip> runVips = this.baseMapper.selectList(runVipLambdaQueryWrapper); + apiRunVipVos = RunVipConversion.INSTANCE.entityToVos(runVips); + + return apiRunVipVos; + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java new file mode 100644 index 0000000..c24e9c6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java @@ -0,0 +1,39 @@ +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 = "ApiRunVipVo", description = "VIP信息") +public class ApiRunVipVo { + + @ApiModelProperty(value = "ID") + private Long id; + @ApiModelProperty(value = "序号") + private Integer orderNumber;//序号 + @ApiModelProperty(value = "vip编码") + private String vipCode;//vip编码 + @ApiModelProperty(value = "vip名称") + private String vipName;//vip名称 + @ApiModelProperty(value = "vip图标") + private String vipPng;//vip图标 + @ApiModelProperty(value = "原价") + private BigDecimal originalPrice;//原价 + @ApiModelProperty(value = "现价") + private BigDecimal presentPrice;//现价 + @ApiModelProperty(value = "是否上架 1是0否") + private Integer state;//是否上架 1是0否 + @ApiModelProperty(value = "是否允许碳积分兑换碳币 1是0否") + private Integer changeState;//是否允许碳积分兑换碳币 1是0否 + @ApiModelProperty(value = "是否允许碳币提现 1是0否") + private Integer withdrawState;//是否允许碳币提现 1是0否 + @ApiModelProperty(value = "每日碳积分增长倍数") + private BigDecimal growthValue;//每日碳积分增长倍数 + @ApiModelProperty(value = "每日获取碳积分最大值") + private Integer growthCnt;//每日获取碳积分最大值 + @ApiModelProperty(value = "购买会员返利金额比例(实际支付金额 * rebatePercent = 返利金额)") + private BigDecimal rebatePercent;//购买会员返利金额比例(实际支付金额 * rebatePercent = 返利金额) +} -- Gitblit v1.9.1