公司管理-Saas多租户平台开发

公司管理-Saas多租户平台开发


目录




内容

前面我们已经把前后端项目搭建完毕,下面讲解功能模块-公司管理。

1、表

1.1、序言

  • 数据库:MySQL8.0.12
  • 新建数据库:ihrm
  • 公用表命名:前缀+表名
  • 功能模块表命名规则:前缀+模块+表名
  • 统一前缀:tb_
  • 公司管理模块:co_
  • 公司管理表:tb_co_company

关于sql等详细内容,自行查阅相关文档。

1.2、规范

表设计应遵循三范式,通常在实际开发中,表外键使用"虚拟外键"或"假外键"。

  • 虚拟外键:就是改字段承担外键的功能,但是不添加外键约束
    • 好处:灵活方便,在删除关联键时,相互不影响,相对效率高。
    • 不好:不安全,所有删除时要慎重,最好在程序中做好约束。

关于范式、事务、隔离等相关内容,自行查询相关文档。

1.3、公司表sql

  CREATE TABLE `tb_co_company` (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公司名称',
  `manager_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '企业登录账号ID',
  `version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '当前版本',
  `renewal_date` datetime DEFAULT NULL COMMENT '续期时间',
  `expiration_date` datetime DEFAULT NULL COMMENT '到期时间',
  `area` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '公司所在地区',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '公司详细地址',
  `business_license_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '营业执照ID',
  `legal_representative` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '法人代表',
  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '公司电话',
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '邮箱',
  `size` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '公司规模',
  `industry` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '所属行业',
  `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '备注',
  `audit_state` tinyint(2) DEFAULT '1' COMMENT '审核状态(1审核中,2通过, 3拒绝)',
  `state` tinyint(2) DEFAULT '1' COMMENT '状态(1正常,2禁用)',
  `balance` decimal(11,2) NOT NULL DEFAULT '0.00' COMMENT '余额',
  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='公司管理';

1.4、地区表

详细查看之前的级联框博客,==传送门==

1.5、行业表

详细查看之前的级联框博客,==传送门==

2、接口文档

前面已经叙述我们使用swagger自动生成在线文档,可以翻看之前的博文。

  • 说明
    • 接口遵循restful风格,
      • 比如GET请求,在方法添加@GetMapping;如果写为@RequestMapping ,那么同意方法会生成6个swagger文档接口(对应6种请求)
    • 适当使用swagger注解
      • controller类上添加@Api(tag=“controller释义”)
      • 方法上添加@ApiOperation(“方法释义”)
      • 其他注解及属性自行查询相关文档
      • 这样可以生成简洁的swagger文档

2.1、公司管理接口

这里只简单给出请求地址,详细看上面swagger 接口文档。

  • 统一前缀:http://localhost:8181/ihrm-company/sys
  • 列表:/cocopany/list
  • 添加: /cocopany/list
  • 修改: /cocopany/list
  • 查询层级地区数据:/district/level/{level}
  • 查询行业子级数据: /industry/subData/{id}

3、后端接口

前面介绍过我们代码通过自动生成模块生成,然后赋值黏贴到项目种。
自动生成的代码api有5个:

  • 列表
  • 更加ID查询
  • 添加
  • 修改
  • 删除(批量)

详细源代码,可以去下面码云查看,代码实时更新提交。

  • 提示:
    • dao层框架释义mybatis-plus,自动封装了大量的单表处理的方法
    • 如果涉及外键查询,及多表联查,可以在相应的dao.xml中定义sql语句

3.1、mybatis-plus

对于数据库的操作,查询居多,那么这个类使用起来就很方便。条件查询、模糊查询、范围查询、分页、排序都可以一条语句写完,下面给个简单示例:

 // 1、根据产品名称模糊查询,获取产品id集合
		List<Integer> pids = null;
		if (StringUtils.isNotBlank(productName)) {
			pids = new LambdaQueryChainWrapper<>(sysProductDao)
					.select(SysProductEntity::getId)
					.like(SysProductEntity::getProductName, productName)
					.list()
					.stream()
					.map(SysProductEntity::getId)
					.collect(Collectors.toList());
		}
  • select(可以指定只查询那些字段)
  • like,leftLike,rightLike: 模糊查询
  • list() :结果返回列表
  • stream():及之后为jdk8新特性-流数据相关知识

关于mybatis-plus相关内容,后面我会单独写个系列博客,详细介绍。

4、前端页面

4.1、新增内容

详细代码上传码云,地址见下面。下面介绍下前端改造过程:

  • 路由:后面加入权限后,作为权限一部分的菜单会根据用户动态生成,此处暂时写成死的。路由写入@/router 的asyncRouter路由对象中。
  • 异步API:单独的模块我们单独在@/api下新建文件夹company/index.js存放异步请求API,与API文档一一对应
  • vue页面:同样的在@/views下面新建company文件夹存放公司list.vue和detail.vue文件

4.2、页面详情

4.2.1、公司列表页

  • 知识点
  1. 公司添加与修改,我们通过共用一个弹出框完成,实现共用的关键如下:
  • 新建字典和标志

      dialogStatus: "", // 区分那种对话框
        textMap: {
      	update: "修改",
      	create: "添加"
        },
    
  • 点击添加按钮,dialogStatus = ‘create’;点击修改,dialogStatus=‘update’

  • 点击完成时,根据dialogStatus的值调用添加或者修改方法

  1. 级联框的显示与回显,前面博客已经写过。
  2. 异步接口API,通过import {} from ‘@/api/company’ 来完成导入和使用
  3. 公用API
    1. parseTime:事件格式化
    2. cleanEmptyValue:删除对象中的空值
  4. 关于elmentui中的表单验证及正则部分,如有不明白的地方可以@我,到时我会单独写篇博客。

公司管理模块暂时介绍到这里,根据视频,继续后面的内容。

后记

本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785

后端JAVA源代码地址:https://gitee.com/gaogzhen/ihrm-parent // 后端项目
前端项目源代码地址:https://gitee.com/gaogzhen/ihrm-vue // 前端后台管理系统

猜你喜欢

转载自blog.csdn.net/gaogzhen/article/details/110452476