package com.yeshi.fanli.controller.admin; import java.io.InputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.yeshi.fanli.entity.SystemEnum; import com.yeshi.fanli.entity.accept.AdminAcceptData; import com.yeshi.fanli.util.annotation.RequestNoLogin; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import net.sf.json.JSONArray; import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.tencentcloud.COSManager; import com.yeshi.fanli.dto.system.ListConfig; import com.yeshi.fanli.entity.AppVersionInfo; import com.yeshi.fanli.entity.common.Config; import com.yeshi.fanli.entity.system.ConfigCategory; import com.yeshi.fanli.entity.system.ConfigCategory.ConfigCategoryEnum; import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.service.inter.config.AppVersionService; import com.yeshi.fanli.service.inter.config.ConfigCategoryService; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.common.entity.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.FilePathEnum; import com.yeshi.fanli.util.StringUtil; import net.sf.json.JSONObject; @Controller @RequestMapping("admin/new/api/v1/config") public class ConfigAdminController { @Resource private ConfigService configService; @Resource private AppVersionService appVersionService; @Resource private EhCacheCacheManager ehCacheCacheManager; @Resource private ConfigCategoryService configCategoryService; /** * 查询列表 - 新后台 * * @param callback * @param key 查询词 名称 * @param pageIndex * @param out */ @RequestMapping(value = "getNewConfigList") public void getNewConfigList(AdminAcceptData acceptData, String callback, String key, Integer pageIndex, PrintWriter out) { try { if (pageIndex == null || pageIndex < 0) { pageIndex = 1; } List versionList = appVersionService.getAppVersionInfoListByPlatform("android", acceptData.getSystem()); Map androidMapName = new HashMap<>(); for (AppVersionInfo version : versionList) androidMapName.put(version.getVersionCode(), version.getVersion()); versionList = appVersionService.getAppVersionInfoListByPlatform("ios", acceptData.getSystem()); Map iosMapName = new HashMap<>(); for (AppVersionInfo version : versionList) iosMapName.put(version.getVersionCode(), version.getVersion()); List list = configService.listObjects(key, pageIndex, acceptData.getSystem()); for (Config config : list) { config.setMinAndroidVersion(androidMapName.get(config.getMinAndroidVersionCode())); config.setMinIosVersion(iosMapName.get(config.getMinIosVersionCode())); } if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无更多数据")); return; } int pageSize = Constant.PAGE_SIZE; int count = configService.getCount(key, acceptData.getSystem()); int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("result_list", list); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); e.printStackTrace(); } } /** * 参数修改 - 新后台 * * @param callback * @param config * @param out */ @RequestMapping(value = "saveModify") public void saveModify(AdminAcceptData acceptData, String callback, Config config, PrintWriter out) { Long id = config.getId(); if (id == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("ID不能为空")); return; } try { Config crentconfig = configService.getConfig(id); if (crentconfig == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作数据已不存在")); return; } if (StringUtil.isNullOrEmpty(config.getName()) || StringUtil.isNullOrEmpty(config.getValue())) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("说明、有效值不能为空")); return; } crentconfig.setName(config.getName()); crentconfig.setValue(config.getValue()); if (!StringUtil.isNullOrEmpty(config.getBeizhu())) { crentconfig.setBeizhu(config.getBeizhu()); } configService.update(crentconfig); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败")); e.printStackTrace(); } } @RequestMapping(value = "getArticleHot") public void getArticleHot(AdminAcceptData acceptData, PrintWriter out) { JSONObject data = new JSONObject(); data.put("list", configService.getValue(ConfigKeyEnum.articleHotWords.getKey(), acceptData.getSystem())); out.print(JsonUtil.loadTrueResult(data)); } /** * 版本号信息 * * @param callback * @param out */ @RequestMapping(value = "getVersionList") public void getVersionList(AdminAcceptData acceptData, String callback, PrintWriter out) { try { AppVersionInfo appVersionInfo = new AppVersionInfo(); appVersionInfo.setVersion("全推"); // IOS版本 List list1 = appVersionService.getAppVersionInfoListByPlatform(AppVersionInfo.PLATFORM_IOS, acceptData.getSystem()); if (list1 == null) { list1 = new ArrayList(); } List listIOS = new ArrayList(); listIOS.add(appVersionInfo); listIOS.addAll(list1); // 安卓版本 List list2 = appVersionService .getAppVersionInfoListByPlatform(AppVersionInfo.PLATFORM_ANDROID, acceptData.getSystem()); if (list2 == null) { list2 = new ArrayList(); } List listAndroid = new ArrayList(); listAndroid.add(appVersionInfo); listAndroid.addAll(list2); //小程序版本 List list3 = appVersionService .getAppVersionInfoListByPlatform(AppVersionInfo.PLATFORM_XCX, acceptData.getSystem()); if (list3 == null) { list3 = new ArrayList(); } List listWxmp = new ArrayList(); listWxmp.add(appVersionInfo); listWxmp.addAll(list3); JSONObject data = new JSONObject(); data.put("android", listAndroid); data.put("ios", listIOS); data.put("wxmp", listWxmp); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("版本查询失败")); e.printStackTrace(); } } @RequestMapping(value = "clearCaches") public void clearCaches(String callback, PrintWriter out) { ehCacheCacheManager.getCacheManager().clearAll(); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("")); } /** * 根据分类查询 * * @param callback * @param type * @param out */ @RequestMapping(value = "getByCategory") public void getByCategory(AdminAcceptData acceptData, String callback, String type, PrintWriter out) { try { ConfigCategoryEnum categoryEnum = configCategoryService.getCategoryEnum(type); if (categoryEnum == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("版本查询失败")); return; } List list = new ArrayList<>(); List listCategory = configCategoryService.listByType(categoryEnum); if (listCategory != null) { for (ConfigCategory category : listCategory) { Config config = configService.getConfigBykeyNoCache(category.getKeyEnum().getKey(), acceptData.getSystem()); if (config != null) { category.setConfig(config); list.add(category); } } } JSONObject data = new JSONObject(); data.put("list", list); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); e.printStackTrace(); } } /** * 保存信息 * * @param callback * @param listConfig * @param out */ @RequestMapping(value = "saveConfig") public void saveConfig(String callback, ListConfig listConfig, PrintWriter out) { try { if (listConfig == null || listConfig.getConfig() == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未接收到保存的信息")); return; } configService.update(listConfig.getConfig()); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败")); e.printStackTrace(); } } /** * 查询品牌背景图片 * * @param callback * @param type * @param out */ @RequestMapping(value = "getBrandBgImg") public void getBrandBgImg(AdminAcceptData acceptData, String callback, String type, PrintWriter out) { try { Config config = configService.getConfigBykeyNoCache(ConfigKeyEnum.brandBackgroundPicture.getKey(), acceptData.getSystem()); JSONObject data = new JSONObject(); if (config == null || StringUtil.isNullOrEmpty(config.getValue())) { data.put("pic", ""); } else { data.put("pic", config.getValue()); } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); e.printStackTrace(); } } /** * 修改品牌背景图片 * * @param callback * @param out */ @RequestMapping(value = "changeBrandBgImg") public void changeBrandBgImg(AdminAcceptData acceptData, String callback, HttpServletRequest request, Long id, PrintWriter out) { try { MultipartFile file = null; if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest fileRequest = (MultipartHttpServletRequest) request; file = fileRequest.getFile("file"); } if (file == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请上传图片文件")); return; } Config config = configService.getConfigBykeyNoCache(ConfigKeyEnum.brandBackgroundPicture.getKey(), acceptData.getSystem()); if (config == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("品牌对象不存在")); return; } String oldpic = config.getValue(); // 文件解析 InputStream inputStream = file.getInputStream(); String contentType = file.getContentType(); String type = contentType.substring(contentType.indexOf("/") + 1); // 文件路径 String filePath = FilePathEnum.brand.getPath() + UUID.randomUUID().toString().replace("-", "") + "." + type; // 执行上传 String fileLink = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); if (StringUtil.isNullOrEmpty(fileLink)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("文件上传失败")); return; } config.setValue(fileLink); configService.update(config); if (!Constant.IS_TEST) { if (oldpic != null && oldpic.trim().length() > 0) { COSManager.getInstance().deleteFile(oldpic); } } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败")); e.printStackTrace(); } } @RequestNoLogin @RequestMapping(value = "getSystem") public void getSystem(AdminAcceptData acceptData, String callback, PrintWriter out) { JSONArray array = new JSONArray(); for (SystemEnum system : SystemEnum.values()) { JSONObject item = new JSONObject(); item.put("name", system.getName()); item.put("key", system.name()); array.add(item); } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(array.toString())); } @RequestNoLogin @RequestMapping(value = "getTaoBaoAuthLink") public void getTaoBaoAuthLink(AdminAcceptData acceptData, Long uid, String callback, PrintWriter out) { JSONObject data = new JSONObject(); data.put("url", TaoBaoUtil.getTaoBaoAuthLink(uid, "bind")); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } }