package com.ruoyi.system.ControllerUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.IAdvImgService;
import com.ruoyi.system.service.IServiceCateService;
import com.ruoyi.system.service.IServiceGoodsService;
import com.ruoyi.system.service.ISiteConfigService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HomeUtril {
private static final IAdvImgService advImgService = SpringUtils.getBean(IAdvImgService.class);
private static final ISiteConfigService siteConfigService = SpringUtils.getBean(ISiteConfigService.class);
private static final IServiceCateService serviceCateService = SpringUtils.getBean(IServiceCateService.class);
private static final IServiceGoodsService serviceGoodsService = SpringUtils.getBean(IServiceGoodsService.class);
/**
* 获取广告图片列表
*
* @return 广告图片列表
*
* 接口说明:
* - 根据广告类型获取对应的图片列表
* - 自动添加图片CDN前缀
* - 支持多种广告位配置
*/
public Map getAdvImgData(long type) {
try {
Map result = new HashMap<>();
// 构建查询条件
AdvImg advImgQuery = new AdvImg();
advImgQuery.setType(type);
advImgQuery.setStatus(1L);
// 查询广告图片列表
List advImgList = advImgService.selectAdvImgList(advImgQuery);
System.out.println("#####################"+advImgList.size());
// 为每张图片添加CDN前缀
for (AdvImg advImg : advImgList) {
advImg.setImage(AppletControllerUtil.buildImageUrl(advImg.getImage()));
}
result.put("data", advImgList);
return result;
} catch (Exception e) {
return AppletControllerUtil.appletWarning("获取广告图片失败:" + e.getMessage());
}
}
/**
* 获取首页通知公告列表接口
*
* @return 上线状态的通知公告列表
*
* 接口说明:
* - 查询config_seven配置中的通知公告数据
* - 只返回status=1(上线)状态的公告
* - 按sort字段升序排列
* - 返回title、content、link、sort等字段
* - 无需用户登录验证
*
*/
public Map getHomeNoticeList(String categoryParam) {
try {
Map result = new HashMap<>();
String filterCategory = null;
if ("1".equals(categoryParam)) {
filterCategory = "home";
} else if ("2".equals(categoryParam)) {
filterCategory = "activity";
}
// 1. 查询config_seven配置
SiteConfig configQuery = new SiteConfig();
configQuery.setName("config_seven");
List configList = siteConfigService.selectSiteConfigList(configQuery);
if (configList.isEmpty()) {
// 配置不存在时返回空数组
return AppletControllerUtil.appletSuccess(new ArrayList<>());
}
SiteConfig config = configList.get(0);
String configValue = config.getValue();
if (configValue == null || configValue.trim().isEmpty()) {
// 配置值为空时返回空数组
return AppletControllerUtil.appletSuccess(new ArrayList<>());
}
// 2. 解析JSON配置
JSONObject configJson;
try {
configJson = JSONObject.parseObject(configValue);
} catch (Exception e) {
System.err.println("解析config_seven配置JSON失败:" + e.getMessage());
return AppletControllerUtil.appletSuccess(new ArrayList<>());
}
// 3. 获取notice数组
if (!configJson.containsKey("notice")) {
return AppletControllerUtil.appletSuccess(new ArrayList<>());
}
Object noticeObj = configJson.get("notice");
if (!(noticeObj instanceof JSONArray)) {
return AppletControllerUtil.appletSuccess(new ArrayList<>());
}
JSONArray noticeArray = (JSONArray) noticeObj;
// 4. 过滤上线状态的公告并构建返回数据
List