| | |
| | | import com.tcm.training.admin.utils.JGPushUtil; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.Map; |
| | | |
| | |
| | | private static final String TEST_TITLE = "极光推送联调"; |
| | | private static final String TEST_CONTENT = "这是一条极光推送联调测试消息"; |
| | | private static final String TEST_SCENE = "JPUSH_MANUAL_TEST"; |
| | | private static final String MANUAL_NOTICE_TEST_SCENE = "MANUAL_NOTICE_TEST"; |
| | | private static final String PUSH_STATUS_SUCCESS = "SUCCESS"; |
| | | |
| | | private final JGPushUtil jgPushUtil; |
| | |
| | | * 生成会员到期提醒测试通知并尝试极光推送。 |
| | | */ |
| | | public JpushManualPushVO pushMemberExpireRemind(JpushManualPushRequest request) { |
| | | LocalDate expireDate = LocalDate.now().plusDays(3L); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("expireAt", expireDate.atTime(23, 59, 59).toString()); |
| | | payload.put("remainingDays", "3"); |
| | | return pushNoticeType(request, |
| | | AppSystemNoticeType.MEMBER_EXPIRE_REMIND, |
| | | "会员到期提醒", |
| | | "您的会员有效期将于测试日期到期", |
| | | false); |
| | | "您的会员有效期将于" + expireDate + "到期", |
| | | "MEMBER_EXPIRE_" + expireDate, |
| | | request.getAppUserId(), |
| | | false, |
| | | payload); |
| | | } |
| | | |
| | | /** |
| | | * 生成直播提醒测试通知并尝试极光推送。 |
| | | */ |
| | | public JpushManualPushVO pushLiveRemind(JpushManualPushRequest request) { |
| | | Long sessionId = System.currentTimeMillis(); |
| | | LocalDateTime startTime = LocalDateTime.now().plusHours(1L); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("courseId", "100001"); |
| | | payload.put("sessionId", String.valueOf(sessionId)); |
| | | payload.put("startTime", String.valueOf(startTime)); |
| | | payload.put("courseTitle", "测试直播课程"); |
| | | return pushNoticeType(request, |
| | | AppSystemNoticeType.LIVE_REMIND, |
| | | "直播提醒", |
| | | "测试直播课程 即将开播", |
| | | true); |
| | | "LIVE_SESSION", |
| | | sessionId, |
| | | true, |
| | | payload); |
| | | } |
| | | |
| | | /** |
| | | * 生成活动通知测试通知并尝试极光推送。 |
| | | */ |
| | | public JpushManualPushVO pushActivityNotice(JpushManualPushRequest request) { |
| | | Long activityNoticeId = System.currentTimeMillis(); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("activityNoticeId", String.valueOf(activityNoticeId)); |
| | | payload.put("title", "活动通知"); |
| | | return pushNoticeType(request, |
| | | AppSystemNoticeType.ACTIVITY_NOTICE, |
| | | "活动通知", |
| | | "这是一条活动通知联调测试消息", |
| | | true); |
| | | "活动通知", |
| | | "ACTIVITY_NOTICE", |
| | | activityNoticeId, |
| | | true, |
| | | payload); |
| | | } |
| | | |
| | | /** |
| | | * 生成订单状态更新测试通知并尝试极光推送。 |
| | | * 生成礼品订单创建测试通知并尝试极光推送。 |
| | | */ |
| | | public JpushManualPushVO pushOrderStatusUpdate(JpushManualPushRequest request) { |
| | | Long orderId = System.currentTimeMillis(); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("orderId", String.valueOf(orderId)); |
| | | payload.put("orderNo", "TEST" + orderId); |
| | | payload.put("giftName", "测试礼品"); |
| | | payload.put("itemCount", "1"); |
| | | return pushNoticeType(request, |
| | | AppSystemNoticeType.ORDER_STATUS_UPDATE, |
| | | "订单状态更新", |
| | | "您的礼品兑换订单状态已更新", |
| | | true); |
| | | "您有新的礼品兑换订单待处理", |
| | | "POINTS_EXCHANGE_ORDER", |
| | | orderId, |
| | | true, |
| | | payload); |
| | | } |
| | | |
| | | /** |
| | | * 生成礼品发货测试通知并尝试极光推送。 |
| | | */ |
| | | public JpushManualPushVO pushOrderShipped(JpushManualPushRequest request) { |
| | | Long orderId = System.currentTimeMillis(); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("orderId", String.valueOf(orderId)); |
| | | payload.put("orderNo", "TEST" + orderId); |
| | | payload.put("trackingNo", "SF" + orderId); |
| | | return pushNoticeType(request, |
| | | AppSystemNoticeType.ORDER_STATUS_UPDATE, |
| | | "订单状态更新", |
| | | "您的礼品兑换订单已发货", |
| | | "POINTS_EXCHANGE_ORDER_SHIPPED", |
| | | orderId, |
| | | true, |
| | | payload); |
| | | } |
| | | |
| | | /** |
| | | * 生成课程更新测试通知并尝试极光推送。 |
| | | */ |
| | | public JpushManualPushVO pushCourseUpdateNotice(JpushManualPushRequest request) { |
| | | Long videoId = System.currentTimeMillis(); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("courseId", "100001"); |
| | | payload.put("courseTitle", "测试课程"); |
| | | payload.put("videoId", String.valueOf(videoId)); |
| | | payload.put("chapterName", "测试章节"); |
| | | return pushNoticeType(request, |
| | | AppSystemNoticeType.COURSE_UPDATE_NOTICE, |
| | | "课程更新通知", |
| | | "测试课程 已更新新章节", |
| | | true); |
| | | "HEALTH_COURSE_VIDEO", |
| | | videoId, |
| | | true, |
| | | payload); |
| | | } |
| | | |
| | | /** |
| | |
| | | String noticeTypeCode, |
| | | String title, |
| | | String content, |
| | | boolean requireUserSetting) { |
| | | Long referenceId = System.currentTimeMillis(); |
| | | String referenceType, |
| | | Long referenceId, |
| | | boolean requireUserSetting, |
| | | Map<String, String> payload) { |
| | | AppSystemNoticeDispatchCommand command = new AppSystemNoticeDispatchCommand(); |
| | | command.setAppUserId(request.getAppUserId()); |
| | | command.setNoticeTypeCode(noticeTypeCode); |
| | | command.setTitle(title); |
| | | command.setContent(content); |
| | | command.setReferenceType("MANUAL_TEST_" + noticeTypeCode); |
| | | command.setReferenceType(referenceType); |
| | | command.setReferenceId(referenceId); |
| | | command.setRequireUserSetting(requireUserSetting); |
| | | command.setPayload(buildManualNoticePayload(request.getAppUserId(), noticeTypeCode, referenceId)); |
| | | command.setPayload(payload); |
| | | AppSystemNotice notice = appSystemNoticeDispatchService.createAndPush(command); |
| | | return toNoticePushVO(notice); |
| | | } |
| | | |
| | | /** |
| | | * 构造手动通知测试透传参数,便于APP端区分联调消息。 |
| | | */ |
| | | private Map<String, String> buildManualNoticePayload(Long appUserId, String noticeTypeCode, Long referenceId) { |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("scene", MANUAL_NOTICE_TEST_SCENE); |
| | | payload.put("noticeTypeCode", noticeTypeCode); |
| | | payload.put("appUserId", String.valueOf(appUserId)); |
| | | payload.put("referenceId", String.valueOf(referenceId)); |
| | | return payload; |
| | | } |
| | | |
| | | /** |