| | |
| | | package com.yeshi.fanli.service.impl.push;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.scheduling.annotation.Async;
|
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.AppVersionInfoMapper;
|
| | | import com.yeshi.fanli.entity.AppVersionInfo;
|
| | | 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.PushException;
|
| | | import com.yeshi.fanli.exception.push.PushException;
|
| | | import com.yeshi.fanli.log.PushLogHelper;
|
| | | import com.yeshi.fanli.service.inter.config.AppVersionService;
|
| | | 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;
|
| | |
| | | public class XMPushServiceImpl implements XMPushService {
|
| | |
|
| | | @Resource
|
| | | private AppVersionInfoMapper appVersionInfoMapper;
|
| | | |
| | | @Resource
|
| | | private AppVersionService appVersionService;
|
| | | private DeviceTokenXMService deviceTokenXMService;
|
| | |
|
| | | 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, Long auctionId, String title, String content, List<String> listVersion) throws PushException {
|
| | | |
| | | // 无最低版本限制
|
| | | int minVersionCode = 0;
|
| | | String appVersion = null;
|
| | | if (listVersion != null && listVersion.size() > 0) {
|
| | | appVersion = getCanPushVersions(minVersionCode, listVersion);
|
| | | } else if (minVersionCode > 0) {
|
| | | appVersion = getVersionByMinVersionCode(minVersionCode);
|
| | | }
|
| | | public void pushGoods(Long uid, Long auctionId, String title, String content, String versions)
|
| | | 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("type", PushTypeEnum.goodsdetail.name());
|
| | | json.put("miPushUrl", String.format("%s.ui.recommend.GoodsBrowserActivity",
|
| | | Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | |
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | | |
| | |
|
| | | MessageInfo info = new MessageInfo();
|
| | | info.setTitle(title);
|
| | | info.setContent(content);
|
| | |
| | | } else {
|
| | | info.setAlias(uid + "");
|
| | | // 小米 单推
|
| | | PushUtils.singlePushXiaoMi(info, json, pushRecord);
|
| | | PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
|
| | | }
|
| | | }
|
| | |
|
| | | @Async("pushExecutor")
|
| | | @Override
|
| | | public void pushUrl(Long uid, String url, String title, String content, List<String> listVersion) throws PushException {
|
| | | // 无最低版本限制
|
| | | int minVersionCode = 0;
|
| | | String appVersion = null;
|
| | | if (listVersion != null && listVersion.size() > 0) {
|
| | | appVersion = getCanPushVersions(minVersionCode, listVersion);
|
| | | } else if (minVersionCode > 0) {
|
| | | appVersion = getVersionByMinVersionCode(minVersionCode);
|
| | | }
|
| | | |
| | | public void pushUrl(Long uid, String url, String title, String content, String versions) throws PushException {
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("url", url);
|
| | | json.put("type", "url");
|
| | | json.put("type", PushTypeEnum.url.name());
|
| | | json.put("webUrl", url);
|
| | | json.put("miPushUrl", String.format("%s.ui.invite.ShareBrowserActivity",
|
| | | Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | | |
| | |
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | |
|
| | | MessageInfo info = new MessageInfo();
|
| | |
| | | }
|
| | | } else {
|
| | | info.setAlias(uid + "");
|
| | | PushUtils.singlePushXiaoMi(info, json, pushRecord);
|
| | | PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | @Async("pushExecutor")
|
| | | @Override
|
| | | public void pushZNX(Long uId, AccountMessage msg, SystemZnx systemZNX, List<String> listVersion) throws PushException {
|
| | | |
| | | // 无最低版本限制
|
| | | int minVersionCode = 0;
|
| | | String appVersion = null;
|
| | | if (listVersion != null && listVersion.size() > 0) {
|
| | | appVersion = getCanPushVersions(minVersionCode, listVersion);
|
| | | } else if (minVersionCode > 0) {
|
| | | appVersion = getVersionByMinVersionCode(minVersionCode);
|
| | | }
|
| | | |
| | | public void pushZNX(Long uId, AccountMessage msg, SystemZnx systemZNX, String versions) throws PushException {
|
| | |
|
| | | MessageInfo info = new MessageInfo();
|
| | | info.setPackageName(Constant.systemCommonConfig.getAndroidPackageName());
|
| | |
|
| | |
| | | contentJson.put("id", id);
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("type", "ZNX");
|
| | | json.put("type", PushTypeEnum.ZNX.name());
|
| | | json.put("content", contentJson);
|
| | | json.put("miPushUrl", String.format("%s.ui.mine.AppMailDetailActivity",
|
| | | Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | | json.put("miPushUrl",
|
| | | String.format("%s.ui.main.MainActivity", Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | |
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | | |
| | |
|
| | | PushRecord pushRecord = new PushRecord();
|
| | |
|
| | | // 小米 全推
|
| | |
| | | contentJson.put("id", msg.getId() + "");
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("type", "ZNX");
|
| | | json.put("type", PushTypeEnum.ZNX.name());
|
| | | json.put("content", contentJson);
|
| | | json.put("miPushUrl", String.format("%s.ui.mine.AppMailDetailActivity",
|
| | | Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | | |
| | | json.put("miPushUrl",
|
| | | String.format("%s.ui.main.MainActivity", Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | |
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | | |
| | |
|
| | | // 小米 单推
|
| | | try {
|
| | | PushUtils.singlePushXiaoMi(info, json, pushRecord);
|
| | | 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, List<String> listVersion) throws PushException {
|
| | | public void pushWEEX(Long uid, String title, String content, String weexUrl, String versions) throws PushException {
|
| | |
|
| | | // 设置可推送版本,1.4.8以后的版本可推送
|
| | | int minVersionCode = 31;
|
| | | String appVersion = null;
|
| | | if (listVersion != null && listVersion.size() > 0) {
|
| | | appVersion = getCanPushVersions(minVersionCode, listVersion);
|
| | | } else if (minVersionCode > 0) {
|
| | | appVersion = getVersionByMinVersionCode(minVersionCode);
|
| | | }
|
| | | |
| | | JSONObject json = new JSONObject();
|
| | | json.put("url", weexUrl);
|
| | | json.put("type", "weex");
|
| | | json.put("type", PushTypeEnum.weex.name());
|
| | |
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | | |
| | |
|
| | | MessageInfo info = new MessageInfo();
|
| | | info.setTitle(title);
|
| | | info.setContent(content);
|
| | |
| | | }
|
| | | } else {
|
| | | info.setAlias(uid + "");
|
| | | PushUtils.singlePushXiaoMi(info, json, pushRecord);
|
| | | PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), 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;
|
| | | }
|
| | | |
| | | /**
|
| | | * 查询能推送版本号
|
| | | * @param versionCode
|
| | | * @param listVersion
|
| | | * @return
|
| | | */
|
| | | private String getCanPushVersions(int versionCode, List<String> listVersion) {
|
| | | List<AppVersionInfo> list = appVersionService.listByVersions(AppVersionInfo.PLATFORM_ANDROID, listVersion);
|
| | | String versions = "";
|
| | | |
| | | if (list != null) {
|
| | | for (AppVersionInfo appVersion : list) {
|
| | | Integer code = appVersion.getVersionCode();
|
| | | if (code != null && code >= versionCode) {
|
| | | versions += appVersion.getVersion() + ",";
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | if (versions.endsWith(",")) {
|
| | | versions = versions.substring(0, versions.length() - 1);
|
| | | }
|
| | | |
| | | return versions;
|
| | | }
|
| | |
|
| | | @Async("pushExecutor")
|
| | | @Override
|
| | | public void pushBaiChuanUrl(Long uid, String title, String content, String url, List<String> listVersion) throws PushException {
|
| | | |
| | | // 设置可推送版本,1.4.8以后的版本可推送
|
| | | int minVersionCode = 31;
|
| | | String appVersion = null;
|
| | | if (listVersion != null && listVersion.size() > 0) {
|
| | | appVersion = getCanPushVersions(minVersionCode, listVersion);
|
| | | } else if (minVersionCode > 0){
|
| | | appVersion = getVersionByMinVersionCode(minVersionCode);
|
| | | }
|
| | | |
| | | public void pushBaiChuanUrl(Long uid, String title, String content, String url, String versions)
|
| | | throws PushException {
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("url", url);
|
| | | json.put("type", "baichuan");
|
| | | json.put("type", PushTypeEnum.baichuan.name());
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | |
|
| | | MessageInfo info = new MessageInfo();
|
| | |
| | | }
|
| | | } else {
|
| | | info.setAlias(uid + "");
|
| | | PushUtils.singlePushXiaoMi(info, json, pushRecord);
|
| | | PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | @Async("pushExecutor")
|
| | | @Override
|
| | | public void pushWelfareCenter(Long uid, String title, String content, List<String> listVersion) throws PushException {
|
| | | |
| | | // 1.5.1之后的版本可推送
|
| | | int minVersionCode = 36;
|
| | | String appVersion = null;
|
| | | if (listVersion != null && listVersion.size() > 0) {
|
| | | appVersion = getCanPushVersions(minVersionCode, listVersion);
|
| | | } else if (minVersionCode > 0){
|
| | | appVersion = getVersionByMinVersionCode(minVersionCode);
|
| | | }
|
| | | |
| | | public void pushWelfareCenter(Long uid, String title, String content, String versions) throws PushException {
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("type", "welfare");
|
| | | json.put("type", PushTypeEnum.welfare.name());
|
| | | json.put("miPushUrl", String.format("%s.ui.mine.WelfareCenterActivity",
|
| | | Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | | // 版本推送
|
| | | if (appVersion != null && appVersion.trim().length() > 0) {
|
| | | json.put("app_version", appVersion);
|
| | | if (versions != null && versions.trim().length() > 0) {
|
| | | json.put("app_version", versions);
|
| | | }
|
| | |
|
| | | MessageInfo info = new MessageInfo();
|
| | |
| | | }
|
| | | } else {
|
| | | info.setAlias(uid + "");
|
| | | PushUtils.singlePushXiaoMi(info, json, pushRecord);
|
| | | PushUtils.singlePushXiaoMi(info, json, getRegIds(uid), pushRecord);
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void pushUserSignInNotification(Long uid, String title, String content, String versions)
|
| | | throws PushException {
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("type", PushTypeEnum.signin.name());
|
| | | json.put("miPushUrl", String.format("%s.ui.goldtask.GoldTaskActivity",
|
| | | Constant.systemCommonConfig.getAndroidBaseactivityName()));
|
| | | // 版本推送
|
| | | 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(Constant.systemCommonConfig.getAndroidPackageName());
|
| | | info.setActivty(String.format("%s.ui.goldtask.GoldTaskActivity",
|
| | | 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, getRegIds(uid), pushRecord);
|
| | | }
|
| | | }
|
| | |
|