package com.tashow.cloud.systemapi.api.logger.dto;

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

/**
 * RPC 服务 - 系统操作日志 Create Request DTO
 */
@Data
public class OperateLogCreateReqDTO {

    /**
     * 链路追踪编号"
     */
    private String traceId;

    /**
     * 用户编号"
     */
    @NotNull(message = "用户编号不能为空")
    private Long userId;
    /**
     * 用户类型
     */
    @NotNull(message = "用户类型不能为空")
    private Integer userType;
    /**
     * 操作模块类型",  example = "订单
     */
    @NotEmpty(message = "操作模块类型不能为空")
    private String type;
    /**
     * 操作名",  example = "创建订单
     */
    @NotEmpty(message = "操作名不能为空")
    private String subType;
    /**
     * 操作模块业务编号"
     */
    @NotNull(message = "操作模块业务编号不能为空")
    private Long bizId;
    /**
     * 操作内容
     */
    @NotEmpty(message = "操作内容不能为空")
    private String action;
    /**
     * 拓展字段
     */
    private String extra;

    /**
     * 请求方法名"
     */
    @NotEmpty(message = "请求方法名不能为空")
    private String requestMethod;
    /**
     * 请求地址",  example = "/order/get
     */
    @NotEmpty(message = "请求地址不能为空")
    private String requestUrl;
    /**
     * 用户 IP"
     */
    @NotEmpty(message = "用户 IP 不能为空")
    private String userIp;
    /**
     * 浏览器 UserAgent"
     */
    @NotEmpty(message = "浏览器 UA 不能为空")
    private String userAgent;

}
