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

package com.yami.shop.common.config;

import com.yami.shop.common.bean.AliDaYu;
import com.yami.shop.common.bean.ImgUpload;
import com.yami.shop.common.bean.Qiniu;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * 该类作为商城配置文件相关的实体类，用于绑定配置文件中的各项配置信息到对应的属性上，方便在整个项目中获取和使用商城相关的配置参数，
 * 通过使用 Spring 的相关注解（@Component、@ConfigurationProperties、@PropertySource），可以将配置文件中的配置值自动注入到这些属性中，
 * 使得项目中的不同模块能够方便地获取如七牛云配置、阿里大鱼短信平台配置、加解密 token 的密钥以及本地文件上传配置等信息，实现配置的统一管理和灵活使用。
 *
 * @author lgh
 */
@Data
@Component
@PropertySource("classpath:shop.properties")
@ConfigurationProperties(prefix = "shop")
public class ShopBasicConfig {

    /**
     * 用于存储七牛云的配置信息的属性，七牛云可能用于文件存储、图片上传等功能，其配置信息包含诸如访问密钥、存储区域等内容，
     * 通过此属性可以在项目中方便地获取七牛云相关配置，以便与七牛云服务进行集成，实现文件上传、管理等操作。
     */
    private Qiniu qiniu;

    /**
     * 用于存储阿里大鱼短信平台相关配置信息的属性，阿里大鱼短信平台可用于向用户发送短信通知、验证码等功能，
     * 其配置信息包含访问密钥 ID、访问密钥秘密、短信签名等内容，通过该属性能够获取相应配置，进而调用阿里大鱼的短信服务接口来发送短信。
     */
    private AliDaYu aLiDaYu;

    /**
     * 用于存储加解密 token 的密钥信息的属性，在涉及用户认证、授权等场景中，token 常用于传递用户身份信息，
     * 为了保证 token 的安全性，可能会使用此密钥进行加密和解密操作，该属性保存的密钥值会在相关的加密解密逻辑中被使用。
     */
    private String tokenAesKey;

    /**
     * 用于存储本地文件上传配置信息的属性，本地文件上传配置可能涉及到文件存储路径、文件大小限制、允许的文件类型等相关参数，
     * 通过这个属性可以获取相应配置，从而在进行本地文件上传功能实现时，按照配置要求来处理文件上传的各种逻辑，确保文件上传操作符合业务需求。
     */
    private ImgUpload imgUpload;
}