package shop.alien.store.annotation;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import shop.alien.store.enums.OperationType;

import java.lang.annotation.*;

/**
 * 操作日志注解
 *
 * @author ssk
 * @since 2025-12-09
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ChangeRecordLog  {

    /**
     * 操作模块
     */
    String module() default "";

    /**
     * 操作类型
     */
    OperationType type() default OperationType.OTHER;

    /**
     * 操作描述（支持SpEL表达式，如："导入了excel文件,文件名#{fileName},共#{count}条数据"）
     */
    String content() default "";

    /**
     * 是否记录修改前的数据（自動從方法參數中提取ID並查詢原始數據）
     */
    boolean recordBefore() default false;

    /**
     * ID字段名稱（默認為"id"，如果參數對象中的ID字段名不同，可指定）
     */
    String idField() default "id";

    /**
     * ID參數名稱（默認為空，如果方法參數中ID參數的名稱不是"id"，可指定，如："holidayId"、"userId"等）
     * 如果指定了此參數，會優先從方法參數中按名稱查找ID值
     */
    String idParam() default "";

    /**
     * 是否记录修改后的数据
     */
    boolean recordAfter() default true;

    /**
     * Mapper类（用于查询修改前的数据，如果不指定则从Spring容器中查找）
     */
    Class<? extends BaseMapper> mapper() default BaseMapper.class;
}

