公司管理-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文档
- 接口遵循restful风格,
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、公司列表页
- 知识点
- 公司添加与修改,我们通过共用一个弹出框完成,实现共用的关键如下:
-
新建字典和标志
dialogStatus: "", // 区分那种对话框 textMap: { update: "修改", create: "添加" },
-
点击添加按钮,dialogStatus = ‘create’;点击修改,dialogStatus=‘update’
-
点击完成时,根据dialogStatus的值调用添加或者修改方法
- 级联框的显示与回显,前面博客已经写过。
- 异步接口API,通过import {} from ‘@/api/company’ 来完成导入和使用
- 公用API
- parseTime:事件格式化
- cleanEmptyValue:删除对象中的空值
- 关于elmentui中的表单验证及正则部分,如有不明白的地方可以@我,到时我会单独写篇博客。
公司管理模块暂时介绍到这里,根据视频,继续后面的内容。
后记 :
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785
后端JAVA源代码地址:https://gitee.com/gaogzhen/ihrm-parent // 后端项目
前端项目源代码地址:https://gitee.com/gaogzhen/ihrm-vue // 前端后台管理系统