You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vayne 6cedb8e83d
Merge branch 'master' of http://222.71.165.188:3000/yangshiqiang/NX-zhihui
3 months ago
..
jnpf-admin Merge branch 'master' of http://222.71.165.188:3000/yangshiqiang/NX-zhihui 3 months ago
jnpf-app 智慧园区 3 months ago
jnpf-example Merge branch 'master' of http://222.71.165.188:3000/yangshiqiang/NX-zhihui 3 months ago
jnpf-exception 智慧园区 3 months ago
jnpf-extend 智慧园区 3 months ago
jnpf-file 智慧园区 3 months ago
jnpf-form 智慧园区 3 months ago
jnpf-message 智慧园区 3 months ago
jnpf-oauth 智慧园区 3 months ago
jnpf-permission 智慧园区 3 months ago
jnpf-public 智慧园区 3 months ago
jnpf-scheduletask 智慧园区 3 months ago
jnpf-scm Merge branch 'master' of http://222.71.165.188:3000/yangshiqiang/NX-zhihui 3 months ago
jnpf-system 智慧园区 3 months ago
jnpf-visualdata 智慧园区 3 months ago
jnpf-visualdev 智慧园区 3 months ago
jnpf-web Merge branch 'master' of http://222.71.165.188:3000/yangshiqiang/NX-zhihui 3 months ago
jnpf-workflow 智慧园区 3 months ago
security 智慧园区 3 months ago
.gitignore 修改忽略文件 3 months ago
Dockerfile 智慧园区 3 months ago
README.md 智慧园区 3 months ago
pom.xml 文件修改 3 months ago

README.md

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

特别说明源码、JDK、MySQL、Redis等安装或存放路径禁止包含中文、空格、特殊字符等

一 技术栈

  • 主框架:Spring Boot + Spring Framework
  • 持久层框架:MyBatis-Plus
  • 数据库连接池:Alibaba Druid
  • 多数据源:Dynamic-Datasource
  • 数据库兼容: MySQL(默认)、SQLServerOraclePostgreSQL达数据库人大金仓数据库
  • 分库分表解决方案:Apache ShardingSphere
  • 权限认证框架:Sa-Token+JWT
  • 代码生成器:MyBatis-Plus-Generator
  • 模板引擎:Velocity
  • 任务调度:XXL-JOB
  • 分布式锁:Lock4j
  • JSON序列化: Jackson&Fastjson
  • 缓存数据库:Redis
  • 校验框架:Validation
  • 分布式文件存储:兼容MinIO及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等
  • 工具类框架:HutoolLombok
  • 接口文档:Knife4j
  • 项目构建:Maven

二 环境要求

2.1 开发环境

类目 版本说明或建议
电脑配置 建议开发电脑I3及以上CPU内存16G及以上
操作系统 Windows 10/11MacOS
JDK 建议使用1.8.0_281及以上版本,可使用Eclipse Temurin JDK 8Alibaba Dragonwell 8BiSheng JDK 8
Maven 3.6.3及以上版本
数据缓存 Redis 3.2.100(Windows)/4.0.x+ (Linux,Mac)  或  TongRDS 2.2.x
数据库 兼容MySQL 5.7.x/8.0.x(默认)、SQLServer 2012+Oracle 11gPostgreSQL 12+达梦数据库(DM8)人大金仓数据库(KingbaseES_V8R6)
后端开发 IDEA2020及以上版本、EclipseSpring Tool Suite
前端开发 Node.js v16.15.0(某些情况下可能需要安装 Python3)及以上版本;
Yarn v1.22.x 版本;
pnpm v8.10及以上版本;
浏览器推荐使用Chrome 90及以上版本
Visual Studio Code(简称VSCode)
移动端开发 Node.js v12/v14/v16(某些情况下可能需要安装 Python3)
HBuilder X(最新版)
文件存储 默认使用本地存储,兼容 MinIO 及多个云对象存储,如阿里云 OSS华为云 OBS七牛云 Kodo腾讯云 COS

2.2 运行环境

适用于测试或生产环境

