/*
 * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
 *
 * https://www.mall4j.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */

package com.yami.shop.sys.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;

/**
 * SysConfig类用于表示系统配置信息的实体模型。
 * 在整个系统中，它承载了各项配置相关的数据，例如不同功能模块对应的参数名、参数值以及相应的备注信息等，
 * 通过该实体类可以方便地与数据库中的“tz_sys_config”表进行交互，实现配置信息的持久化存储和读取操作。
 * 
 * @author lanhai
 */
@Data
@TableName("tz_sys_config")
public class SysConfig {

    /**
     * 系统配置信息的唯一标识符，对应数据库表“tz_sys_config”中的主键字段。
     * 通过MyBatis Plus的@TableId注解进行标识，用于在数据库操作中准确地定位和操作具体的某条配置记录。
     */
    @TableId
    private Long id;

    /**
     * 参数名，用于唯一标识一个具体的系统配置项。
     * 例如，可能存在“system.theme.color”这样的参数名来表示系统主题颜色相关的配置。
     * 使用@NotBlank注解进行约束，意味着该参数名不能为空字符串，确保每个配置项都有明确的标识，
     * 如果在进行数据校验（如表单提交等涉及配置信息更新场景）时参数名为空，将会触发相应的验证错误提示。
     */
    @NotBlank(message = "参数名不能为空")
    private String paramKey;

    /**
     * 参数值，对应具体配置项的实际取值。
     * 继续以上面的例子来说，如果“system.theme.color”是参数名，那“#FFFFFF”（白色）就可能是其对应的参数值，
     * 同样通过@NotBlank注解约束其不能为空，保证每个配置项都有有效的取值，否则也会在验证环节报错。
     */
    @NotBlank(message = "参数值不能为空")
    private String paramValue;

    /**
     * 备注信息，用于对该系统配置项进行额外的说明解释。
     * 比如可以描述该配置项的用途、适用场景、修改注意事项等内容，方便开发人员、运维人员等理解配置项的相关情况，
     * 它是一个可选的字段，允许为空字符串，表示没有备注内容。
     */
    private String remark;

}