From 6b12805b53f7a6d131b5cffcf45e3b3c68336568 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 09 十二月 2024 10:35:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java |  181 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 181 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java
new file mode 100644
index 0000000..3a6f8aa
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/VipCenterController.java
@@ -0,0 +1,181 @@
+package com.ruoyi.account.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.account.service.AppUserService;
+import com.ruoyi.account.service.VipSettingService;
+import com.ruoyi.account.vo.vip.Level;
+import com.ruoyi.account.vo.vip.VipLevel;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.*;
+import com.ruoyi.other.api.feignClient.BaseSettingClient;
+import com.ruoyi.other.api.feignClient.GoodsVipClient;
+import com.ruoyi.other.api.feignClient.RemoteVipSettingClient;
+import com.ruoyi.other.api.feignClient.VipGoodClient;
+import com.ruoyi.system.api.model.LoginUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/vipCenter")
+@Api(tags = "小程序-会员中心")
+@Log4j2
+public class VipCenterController {
+    @Resource
+    private RemoteVipSettingClient remoteVipSettingClient;
+    @Resource
+    private BaseSettingClient baseSettingClient;
+    @Resource
+    private GoodsVipClient goodsVipClient;
+    @Resource
+    private VipSettingService vipSettingService;
+    @Resource
+    private TokenService tokenService;
+    @Resource
+    private VipGoodClient vipGoodClient;
+    @Resource
+    private AppUserService appUserService;
+
+
+    @GetMapping("getVipLevelList")
+    @ApiOperation(value = "会员等级列表", tags = {"会员中心-小程序"})
+    public R<VipLevel> vipLevelList() {
+        try {
+            R<List<VipSetting>> r = remoteVipSettingClient.list();
+            if (!checkSuccess(r)) {
+                return R.fail("会员等级获取失败");
+            }
+            List<VipSetting> vipSettingList = r.getData();
+            if (vipSettingList == null || vipSettingList.isEmpty()) {
+                return R.fail("会员等级获取失败");
+            }
+
+            R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(3);
+            if (!checkSuccess(baseSettingR)) {
+                log.error("【会员设置说明】获取失败:{}", baseSettingR.getMsg());
+                return R.fail("会员等级获取失败");
+            }
+            BaseSetting baseSetting = baseSettingR.getData();
+            if (baseSetting == null) {
+                log.error("【会员设置说明】未设置");
+                return R.fail("会员等级获取失败");
+            }
+
+            Long userid = tokenService.getLoginUserApplet().getUserid();
+            VipSetting loginUserVipSetting = vipSettingService.getVipSettingByUserId(userid);
+
+            VipLevel vipLevel = new VipLevel();
+            List<Level> levelList = new ArrayList<>();
+
+            // 批量获取 goodsVip 和 vipGoods
+            List<Integer> vipIds = vipSettingList.stream().map(VipSetting::getId).collect(Collectors.toList());
+            Map<Integer, R<GoodsVip>> goodsVipMap = getGoodsVips(vipIds);
+            Map<Integer, R<List<VipGood>>> vipGoodsMap = getVipGoods(vipIds);
+
+            vipSettingList.forEach(vipSetting -> {
+                Level level = new Level();
+                BeanUtils.copyBeanProp(level, vipSetting);
+                level.setVipDesc(baseSetting.getContent());
+
+                R<GoodsVip> goodsVipR = goodsVipMap.get(vipSetting.getId());
+                if (R.isSuccess(goodsVipR)) {
+                    R<List<VipGood>> vipGoodR = vipGoodsMap.get(vipSetting.getId());
+                    if (R.isSuccess(vipGoodR)) {
+                        List<VipGood> vipGoodList = vipGoodR.getData();
+                        if (vipGoodList != null && !vipGoodList.isEmpty()) {
+                            List<String> goodsNames = new ArrayList<>();
+                            vipGoodList.forEach(vipGood -> {
+                                String goodJson = vipGood.getGoodJson();
+                                if (isValidJson(goodJson)) {
+                                    Goods goods = JSONObject.parseObject(goodJson, Goods.class);
+                                    goodsNames.add(goods.getName());
+                                } else {
+                                    log.warn("JSON无效: " + goodJson);
+                                }
+                            });
+                            level.setGoodsNames(goodsNames);
+                        }
+                    }
+                }
+                levelList.add(level);
+            });
+
+            vipLevel.setLevelList(levelList);
+            vipLevel.setCurrentLevel(loginUserVipSetting.getId());
+            return R.ok(vipLevel);
+        } catch (Exception e) {
+            log.error("会员等级获取失败", e);
+            return R.fail("会员等级获取失败");
+        }
+    }
+
+
+    public R<Void> test() {
+        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
+        AppUser appUser = appUserService.getById(loginUserApplet.getUserid());
+        if (appUser.getShopPoint() < 500){
+            return R.fail("消费积分不足500");
+        }
+        if (appUser.getSharePoint() < 500){
+            return R.fail("返佣积分不足500");
+        }
+        // 当前用户的直推用户
+//        List<AppUser> bottomUsers = appUserService.list(new LambdaQueryWrapper<AppUser>()
+//                .eq(AppUser::getInviteUserId, loginUserApplet.getUserid())
+//                .eq(AppUser::getVipId));
+
+        return null;
+    }
+
+
+
+
+    private boolean checkSuccess(R<?> r) {
+        if (!R.isSuccess(r)) {
+            log.error("请求失败: " + r.getMsg());
+        }
+        return R.isSuccess(r);
+    }
+
+    private Map<Integer, R<GoodsVip>> getGoodsVips(List<Integer> vipIds) {
+        Map<Integer, R<GoodsVip>> result = new HashMap<>();
+        for (Integer vipId : vipIds) {
+            R<GoodsVip> goodsVipR = goodsVipClient.getGoodsVip(vipId);
+            result.put(vipId, goodsVipR);
+        }
+        return result;
+    }
+
+    private Map<Integer, R<List<VipGood>>> getVipGoods(List<Integer> vipIds) {
+        Map<Integer, R<List<VipGood>>> result = new HashMap<>();
+        for (Integer vipId : vipIds) {
+//            R<List<VipGood>> vipGoodR = vipGoodClient.getVipGoodsByVipId(vipId);
+//            result.put(vipId, vipGoodR);
+        }
+        return result;
+    }
+
+    private boolean isValidJson(String json) {
+        try {
+            JSONObject.parseObject(json);
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+}

--
Gitblit v1.7.1