类目 版本说明或建议
服务器配置 最低配置要求4c/16G/50G
操作系统 推荐使用Ubuntu 18.0.4及以上版本,兼容 统信UOSOpenEuler麒麟服务器版等国产信创环境;
JRE 建议使用1.8.0_281及以上版本,如Eclipse Temurin JRE 8/11/17Alibaba Dragonwell 8/11/17BiSheng JRE 8/11/17
数据缓存 Redis 4.0.x+ 或 TongRDS 2.2.x
数据库 兼容MySQL 5.7.x/8.0.x(默认)、SQLServer 2012+Oracle 11gPostgreSQL 12+达梦数据库(DM8)人大金仓数据库(KingbaseES_V8R6)
中间件(可选) 东方通 Tong-web、金蝶天燕-应用服务器AAS v10
文件存储 默认使用本地存储,兼容MinIO及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等
前端服务器 Nginx 建议使用1.18.0及以上版本  或 TongHttpServer 6.0

三 IDEA插件

  • Lombok(必须)
  • Alibaba Java Coding Guidelines
  • MybatisX

四 Maven私服配置

Apache Maven 3.6.3及以上版本
解决以下依赖无法从公共Maven仓库下载的问题

  • com.dm:DmJdbcDriver18:1.8.0
  • com.kingbase8:kingbase8-jdbc:2.0
  • dingtalk-sdk-java:taobao-sdk-java-source:1.0
  • dingtalk-sdk-java:taobao-sdk-java:1.0

打开Maven安装目录中的 conf/settings.xml 文件,
<servers></servers> 中添加如下内容

<server>
  <id>maven-releases</id>
  <username>jnpf-user</username>
  <password>HLrQ0MA%S1nE</password>
</server>

<mirrors></mirrors> 中添加

<mirror>
  <id>maven-releases</id>
  <mirrorOf>*</mirrorOf>
  <name>maven-releases</name>
  <url>https://repository.jnpfsoft.com/repository/maven-public/</url>
</mirror>

五 配套项目

项目 分支 分支Coding 说明
后端
jnpf-common v3.5.x v3.5.0-stable java基础依赖项目源码
jnpf-file-core-starter v3.5.x v3.4.3-stable 文件基础依赖项目源码
jnpf-scheduletask v3.5.x v3.5.0-stable 任务调度客户端依赖及服务端项目源码
jnpf-datareport v3.5.x v3.4.7-stable 报表后端项目源码
jnpf-file-preview v3.4.3 v3.0.0-stable 本地文档预览项目源码
前端
jnpf-web v3.5.x v3.5.0-stable 前端主项目(Vue2)源码
jnpf-web-vue3 v3.5.x v3.5.0-stable 前端主项目(Vue3)源码
jnpf-web-datascreen v3.5.x v3.5.0-stable 大屏前端项目(Vue2)源码
jnpf-web-datascreen-vue3 v3.5.x v3.5.0-stable 大屏前端项目(Vue3)源码
jnpf-web-datareport v3.4.7 v3.4.7-stable 报表前端项目源码
移动端
jnpf-app v3.5.x v3.5.0-stable 移动端项目(Vue2)源码
静态资源
jnpf-resources v3.5.x v3.5.0-stable 静态资源
数据库
jnpf-database v3.5.x v3.5.0-stable 数据库脚本或文件

六 开发环境

6.1 导入数据库脚本

以 MySQL数据库为例
字符集utf8mb4
排序规则utf8mb4_general_ci

6.1.1 创建平台数据库

在MySQL创建 jnpf_init 数据库,并将 jnpf-database/MySQL/jnpf_init.sql 以【新建查询】方式导入

6.1.2 创建系统调度数据库

在MySQL创建 jnpf_xxjob 数据库,并将 jnpf-database/MySQL/jnpf_xxjob_init.sql 以【新建查询】方式导入

6.2 导入依赖

6.2.1 基础依赖

详见 jnpf-common 项目中的 README.md 文档说明

6.2.2 文件基础依赖

详见 jnpf-file-starter 项目中的 README.md 文档说明

6.2.3 导入系统调度服务端

详见 jnpf-scheduletask 项目中的 README.md 文档说明

6.3 项目配置

打开编辑 jnpf-admin/src/main/resources/application.yml

