package com.haha.entity.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 签到提交DTO
 */
@Data
public class CheckinSubmitDTO {

    /**
     * 签到类型：inventory_tally-理货盘点签到，delivery_replenish-补货确认签到
     */
    @NotBlank(message = "签到类型不能为空")
    private String type;

    /**
     * 关联门店ID
     */
    private Long shopId;

    /**
     * 关联设备ID
     */
    private String deviceId;

    /**
     * 位置信息
     */
    @NotNull(message = "位置信息不能为空")
    private LocationDTO location;

    /**
     * 签到照片列表
     */
    @NotNull(message = "签到照片不能为空")
    private List<PhotoDTO> photos;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 离线ID（离线签到时生成）
     */
    private String offlineId;

    /**
     * 位置信息DTO
     */
    @Data
    public static class LocationDTO {
        /**
         * 纬度
         */
        @NotNull(message = "纬度不能为空")
        private BigDecimal latitude;

        /**
         * 经度
         */
        @NotNull(message = "经度不能为空")
        private BigDecimal longitude;

        /**
         * 地址
         */
        @NotBlank(message = "地址不能为空")
        private String address;

        /**
         * 精度（米）
         */
        private Integer accuracy;
    }

    /**
     * 照片DTO
     */
    @Data
    public static class PhotoDTO {
        /**
         * 照片ID
         */
        private String id;

        /**
         * 照片OSS链接
         */
        @NotBlank(message = "照片链接不能为空")
        private String path;

        /**
         * 水印照片OSS链接
         */
        private String watermarkPath;

        /**
         * 拍摄时间戳
         */
        private Long timestamp;
    }
}
