From 986e0dd18f9715d77e3b77292cb9c0dfecc815fa Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 14 May 2025 16:55:11 +0800 Subject: [PATCH] feat(mall): 添加会员等级列表接口并更新相关模型 --- src/main/java/cc/mrbird/febs/mall/controller/member/ApiMemberLevelController.java | 37 ++++++++++++ src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLevelListInfoVo.java | 39 +++++++++++++ src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java | 40 +++++++++++++ src/main/java/cc/mrbird/febs/mall/vo/sale/ApiLevelListInfoVo.java | 5 + 5 files changed, 122 insertions(+), 1 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMemberLevelController.java b/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMemberLevelController.java new file mode 100644 index 0000000..96fe0b0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMemberLevelController.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.mall.controller.member; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.service.ApiSaleService; +import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLevelListInfoVo; +import cc.mrbird.febs.mall.vo.sale.ApiLevelListInfoVo; +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.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@Validated +@RequestMapping(value = "/api/memberLevel") +@RequiredArgsConstructor +@Api(value = "ApiMemberLevelController", tags = "365会员中心") +public class ApiMemberLevelController { + + private final ApiSaleService apiSaleService; + + @ApiOperation(value = "等级说明", notes = "等级说明") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberLevelListInfoVo.class) + }) + @PostMapping(value = "/memberLevelList") + public FebsResponse memberLevelList() { + + return apiSaleService.memberLevelList(); + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java b/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java index c7781ea..2d3c288 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java @@ -22,4 +22,6 @@ FebsResponse levelInfoList(); FebsResponse saleRecord(ApiSaleRecordInfoDto dto); + + FebsResponse memberLevelList(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java index d008859..950070e 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java @@ -8,10 +8,13 @@ import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.ApiSaleService; +import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLevelListInfoVo; import cc.mrbird.febs.mall.vo.sale.*; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -30,6 +33,7 @@ public class ApiSaleServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements ApiSaleService { private final HappySaleLevelMapper happySaleLevelMapper; + private final HappyMemberLevelMapper happyMemberLevelMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; private final MallMemberWalletMapper mallMemberWalletMapper; @Override @@ -142,6 +146,10 @@ public FebsResponse levelInfoList() { ArrayList<ApiLevelListInfoVo> apiLevelListInfoVos = new ArrayList<>(); + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = this.baseMapper.selectById(memberId); + List<HappySaleLevel> happySaleLevels = happySaleLevelMapper.selectList( new LambdaQueryWrapper<HappySaleLevel>() .orderByAsc(HappySaleLevel::getCode) @@ -150,6 +158,7 @@ happySaleLevels.forEach(happySaleLevel -> { ApiLevelListInfoVo apiLevelListInfoVo = new ApiLevelListInfoVo(); apiLevelListInfoVo.setName(happySaleLevel.getName()); + apiLevelListInfoVo.setMemberCode(mallMember.getStoreMaster()); apiLevelListInfoVo.setCode(happySaleLevel.getCode()); apiLevelListInfoVo.setContent(happySaleLevel.getContent()); apiLevelListInfoVo.setIconPng(happySaleLevel.getIconPng()); @@ -262,6 +271,37 @@ return new FebsResponse().success().data(apiSaleRecordInfoVo); } + @Override + public FebsResponse memberLevelList() { + ArrayList<ApiMemberLevelListInfoVo> apiLevelListInfoVos = new ArrayList<>(); + + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = this.baseMapper.selectById(memberId); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + + List<HappyMemberLevel> happyMemberLevels = happyMemberLevelMapper.selectList( + new LambdaQueryWrapper<HappyMemberLevel>() + .orderByAsc(HappyMemberLevel::getCode) + ); + //Stream 操作 happyMemberLevels,返回一个Map<code,HappyMemberLevel> + Map<Integer, HappyMemberLevel> happyMemberLevelMap = happyMemberLevels.stream() + .collect(Collectors.toMap(HappyMemberLevel::getCode, happyMemberLevel -> happyMemberLevel)); + if (CollUtil.isNotEmpty(happyMemberLevels)) { + happyMemberLevels.forEach(happyMemberLevel -> { + ApiMemberLevelListInfoVo vo = new ApiMemberLevelListInfoVo(); + BeanUtil.copyProperties(happyMemberLevel, vo); + vo.setMemberCode(mallMember.getDirector()); + vo.setMemberScore(mallMemberWallet.getScore()); + vo.setUpgradeScore( + ObjectUtil.isEmpty(happyMemberLevelMap.get(happyMemberLevel.getCode() + 1)) ? + 0 : happyMemberLevelMap.get(happyMemberLevel.getCode() + 1).getUpgradeScore() + ); + apiLevelListInfoVos.add(vo); + }); + } + return new FebsResponse().success().data(apiLevelListInfoVos); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLevelListInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLevelListInfoVo.java new file mode 100644 index 0000000..9bc9cf2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLevelListInfoVo.java @@ -0,0 +1,39 @@ +package cc.mrbird.febs.mall.vo.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "ApiMemberLevelListInfoVo", description = "") +public class ApiMemberLevelListInfoVo { + + @ApiModelProperty(value = "等级名称") + private String name; + + @ApiModelProperty(value = "等级图片") + private String headerPng; + + @ApiModelProperty(value = "等级编码") + private Integer code; + + @ApiModelProperty(value = "当前等级编码") + private Integer memberCode; + + @ApiModelProperty(value = "升级所需积分,0不显示") + private BigDecimal memberScore; + + @ApiModelProperty(value = "升级所需积分,0不显示") + private Integer upgradeScore; + + @ApiModelProperty(value = "自己下单返积分的比例,0则不显示这个权益") + private BigDecimal minePercent; + + @ApiModelProperty(value = "邀请好友下单后返积分比例,0则不显示这个权益") + private BigDecimal otherPercent; + + @ApiModelProperty(value = "规则说明") + private String content; +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiLevelListInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiLevelListInfoVo.java index decb236..bcc46e9 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiLevelListInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiLevelListInfoVo.java @@ -10,7 +10,10 @@ @ApiModelProperty(value = "等级名称") private String name; - @ApiModelProperty(value = "分销等级(当前等级等于我的推广接口中的分销等级)") + + @ApiModelProperty(value = "当前等级编码") + private Integer memberCode; + @ApiModelProperty(value = "分销等级") private Integer code; @ApiModelProperty(value = "规则说明") private String content; -- Gitblit v1.9.1