diff --git a/src/main/java/cn/xf/basedemo/config/SwaggerGroupApi.java b/src/main/java/cn/xf/basedemo/config/SwaggerGroupApi.java new file mode 100644 index 0000000..7648d59 --- /dev/null +++ b/src/main/java/cn/xf/basedemo/config/SwaggerGroupApi.java @@ -0,0 +1,42 @@ +package cn.xf.basedemo.config; + +import io.swagger.v3.oas.models.ExternalDocumentation; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +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.stereotype.Component; + +/** + * packageName cn.xf.basedemo.config + * @author remaindertime + * @className SwaggerGroupApi + * @date 2024/12/9 + * @description swagger分组配置 + */ +@Component +public class SwaggerGroupApi { + + @Bean + public OpenAPI springShopOpenAPI() { + return new OpenAPI() + .info(new Info().title("Spring boot脚手架 API") + .description("开箱即用的Spring boot脚手架 API") + .version("v0.0.1") + .contact(new Contact().name("remaindertime").url("https://blog.csdn.net/qq_39818325")) + .license(new License().name("Apache 2.0").url("http://springdoc.org"))) + .externalDocs(new ExternalDocumentation() + .description("Spring boot脚手架 Wiki Documentation") + .url("https://springshop.wiki.github.org/docs")); + } + + @Bean + public GroupedOpenApi publicApi() { + return GroupedOpenApi.builder() + .group("用戶相关分组") + .pathsToMatch("/user/**") + .build(); + } +} diff --git a/src/main/java/cn/xf/basedemo/controller/business/UserController.java b/src/main/java/cn/xf/basedemo/controller/business/UserController.java index e3a8f49..96f71b1 100644 --- a/src/main/java/cn/xf/basedemo/controller/business/UserController.java +++ b/src/main/java/cn/xf/basedemo/controller/business/UserController.java @@ -6,6 +6,9 @@ import cn.xf.basedemo.interceptor.SessionContext; import cn.xf.basedemo.model.res.LoginInfoRes; import cn.xf.basedemo.service.UserService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springdoc.core.annotations.RouterOperations; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -21,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController; **/ @RestController(value = "用户控制器") @RequestMapping("/user") +@Tag(name = "用户控制器") public class UserController { @Autowired diff --git a/src/main/java/cn/xf/basedemo/interceptor/TokenInterceptor.java b/src/main/java/cn/xf/basedemo/interceptor/TokenInterceptor.java index 681e54e..dc74858 100644 --- a/src/main/java/cn/xf/basedemo/interceptor/TokenInterceptor.java +++ b/src/main/java/cn/xf/basedemo/interceptor/TokenInterceptor.java @@ -32,13 +32,15 @@ public class TokenInterceptor implements HandlerInterceptor { //不拦截的请求列表 - private static final List EXCLUDE_PATH_LIST = Arrays.asList("/user/login", "/web/login"); + private static final List EXCLUDE_PATH_LIST = Arrays.asList("/user/login", "/web/login","/swagger-ui.html","/v3/api-docs","/swagger-ui/index.html"); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); - if (EXCLUDE_PATH_LIST.contains(requestURI)) { + if (EXCLUDE_PATH_LIST.contains(requestURI) || + requestURI.contains("/swagger-ui") || + requestURI.contains("/v3/api-docs")) { return true; } //登录处理 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index c33bd77..7f1bc7b 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,4 +1,11 @@ #spring: +# cloud: +# nacos: +# discovery: +# server-addr: 0.0.0.0:8848 +# namespace: 34f368d5-a6c6-4f57-a80a-5402de295695 +# username: +# password: # datasource: # dynamic: # primary: master @@ -10,129 +17,33 @@ # connection-test-query: SELECT 1 # datasource: # master: #${SERVER_ADDRESS} -# url: jdbc:mysql://9.9.9.9:3307/xf-boot-base?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai -# username: +# url: jdbc:mysql://0.0.0.0:3307/xf-boot-base?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai +# username: root # password: # driver-class-name: com.mysql.cj.jdbc.Driver # slave: -# url: jdbc:mysql://9.9.9.9:3307/xf-boot-base?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai -# username: +# url: jdbc:mysql://0.0.0.0:3307/xf-boot-base?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai +# username: root # password: # driver-class-name: com.mysql.cj.jdbc.Driver # data: # redis: -# port: 6379 #Redis服务器连接的端口 -# host: 9.9.9.9 # Redis服务器的地址 -# password: # Redis服务器连接密码(默认为空) -# timeout: 5000 # 连接超时时间(毫秒) +# port: 6379 +# host: 0.0.0.0 +# password: 123456 +# timeout: 5000 # lettuce: #参考博客 https://blog.csdn.net/weixin_43944305/article/details/124322595 # pool: -# maxActive: 5000 #最大连接数 -# maxIdle: 30 #连接池最大空闲连接数. -# minIdle: 5 #连接池最小空闲连接数. -# max-wait: 2000 #从连接池中获取连接时的最大等待时间 -# time-between-eviction-runs: 60s #空闲对象逐出器线程的运行间隔时间.空闲连接线程释放周期时间. +# maxActive: 5000 +# maxIdle: 30 +# minIdle: 5 +# max-wait: 2000 +# time-between-eviction-runs: 60s # cluster: # refresh: -# adaptive: true #拓扑动态感应即客户端能够根据 redis cluster 集群的变化,动态改变客户端的节点情况,完成故障转移。 -# period: 60s #刷新redis集群状态周期时间 +# adaptive: true +# period: 60s # #global: # rsaPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC_F5UQC1QWsu3QsESQBz9M-GDA9Atm0qVSvwIsy568lyRLi-nq3VvvnmgrlL4yTbngFzyfb2Dn35cNCHsBvIaGuCY3_PpzPqMzVpxr2QlEkhEX9atnJQ1rWexS8QeZtPjpiIwoQrChTzXjD_sYUkDrqSykFplyivf0NSO2WqCBdwIDAQAB # rsaPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL8XlRALVBay7dCwRJAHP0z4YMD0C2bSpVK_AizLnryXJEuL6erdW--eaCuUvjJNueAXPJ9vYOfflw0IewG8hoa4Jjf8-nM-ozNWnGvZCUSSERf1q2clDWtZ7FLxB5m0-OmIjChCsKFPNeMP-xhSQOupLKQWmXKK9_Q1I7ZaoIF3AgMBAAECgYBxTUA61Ry0oL7U_86HP2TO9G4ZuhmQi9EucMaPXOPvmgYRLRIzCbDbMKc_P-BN3zwYnG57cgSZNz9OoPqeGvP_oVTnkoEpVkCSV-JP2p_DK09LdbDqszJXMrxAkPmWGUw8IRMcTJT1xJJcgzFE6T0CmTo-Vk47AnmqfJD4U6o74QJBAPRjVUJKZnrMSnSqKPDL2ThgTo8h7-KFxl_Z-g724lTOFiCmBpi6nCWAcuacFRrrYqxF-r9c4zdIyR7AvLROql8CQQDIK_kRF52dVtwShciZhyeUBLoi0nWV9F8mMGt60NTEER9zPEgPsv2aVn8h97KMWOwmd2Da4EPm25QxOuaKQC_pAkBczcfXp5co9KElkmR_pHl1jiTm97U3qSM-zPDHc_tYxvXiKgoBP4QCPbfkWMsu8MoEr4Jb3vMt0EcHlZtTQTgzAkAfmNla-lhV4sUgY1_T5EK6GbjsED6hag6u74u3ukkrnexR-10ApWdkumydBwV3I_464DM4uZfeVCDjWIHVpuYpAkEA6QLPztGD4V8Q1PqTEeSF3i68CKPM8vO1_mCH2JD7qsqDQcIKkczj5rTg7hlOKwB9V6gSw4CbnOF6moTooRD-cQ - -#redis -#redis: -# datasource: -# token: -# database: 1 -# host: 122.112.153.128 -# port: 6379 -# password: 'redis' -# lettuce: -# pool: -# max-active: 8 -# max-wait: -1ms -# max-idle: 8 -# min-idle: 0 -# timeout: 3000ms - -#oss: -# name: alioss -# endpoint: ll-oss-pre.lianlianlvyou.com -# accessKey: -# secretKey: -# bucketName: -# args: -# expireTime: 3600 #过期时间 -# contentLengthRange: 2000 #大小限制 -#oss: -# name: alioss -# endpoint: ll-oss-pre.lianlianlvyou.com -# accessKey: -# secretKey: -# bucketName: -# args: -# expireTime: 3600 #过期时间 -# contentLengthRange: 2000 #大小限制 -# redis分布式锁 -#redisson: -# enabled: true -# address: 'redis://192.168.10.113:6379' -# password: '123456' -# database: 5 -# connectionPoolSize: 4 -# connectionMinimumIdleSize: 4 -# -## 阿里云rocketmq -#aliyun: -# rocketmq: -# config: -# AccessKey: 1 -# SecretKey: 1 -# NAMESRV_ADDR: 1 -# GROUP_ID: 1 -# producer: -# enabled: true -# -#rabbitmq: -# configs: -# order: #实例名称 -# host: 192.168.10.111 -# port: 5672 -# virtualHost: ll-dev -# username: zhangziheng -# password: zhangziheng -# producer: -# enabled: true -# exchange: order_status -# routingKey: ORDER_COMPLETE -# confirmCallback: orderMqConfirmCallback -# commonChange: -# host: 192.168.10.111 -# port: 5672 -# virtualHost: ll-dev -# username: zhangziheng -# password: zhangziheng -# producer: -# enabled: false -# consumer: -# enabled: true -# subscribeList: -# - queue: 'app-business' -# messageListener: commonChangeMessageListener - -#应用可以默认使用的配置文件 -#global: -# testCofnig: "aaa" -# tokenSecret: '12435twefdsfsdt4tsdcqw43tregdsgd' -# tokenExpire: 14400 #10天 -# smsMqTopic: 'topic_msg' -# smsMqTag: 'tag-sms' -# rsaPrivateKey: 'MIIEpQIBAAKCAQEAuAltXJI4kMQkucWCeLGK4Zyqw7VUp1JYS1GkJb0eJKCgxqJBzwjl8XpStA1hCv9BEX6SEsm/d2T6SDo+G6ySpfV0RQeZ7v32kE9+Eh0BK1Q8wU91nCa1CM9yfBhKXsQ3DKq2am5oLryNWXdKLXZPgoJbuIONG2G4oKakwUMX3aASp3Cj3rNXLea8ilXjFZ+OEp0DuZ4CsasO1MTaBS84mJhnzRNbuhHq5qyrVI02jw7Fim8siIBsmDDHgBd4l9hj6KAAr0jf9JOHaOp+KxfH76taqqaXI5lZIPG7lCP65iBuNNEqDSc21abcPhgvgK5K4xj9p5sG+V1FBISCE0dPrQIDAQABAoIBAG6dg/UTEhq5OhXKyDwBAqfOgbk2IVacoONMg+wG+rorLdeWKRXmlEcLLfB45i409Agu2l+ekY2SzPhiwXfixxYnLSZchkJmtS9SCEWc11oSvJ24Q8mCXmeYQIikFPdW2nurlA7uo4IL5K20jIo8xVd9QOHreAHQP6eX4gkjaZHUIOSJ2P6iffEQCHbXehoyCoTMLdK+1HTuZdO4C9r/S9f/Y1kLWfV5ogEi0DHJpUy37npinfqPp0LHbgpK2WBPOkQIhKvi/4OQ71EcYR5gyrA7nR+rQyPHdhFzTTyfTNTgmuNFuAYJODN5yd62RQd8i6chMx63tYDoYhCjI/ixv8UCgYEA9S1JTacLrFQP+2ryHnn6A3JOhbzj1Y552Nc1XixI9aJMxxCJGI0PvmzDb46BSLfoOz4yaqL1lBS2vyX4tc1rKL82JiokZhDlnFNS0yQgR03484BGPJ3D1+tTWQV0cXyq0nYOI+m9vPBciI1Lw07tJ5ZqJbTabtcu2aq8WrKMuFsCgYEAwCk0WB5TTQJQgjuuFXT/GU4cIl8/Pa3IgF7Ccd1WVkFr9uI6vBpToN+0i1zAb83Ss9maD3eH1Na/7GiKwzZOJj8Yas6b1UsbcHZA1Yt+cI2WUZf8L8QVYJrUtIkbKbG+jdg/KjjZt8mAO8IcXivUhfmj8XUIBClYCezEZmSIVpcCgYEAupHWmUfHo0Bo1QqB6l0pupuuUyj1OxprcG38B4itkHYL9OOJX+xgEalUYzzO9tYz23kuBmWxeRj2I6kyhK4noF85RnuFLUIoZ/gkK9Xu1jPogOuZByGK2XETAMgc3wteNj9t7Tg+kVtbHvJet+YEo75bUgw4uGX5GdxJ7r62RMcCgYEAgJfSaJm6oxFGcTCg+cj2oaeM2k+lEZCHWaiQNQSqr0ROjMOuDI0No92wg4aJXQh+1U5sc6dI5dzkSL9ZBPQFbkDRBUDINf9yGFt6Xa1g6s9FZcrwv8JXj/NtHneWDtvcqi2pb4bl48DbqKHou/hW22VJGd94gthsCxBACkmCl3cCgYEAp2/KJrDnLwAr4h6SVCufRRuNkZSRI+XITkE4xyQ/UDeL+iwCbX38Jcqa2lxCAXCLk++1xilSF/sJbBVkiDorBU9CC0tI5tPJFfHQodbePx1C0SQE8e0F+wtaeR9Z5m5KzHNs2Gciqw+2nJPU9uFQjUfGdXuIZF2bBvtXBWH+Prk=' -# rsaPublickey: 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuAltXJI4kMQkucWCeLGK4Zyqw7VUp1JYS1GkJb0eJKCgxqJBzwjl8XpStA1hCv9BEX6SEsm/d2T6SDo+G6ySpfV0RQeZ7v32kE9+Eh0BK1Q8wU91nCa1CM9yfBhKXsQ3DKq2am5oLryNWXdKLXZPgoJbuIONG2G4oKakwUMX3aASp3Cj3rNXLea8ilXjFZ+OEp0DuZ4CsasO1MTaBS84mJhnzRNbuhHq5qyrVI02jw7Fim8siIBsmDDHgBd4l9hj6KAAr0jf9JOHaOp+KxfH76taqqaXI5lZIPG7lCP65iBuNNEqDSc21abcPhgvgK5K4xj9p5sG+V1FBISCE0dPrQIDAQAB' -# appDowloadUrl: 'http://llzby.cn/s/E9TTlQrJ' -# pcAccessUrl: 'http://llzby.cn/s/E9TTlQrJ' -# customServiceUrl: 'https://chaten.soboten.com/chat/h5/v2/index.html?sysnum=caf21f78c499463fbb54077f5c4a8efd&channelid=13&source=1&groupid=d16ef9bdcf3b46dc9726bbb00a7ee45b&partnerid=' #智齿客服 + biz_userId -# - diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6660710..470db78 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -55,6 +55,6 @@ management: show-details: always # 日志设置 -logging: - level: - root: \ No newline at end of file +#logging: +# level: +# root: DEBUG \ No newline at end of file diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index aa2775d..749f4c5 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -9,10 +9,5 @@ spring: file-extension: yml namespace: 34f368d5-a6c6-4f57-a80a-5402de295695 group: DEFAULT_GROUP - username: - password: - discovery: - server-addr: 9.9.9.9:9 - namespace: 34f368d5-a6c6-4f57-a80a-5402de295695 - username: - password: + username: nacos + password: \ No newline at end of file