package com.seer.teach.mp.app.service;

import com.seer.teach.common.PageListBean;
import com.seer.teach.mp.app.controller.req.ActivityFormSubmitReq;
import com.seer.teach.mp.app.controller.req.AppActivityFormExecutionQueryReq;
import com.seer.teach.mp.app.controller.resp.AppActivityFormExecutionResp;
import com.seer.teach.mp.app.controller.resp.AppActivityFormResp;
import com.seer.teach.mp.app.controller.resp.AppActivityFormFieldResp;

import java.util.List;

/**
 * <p>
 * APP端活动表单服务接口
 * </p>
 *
 * @author Lingma
 * @since 2026-01-10
 */
public interface IAppActivityFormService {

    /**
     * 根据活动ID获取表单模板
     *
     * @param activityId 活动ID
     * @return 表单模板响应对象
     */
    AppActivityFormResp getFormByActivity(Integer activityId);

    /**
     * 根据模板ID获取字段列表
     *
     * @param templateId 模板ID
     * @return 字段列表
     */
    List<AppActivityFormFieldResp> getFieldListByTemplate(Integer templateId);

    /**
     * 提交表单
     *
     * @param req 表单提交请求
     * @param userId 用户ID
     * @return 执行编号
     */
    String submitForm(ActivityFormSubmitReq req, Integer userId);
    
    /**
     * 根据执行ID获取完整表单数据
     *
     * @param executionId 执行ID
     * @return 完整表单数据
     */
    AppActivityFormExecutionResp getExecutionWithFormData(Integer executionId);
    
    /**
     * 根据查询条件获取执行列表
     *
     * @param query 查询条件
     * @param userId 用户ID
     * @return 执行记录分页列表
     */
    PageListBean<AppActivityFormExecutionResp> getExecutionList(AppActivityFormExecutionQueryReq query, Integer userId);
}