From 69bee82b81626b82b7f39f0e459e4f56b1699b51 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 13 三月 2019 12:02:16 +0800 Subject: [PATCH] 正式数据库修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java | 184 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 166 insertions(+), 18 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java index 1b8730b..9576a6e 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/IOSPushServiceImpl.java @@ -1,12 +1,11 @@ package com.yeshi.fanli.service.impl.push; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; import javax.annotation.Resource; - -import net.sf.json.JSONObject; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,14 +20,15 @@ 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.LogHelper; import com.yeshi.fanli.log.PushLogHelper; import com.yeshi.fanli.service.inter.push.IOSPushService; +import com.yeshi.fanli.service.inter.user.UserCustomSettingsService; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.push.IOSPushUtil; + +import net.sf.json.JSONObject; @Service public class IOSPushServiceImpl implements IOSPushService { @@ -38,6 +38,9 @@ @Resource private PushQueueRecordMapper pushQueueRecordMapper; + + @Resource + private UserCustomSettingsService userCustomSettingsService; @Override public void pushGoods(Long uid, Long auctionId, String title, String content) throws PushException { @@ -81,6 +84,10 @@ * } } }); */ } else { + if (!validateNotDisturbSingle(uid)) { + return; // 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + // IOS 鍗曟帹 List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); List<String> deviceTokenList = new ArrayList<>(); @@ -135,6 +142,10 @@ * } catch (Exception e) { PushLogHelper.iosError(e); } } }); */ } else { + if (!validateNotDisturbSingle(uid)) { + return; // 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); List<String> deviceTokenList = new ArrayList<>(); if (deviceTokenIosList != null) @@ -147,11 +158,6 @@ PushLogHelper.iosError(e); } } - } - - @Override - public void pushWEEXUrl(Long uid, String weexUrl, String title, String content) throws PushException { - } @Override @@ -200,6 +206,13 @@ * } }); */ } else if (msg != null) { + + if (uId != null) { + if (!validateNotDisturbSingle(uId)) { + return; // 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + } + // 鎻掑叆鎺ㄩ�佽褰� PushRecord pushRecord = new PushRecord(); info.setTitle(msg.getTitle()); @@ -241,7 +254,7 @@ @Override public void addDeviceToken(Long uid, int version, String deviceToken, String device) { // 濡傛灉device涓虹┖灏辫繑鍥� - if (StringUtil.isNullOrEmpty(device)) + if (StringUtil.isNullOrEmpty(device) || StringUtil.isNullOrEmpty(deviceToken)) return; // 鍒ゆ柇device鏄惁瀛樺湪 @@ -252,9 +265,18 @@ deviceTokenIos.setUpdateTime(new Date()); deviceTokenIos.setDevice(device); deviceTokenIos.setDeviceToken(deviceToken); + deviceTokenIos.setDeviceTokenMd5(StringUtil.Md5(deviceToken)); deviceTokenIos.setUid(uid); deviceTokenIos.setVersion(version); deviceTokenIOSMapper.insertSelective(deviceTokenIos); + } else {// 鏇存柊devicetoken + DeviceTokenIOS updateDeviceTokenIOS = new DeviceTokenIOS(); + updateDeviceTokenIOS.setId(deviceTokenIos.getId()); + updateDeviceTokenIOS.setDeviceToken(deviceToken); + updateDeviceTokenIOS.setDeviceTokenMd5(StringUtil.Md5(deviceToken)); + updateDeviceTokenIOS.setUid(uid); + updateDeviceTokenIOS.setUpdateTime(new Date()); + deviceTokenIOSMapper.updateByPrimaryKeySelective(updateDeviceTokenIOS); } } @@ -288,8 +310,8 @@ } @Override - public DeviceTokenIOS getDeviceTokenByDevice(String device) { - return deviceTokenIOSMapper.selectByDevice(device); + public DeviceTokenIOS getDeviceTokenByDeviceToken(String deviceToken) { + return deviceTokenIOSMapper.selectByDeviceToken(deviceToken); } /** @@ -351,7 +373,7 @@ // 缁撴潫娓告爣 pushQueueRecord.setEndCursor(endCursor); - // TODO 瀛樺叆鏁版嵁搴� + // 瀛樺叆鏁版嵁搴� pushQueueRecordMapper.insert(pushQueueRecord); // 鍔犲叆闃熷垪 CMQManager.getInstance().addIOSPushMsg(pushQueueRecord); @@ -361,7 +383,6 @@ } } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } @@ -443,20 +464,36 @@ JSONObject json = JSONObject.fromObject(jsonContent); List<String> tokenList = new ArrayList<>(); + + boolean ispush = false; + List<Long> listNotPushId = null; + + Calendar now = Calendar.getInstance(); + int hour = now.get(Calendar.HOUR_OF_DAY); + if (hour >= 8 && hour < 20) { + ispush = true; // 鍙帹閫� + } else { + listNotPushId = validateNotDisturb(); + } + for (DeviceTokenIOS ios : list) { + if (!StringUtil.isNullOrEmpty(ios.getDeviceToken())) { + if (!ispush && listNotPushId != null && listNotPushId.size() > 0) { + Long uid = ios.getUid(); + if (uid != null && listNotPushId.contains(uid)) { + continue; // 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + } + } tokenList.add(ios.getDeviceToken()); - // System.out.println(ios.getDeviceToken()); } } if (tokenList.size() > 0) { - // System.out.println(tokenList.size()); // 鎵ц鎺ㄩ�� try { IOSPushUtil.executePushIOS(tokenList, json); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -464,8 +501,119 @@ pushQueueRecord.setEndtime(new Date()); pushQueueRecord.setRecordCursor(recordCursor); - // TODO 鏇存柊鏁版嵁搴� + // 鏇存柊鏁版嵁搴� pushQueueRecordMapper.updateByPrimaryKeySelective(pushQueueRecord); } + @Override + public void unBindUidAndDevice(String device) { + if (StringUtil.isNullOrEmpty(device)) + return; + DeviceTokenIOS deviceTokenIOS = deviceTokenIOSMapper.selectByDevice(device); + if (device != null) { + deviceTokenIOS.setUpdateTime(new Date()); + deviceTokenIOS.setUid(null); + deviceTokenIOSMapper.updateByPrimaryKey(deviceTokenIOS); + } + } + + @Override + public void pushWEEX(Long uid, String title, String content, String weexUrl) throws PushException { + MessageInfo info = new MessageInfo(); + info.setTitle(title); + info.setContent(content); + info.setDescription(content); + // IOS 鍏ㄦ帹 + if (uid == null || uid == 0) { + addPushIOSQueue(info, weexUrl, PushController.WEEX); + } else { + List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); + List<String> deviceTokenList = new ArrayList<>(); + if (deviceTokenIosList != null) + for (DeviceTokenIOS ios : deviceTokenIosList) { + deviceTokenList.add(ios.getDeviceToken()); + } + try { + IOSPushUtil.allPushIOS(deviceTokenList, info, weexUrl, PushController.WEEX); + } catch (Exception e) { + PushLogHelper.iosError(e); + } + } + } + + @Override + public void pushBaiChuanUrl(Long uid, String title, String content, String url) throws PushException { + MessageInfo info = new MessageInfo(); + info.setTitle(title); + info.setContent(content); + info.setDescription(content); + // IOS 鍏ㄦ帹 + if (uid == null || uid == 0) { + addPushIOSQueue(info, url, PushController.BAICHUAN); + } else { + List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); + List<String> deviceTokenList = new ArrayList<>(); + if (deviceTokenIosList != null) + for (DeviceTokenIOS ios : deviceTokenIosList) { + deviceTokenList.add(ios.getDeviceToken()); + } + try { + IOSPushUtil.allPushIOS(deviceTokenList, info, url, PushController.BAICHUAN); + } catch (Exception e) { + PushLogHelper.iosError(e); + } + } + } + + /** + * 閫氱煡鍏嶆墦鎵�(20:00-8:00) + */ + public List<Long> validateNotDisturb() { + return userCustomSettingsService.getCancelNoticeUsers(); + } + + /** + * 閫氱煡鍏嶆墦鎵�(20:00-8:00) + */ + public boolean validateNotDisturbSingle(Long uid) { + Calendar now = Calendar.getInstance(); + int hour = now.get(Calendar.HOUR_OF_DAY); + boolean ispush; + if (hour >= 8 && hour < 20) { + ispush = true; // 鍙帹閫� + } else { + // 鑷畾涔夎缃� 閫氱煡鍏嶆墦鎵�(20:00-24:00 / 00:00 -08:00) + ispush = userCustomSettingsService.validateCancelNoticeByUid(uid); + } + + return ispush; + } + + @Override + public void pushWelfareCenter(Long uid, String title, String content) throws PushException { + MessageInfo info = new MessageInfo(); + info.setTitle(title); + info.setContent(content); + info.setDescription(content); + // IOS 鍏ㄦ帹 + if (uid == null || uid == 0) { + addPushIOSQueue(info, "", PushController.WELFARE_CENTER); + } else { + if (!validateNotDisturbSingle(uid)) { + return; + } + List<DeviceTokenIOS> deviceTokenIosList = getDeviceTokenListByUid(uid); + List<String> deviceTokenList = new ArrayList<>(); + if (deviceTokenIosList != null) + for (DeviceTokenIOS ios : deviceTokenIosList) { + deviceTokenList.add(ios.getDeviceToken()); + } + try { + IOSPushUtil.allPushIOS(deviceTokenList, info, "", PushController.WELFARE_CENTER); + } catch (Exception e) { + PushLogHelper.iosError(e); + } + } + } + } -- Gitblit v1.8.0