admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/controller/admin/PushController.java
@@ -1,341 +1,272 @@
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.yeshi.fanli.entity.bus.msg.UserSystemMsg;
import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum;
import com.yeshi.fanli.exception.PushException;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.config.SystemService;
import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
import com.yeshi.fanli.service.inter.push.PushRecordService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.user.AccountMessageService;
import com.yeshi.fanli.service.inter.user.SystemZnxService;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.factory.IOSPushFactory;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.JsonUtil;
import net.sf.json.JSONObject;
@Controller(value = "adminPushController")
@RequestMapping("admin/new/api/v1/push")
public class PushController {
   public final static int GOODS = 1; // 商品推送
   public final static int URL = 2; // 网页推送
   public final static int DETAIL = 3; // 详情推送
   public final static int ZNX = 4; // 站内推送
   public final static int WEEX = 5; // 站内推送
   public final static int BAICHUAN = 6; // 站内推送
   public final static int WELFARE_CENTER = 7; // 福利中心
   @Resource
   private PushRecordService pushRecordService;
   @Resource
   private ConfigService configService;
   @Resource
   private SystemZnxService systemZnxService;
   @Resource
   private AccountMessageService accountMessageService;
   @Resource
   private SystemService systemService;
   @Resource
   private PushService pushService;
   @Resource
   private UserSystemMsgService userSystemMsgService;
   /**
    * 商品推送
    *
    * @param uId
    *            -用户ID 可为空
    * @param url
    *            -商品链接
    * @param title
    *            -推送标题
    * @param content
    *            -推送内容
    * @param out
    * @throws Exception
    */
   @RequestMapping(value = "pushGoodsAll_f", method = RequestMethod.POST)
   public void pushGoods(Long uId, String url, String title, String content, PrintWriter out) throws Exception {
      String auctionId = null;
      if (!StringUtil.isNullOrEmpty(url) && url.contains("id=")) {
         String[] sts = url.split("\\?")[1].split("&");
         for (String st : sts)
            if (st.contains("id=")) {
               auctionId = st.replace("id=", "");
            }
      }
      if (StringUtil.isNullOrEmpty(auctionId)) {
         out.print(JsonUtil.loadFalseResult("提取商品ID失败"));
         return;
      }
      JSONObject json = IOSPushFactory.createGoodsPush(Long.parseLong(auctionId), title, content);
      if (json.toString().getBytes().length > 256) {
         out.print(JsonUtil.loadFalseResult("标题或内容过长,请删减后再试"));
         return;
      }
      pushService.pushGoods(uId, url, title, content);
      out.print(JsonUtil.loadTrueResult("推送成功"));
   }
   /**
    * 网页推送
    *
    * @param url
    * @param title
    * @param content
    * @param out
    * @throws Exception
    */
   @RequestMapping(value = "pushUrlAll_f", method = RequestMethod.POST)
   public void pushUrl(String url, String title, String content, PrintWriter out) throws Exception {
      if (StringUtil.isNullOrEmpty(url) || StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(content)) {
         out.print(JsonUtil.loadFalseResult("请填写链接,标题与内容"));
         return;
      }
      JSONObject json = IOSPushFactory.createURLPush(HttpUtil.getShortLink(url), title, content);
      if (json.toString().getBytes().length > 256) {
         out.print(JsonUtil.loadFalseResult("标题或内容过长,请删减后再试"));
         return;
      }
      pushService.pushUrl(null, url, title, content);
      out.print(JsonUtil.loadTrueResult("推送成功"));
   }
   /**
    *
    * 方法说明: 站内信推送
    *
    * @author mawurui createTime 2018年3月12日 下午5:45:00
    * @param uId
    * @param title
    * @param content
    * @throws Exception
    */
   @RequestMapping(value = "pushFanZNX_f", method = RequestMethod.POST)
   public void pushSystemZnx(Long uId, String title, String content, PrintWriter out) throws Exception {
      pushService.pushZNX(uId, title, content);
      out.print(JsonUtil.loadTrueResult("推送成功"));
   }
   /**
    * 短链接转换
    *
    * @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 uId
    *            -用户ID 可为空
    * @param url
    *            -商品链接
    * @param title
    *            -推送标题
    * @param content
    *            -推送内容
    * @param out
    * @throws Exception
    */
   @RequestMapping(value = "newPushGoodsAll")
   public void newPushGoodsAll(String callback, Long uid, String url, String title, String content, PrintWriter out)
         throws Exception {
      String auctionId = null;
      if (!StringUtil.isNullOrEmpty(url) && url.contains("id=")) {
         String[] sts = url.split("\\?")[1].split("&");
         for (String st : sts)
            if (st.contains("id=")) {
               auctionId = st.replace("id=", "");
            }
      }
      if (StringUtil.isNullOrEmpty(auctionId)) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("提取商品ID失败"));
         return;
      }
      JSONObject json = IOSPushFactory.createGoodsPush(Long.parseLong(auctionId), title, content);
      if (json.toString().getBytes().length > 256) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("标题或内容过长,请删减后再试"));
         return;
      }
      try {
         pushService.pushGoods(uid, url, title, content);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
      } 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, 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 {
         pushService.pushUrl(null, url, title, content);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
      } catch (PushException 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, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(content)) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写标题与内容"));
         return;
      }
      try {
         String[] uidArray = null;
         if (uids != null) {
            uidArray = uids.split(",");
         }
         if (uidArray == null) {
            pushService.pushZNX(null, title, content);
         } else {
            for (int i = 0; i < uidArray.length; i++) {
               String str_uid = uidArray[i];
               if (str_uid != null && str_uid.trim().length() > 0) {
                  pushService.pushZNX(Long.parseLong(str_uid), title, content);
                  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, PrintWriter out) {
      if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(content)) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写标题与内容"));
         return;
      }
      try {
         String[] uidArray = null;
         if (uids != null) {
            uidArray = uids.split(",");
         }
         if (uidArray == null) {
            pushService.pushBaiChuanUrl(null, title, content, url);
         } else {
            for (int i = 0; i < uidArray.length; i++) {
               String str_uid = uidArray[i];
               if (str_uid != null && str_uid.trim().length() > 0) {
                  pushService.pushBaiChuanUrl(Long.parseLong(str_uid), title, content, url);
               }
            }
         }
         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();
      }
   }
}
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 com.yeshi.fanli.entity.accept.AdminAcceptData;
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(AdminAcceptData acceptData,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(AdminAcceptData acceptData, 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<String> 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<String> listIOS = convertList(arrayIOS);
         List<String> listAndroid = convertList(arrayAndroid);
         if (listuid == null) {
            // 全推
            pushService.pushUrl(null, title, content, url, listIOS, listAndroid,acceptData.getSystem());
         } 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,acceptData.getSystem());
               }
            }
         }
         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 title
    * @param content
    * @throws Exception
    */
   @RequestMapping(value = "newPushFanZNX")
   public void newPushFanZNX(AdminAcceptData acceptData,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<String> 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<String> listIOS = convertList(arrayIOS);
         List<String> listAndroid = convertList(arrayAndroid);
         if (listuid == null) {
            // 全推
            pushService.pushZNX(null, title, content, listIOS, listAndroid,acceptData.getSystem());
         } 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,acceptData.getSystem());
                  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 title
    * @param content
    * @throws Exception
    */
   @RequestMapping(value = "pushBaiChuan")
   public void pushBaiChuan(AdminAcceptData acceptData,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<String> 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<String> listIOS = convertList(arrayIOS);
         List<String> listAndroid = convertList(arrayAndroid);
         if (listuid == null) {
            // 全推
            pushService.pushBaiChuanUrl(null, title, content, url, listIOS, listAndroid,acceptData.getSystem());
         } 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,acceptData.getSystem());
               }
            }
         }
         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<String> convertList (String array) {
      Gson gson = new Gson();
      List<String> list = null;
      if (array == null || array.trim().length() == 0) {
         list = new ArrayList<String>(); // 长度为0 不推送
      } else {
         list = gson.fromJson(array, new TypeToken<ArrayList<String>>() {}.getType());
         if (list != null && list.size() > 0 && list.contains("全推")) {
            list = null; // 全推
         }
      }
      return list;
   }
}