# 项目相关配置
ruoyi:
  # 名称
  name: zzyl
  # 版本
  version: 3.8.8
  # 版权年份
  copyrightYear: 2024
  # 文件路径 示例（ Windows配置D:/ruoyi/uploadPath，Linux配置 /home/ruoyi/uploadPath）
  profile: ${RUOYI_PROFILE:/home/ruoyi/uploadPath}
  # 获取ip地址开关
  addressEnabled: false
  # 验证码类型 math 数字计算 char 字符验证
  captchaType: math

# 开发环境配置
server:
  # 服务器的HTTP端口，默认为8080
  port: 9000
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # 连接数满后的排队数，默认为100
    accept-count: 1000
    threads:
      # tomcat最大线程数，默认为200
      max: 800
      # Tomcat启动初始化的线程数，默认值10
      min-spare: 100

# 日志配置
logging:
  level:
    com.zzyl: debug
    org.springframework: warn

# 用户配置
user:
  password:
    # 密码最大错误次数
    maxRetryCount: 5
    # 密码锁定时间（默认10分钟）
    lockTime: 10

# Spring配置
# 数据源配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      # 主库数据源
      master:
        url: ${MYSQL_URL:jdbc:mysql://zzyl-mysql:3306/zzyl?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai}
        username: ${MYSQL_USERNAME:zzyl}
        password: ${MYSQL_PASSWORD:change_me_mysql_app}
      # 从库数据源
      slave:
        # 从数据源开关/默认关闭
        enabled: false
        url:
        username:
        password:
      # 初始连接数
      initialSize: 5
      # 最小连接池数量
      minIdle: 10
      # 最大连接池数量
      maxActive: 20
      # 配置获取连接等待超时的时间
      maxWait: 60000
      # 配置连接超时时间
      connectTimeout: 30000
      # 配置网络超时时间
      socketTimeout: 60000
      # 配置间隔多久才进行一次检测，检测需要关闭的空闲连接，单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间，单位是毫秒
      minEvictableIdleTimeMillis: 300000
      # 配置一个连接在池中最大生存的时间，单位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # 配置检测连接是否有效
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      webStatFilter:
        enabled: true
      statViewServlet:
        enabled: true
        # 设置白名单，不填则允许所有访问
        allow:
        url-pattern: /druid/*
        # 控制台管理用户名和密码
        login-username: ${DRUID_LOGIN_USERNAME:ruoyi}
        login-password: ${DRUID_LOGIN_PASSWORD:change_me_druid}
      filter:
        stat:
          enabled: true
          # 慢SQL记录
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: true
        wall:
          config:
            multi-statement-allow: true
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  # profiles:
  #   active: druid
  # 文件上传
  servlet:
    multipart:
      # 单个文件大小
      max-file-size: 10MB
      # 设置总上传的文件大小
      max-request-size: 20MB
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true
  # redis 配置
  redis:
    # 地址
    host: ${REDIS_HOST:zzyl-redis}
    # 端口，默认为6379
    port: ${REDIS_PORT:6379}
    # 数据库索引
    database: ${REDIS_DATABASE:2}
    # 密码
    password: ${REDIS_PASSWORD:change_me_redis}
    # 连接超时时间
    timeout: 10s
    lettuce:
      pool:
        # 连接池中的最小空闲连接
        min-idle: 0
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池的最大数据库连接数
        max-active: 8
        # #连接池最大阻塞等待时间（使用负值表示没有限制）
        max-wait: -1ms

# token配置
token:
  # 令牌自定义标识
  header: Authorization
  # 令牌密钥
  secret: ${TOKEN_SECRET:change_me_token_secret}
  # 令牌有效期（默认3600秒，即1小时）
  expireTime: ${TOKEN_EXPIRE_TIME:3600}

# MyBatisPlus配置
mybatis-plus:
  # 搜索指定包别名
  typeAliasesPackage: com.zzyl.**.domain
  # 配置mapper的扫描，找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 全局配置
  global-config:
    db-config:
      id-type: auto   #id生成策略为自增
  configuration:
    map-underscore-to-camel-case: true    #字段与属性，自动转换为驼峰命名

# PageHelper分页插件
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true
  params: count=countSql

# Swagger配置
swagger:
  # 是否开启swagger
  enabled: true
  # 请求前缀
  pathMapping: /dev-api

# 防止XSS攻击
xss:
  # 过滤开关
  enabled: true
  # 排除链接（多个用逗号分隔）
  excludes: /system/notice
  # 匹配链接
  urlPatterns: /system/*,/monitor/*,/tool/*

# 阿里云OSS相关配置
aliyun:
  oss:
    domain: ${ALIYUN_OSS_DOMAIN:oss-cn-hangzhou.aliyuncs.com}
    endpoint: ${ALIYUN_OSS_ENDPOINT:https://oss-cn-hangzhou.aliyuncs.com}
    bucket-name: ${ALIYUN_OSS_BUCKET:change-me-bucket}
    region: ${ALIYUN_OSS_REGION:cn-hangzhou}
    accessKeyId: ${ALIYUN_OSS_ACCESS_KEY_ID:change_me_oss_key}
    secretAccessKey: ${ALIYUN_OSS_SECRET_ACCESS_KEY:change_me_oss_secret}

dept:
  nursingId: ${DEPT_NURSING_ID:201}

# 百度千帆大模型配置
baidu:
  accessKey: ${BAIDU_ACCESS_KEY:change_me_baidu_key}
  secretKey: ${BAIDU_SECRET_KEY:change_me_baidu_secret}
  qianfanModel: ${BAIDU_QIANFAN_MODEL:ERNIE-4.0-8K}

wechat:
  mini-program:
    appId: ${WECHAT_MINI_PROGRAM_APP_ID:change_me_wechat_appid}
    secret: ${WECHAT_MINI_PROGRAM_SECRET:change_me_wechat_secret}

huaweicloud:
  ak: ${HUAWEI_CLOUD_AK:change_me_huawei_ak}
  sk: ${HUAWEI_CLOUD_SK:change_me_huawei_sk}
  regionId: ${HUAWEI_CLOUD_REGION_ID:cn-east-3}
  endpoint: ${HUAWEI_CLOUD_ENDPOINT:change_me_huawei_endpoint}
  projectId: ${HUAWEI_CLOUD_PROJECT_ID:change_me_huawei_project_id}
  host: ${HUAWEI_CLOUD_AMQP_HOST:change_me_huawei_amqp_host}
  accessKey: ${HUAWEI_CLOUD_AMQP_ACCESS_KEY:change_me_huawei_amqp_access_key}
  accessCode: ${HUAWEI_CLOUD_AMQP_ACCESS_CODE:change_me_huawei_amqp_access_code}
  queueName: ${HUAWEI_CLOUD_AMQP_QUEUE_NAME:DefaultQueue}
