package org.ruoyi.chat.service.chat; import cn.dev33.satoken.stp.StpUtil; import lombok.RequiredArgsConstructor; import org.ruoyi.chat.enums.DisplayType; import org.ruoyi.chat.enums.UserGradeType; import org.ruoyi.common.satoken.utils.LoginHelper; import org.ruoyi.domain.bo.ChatModelBo; import org.ruoyi.domain.bo.ChatPackagePlanBo; import org.ruoyi.domain.vo.ChatModelVo; import org.ruoyi.domain.vo.ChatPackagePlanVo; import org.ruoyi.service.IChatModelService; import org.ruoyi.service.IChatPackagePlanService; import org.ruoyi.system.domain.vo.SysUserVo; import org.ruoyi.system.service.ISysUserService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 描述:用户模型信息 * * @author ageerle@163.com * date 2025/4/10 */ @Service @RequiredArgsConstructor public class UserModelService { private final IChatModelService chatModelService; private final ISysUserService userService; private final IChatPackagePlanService packagePlanService; public List modelList(ChatModelBo bo) { bo.setModelShow(DisplayType.VISIBLE.getCode()); List chatModelList = chatModelService.queryList(bo); ChatPackagePlanBo sysPackagePlanBo = new ChatPackagePlanBo(); if (StpUtil.isLogin()) { Long userId = LoginHelper.getLoginUser().getUserId(); SysUserVo sysUserVo = userService.selectUserById(userId); if (UserGradeType.UNPAID.getCode().equals(sysUserVo.getUserGrade())){ sysPackagePlanBo.setName("Free"); ChatPackagePlanVo chatPackagePlanVo = packagePlanService.queryList(sysPackagePlanBo).get(0); List array = new ArrayList<>(Arrays.asList(chatPackagePlanVo.getPlanDetail().split(","))); chatModelList.removeIf(model -> !array.contains(model.getModelName())); } }else { sysPackagePlanBo.setName("Visitor"); ChatPackagePlanVo sysPackagePlanVo = packagePlanService.queryList(sysPackagePlanBo).get(0); List array = new ArrayList<>(Arrays.asList(sysPackagePlanVo.getPlanDetail().split(","))); chatModelList.removeIf(model -> !array.contains(model.getModelName())); } return new ArrayList<>(chatModelList); } }