package org.dromara.mp.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;

/**
 * 微信公众号属性绑定（wx.mp.*）
 * - useRedis：是否使用 Redis 存储 access token
 * - redisConfig：Redis 连接参数
 * - configs：多公众号配置（appid、secret、token、aesKey 以及各类回调地址）
 */
@Data
@ConfigurationProperties(prefix = "wx.mp")
public class WxMpProperties {
    /**
     * 是否使用redis存储access token
     */
    private boolean useRedis;

    /**
     * redis 配置
     */
    private RedisConfig redisConfig;
    /**
     * 多个公众号配置信息
     */
    private List<MpConfig> configs;

    @Data
    public static class RedisConfig {
        /**
         * redis服务器 主机地址
         */
        private String host;
        /**
         * redis服务器 端口号
         */
        private Integer port;
        /**
         * redis服务器 数据库索引
         */
        private Integer database;
        /**
         * redis服务器 密码
         */
        private String password;
        /**
         * redis服务器 连接超时时间
         */
        private Integer timeout;
    }

    @Data
    public static class MpConfig {
        /**
         * 设置微信公众号的appid
         */
        private String appId;

        /**
         * 设置微信公众号的app secret
         */
        private String secret;

        /**
         * 设置微信公众号的token
         */
        private String token;

        /**
         * 设置微信公众号的EncodingAESKey
         */
        private String aesKey;

        /**
         * 设置微信公众号网页授权获取用户信息回调地址
         */
        private String oauth2RedirectUrl;

        /**
         * 设置微信公众号网页应用授权登陆回调地址回调地址
         */
        private String qrConnectRedirectUrl;
    }
}
