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