admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/service/impl/push/XMPushServiceImpl.java
@@ -1,270 +1,358 @@
package com.yeshi.fanli.service.impl.push;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.AppVersionInfoMapper;
import com.yeshi.fanli.entity.AppVersionInfo;
import com.yeshi.fanli.entity.bus.user.AccountMessage;
import com.yeshi.fanli.entity.system.SystemZnx;
import com.yeshi.fanli.entity.xinge.MessageInfo;
import com.yeshi.fanli.entity.xinge.PushRecord;
import com.yeshi.fanli.exception.PushException;
import com.yeshi.fanli.log.PushLogHelper;
import com.yeshi.fanli.service.inter.push.XMPushService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.push.PushUtils;
import net.sf.json.JSONObject;
@Service
public class XMPushServiceImpl implements XMPushService {
   @Resource
   private AppVersionInfoMapper appVersionInfoMapper;
   @Override
   public void pushGoods(Long uid, Long auctionId, String title, String content) throws PushException {
      String gid = auctionId + "";
      JSONObject json = new JSONObject();
      // json.put("url", "http://item.taobao.com/item.htm?id=" + gid);// IOS使用
      json.put("id", gid);
      json.put("type", "goodsdetail");
      json.put("miPushUrl", String.format("%s.ui.recommend.GoodsBrowserActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      MessageInfo info = new MessageInfo();
      info.setTitle(title);
      info.setContent(content);
      info.setDescription(content);
      info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
      info.setActivty(String.format("%s.ui.recommend.GoodsBrowserActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      PushRecord pushRecord = new PushRecord();
      if (uid == null || uid == 0) {
         // 小米 全推
         try {
            PushUtils.allPushXiaoMi(info, json, pushRecord);
         } catch (Exception e) {
            PushLogHelper.xmError(e);
         }
      } else {
         info.setAlias(uid + "");
         // 小米 单推
         PushUtils.singlePushXiaoMi(info, json, pushRecord);
      }
   }
   @Override
   public void pushUrl(Long uid, String url, String title, String content) throws PushException {
      JSONObject json = new JSONObject();
      json.put("url", url);
      json.put("type", "url");
      json.put("webUrl", url);
      json.put("miPushUrl", String.format("%s.ui.invite.ShareBrowserActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      MessageInfo info = new MessageInfo();
      info.setTitle(title);
      info.setContent(content);
      info.setDescription(content);
      // 小米推送网页
      info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
      info.setActivty(String.format("%s.ui.invite.ShareBrowserActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      PushRecord pushRecord = new PushRecord();
      // 小米 全推
      if (uid == null || uid == 0) {
         try {
            PushUtils.allPushXiaoMi(info, json, pushRecord);
         } catch (Exception e) {
            PushLogHelper.xmError(e);
         }
      } else {
         info.setAlias(uid + "");
         PushUtils.singlePushXiaoMi(info, json, pushRecord);
      }
   }
   @Override
   public void pushZNX(Long uId, AccountMessage msg, SystemZnx systemZNX) throws PushException {
      MessageInfo info = new MessageInfo();
      info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
      JSONObject contentJson = new JSONObject();
      contentJson.put("isOpen", 0);
      contentJson.put("createTime", java.lang.System.currentTimeMillis());
      /* 无uid , 广播 数据插入系统表 */
      if (systemZNX != null) {
         info.setTitle(systemZNX.getTitle());
         info.setContent(systemZNX.getContent());
         contentJson.put("title", systemZNX.getTitle());
         contentJson.put("content", systemZNX.getContent());
         info.setDescription(systemZNX.getContent());
         // 小米开始全推
         long id = systemZNX.getId();
         contentJson.put("id", id);
         JSONObject json = new JSONObject();
         json.put("type", "ZNX");
         json.put("content", contentJson);
         json.put("miPushUrl", String.format("%s.ui.mine.AppMailDetailActivity",
               Constant.systemCommonConfig.getAndroidBaseactivityName()));
         PushRecord pushRecord = new PushRecord();
         // 小米 全推
         try {
            PushUtils.allPushXiaoMi(info, json, pushRecord);
         } catch (Exception e1) {
            PushLogHelper.xmError(e1);
         }
      } else if (msg != null) {
         info.setTitle(msg.getTitle());
         info.setContent(msg.getContent());
         contentJson.put("title", msg.getTitle());
         contentJson.put("content", msg.getContent());
         info.setDescription(msg.getContent());
         // 插入推送记录
         PushRecord pushRecord = new PushRecord();
         info.setAlias(uId + "");
         info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
         info.setActivty(
               String.format("%s.ui.BrowserActivity", Constant.systemCommonConfig.getAndroidBaseactivityName()));
         contentJson.put("id", msg.getId() + "");
         JSONObject json = new JSONObject();
         json.put("type", "ZNX");
         json.put("content", contentJson);
         json.put("miPushUrl", String.format("%s.ui.mine.AppMailDetailActivity",
               Constant.systemCommonConfig.getAndroidBaseactivityName()));
         // 小米 单推
         try {
            PushUtils.singlePushXiaoMi(info, json, pushRecord);
         } catch (Exception e) {
            PushLogHelper.xmError(e);
         }
      }
   }
   @Override
   public void pushWEEX(Long uid, String title, String content, String weexUrl) throws PushException {
      // TODO 推送weex页面
      JSONObject json = new JSONObject();
      json.put("url", weexUrl);
      json.put("type", "weex");
      // 设置可推送版本,1.4.8以后的版本可推送
      json.put("app_version", getVersionByMinVersionCode(31));
      MessageInfo info = new MessageInfo();
      info.setTitle(title);
      info.setContent(content);
      info.setDescription(content);
      // 小米推送网页
      info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
      info.setActivty(String.format("%s.ui.mine.weex.WeexApplicationActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      PushRecord pushRecord = new PushRecord();
      // 小米 全推
      if (uid == null || uid == 0) {
         try {
            PushUtils.allPushXiaoMi(info, json, pushRecord);
         } catch (Exception e) {
            PushLogHelper.xmError(e);
         }
      } else {
         info.setAlias(uid + "");
         PushUtils.singlePushXiaoMi(info, json, pushRecord);
      }
   }
   private String getVersionByMinVersionCode(int versionCode) {
      List<AppVersionInfo> list = appVersionInfoMapper
            .listByPlatformAndMinVersionCode(AppVersionInfo.PLATFORM_ANDROID, versionCode);
      String versions = "";
      if (list != null)
         for (AppVersionInfo appVersion : list) {
            versions += appVersion.getVersion() + ",";
         }
      if (versions.endsWith(","))
         versions = versions.substring(0, versions.length() - 1);
      return versions;
   }
   @Override
   public void pushBaiChuanUrl(Long uid, String title, String content, String url) throws PushException {
      JSONObject json = new JSONObject();
      json.put("url", url);
      json.put("type", "baichuan");
      // 设置可推送版本,1.4.8以后的版本可推送
      json.put("app_version", getVersionByMinVersionCode(31));
      MessageInfo info = new MessageInfo();
      info.setTitle(title);
      info.setContent(content);
      info.setDescription(content);
      // 小米推送网页
      info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
      PushRecord pushRecord = new PushRecord();
      // 小米 全推
      if (uid == null || uid == 0) {
         try {
            PushUtils.allPushXiaoMi(info, json, pushRecord);
         } catch (Exception e) {
            PushLogHelper.xmError(e);
         }
      } else {
         info.setAlias(uid + "");
         PushUtils.singlePushXiaoMi(info, json, pushRecord);
      }
   }
   @Override
   public void pushWelfareCenter(Long uid, String title, String content) throws PushException {
      JSONObject json = new JSONObject();
      json.put("type", "welfare");
      json.put("miPushUrl", String.format("%s.ui.mine.WelfareCenterActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      MessageInfo info = new MessageInfo();
      info.setTitle(title);
      info.setContent(content);
      info.setDescription(content);
      // 小米推送网页
      info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
      info.setActivty(String.format("%s.ui.mine.WelfareCenterActivity",
            Constant.systemCommonConfig.getAndroidBaseactivityName()));
      PushRecord pushRecord = new PushRecord();
      // 小米 全推
      if (uid == null || uid == 0) {
         try {
            PushUtils.allPushXiaoMi(info, json, pushRecord);
         } catch (Exception e) {
            PushLogHelper.xmError(e);
         }
      } else {
         info.setAlias(uid + "");
         PushUtils.singlePushXiaoMi(info, json, pushRecord);
      }
   }
}
package com.yeshi.fanli.service.impl.push;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.config.SystemConfigKeyEnum;
import com.yeshi.fanli.service.inter.config.SystemConfigService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dto.push.PushTypeEnum;
import com.yeshi.fanli.entity.bus.user.AccountMessage;
import com.yeshi.fanli.entity.push.DeviceTokenXM;
import com.yeshi.fanli.entity.system.SystemZnx;
import com.yeshi.fanli.entity.xinge.MessageInfo;
import com.yeshi.fanli.entity.xinge.PushRecord;
import com.yeshi.fanli.exception.push.PushException;
import com.yeshi.fanli.log.PushLogHelper;
import com.yeshi.fanli.service.inter.push.DeviceTokenXMService;
import com.yeshi.fanli.service.inter.push.XMPushService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.push.PushUtils;
import net.sf.json.JSONObject;
@Service
public class XMPushServiceImpl implements XMPushService {
    @Resource
    private DeviceTokenXMService deviceTokenXMService;
    @Resource
    private SystemConfigService systemConfigService;
    private List<String> getRegIds(Long uid) {
        List<DeviceTokenXM> list = deviceTokenXMService.listByUid(uid);
        List<String> regIds = new ArrayList<>();
        if (list != null)
            for (DeviceTokenXM token : list)
                regIds.add(token.getRegisterId());
        return regIds;
    }
    @Async("pushExecutor")
    @Override
    public void pushGoods(Long uid, String auctionId, String title, String content, String versions, SystemEnum system)
            throws PushException {
        String gid = auctionId + "";
        JSONObject json = new JSONObject();
        // json.put("url", "http://item.taobao.com/item.htm?id=" + gid);// IOS使用
        json.put("id", gid);
        json.put("type", PushTypeEnum.goodsdetail.name());
        json.put("miPushUrl", String.format("%s.ui.recommend.GoodsBrowserActivity",
                getAndroidPackageName(system)));
        // 版本推送
        if (versions != null && versions.trim().length() > 0) {
            json.put("app_version", versions);
        }
        MessageInfo info = new MessageInfo();
        info.setTitle(title);
        info.setContent(content);
        info.setDescription(content);
        info.setPackageName(getAndroidBaseactivityName(system));
        info.setActivty(String.format("%s.ui.recommend.GoodsBrowserActivity",
                getAndroidPackageName(system)));
        PushRecord pushRecord = new PushRecord();
        if (uid == null || uid == 0) {
            // 小米 全推
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        } else {
            info.setAlias(uid + "");
            // 小米 单推
            PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
        }
    }
    @Async("pushExecutor")
    @Override
    public void pushUrl(Long uid, String url, String title, String content, String versions, SystemEnum system) throws PushException {
        JSONObject json = new JSONObject();
        json.put("url", url);
        json.put("type", PushTypeEnum.url.name());
        json.put("webUrl", url);
        json.put("miPushUrl", String.format("%s.ui.invite.ShareBrowserActivity",
                getAndroidPackageName(system)));
        // 版本推送
        if (versions != null && versions.trim().length() > 0) {
            json.put("app_version", versions);
        }
        MessageInfo info = new MessageInfo();
        info.setTitle(title);
        info.setContent(content);
        info.setDescription(content);
        // 小米推送网页
        info.setPackageName(getAndroidBaseactivityName(system));
        info.setActivty(String.format("%s.ui.invite.ShareBrowserActivity",
                getAndroidPackageName(system)));
        PushRecord pushRecord = new PushRecord();
        // 小米 全推
        if (uid == null || uid == 0) {
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        } else {
            info.setAlias(uid + "");
            PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
        }
    }
    @Async("pushExecutor")
    @Override
    public void pushZNX(Long uId, AccountMessage msg, SystemZnx systemZNX, String versions, SystemEnum system) throws PushException {
        MessageInfo info = new MessageInfo();
        info.setPackageName(getAndroidBaseactivityName(system));
        JSONObject contentJson = new JSONObject();
        contentJson.put("isOpen", 0);
        contentJson.put("createTime", java.lang.System.currentTimeMillis());
        /* 无uid , 广播 数据插入系统表 */
        if (systemZNX != null) {
            info.setTitle(systemZNX.getTitle());
            info.setContent(systemZNX.getContent());
            contentJson.put("title", systemZNX.getTitle());
            contentJson.put("content", systemZNX.getContent());
            info.setDescription(systemZNX.getContent());
            // 小米开始全推
            long id = systemZNX.getId();
            contentJson.put("id", id);
            JSONObject json = new JSONObject();
            json.put("type", PushTypeEnum.ZNX.name());
            json.put("content", contentJson);
            json.put("miPushUrl",
                    String.format("%s.ui.main.MainActivity", getAndroidPackageName(system)));
            // 版本推送
            if (versions != null && versions.trim().length() > 0) {
                json.put("app_version", versions);
            }
            PushRecord pushRecord = new PushRecord();
            // 小米 全推
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e1) {
                PushLogHelper.xmError(e1);
            }
        } else if (msg != null) {
            info.setTitle(msg.getTitle());
            info.setContent(msg.getContent());
            contentJson.put("title", msg.getTitle());
            contentJson.put("content", msg.getContent());
            info.setDescription(msg.getContent());
            // 插入推送记录
            PushRecord pushRecord = new PushRecord();
            info.setAlias(uId + "");
            info.setPackageName(getAndroidBaseactivityName(system));
            info.setActivty(
                    String.format("%s.ui.BrowserActivity", getAndroidPackageName(system)));
            contentJson.put("id", msg.getId() + "");
            JSONObject json = new JSONObject();
            json.put("type", PushTypeEnum.ZNX.name());
            json.put("content", contentJson);
            json.put("miPushUrl",
                    String.format("%s.ui.main.MainActivity", getAndroidPackageName(system)));
            // 版本推送
            if (versions != null && versions.trim().length() > 0) {
                json.put("app_version", versions);
            }
            // 小米 单推
            try {
                PushUtils.singlePushXiaoMi(info, json, getRegIds(uId), pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        }
    }
    @Async("pushExecutor")
    @Override
    public void pushWEEX(Long uid, String title, String content, String weexUrl, String versions, SystemEnum system) throws PushException {
        JSONObject json = new JSONObject();
        json.put("url", weexUrl);
        json.put("type", PushTypeEnum.weex.name());
        // 版本推送
        if (versions != null && versions.trim().length() > 0) {
            json.put("app_version", versions);
        }
        MessageInfo info = new MessageInfo();
        info.setTitle(title);
        info.setContent(content);
        info.setDescription(content);
        // 小米推送网页
        info.setPackageName(getAndroidBaseactivityName(system));
        info.setActivty(String.format("%s.ui.mine.weex.WeexApplicationActivity",
                getAndroidPackageName(system)));
        PushRecord pushRecord = new PushRecord();
        // 小米 全推
        if (uid == null || uid == 0) {
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        } else {
            info.setAlias(uid + "");
            PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
        }
    }
    @Async("pushExecutor")
    @Override
    public void pushBaiChuanUrl(Long uid, String title, String content, String url, String versions, SystemEnum system)
            throws PushException {
        JSONObject json = new JSONObject();
        json.put("url", url);
        json.put("type", PushTypeEnum.baichuan.name());
        // 版本推送
        if (versions != null && versions.trim().length() > 0) {
            json.put("app_version", versions);
        }
        MessageInfo info = new MessageInfo();
        info.setTitle(title);
        info.setContent(content);
        info.setDescription(content);
        // 小米推送网页
        info.setPackageName(getAndroidBaseactivityName(system));
        PushRecord pushRecord = new PushRecord();
        // 小米 全推
        if (uid == null || uid == 0) {
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        } else {
            info.setAlias(uid + "");
            PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
        }
    }
    @Async("pushExecutor")
    @Override
    public void pushWelfareCenter(Long uid, String title, String content, String versions, SystemEnum system) throws PushException {
        JSONObject json = new JSONObject();
        json.put("type", PushTypeEnum.welfare.name());
        json.put("miPushUrl", String.format("%s.ui.mine.WelfareCenterActivity",
                getAndroidPackageName(system)));
        // 版本推送
        if (versions != null && versions.trim().length() > 0) {
            json.put("app_version", versions);
        }
        MessageInfo info = new MessageInfo();
        info.setTitle(title);
        info.setContent(content);
        info.setDescription(content);
        // 小米推送网页
        info.setPackageName(getAndroidBaseactivityName(system));
        info.setActivty(String.format("%s.ui.mine.WelfareCenterActivity",
                getAndroidPackageName(system)));
        PushRecord pushRecord = new PushRecord();
        // 小米 全推
        if (uid == null || uid == 0) {
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        } else {
            info.setAlias(uid + "");
            PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
        }
    }
    @Override
    public void pushUserSignInNotification(Long uid, String title, String content, String versions, SystemEnum system)
            throws PushException {
        JSONObject json = new JSONObject();
        json.put("type", PushTypeEnum.signin.name());
        json.put("miPushUrl", String.format("%s.ui.goldtask.GoldTaskActivity",
                getAndroidPackageName(system)));
        // 版本推送
        if (versions != null && versions.trim().length() > 0) {
            json.put("app_version", versions);
        }
        MessageInfo info = new MessageInfo();
        info.setTitle(title);
        info.setContent(content);
        info.setDescription(content);
        // 小米推送网页
        info.setPackageName(getAndroidBaseactivityName(system));
        info.setActivty(String.format("%s.ui.goldtask.GoldTaskActivity",
                getAndroidPackageName(system)));
        PushRecord pushRecord = new PushRecord();
        // 小米 全推
        if (uid == null || uid == 0) {
            try {
                PushUtils.allPushXiaoMi(info, json, pushRecord);
            } catch (Exception e) {
                PushLogHelper.xmError(e);
            }
        } else {
            info.setAlias(uid + "");
            PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
        }
    }
    private String getAndroidBaseactivityName(SystemEnum system) {
        return systemConfigService.getValueCache(SystemConfigKeyEnum.androidBaseActivityName, system);
    }
    private String getAndroidPackageName(SystemEnum system) {
        return systemConfigService.getValueCache(SystemConfigKeyEnum.androidPackageNames, system);
    }
}