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);
|
}
|
|
}
|