package com.cirle.scientific.questionnaire.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * 提交答案入参数据传输对象
 */
@Data
@ApiModel("问卷答案提交对象")
public class SubmitAnswerDTO {

    @ApiModelProperty("用户ID（即答卷人ID）")
    private String userId;

    /**
     * 提交答案处理方式
     * <p>
     * 处理方式分为两种，即同步处理和异步处理。若采用同步处理，前端提交请求可能需
     * 要很长时间才能得到响应；若采用异步处理，可立即响应提交请求结果，答案会由队
     * 列消费者进行后续处理。该参数为可选参数，若不传递该参数则默认按异步处理，如
     * 想采用同步处理方式请传递该参数的值为“false”。同步处理成功时会返回HTTP状
     * 态码201（CREATED）且无响应体内容，新添资源的地址可获取位于HTTP头中的
     * “location”的值；异步处理请求成功时会返回HTTP状态码202（ACCEPTED）且
     * 无响应体内容。
     * 另外，若服务器端项目配置中关闭了性能优化，则“异步处理”降级为“同步处理”。
     */
    @ApiModelProperty("异步提交答案（可选参数，若不传该值默认异步处理）")
    private Boolean async;

    @ApiModelProperty("答案集合")
    private List<Answer> answers;

    @Data
    public static class Answer {
        @ApiModelProperty("问题ID")
        private String questionId;

        @ApiModelProperty("选项ID（选择、判断题时传该字段）")
        private String optionId;

        @ApiModelProperty("答案文本（问答题时传该字段）")
        private String text;
    }

}
