后端JAVA开发

下载IDE

系统推荐使用的IDE为IDEA,您也可以使用您熟悉的IDE,如Eclipse、VSCode等

下载IDEA https://www.jetbrains.com.cn/idea/open in new window

导入项目

IntelliJ IDEA > File > Open > 选择项目根目录下的pom.xml 选择Open as Project

编译项目

选择右侧Maven工具栏,在根位置双击install对整个项目进行编译

显示如下信息则表示全部编译完成

注:项目数量根据产品的不同版本可能不一致,但整体的结构是一致的

开发和调试

首先了解一下项目的目录结构,如下:

随着版本迭代项目名称或者数量可能存在变化,但整体结构是不变的

├── pom.xml                        最外层的pom项目文件
├── yf-ability                     公共能力模块
├── yf-core                        基础模块
├── yf-job                         定时任务模块
├── yf-modules                     业务模块外层
│  ├── pom.xml                     业务模块内层pom项目文件
│  ├── yf-module-battle            知识竞赛模块
│  ├── yf-module-book              错题本模块
│  ├── yf-module-cert              证书模块
│  ├── yf-module-course            课程模块
│  ├── yf-module-exam              在线考试模块
│  ├── yf-module-openapi           开放接口模块
│  ├── yf-module-pay               在线支付模块
│  ├── yf-module-repo              题库模块
│  ├── yf-module-stat              数据统计模块
│  ├── yf-module-system            系统模块/用户权限/组织架构等
│  └── yf-module-train             错题训练模块
└── yf-web                         前端接口业务调用模块

修改配置文件 默认的本地调试文件配置为:yf-web/src/main/resources/application-dev.yml

# 完整的外挂配置文件,修改配置无需重新打包
server:
  port: 8101
  # 启用服务端压缩
  compression:
    enabled: true
    min-response-size: 10
    mime-types: application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css

spring:
  application:
    name: yf-exam-api
  profiles:
    active: dev
  main:
    allow-bean-definition-overriding: true
  # 数据库配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/yf_exam?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: root
    filters: stat
    max-active: 1000
    initial-size: 10
    max-wait: 6000
    min-idle: 1
    time-between-eviction-runs-millis: 60000
    min-evictable-idle-time-millis: 300000
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    pool-prepared-statements: true
    max-open-prepared-statements: 1000
    async-init: true

  # Redis配置
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:
    timeout: 5000

  # 定时任务配置
  quartz:
    #数据库方式
    job-store-type: jdbc
    # quartz 相关属性配置
    properties:
      org:
        quartz:
          scheduler:
            instanceName: examScheduler
            instanceId: AUTO
          jobStore:
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            tablePrefix: QRTZ_
            isClustered: true
            clusterCheckinInterval: 10000
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            threadCount: 10
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true

# 文档转换,请先安装LibreOffice,再配置相应路径,enabled=true
jodconverter:
  local:
    enabled: false
    office-home: /opt/libreoffice6.4
    max-tasks-per-process: 10
    port-numbers: 8100

# 支付配置
pay:
  # 支付实例,修改enabled为true则打开,false则关闭
  providers:
    - name: wechat
      enabled: true
    - name: alipay
      enabled: true

  wechat:
    # AppId,通常为wx开头的18位左右字符
    app-id:
    # App秘钥
    app-secret:
    # 商户号,通常为10位数字
    mch-id:
    # 商户API私钥。商户申请商户API证书时,会生成商户私钥,并保存在本地证书文件夹的文件apiclient_key.pem中
    private-key:
    # API v3密钥。为了保证安全性,微信支付在回调通知和平台证书下载接口中,对关键信息进行了AES-256-GCM加密。API v3密钥是加密时使用的对称密钥。商户可以在【商户平台】->【API安全】的页面设置该密钥。
    api-v3-key:
    # 证书序列号。每个证书都有一个由CA颁发的唯一编号,即证书序列号。如何查看证书序列号请看这里 https://wechatpay-api.gitbook.io/wechatpay-api-v3/chang-jian-wen-ti/zheng-shu-xiang-guan#ru-he-cha-kan-zheng-shu-xu-lie-hao
    mch-serial-no:
    # 支付回调地址
    notify-url:

  # 支付宝支付
  alipay:
    # 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
    app-id:
    # 商户私钥,您的PKCS8格式RSA2私钥
    merchant-private-key:
    # 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    alipay-public-key:
    # 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    notify-url:
    # 服务器同步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    return-url:
    # 签名方式
    sign-type: RSA2

# 基础配置
ycloud:
  # 运行模式,ture为演示/false为正式
  demo: false
  # 开放接口秘钥
  open-secret: JoQEJeD7grF8JdyVaOCvPDNL8arsyvfL
  # 微信登录成功以后,将token推送到这个链接同步登录
  login-sync-pc: https://yourdomain.com/#/sync/{token}/{roleType}
  # 微信登录成功以后,将token推送到这个链接同步登录
  login-sync-h5: https://yourdomain.com/#/pages/login/sync?token={token}
  # 微信获取code以后回调此URL
  login-redirect: https://yourdomain.com/api/common/wx/redirect

# 微信相关配置
wechat:
  login:
    # 小程序登录appId
    mp-app-id:
    mp-app-secret:
    # 网站登录appId
    site-app-id:
    site-app-secret:


# 企业微信
crop-wechat:
  login:
    crop-id:
    agent-id:
    crop-secret:
    redirect: https://yourdomain.com/api/common/crop-wechat/redirect

# 钉钉
ding-talk:
  login:
    app-key:
    app-secret:
    redirect: https://yourdomain.com/api/common/ding-talk/redirect

# 生产环境建议关闭文档
# 文档访问地址:http://localhost:8101/doc.html
swagger:
  enable: false

logging:
  level:
    root: error
  # 日志文件目录
  path: logs/${spring.application.name}/

核心配置有数据库连接配置/Redis配置

运行入口项目为yf-web,此项目为提供给前端的接口项目,执行右侧maven工具

yf-web > Plugins > spring-boot > spring-boot:run

即可启动项目,启动后显示如下:

项目接口调用地址为:http://localhost:8801/

项目接口文档地址为:http://127.0.0.1:8801/doc.html

打包发行包

右侧Maven工具栏选择yf-web项目,执行下面的package即可打包发行包,此项目引用了所有项目功能,并提供前端交互的接口等

执行完成后,在项目的根目录会产生target文件夹,里面的yf-exam-api.jar即为发行包

因为我们的配置文件采用外置模式,所以不需要修改任何配置信息,直接打包即可