wangjx 08c387d887
Some checks failed
Checks / commit lint (pull_request) Failing after 12s
Checks / gradle package (pull_request) Successful in 3m12s
feat: 职位管理,增删改查功能
2025-02-21 13:46:02 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00
2025-02-21 09:03:22 +08:00

FxBoot

一、开发准备

1.开发工具IDEA

2.安装插件

google-java-format谷歌代码规范插件

Preferences->Other Settings->google-java-format Settings

image.png

save actions保存代码自动格式化插件

Preferences->Other Settings->Save Actions

image.png

Alibaba Java Coding Guidelines阿里编码规范插件

JRebel and XRebel热加载插件

下载旧版本手动安装JRebel and XRebel 2022.4.1

跟随JRebel setup guide导航一步步设置激活插件可前往jrebel.qekang.com获取一键地址,例如

地址https://jrebel.qekang.com/f9754b17-23dd-4915-a0c6-4fafef7e46e0
邮箱:随意

而后可使用该插件代替原有的启动按钮,修改代码后无需重启即可生效

zUHjzT.png

二、快速入门

1.修改项目

配置根目录的gradle.properties,修改项目名、版本号(有必要的话)。

projectName=fx-boot
projectVersion=1.0.0

2.导入数据库

新建fxboot数据库字符集选择utf8mb4,排序规则选择utf8mb4_general_ci

将根目录下的db/fxboot.sql导入到新建的数据库中

3.修改配置

具体可查阅 app/resources/application.yml

若数据库为127.0.0.1:3306且账号密码都为root,则可跳过此步骤

否则可配置环境变量(如何配置请自行搜索),支持环境变量如下

mysql

  • FXBOOT_MYSQL_HOST
  • FXBOOT_MYSQL_PORT
  • FXBOOT_MYSQL_USER
  • FXBOOT_MYSQL_PASSWORD

redis

  • FXBOOT_REDIS_HOST
  • FXBOOT_REDIS_PORT
  • FXBOOT_REDIS_DATABASE

4.运行项目

在app模块中的FxBootApplication启动类上右键运行或者在IDE右上角找到启动按钮点击启动

5.初始化提交环境

需要安装npm且安装pnpm未安装可执行npm i -g pnpm

pnpm i

6.提交代码

6.1 开启暂存区

img.png

6.2 暂存想要提交的文件

每次暂存前,请审查一遍自己变动的,降低审查被驳回的概率

img.png

6.3 提交已暂存的文件

具体提交规范查看相关文档

pnpm cz

三、开发规范

1.结构分层

分controller/entity/mapper/service四个层次复杂模块需再次分级

  • controller/system
  • controller/base

2.注释

  • 类上需authordate

    /**
     * @author huanghs@zgfxrc.cn
     * @date 2021.11.22
     */
    
  • 方法上需通过/**回车自动生成注释,并补齐入参和返回的说明。

    /**
     * 不为empty则执行方法empty包含null、数组队列空等情况
     *
     * @param obj 对象
     * @param apply 方法(传入对象)
     */
    
  • 若方法添加时间与类不一致,需要增加如@date 2021.11.22说明。

    /**
     * 不为empty则执行方法empty包含null、数组队列空等情况
     *
     * @param obj 对象
     * @param apply 方法(传入对象)
     * @date 2021.11.22
     */
    
  • 若且此类为他人创建,而你创建了方法,则需要增加如@date 2021.11.22 your@email.com说明

    /**
     * 不为empty则执行方法empty包含null、数组队列空等情况
     *
     * @param obj 对象
     * @param apply 方法(传入对象)
     * @date 2021.11.22 your@email.com
     */
    

3.entity规范

注释注解

/**
 * 用户表
 *
 * @author huanghs@zgfxrc.cn
 * @date 2021.11.22
 */
@Data
@ApiModel("用户表")
@EqualsAndHashCode(callSuper = true)
public class User extends Model<User> {
}

关联表无主键

public class User extends Model<User> {
}

有主键

