package com.bohuikeji.frame.module.admin.config;

import com.bohuikeji.frame.module.admin.annotation.ApiClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

import java.util.logging.Logger;

/**
 * 接口文档Swagger2配置
 * @author 10552
 */
@Configuration
@EnableSwagger2WebMvc
public class RanchSwaggerConfiguration {
    @Order
    @Bean("RanchApi")
    public Docket ranchApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getApiInfo()).groupName("Ranch框架接口")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.bohuikeji.frame.module.admin.controller.api").and(RequestHandlerSelectors.withClassAnnotation(ApiClass.class)))
                .paths(PathSelectors.any())
                .build()
                .ignoredParameterTypes(Logger.class);
    }
    public static ApiInfo getApiInfo() {
        return new ApiInfoBuilder()
                .title("同城急送(二期)项目接口文档")
                .description("【说明】:除游客token请求接口外，所以接口皆需要在<font color=\"red\">请求头(header)</font>中携带有效token，包括登录接口。</br>" +
                        "具体流程为：</br>1、首次请求获取<font color=\"red\">游客token</font>,用于浏览游客数据，失效重新获取。</br>" +
                        "2、利用游客token登陆成功后得到包含用户信息的<font color=\"red\">用户token</font>，替换游客token。</br>" +
                        "3、携带token请求后台接口，解析接口返回数据，判断状态码(status)，正常为200其他皆为异常，处理方式如下。</br>"+
                        "4、异常状态码：400(业务异常，如：“密码错误”等，客户端直接打印message字段给用户即可)，410(token为空,需获取token)，411(token无效或过期,需重新获取token)，412(token权限不足,需要登陆获取用户token)，413(请求参数错误)，500(服务器内部错误,请提示客户端系统繁忙即可)，504(网关超时,客户端可尝试发起重试)</br>"+
                        "5、接口总负责人——周立武</br>" +
                        "<b>【解释】：以上状态码是指在与服务器可以连接的情况下(Http/https协议的状态码为200)，称为<font color=\"red\">业务状态码</font>，而http/https协议的状态码称为<font color=\"red\">通信响应码</font>。</b></br>"+
                        "<b>【日志】：<a href='https://os.tcjskd.com/monitor/views/log' target='_balnk'>点击查看生产环境后台实时日志</a></b></br>"+
                        "<b>【注意】：由接口文档调试功能发起的接口请求，后台仅对部分必须使用<font color=\"red\">用户token</font>的接口进行token验证，其他调试工具及客户端皆正常验证。</b></br>" +
                        "<b>【注意】：项目服务器IP、端口、项目根路径(/delivery)、单独保存，不要写死到接口地址上，生产环境会更换。</b></br>"+
                        "<b>【禁止】：禁止每次请求业务接口之前都获取一遍token，生产环境具有反爬虫策略，高频率的请求token可能导致IP被封，请本地缓存token。<b>")
                .termsOfServiceUrl("https://tcjskd.test.bhynm.net")
                .version("1.0")
                /*.contact("bohuikeji_email@163.com")*/
                .build();
            //邮政快递
            //13384889650
    }
}
