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