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

package com.yami.shop.admin.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Swagger文档相关配置类，此类用于配置Swagger在项目中的相关信息展示以及接口分组等内容，
 * 并且只有在测试环境才会使用Swagger来查看接口文档相关信息。
 * @author LGH
 */
@Configuration
public class SwaggerConfiguration {

    /**
     * 配置基础的Rest API分组信息，用于定义一组接口，方便在Swagger界面中进行归类展示。
     * 这里指定了接口分组的名称为"接口文档"，并且设置了要扫描的包路径为"com.yami"，
     * 这样在该包及其子包下的接口将会被纳入到这个分组中进行展示。
     * @return 返回配置好的GroupedOpenApi对象，代表了一组接口的配置信息。
     */
    @Bean
    public GroupedOpenApi baseRestApi() {
        return GroupedOpenApi.builder()
               .group("接口文档")
               .packagesToScan("com.yami")
               .build();
    }


    /**
     * 配置整个Spring Shop项目的OpenAPI信息，包括接口文档的标题、描述、版本以及使用的授权协议等相关内容。
     * 这些信息将会展示在Swagger的主页面上，方便使用者了解接口文档的基本情况以及遵循的授权规则等。
     * @return 返回配置好的OpenAPI对象，包含了完整的接口文档元数据信息。
     */
    @Bean
    public OpenAPI springShopOpenApi() {
        return new OpenAPI()
               .info(new Info().title("Mall4j接口文档")
                       .description("Mall4j接口文档，openapi3.0 接口，用于前端对接")
                       .version("v0.0.1")
                       .license(new License().name("使用请遵守AGPL3.0授权协议").url("https://www.mall4j.com")));
    }
}