package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.yeshi.fanli.entity.accept.AdminAcceptData; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.entity.AppVersionInfo; 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; import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType; import com.yeshi.fanli.exception.config.HelpCenterException; import com.yeshi.fanli.exception.config.HelpClassException; import com.yeshi.fanli.log.LogHelper; 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.common.entity.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import org.yeshi.utils.TimeUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @Controller @RequestMapping("admin/new/api/v1/helpCenter") public class HelpCenterAdminController { @Resource private HelpCenterService helpCenterService; @Resource private HelpClassService helpClassService; @Resource private AppVersionService appVersionService; @Resource private AdActivityVersionControlService adActivityVersionControlService; /** * 保存帮助信息 * * @param callback * @param title * @param content * @param request * @param response * @param out */ @RequestMapping(value = "save") public void save(AdminAcceptData acceptData,String callback, HelpCenter helpCenter, String acction, String content, String html, PrintWriter out) { try { helpCenterService.save(helpCenter, content, html); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } catch (HelpCenterException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } /** * 修改状态 * @param callback * @param id * @param out */ @RequestMapping(value = "switchState") public void switchState(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) { try { helpCenterService.switchState(id); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } catch (HelpCenterException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } @RequestMapping(value = "getInfo") public void getInfo(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) { if (id == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数")); return; } HelpCenter crrent = helpCenterService.selectByPrimaryKey(id); if (crrent == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作数据已不存在")); return; } HelpInfo helpInfo = helpCenterService.getHelpInfo(id); JSONObject data = new JSONObject(); data.put("id", crrent.getId()); data.put("title", crrent.getTitle()); data.put("state", crrent.getState()); data.put("weight", crrent.getWeight()); if (crrent.getStartTime() != null) { data.put("startTime", TimeUtil.getWholeTime(crrent.getStartTime().getTime())); } else { data.put("startTime", ""); } if (crrent.getEndTime() != null) { data.put("endTime", TimeUtil.getWholeTime(crrent.getEndTime().getTime())); } else { data.put("endTime", ""); } if (helpInfo != null) { data.put("html", helpInfo.getHtml()); } else { data.put("html", ""); } if (crrent.getHelpClass() != null) { data.put("cid", crrent.getHelpClass().getId()); } else { data.put("cid", 0); } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } /** * 查找所有标签 * * @param callback * @param pageIndex * @param key * @param startTime * @param endTime * @param out */ @RequestMapping(value = "query") public void query(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, String key, Long cid, Integer orderMode, String version, String platform, Integer state, PrintWriter out) { try { if (orderMode == null) orderMode = 1; if (pageIndex == null) pageIndex = 1; if (pageSize == null) pageSize = Constant.PAGE_SIZE; List list = helpCenterService.query(0, Integer.MAX_VALUE, key, cid, orderMode, state,acceptData.getSystem()); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据")); return; } int count = list.size(); List versionList = null; if (!StringUtil.isNullOrEmpty(version) || !StringUtil.isNullOrEmpty(platform)) { versionList = new ArrayList<>(); if (!StringUtil.isNullOrEmpty(version)) { AppVersionInfo appVersion = appVersionService.selectByPrimaryKey(Long.parseLong(version)); if (appVersion != null) versionList.add(appVersion); } else { List appVersionList = appVersionService.getAppVersionInfoListByPlatform(platform,acceptData.getSystem()); if (appVersionList != null) { versionList.addAll(appVersionList); } } } if (versionList != null) { if (versionList.size() > 0) { List sourceIdList = new ArrayList<>(); for (HelpCenter helpCenter : list) { sourceIdList.add(helpCenter.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--); } } count = list.size(); } else { list.clear(); count = 0; } } int totalPage = count % pageSize == 0 ? count / pageSize : count / pageSize + 1; PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); List listResult = null; if (pageIndex < totalPage) { int start = (pageIndex - 1) * pageSize; listResult = list.subList(start, start + pageSize); } else if (pageIndex == totalPage) { listResult = list.subList((pageIndex - 1) * pageSize, list.size()); } else { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("没有更多了")); return; } for (HelpCenter helpCenter : listResult) { HelpClass helpClass = helpCenter.getHelpClass(); if (helpClass == null) { helpClass = new HelpClass(); helpClass.setId(0L); helpClass.setName("-未选择-"); helpCenter.setHelpClass(helpClass); } } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create(); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("result_list", gson.toJson(listResult)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常")); e.printStackTrace(); } } /** * 设置版本 * * @param callback * @param id * @param moveType * @param sex * @param out */ @RequestMapping(value = "setCenterVersions") public void setCenterVersions(AdminAcceptData acceptData,String callback, Long id, String versions, PrintWriter out) { JSONArray versionArray = JSONArray.fromObject(versions); List versionIds = new ArrayList<>(); for (int i = 0; i < versionArray.size(); i++) { Long version = versionArray.optLong(i); versionIds.add(version); } try { helpCenterService.setVersions(id, versionIds); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage())); } } @RequestMapping(value = "getCenterVersions") public void getCenterVersions(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) { List list = adActivityVersionControlService .listByTypeAndSourceId(AdActivityType.helpCenter, id); List versionList = new ArrayList<>(); if (list != null) for (AdActivityVersionControl control : list) versionList.add(control.getVersion().getId()); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(versionList)); } /** * 修改 * * @param callback * @param idArray * @param out */ @RequestMapping(value = "setWeight") public void setWeight(AdminAcceptData acceptData,String callback, Long id, Integer weight, PrintWriter out) { if (id == null || weight == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确参数")); return; } HelpCenter crrent = new HelpCenter(); crrent.setId(id); crrent.setWeight(weight); helpCenterService.updateByPrimaryKeySelective(crrent); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } /** * 批量删除 * * @param callback * @param idArray * @param out */ @RequestMapping(value = "deleteBatch") public void deleteBatch(AdminAcceptData acceptData,String callback, String idArray, PrintWriter out) { try { if (StringUtil.isNullOrEmpty(idArray)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未选择操作的数据")); return; } Gson gson = new Gson(); List idList = gson.fromJson(idArray, new TypeToken>() { }.getType()); if (idList == null || idList.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择操作的数据")); return; } // 删除帮助标题信息 helpCenterService.deleteBatchById(idList); // 删除帮助具体详情 helpCenterService.deleteInfoBatchById(idList); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败")); e.printStackTrace(); } } /** * 保存信息 * * @param callback * @param special * @param out */ @RequestMapping(value = "saveClass") public void saveClass(AdminAcceptData acceptData,String callback, HelpClass helpClass, HttpServletRequest request, PrintWriter out) { try { // 1. 先判断httpRequest 是否含有文件类型 if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest fileRequest = (MultipartHttpServletRequest) request; helpClassService.save(helpClass, fileRequest.getFile("file")); } else { helpClassService.save(helpClass, null); } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功")); } catch (HelpClassException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败")); e.printStackTrace(); } } /** * 修改状态 * @param callback * @param id * @param out */ @RequestMapping(value = "switchStateClass") public void switchStateClass(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) { try { helpClassService.switchState(id); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } catch (HelpClassException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } /** * 修改排序 * * @param callback * @param out */ @RequestMapping(value = "updateSort") public void updateSort(AdminAcceptData acceptData, String callback, Integer moveType, Long id, PrintWriter out) { try { helpClassService.updateSort(moveType, id,acceptData.getSystem()); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } catch (HelpClassException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e1) { e1.printStackTrace(); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败")); } } /** * 删除 * * @param callback * @param idArray * @param out */ @RequestMapping(value = "deleteClass") public void deleteClass(AdminAcceptData acceptData,String callback, String idArray, PrintWriter out) { if (StringUtil.isNullOrEmpty(idArray)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择操作的数据")); return; } try { Gson gson = new Gson(); List list = gson.fromJson(idArray, new TypeToken>() { }.getType()); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未检测到删除的数据")); return; } int count = helpClassService.deleteByPrimaryKeyBatch(list); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功删除[" + count + "]条数据")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败")); e.printStackTrace(); } } /** * 查询 * * @param callback * @param pageIndex * @param pageSize * @param key 模糊查询:说明、标识 * @param out */ @RequestMapping(value = "queryClass") public void queryClass(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, String key, Integer showState, String version, String platform, PrintWriter out) { if (pageIndex == null || pageIndex < 1) { pageIndex = 1; } pageSize = Integer.MAX_VALUE; try { List list = helpClassService.query(0, pageSize, key, showState,acceptData.getSystem()); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据")); return; } List versionList = null; if (!StringUtil.isNullOrEmpty(version) || !StringUtil.isNullOrEmpty(platform)) { versionList = new ArrayList<>(); if (!StringUtil.isNullOrEmpty(version)) { AppVersionInfo appVersion = appVersionService.selectByPrimaryKey(Long.parseLong(version)); if (appVersion != null) versionList.add(appVersion); } else { List appVersionList = appVersionService.getAppVersionInfoListByPlatform(platform,acceptData.getSystem()); if (appVersionList != null) { versionList.addAll(appVersionList); } } } for (HelpClass helpClass : list) { Date startTime = helpClass.getStartTime(); if (startTime == null) { helpClass.setStartTime_str(""); } else { helpClass.setStartTime_str(TimeUtil.formatDateAddT(startTime)); } Date endTime = helpClass.getEndTime(); if (endTime == null) { helpClass.setEndTime_str(""); } else { helpClass.setEndTime_str(TimeUtil.formatDateAddT(endTime)); } } // 过滤 long count = 0; if (versionList != null) { if (versionList.size() > 0) { List sourceIdList = new ArrayList<>(); for (HelpClass helpClass : list) { sourceIdList.add(helpClass.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--); } } count = list.size(); } else { list.clear(); count = 0; } } int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create(); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("result_list", gson.toJson(list)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } /** * 查询所有分类 * * @param out */ @RequestMapping(value = "getProvidedClass") public void getAllClass(AdminAcceptData acceptData, String callback, PrintWriter out) { try { HelpClass helpClass = new HelpClass(); helpClass.setId(0L); helpClass.setName("-未选择-"); List reslut_list = new ArrayList(); reslut_list.add(helpClass); List list = helpClassService.getProvidedClass(acceptData.getSystem()); if (list != null && list.size() > 0) { reslut_list.addAll(list); } JSONObject data = new JSONObject(); data.put("class_list", reslut_list); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } /** * 设置版本 * * @param callback * @param id * @param moveType * @param sex * @param out */ @RequestMapping(value = "setVersions") public void setVersions(AdminAcceptData acceptData,String callback, Long id, String versions, PrintWriter out) { JSONArray versionArray = JSONArray.fromObject(versions); List versionIds = new ArrayList<>(); for (int i = 0; i < versionArray.size(); i++) { Long version = versionArray.optLong(i); versionIds.add(version); } try { helpClassService.setVersions(id, versionIds); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage())); } } @RequestMapping(value = "getVersions") public void getVersions(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) { List list = adActivityVersionControlService .listByTypeAndSourceId(AdActivityType.helpClass, id); List versionList = new ArrayList<>(); if (list != null) for (AdActivityVersionControl control : list) versionList.add(control.getVersion().getId()); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(versionList)); } }