package com.yeshi.fanli.service.impl.push;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.controller.admin.PushController;
|
import com.yeshi.fanli.dao.mybatis.AccountMessageMapper;
|
import com.yeshi.fanli.dao.mybatis.push.PushRecordMapper;
|
import com.yeshi.fanli.entity.bus.user.AccountMessage;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.system.SystemZnx;
|
import com.yeshi.fanli.entity.xinge.PushRecord;
|
import com.yeshi.fanli.exception.PushException;
|
import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
|
import com.yeshi.fanli.service.inter.push.HWPushService;
|
import com.yeshi.fanli.service.inter.push.IOSPushService;
|
import com.yeshi.fanli.service.inter.push.PushRecordService;
|
import com.yeshi.fanli.service.inter.push.PushService;
|
import com.yeshi.fanli.service.inter.push.XMPushService;
|
import com.yeshi.fanli.service.inter.user.AccountMessageService;
|
import com.yeshi.fanli.service.inter.user.SystemZnxService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
|
@Service
|
public class PushServiceImpl implements PushService {
|
|
static String IOSBundleId = "";
|
static String PROJECT_NAME = "";
|
|
static {
|
IOSBundleId = Constant.systemCommonConfig.getIosBundleId();
|
PROJECT_NAME = Constant.systemCommonConfig.getProjectChineseName();
|
}
|
|
@Resource
|
private PushRecordService pushRecordService;
|
|
@Resource
|
private SystemZnxService systemZnxService;
|
|
@Resource
|
private AccountMessageService accountMessageService;
|
|
@Resource
|
private DeviceTokenHWService deviceTokenHWService;
|
|
@Resource
|
private IOSPushService iosPushService;
|
|
@Resource
|
private HWPushService hwPushService;
|
|
@Resource
|
private XMPushService xmPushService;
|
|
@Resource
|
private PushRecordMapper pushRecordMapper;
|
|
@Resource
|
private AccountMessageMapper accountMessageMapper;
|
|
@Async("pushExecutor")
|
@Override
|
public void pushGoods(Long uid, String url, String title, String content) throws PushException {
|
String gids = url.split("id=")[1];
|
String gid = gids.split("&")[0];
|
if (StringUtil.isNullOrEmpty(gid))
|
throw new PushException(1, "商品解析失败");
|
if (StringUtil.isNullOrEmpty(title))
|
throw new PushException(1, "请填写推送标题");
|
if (StringUtil.isNullOrEmpty(content))
|
throw new PushException(1, "请填写推送内容");
|
|
PushRecord pushRecord = new PushRecord();
|
pushRecord.setState(1);
|
pushRecord.setType(PushController.GOODS); // 都成功
|
pushRecord.setUrl(url);
|
pushRecord.setTitle(title);
|
pushRecord.setAppName(Constant.systemCommonConfig.getProjectChineseName());
|
pushRecord.setAccount(1);
|
|
xmPushService.pushGoods(uid, Long.parseLong(gid), title, content);
|
iosPushService.pushGoods(uid, Long.parseLong(gid), title, content);
|
// hwPushService.pushGoods(uid, Long.parseLong(gid), title, content);
|
|
pushRecordMapper.insertSelective(pushRecord);
|
}
|
|
@Async("pushExecutor")
|
@Override
|
public void pushUrl(Long uid, String url, String title, String content) throws PushException {
|
|
if (StringUtil.isNullOrEmpty(url))
|
throw new PushException(1, "无推送链接");
|
if (StringUtil.isNullOrEmpty(title))
|
throw new PushException(1, "无推送标题");
|
if (StringUtil.isNullOrEmpty(content))
|
throw new PushException(1, "无推送内容");
|
|
PushRecord pushRecord = new PushRecord();
|
pushRecord.setState(1);
|
pushRecord.setType(PushController.URL);
|
pushRecord.setUrl(url);
|
pushRecord.setTitle(title);
|
pushRecord.setAppName(Constant.systemCommonConfig.getProjectChineseName());
|
|
xmPushService.pushUrl(uid, url, title, content);
|
iosPushService.pushUrl(uid, url, title, content);
|
hwPushService.pushUrl(uid, url, title, content);
|
pushRecordMapper.insertSelective(pushRecord);
|
}
|
|
@Async("pushExecutor")
|
@Override
|
public void pushZNX(Long uId, String title, String content) throws PushException {
|
if (StringUtil.isNullOrEmpty(title))
|
throw new PushException(1, "无推送标题");
|
if (StringUtil.isNullOrEmpty(content))
|
throw new PushException(1, "无推送内容");
|
|
/* 无uid , 广播 数据插入系统表 */
|
if (uId == null || uId == 0) {
|
// 插入数据库(系统站内信数据)
|
SystemZnx systemZnx = new SystemZnx();
|
systemZnx.setTitle(title);
|
systemZnx.setContent(content);
|
systemZnx.setCreateTime(System.currentTimeMillis());
|
systemZnxService.save(systemZnx);
|
|
PushRecord pushRecord = new PushRecord();
|
pushRecord.setTitle(title);
|
pushRecord.setState(1); // 成功
|
pushRecord.setType(4); // 类型:站内信
|
pushRecord.setAppName(Constant.systemCommonConfig.getProjectChineseName());
|
xmPushService.pushZNX(uId, null, systemZnx);
|
iosPushService.pushZNX(uId, null, systemZnx);
|
hwPushService.pushZNX(uId, null, systemZnx);
|
// 插入推送记录
|
pushRecordMapper.insertSelective(pushRecord);
|
} else {
|
AccountMessage accountMessage = new AccountMessage();
|
accountMessage.setCreateTime(System.currentTimeMillis());
|
accountMessage.setIsOpen(false);
|
accountMessage.setUserInfo(new UserInfo(uId));
|
accountMessage.setTitle(title);
|
accountMessage.setContent(content);
|
accountMessageMapper.insertSelective(accountMessage);
|
|
xmPushService.pushZNX(uId, accountMessage, null);
|
iosPushService.pushZNX(uId, accountMessage, null);
|
hwPushService.pushZNX(uId, accountMessage, null);
|
|
// 插入推送记录
|
PushRecord pushRecord = new PushRecord();
|
pushRecord.setTitle(title);
|
pushRecord.setUid(uId);
|
pushRecord.setState(1); // 成功
|
pushRecord.setType(PushController.ZNX); // 类型:站内信
|
pushRecord.setAppName(Constant.systemCommonConfig.getProjectChineseName());
|
pushRecordMapper.insertSelective(pushRecord);
|
}
|
}
|
|
@Override
|
public void pushWEEX(Long uid, String title, String content, String weexUrl) throws PushException {
|
if (StringUtil.isNullOrEmpty(title))
|
throw new PushException(1, "无推送标题");
|
if (StringUtil.isNullOrEmpty(content))
|
throw new PushException(1, "无推送内容");
|
iosPushService.pushWEEX(uid, title, content, weexUrl);
|
}
|
|
@Override
|
public void pushBaiChuanUrl(Long uid, String title, String content, String url) throws PushException {
|
iosPushService.pushBaiChuanUrl(uid, title, content, url);
|
}
|
|
}
|