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