package com.sqx.modules.member.query;

import cn.hutool.core.util.StrUtil;
import com.sqx.common.query.PageQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 特殊照顾学生查询参数
 * @author codingliang
 * @date 2025-11-12
 */
@Data
@ApiModel("特殊照顾学生查询参数")
public class SpecialFavorStudentQuery extends PageQuery {

    @ApiModelProperty("真实姓名")
    private String name;

    @ApiModelProperty("学号")
    private String studentNumber;

    @ApiModelProperty("验证状态;0未认证、1已认证")
    private String verifyStatus;

    @ApiModelProperty("查询认证开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    @ApiModelProperty("查询认证结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 拼接查询条件字符串
     * @return 拼接后的查询条件字符串
     */
    public String buildQueryConditionString() {
        StringBuilder conditionBuilder = new StringBuilder();

        // 拼接真实姓名条件
        if (StrUtil.isNotBlank(this.name)) {
            conditionBuilder.append("真实姓名: ").append(this.name).append("，");
        }

        // 拼接学号条件
        if (StrUtil.isNotBlank(this.studentNumber)) {
            conditionBuilder.append("学号: ").append(this.studentNumber).append("，");
        }

        // 拼接验证状态条件（转换为中文）
        if (StrUtil.isNotBlank(this.verifyStatus)) {
            String verifyStatusText = "1".equals(this.verifyStatus) ? "已验证" : "未验证";
            conditionBuilder.append("验证状态: ").append(verifyStatusText).append("，");
        }

        // 拼接认证开始时间条件
        if (this.startTime != null) {
            conditionBuilder.append("认证开始时间: ")
                    .append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime))
                    .append("，");
        }

        // 拼接认证结束时间条件
        if (this.endTime != null) {
            conditionBuilder.append("认证结束时间: ")
                    .append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime))
                    .append("，");
        }

        // 拼接分页信息
        conditionBuilder.append("当前页码: ").append(getPage())
                .append("，每页条数: ").append(getLimit());

        return conditionBuilder.toString();
    }
}
