package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.entity.bus.msg.UserSystemMsg; import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum; import com.yeshi.fanli.exception.push.PushException; import com.yeshi.fanli.service.inter.msg.UserSystemMsgService; import com.yeshi.fanli.service.inter.push.PushService; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.factory.IOSPushFactory; import net.sf.json.JSONObject; @Controller(value = "adminPushController") @RequestMapping("admin/new/api/v1/push") public class PushController { @Resource private PushService pushService; @Resource private UserSystemMsgService userSystemMsgService; /** * 短链接转换 * * @param url * @param out * @throws Exception */ @RequestMapping(value = "convertLink") public void convertLink(String callback, String url, PrintWriter out) { if (StringUtil.isNullOrEmpty(url)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("转链数据不能为空")); return; } try { String shortLink = org.yeshi.utils.HttpUtil.getShortLink(url); JSONObject jsonData = new JSONObject(); jsonData.put("url", url); jsonData.put("shortLink", shortLink); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(jsonData)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("转换失败")); e.printStackTrace(); } } /** * 网页推送 -(新后台) * * @param url * @param title * @param content * @param out * @throws Exception */ @RequestMapping(value = "newPushUrlAll") public void newPushUrlAll(String callback, String url, String title, String content, String uids, String arrayIOS, String arrayAndroid, PrintWriter out) { if (StringUtil.isNullOrEmpty(url) || StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(content)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写链接,标题与内容")); return; } JSONObject json = IOSPushFactory.createURLPush(HttpUtil.getShortLink(url), title, content); if (json.toString().getBytes().length > 256) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("标题或内容过长,请删减后再试")); return; } try { List listuid = null; if (uids != null && uids.trim().length() > 0) { listuid = Arrays.asList(uids.split(",")); if (listuid == null || listuid.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户id格式不正确")); return; } } if ((arrayIOS == null || arrayIOS.trim().length() == 0) && (arrayAndroid == null || arrayAndroid.trim().length() == 0)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送版本不能为空")); return; } List listIOS = convertList(arrayIOS); List listAndroid = convertList(arrayAndroid); if (listuid == null) { // 全推 pushService.pushUrl(null, title, content, url, listIOS, listAndroid); } else { // 部分推送 for (String str_uid: listuid) { if (str_uid != null && str_uid.trim().length() > 0) { pushService.pushUrl(Long.parseLong(str_uid), title, content, url, listIOS, listAndroid); } } } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功")); } catch (PushException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送失败")); e.printStackTrace(); } } /** * * 方法说明: 站内信推送 -(新后台) * * @param uId * @param title * @param content * @throws Exception */ @RequestMapping(value = "newPushFanZNX") public void newPushFanZNX(String callback, String uids, String title, String content, String arrayIOS, String arrayAndroid, PrintWriter out) { if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(content)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写标题与内容")); return; } try { List listuid = null; if (uids != null && uids.trim().length() > 0) { listuid = Arrays.asList(uids.split(",")); if (listuid == null || listuid.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户id格式不正确")); return; } } if ((arrayIOS == null || arrayIOS.trim().length() == 0) && (arrayAndroid == null || arrayAndroid.trim().length() == 0)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送版本不能为空")); return; } List listIOS = convertList(arrayIOS); List listAndroid = convertList(arrayAndroid); if (listuid == null) { // 全推 pushService.pushZNX(null, title, content, listIOS, listAndroid); } else { // 部分推送 for (String str_uid: listuid) { if (str_uid != null && str_uid.trim().length() > 0) { pushService.pushZNX(Long.parseLong(str_uid), title, content, listIOS, listAndroid); userSystemMsgService.addUserSystemMsg(Long.parseLong(str_uid), UserSystemMsgTypeEnum.question, title, content, UserSystemMsg.TIME_TAG_EMERGENT, null); } } } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功")); } catch (PushException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送失败")); e.printStackTrace(); } } /** * * 方法说明: 百川推送 -(新后台) * * @param uId * @param title * @param content * @throws Exception */ @RequestMapping(value = "pushBaiChuan") public void pushBaiChuan(String callback, String uids, String title, String content, String url, String arrayIOS, String arrayAndroid, PrintWriter out) { if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(content)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写标题与内容")); return; } try { List listuid = null; if (uids != null && uids.trim().length() > 0) { listuid = Arrays.asList(uids.split(",")); if (listuid == null || listuid.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户id格式不正确")); return; } } if ((arrayIOS == null || arrayIOS.trim().length() == 0) && (arrayAndroid == null || arrayAndroid.trim().length() == 0)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送版本不能为空")); return; } List listIOS = convertList(arrayIOS); List listAndroid = convertList(arrayAndroid); if (listuid == null) { // 全推 pushService.pushBaiChuanUrl(null, title, content, url, listIOS, listAndroid); } else { // 部分推送 for (String str_uid: listuid) { if (str_uid != null && str_uid.trim().length() > 0) { pushService.pushBaiChuanUrl(Long.parseLong(str_uid), title, content, url, listIOS, listAndroid); } } } JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功")); } catch (PushException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送失败")); e.printStackTrace(); } } /** * 版本处理 * @param array * @return */ public List convertList (String array) { Gson gson = new Gson(); List list = null; if (array == null || array.trim().length() == 0) { list = new ArrayList(); // 长度为0 不推送 } else { list = gson.fromJson(array, new TypeToken>() {}.getType()); if (list != null && list.size() > 0 && list.contains("全推")) { list = null; // 全推 } } return list; } }