6.3.1 指定环境配置

  • application-dev.yml  开发环境(默认)
  • application-test.yml  测试环境
  • application-preview.yml 预发布环境
  • application-pro.yml 生产环境
# application.yml第5行,可选值dev(默认)|test|pro|preview
active: dev

6.3.2 配置域名

打开编辑 jnpf-admin/src/main/resources/application.yml ,修改以下配置

  PreviewType: kkfile #文件预览方式 1.yozo 2.kkfile默认使用kkfile
  kkFileUrl: http://127.0.0.1:30090/FileServer/ #kkfile文件预览服务地址
  ApiDomain: http://127.0.0.1:30000 #后端域名(文档预览中使用)
  FrontDomain: http://127.0.0.1:3000 #前端域名(文档预览中使用)
  AppDomain: http://127.0.0.1:8080 #app/h5端域名配置(文档预览中使用)

6.3.3 数据源配置

打开编辑 jnpf-admin/src/main/resources/application-dev.yml,修改以下配置

具体配置说明参考:https://jnpfsoft.coding.net/p/jnpf-docs/wiki/2165

  datasource:
    db-type: MySQL #数据库类型(可选值 MySQL、SQLServer、Oracle、DM8、KingbaseES、PostgreSQL请严格按可选值填写)
    host: 192.168.0.213
    port: 3306
    username: root
    password: a26d27e6a6cd4538
    db-name: java_boot_test
    db-schema: #金仓达梦选填
    prepare-url: #自定义url

6.3.4 Redis配置

打开编辑 jnpf-admin/src/main/resources/application-dev.yml,修改以下配置

支持单机模式和集群模式,配置默认为单机模式

Redis单机模式

  redis:
    database: 200 #缓存库编号
    host: 192.168.0.213
    port: 6379
    password: ucfbVgZgyB0dBQdh  # 密码为空时,请将本行注释
    timeout: 3000 #超时时间(单位:秒)
    lettuce: #Lettuce为Redis的Java驱动包
      pool:
        max-active: 8 # 连接池最大连接数
        max-wait: -1ms  # 连接池最大阻塞等待时间(使用负值表示没有限制)
        min-idle: 0 # 连接池中的最小空闲连接
        max-idle: 8 # 连接池中的最大空闲连接

Redis集群模式

 redis:
   cluster:
     nodes:
       - 192.168.0.225:6380
       - 192.168.0.225:6381
       - 192.168.0.225:6382
       - 192.168.0.225:6383
       - 192.168.0.225:6384
       - 192.168.0.225:6385
   password: 123456 # 密码为空时,请将本行注释
   timeout: 3000 # 超时时间(单位:秒)
   lettuce: #Lettuce为Redis的Java驱动包
     pool:
       max-active: 8 # 连接池最大连接数
       max-wait: -1ms  # 连接池最大阻塞等待时间(使用负值表示没有限制)
       min-idle: 0 # 连接池中的最小空闲连接
       max-idle: 8 # 连接池中的最大空闲连接

6.3.5 静态资源配置

打开编辑 jnpf-admin/src/main/resources/application-dev.yml ,修改以下配置

