package com.yeshi.fanli.controller.apph5; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Set; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.entity.AppVersionInfo; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.help.HelpCenter; import com.yeshi.fanli.entity.bus.help.HelpClass; import com.yeshi.fanli.entity.bus.help.HelpInfo; import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType; import com.yeshi.fanli.service.inter.config.AppVersionService; import com.yeshi.fanli.service.inter.help.HelpCenterService; import com.yeshi.fanli.service.inter.help.HelpClassService; import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import net.sf.json.JSONObject; @Controller @RequestMapping("api/apph5/v1/helpCenter") public class AppH5HelpCenterController { @Resource private HelpCenterService helpCenterService; @Resource private HelpClassService helpClassService; @Resource private AppVersionService appVersionService; @Resource private AdActivityVersionControlService adActivityVersionControlService; /** * 查询帮助列表 * @param callback * @param pageIndex * @param pageSize * @param key * @param out */ @RequestMapping(value = "query") public void query(String callback, AcceptData acceptData, Long pageId, Integer pageSize, String key, Long cid, PrintWriter out) { try { if (pageSize == null) pageSize = Constant.PAGE_SIZE; if (cid != null && cid == 0) cid = null; // 查询全部 if (!StringUtil.isNullOrEmpty(key)) key = key.trim(); if (pageId == null) pageId = 0L; List list1 = helpCenterService.listValid(pageId, pageSize, key, cid); List list = new ArrayList<>(); if (list1 != null && list1.size() > 0) list.addAll(list1); if (list.size() == 0) { pageId = 0L; } else { pageId = list.get(list.size() - 1).getId(); // 版本过滤 int version = Integer.parseInt(acceptData.getVersion()); String platform = acceptData.getPlatform().toLowerCase(); List versionList = appVersionService.listByPlatformAndMinVersionCode(platform, version); if (versionList == null || versionList.size() <= 0) { list.clear(); } else { List sourceIdList = new ArrayList<>(); for (HelpCenter record : list) { sourceIdList.add(record.getId()); } List versionIdList = new ArrayList<>(); for (AppVersionInfo versionInfo : versionList) versionIdList.add(versionInfo.getId()); Set sets = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList, AdActivityType.helpCenter, versionIdList); for (int i = 0; i < list.size(); i++) { if (!sets.contains(list.get(i).getId())) { list.remove(i--); } } } } JSONObject data = new JSONObject(); data.put("pageId", pageId); data.put("result_list", JsonUtil.getApiCommonGson().toJson(list)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据")); e.printStackTrace(); } } /** * 获取帮助详情 * @param callback * @param id * @param out */ @RequestMapping(value = "getInfo") public void getInfo(String callback, Long id, PrintWriter out) { try { if (id == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该内容不存在")); return; } HelpCenter crrent = helpCenterService.selectByPrimaryKeyCache(id); if (crrent == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该内容已不存在")); return; } String html = null; HelpInfo helpInfo = helpCenterService.getHelpInfoCache(id); if (helpInfo != null) { html = helpInfo.getHtml(); } JSONObject data = new JSONObject(); data.put("id", crrent.getId()); data.put("title", crrent.getTitle()); data.put("html", html); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("数据失败")); e.printStackTrace(); } } /** * 查询启用的分类 * @param callback * @param out */ @RequestMapping(value = "getClass") public void getClass(String callback, AcceptData acceptData, PrintWriter out) { try { List resultList = new ArrayList<>(); List list = helpClassService.getClassByState(1); if (list != null && list.size() > 0) { resultList.addAll(list); } // 版本过滤 int version = Integer.parseInt(acceptData.getVersion()); String platform = acceptData.getPlatform().toLowerCase(); List versionList = appVersionService.listByPlatformAndMinVersionCode(platform, version); if (versionList == null || versionList.size() <= 0) { resultList.clear(); } else { List sourceIdList = new ArrayList<>(); for (HelpClass record : resultList) { sourceIdList.add(record.getId()); } List versionIdList = new ArrayList<>(); for (AppVersionInfo versionInfo : versionList) versionIdList.add(versionInfo.getId()); Set sets = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList, AdActivityType.helpClass, versionIdList); for (int i = 0; i < list.size(); i++) { if (!sets.contains(list.get(i).getId())) { list.remove(i--); } } } JSONObject data = new JSONObject(); data.put("class_list", JsonUtil.getApiCommonGson().toJson(resultList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } }