package com.gxwebsoft.app.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.app.entity.AppEvent;
import com.gxwebsoft.app.param.AppEventParam;

import java.util.List;

/**
 * 应用操作动态Service
 *
 * @author 科技小王子
 * @since 2026-03-28 21:29:44
 */
public interface AppEventService extends IService<AppEvent> {

    /**
     * 分页关联查询
     */
    PageResult<AppEvent> pageRel(AppEventParam param);

    /**
     * 关联查询全部
     */
    List<AppEvent> listRel(AppEventParam param);

    /**
     * 根据id查询
     */
    AppEvent getByIdRel(Integer id);

    /**
     * 记录应用事件（便捷方法，供其他模块调用）
     *
     * @param websiteId  应用ID
     * @param eventType  事件类型（created/published/updated/domain_bound/member_added/status_changed 等）
     * @param title      事件标题
     * @param content    详细描述
     * @param operatorId 操作人用户ID
     * @param operatorName 操作人名称
     * @param refId      关联记录ID（如版本ID）
     * @param refType    关联记录类型
     */
    void logEvent(Long websiteId, String eventType, String title, String content,
                  Long operatorId, String operatorName, Long refId, String refType);

    /**
     * 快捷记录事件（无关联记录）
     */
    void logEvent(Long websiteId, String eventType, String title, Long operatorId, String operatorName);

    /**
     * 获取指定应用的最新一条事件（用于卡片"最新动态"展示）
     *
     * @param websiteId 应用ID
     */
    AppEvent getLatestEvent(Long websiteId);

}