默认使用本地存储,兼容MinIO及多个云对象存储,如阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS等

  # ===================== 文件存储配置 =====================
  file-storage: #文件存储配置,不使用的情况下可以不写
    default-platform: local-plus-1 #默认使用的存储平台
    thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
    local-plus: # 本地存储升级版
      - platform: local-plus-1 # 存储平台标识
        enable-storage: true  #启用存储
        enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高)
        domain: "" # 访问域名例如“http://127.0.0.1:8030/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
        base-path: D:/project/jnpf-resources/ # 基础路径
        path-patterns: /** # 访问路径
        storage-path:  # 存储路径
    aliyun-oss: # 阿里云 OSS ,不使用的情况下可以不写
      - platform: aliyun-oss-1 # 存储平台标识
        enable-storage: false  # 启用存储
        access-key: ??
        secret-key: ??
        end-point: ??
        bucket-name: ??
        domain: ?? # 访问域名,注意“/”结尾例如https://abc.oss-cn-shanghai.aliyuncs.com/
        base-path: hy/ # 基础路径
    qiniu-kodo: # 七牛云 kodo ,不使用的情况下可以不写
      - platform: qiniu-kodo-1 # 存储平台标识
        enable-storage: false  # 启用存储
        access-key: ??
        secret-key: ??
        bucket-name: ??
        domain: ?? # 访问域名,注意“/”结尾例如http://abc.hn-bkt.clouddn.com/
        base-path: base/ # 基础路径
    tencent-cos: # 腾讯云 COS
      - platform: tencent-cos-1 # 存储平台标识
        enable-storage: false  # 启用存储
        secret-id: ??
        secret-key: ??
        region: ?? #存仓库所在地域
        bucket-name: ??
        domain: ?? # 访问域名,注意“/”结尾例如https://abc.cos.ap-nanjing.myqcloud.com/
        base-path: hy/ # 基础路径
    minio: # MinIO由于 MinIO SDK 支持 AWS S3其它兼容 AWS S3 协议的存储平台也都可配置在这里
      - platform: minio-1 # 存储平台标识
        enable-storage: true  # 启用存储
        access-key: Q9jJs2b6Tv
        secret-key: Thj2WkpLu9DhmJyJ
        end-point: http://192.168.0.207:9000/
        bucket-name: jnpfsoftoss
        domain:  # 访问域名,注意“/”结尾例如http://minio.abc.com/abc/
        base-path:  # 基础路径

6.3.6 第三方登录配置

打开编辑 jnpf-admin/src/main/resources/application-dev.yml ,修改以下配置

配置默认关闭

socials:
  # 第三方登录功能开关(false-关闭true-开启)
  socials-enabled: false
  config:
    - # 微信
      provider: wechat_open
      client-id: your-client-id
      client-secret: your-client-secret
    - # qq
      provider: qq
      client-id: your-client-id
      client-secret: your-client-secret
    - # 企业微信
      provider: wechat_enterprise
      client-id: your-client-id
      client-secret: your-client-secret
      agentId: your-agentId
    - # 钉钉
      provider: dingtalk
      client-id: your-client-id
      client-secret: your-client-secret
      agentId: your-agentId
    - # 飞书
      provider: feishu
      client-id: your-client-id
      client-secret: your-client-secret
    - # 小程序
      provider: wechat_applets
      client-id: your-client-id
      client-secret: your-client-secret

6.3.7 任务调度配置

打开编辑 jnpf-admin/src/main/resources/application-dev.yml ,修改以下配置,调整 xxl.job.admin.addresses 地址

xxl:
  job:
    accessToken: ''
    i18n: zh_CN
    logretentiondays: 30
    triggerpool:
      fast:
        max: 200
      slow:
        max: 100
    # xxl-job服务端地址
    admin:
      addresses: http://127.0.0.1:30020/xxl-job-admin/
    executor:
      address: ''
      appname: xxl-job-executor-sample1
      ip: ''
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 30
      port: 9999
  # rest调用xxl-job接口地址
  admin:
    register:
      handle-query-address: ${xxl.job.admin.addresses}api/handler/queryList
      job-info-address: ${xxl.job.admin.addresses}api/jobinfo
      log-query-address: ${xxl.job.admin.addresses}api/log
      task-list-address: ${xxl.job.admin.addresses}api/ScheduleTask/List
      task-info-address: ${xxl.job.admin.addresses}api/ScheduleTask/getInfo
      task-save-address: ${xxl.job.admin.addresses}api/ScheduleTask
      task-update-address: ${xxl.job.admin.addresses}api/ScheduleTask
      task-remove-address: ${xxl.job.admin.addresses}api/ScheduleTask/remove
      task-start-or-remove-address: ${xxl.job.admin.addresses}api/ScheduleTask/updateTask

七 启动项目

找到jnpf-admin/src/main/java/JnpfAdminApplication.java,右击运行即可。

八 项目发布

  • 在IDEA中双击右侧Maven中 jnpf-java-boot > Lifecycle > clean 清理项目
  • 在IDEA中双击右侧Maven中 jnpf-java-boot > Lifecycle > package 打包项目
  • 打开 jnpf-java-boot\jnpf-admin\target,将 jnpf-admin-3.5.0-RELEASE.jar 上传至服务器

九 接口文档

  • http://localhost:30000/doc.html