zjk
2026-09-29 54dcf0a82e7490fa58b1c056d5c0b9cb739c2931
tcm-training-admin-backend/src/main/java/com/tcm/training/admin/system/service/JpushManualPushAppService.java
@@ -9,6 +9,8 @@
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;
@@ -21,7 +23,6 @@
    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;
@@ -58,55 +59,116 @@
     * 生成会员到期提醒测试通知并尝试极光推送。
     */
    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);
    }
    /**
@@ -116,31 +178,21 @@
                                             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;
    }
    /**