public class User extends BaseModel<User> {
}

有主键且需要租户过滤

public class User extends BaseModelWithTenant<User> {
}

4.controller规范

需要使用@Api说明业务, 其内方法需@ApiOperation说明具体功能, 通过@Permission指定访问接口所需权限 控制层不写业务逻辑所有代码需封装在Service中控制层只需要service.runYourFunc()调用封装的业务方法。

/**
 * @author huanghs@zgfxrc.cn
 * @date 2021.11.22
 */
@RestController
@Api(tags = "用户管理")
@RequestMapping("sys/user")
public class SysUserController {
  final SysUserService sysUserService;

  // 最终会需要 sys_user_view 权限
  @Permission("sys_user_view")
  @ApiOperation("查询")
  @PostMapping
  public void get() {
    sysUserService.runYourFunc();
  }
}

5.RequestMapper

(1).遵循小写单词,多单词由/隔开,如@RequestMapping("sys/user") (2).遵循POST规范所有接口使用PostMapping定义 (3).传参只能通过params传递void func(Entity entity)或者body传递void func(@RequestBody Entity entity) (4).路由传参通过@PostMapping("/get/one/{id}"),通过@PathVariable Long id接收

6.Service规范

  • 在Service中不能调用本类的其他方法避免aop失效
  • 参数校验使用Validate.nonNull(req.userId,"用户id不能为空")等校验值和给出错误提示

四、部署

1.配置镜像

配置根目录deploy.sh的镜像仓库地址,并且在每次发布版本时,只需要修改版本号 VERSION 即可。

HUB=registry.cn-hangzhou.aliyuncs.com/rsjst
VERSION=1.0.0

2.打包

执行脚本,将会自动构建镜像镜像仓库地址/项目名:版本号并推送到仓库中, 例如 registry.cn-hangzhou.aliyuncs.com/rsjst/fx-boot:1.0.0

sh deploy.sh

3.部署

配置dockerSwarm的stack中的image为打包的镜像即可例如

version: '3.7'
services:
  fx-boot:
    image: registry.cn-hangzhou.aliyuncs.com/rsjst/fx-boot:1.0.0
    ports:
      - '8020:8020'
    environment:
      # 数据库配置
      FXBOOT_MYSQL_HOST: 192.168.1.1
      FXBOOT_MYSQL_PORT: 3306
      FXBOOT_MYSQL_USER: root
      FXBOOT_MYSQL_PASSWORD: 123456
      FXBOOT_MYSQL_TABLE: fxboot

      # Redis配置
      FXBOOT_REDIS_HOST: 127.0.0.1
      FXBOOT_REDIS_PORT: 6379
      FXBOOT_REDIS_DATABASE: 1
      FXBOOT_REDIS_PASSWORD: 123456

      # *配置等待数据库启动完毕再启动应用
      WAIT_FOR: 192.168.1.1:3306
      WAIT_TIMEOUT: 60

      # *配置active值若增加模块仍需要往后添加避免无法读取到子模块的配置例如application-upms.yml
      SPRING_PROFILES_ACTIVE: prod,upms,recruit

      # *存储配置,若不知道填什么向上级要
      MINIO_ACCESS_KEY: xxx
      MINIO_SECRET_KEY: xxx
      MINIO_BUCKET_NAME: xxx

    # 下述配置实现热更新,不需要可去除
    deploy:
      mode: replicated
      replicas: 1
      resources:
        limits:
          cpus: '0.75'
        reservations:
          cpus: '0.50'
      update_config:
        delay: 5s
        order: start-first

五、相关文档

1.鉴权功能

secret

2.统一返回体包装

wrap-spring-boot-starter

3.工具类

tool

4.ORM

mybatis-plus

5.部署相关

构建多平台Docker镜像

Docker nginx conf 使用环境变量

6.协同开发

Git多分支开发

Description
后端
Readme 1.3 MiB
Languages
Java 99.5%
Dockerfile 0.2%
Shell 0.2%
JavaScript 0.1%