软件工程课程设计——技术栈【Go+Vue+PGSQL】的人事管理系统
一、项目架构介绍项目技术栈:Go+Vue+PGSQL开发工具:IDEA2021.1后端开发语言:Go前端框架:Vue3.0(集成ElementUI组件)后端框架:Gin、Gorm数据库:PostgreSQL131.1 Go语言Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言
一、项目架构介绍
项目技术栈:Go+Vue+PGSQL
开发工具:IDEA2021.1
后端开发语言:Go
前端框架:Vue3.0(集成ElementUI组件)
后端框架:Gin、Gorm
数据库:PostgreSQL13
1.1 Go语言
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
1.2 Vue框架
Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
1.3 Gin框架
Gin 是一个基于 Go 语言编写的 Web 框架,与 martini 框架类似,但拥有更好的性能,借助高性能的 httprouter,速度提升了近 40 倍。
1.4 Gorm框架
基于GoLand语言的 ORM(Object Relation Mapping),对象关系映射,实际上就是对数据库的操作进行封装,对上层开发人员屏蔽数据操作的细节,开发人员看到的就是一个个对象,大大简化了开发工作,提高了生产效率。
1.5 PGSQL数据库
PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上进行了30多年的积极开发。
二、项目地址
项目源代码我放在码云了点击跳转,下载到本地之后先配置前后端的依赖和数据库配置,再运行项目。
项目展示我已放在云服务器上点击跳转,总裁账号20210001密码123456,主管账号20210002密码123456,员工账号20210008密码123456
三、项目概述
3.1 模块说明
3.1.1 前端模块说明
- Vue组件共47个,包含了总裁、主管、员工身份登录系统的全部功能
- 引入动态路由,实现三种身份的权限分离,每个身份对应不同的Vue组件和路由
3.1.2 后端模块说明
- Config层:负责项目的配置
- Controller层:项目大体逻辑的实现与控制
- Global层:项目的全局设置
- Mapper层:实现三种身份的路由监听
- Middleware层:解决跨域问题
- Model层:实现项目所需的各种结构的定义
- main层:项目的入口
3.2 项目部分运行截图
3.2.1 主页
3.2.2 加入人才库
3.2.3 总裁登录
- 基本资料实现基本搜索、高级搜索、入职日期查询、导入导出数据、批量删除、手动添加用户、所有员工的增删改查等操作
- 部门信息实现已有部门的增删改查和新部门新岗位的添加
- 申请新岗位员工可以申请调动到本部门的其他岗位或跨部门调动
- 申请离职除了总裁,其他员工都可以申请离职,无需审批
- 离职员工总裁可以查看公司所有的离职员工信息并可以导出数据
- 开除员工总裁可以开除公司任何一个的员工
- 部门调动总裁可以查看跨部门调动信息并可以导出数据
- 岗位调动总裁可以查看所有部门的内部调岗信息并可以导出数据
- 查看岗位申请总裁可以查看、审批、拒绝所有人提出的岗位申请
- 查看人才库申请总裁可以查看、审批、拒绝所有申请加入公司的人员信息
- 个人中心总裁可以编辑自己的个人信息
3.2.4 主管登录
- 员工资料作为部门主管,只能够管理自己部门下的员工,包括基本搜索、高级搜索、入职日期查询、导入导出数据、批量删除、手动添加用户、部门下所有员工的增删改查等操作
- 查询部门信息作为主管,只能够查看公司的所有部门及岗位,无权做删除、修改、添加等操作
- 申请新岗位员工可以申请调动到本部门的其他岗位或跨部门调动
- 申请离职作为主管,可以同员工一样申请离职,无需审批
- 离职员工主管可以查看自己部门的离职员工信息并导出数据
- 查看岗位申请主管可以查看、审批、拒绝所有申请自己部门下的岗位的申请信息,若申请的是其他部门,则此部门主管无权查看
- 查看人才库申请主管可以查看、审批、拒绝所有申请自己部门下的岗位的人才申请信息,若申请的是其他部门,则此部门主管无权查看
- 个人信中心主管同样可以修改自己的个人信息
3.2.5 员工登录
- 员工资料作为员工,只能够查看自己部门同事的基本信息,且会屏蔽掉登陆密码、身份证号码等敏感信息,只能有基本的查询操作
- 查询部门信息作为员工,只能够查看公司的所有部门及岗位,无权做删除、修改、添加等操作
- 申请新岗位员工可以申请部门调动或岗位调动,需等待上级主管或总裁同意后才会进行调动
- 申请离职员工可以申请离职,无需上级同意就可以申请,离职后强制退出系统且无法再登录系统
- 个人中心员工可以修改自己的个人信息
四、关键技术
4.1 权限分离
根据总裁、主管、员工三种身份,实现不同的前台导航栏和监听路由
- 总裁的导航栏
- 总裁的监听路由
func AdminMapper(re *gin.Engine) {
re.POST("/AdminLogin", Controller.AdminLogin)
re.POST("/AllMenu", Controller.AllMenu)
re.POST("/EmployeeBasic", Controller.EmployeeBasic)
re.POST("/EmployeeBasic/Update", Controller.EmployeeBasicUpdate)
re.POST("/EmployeeBasic/Delete", Controller.EmployeeBasicDelete)
re.POST("/EmployeeBasic/MultiDelete", Controller.EmployeeBasicMultiDelete)
re.POST("/EmployeeBasic/Add", Controller.EmployeeBasicAdd)
re.POST("/EmployeeBasic/Search", Controller.EmployeeBasicSearch)
re.POST("/EmployeeBasic/SearchDate", Controller.EmployeeBasicSearchDate)
re.POST("/EmployeeBasic/SearchAdvance", Controller.EmployeeBasicSearchAdvance)
re.POST("/EmployeeBasic/Import", Controller.EmployeeBasicImport)
re.POST("/EmployeeBasic/Export", Controller.EmployeeBasicExport)
re.POST("/DepartmentTransfer", Controller.DepartmentTransfer)
re.POST("/DepartmentTransfer/Search", Controller.DepartmentTransferSearch)
re.POST("/PostTransfer", Controller.PostTransfer)
re.POST("/PostTransfer/Search", Controller.PostTransferSearch)
re.POST("/EmployeeQuit", Controller.EmployeeQuit)
re.POST("/EmployeeQuit/SearchByDate", Controller.EmployeeQuitSearchByDate)
re.POST("/ExpelEmployee", Controller.ExpelEmployee)
re.POST("/AdminInitExamine", Controller.AdminInitExamine)
re.POST("/TalentPool/Add", Controller.TalentPoolAdd)
re.POST("/Edit", Controller.Edit)
re.POST("/TalentApply", Controller.TalentApply)
re.POST("/TalentAgreeApply", Controller.TalentAgreeApply)
re.POST("/TalentRefuseApply", Controller.TalentRefuseApply)
re.POST("/Department/Basic", Controller.DepartmentBasic)
re.POST("/Department/Init", Controller.DepartmentInit)
re.POST("/Department/Post", Controller.DepartmentPost)
re.POST("/Department/Update", Controller.DepartmentUpdate)
re.POST("/Department/Delete", Controller.DepartmentDelete)
re.POST("/Department/Add", Controller.DepartmentAdd)
re.POST("/Post/Init", Controller.PostInit)
re.POST("/Post/Add", Controller.PostAdd)
re.POST("/Post/Update", Controller.PostUpdate)
re.POST("/Post/Delete", Controller.PostDelete)
re.POST("/SearchByDepartmentNumber", Controller.SearchByDepartmentNumber)
re.POST("/SearchByPostNumber", Controller.SearchByPostNumber)
re.POST("/DepartmentTransfer/SearchByDate", Controller.DepartmentTransferSearchByDate)
re.POST("/PostTransfer/SearchByDate", Controller.PostTransferSearchByDate)
}
-
主管的导航栏
-
主管的监听路由
func DirectorMapper(re *gin.Engine) {
re.POST("/DirectorDepartment", Controller.DirectorDepartment)
re.POST("/DirectorInitExamine", Controller.DirectorInitExamine)
re.POST("/DirectorAgreeApply", Controller.DirectorAgreeApply)
re.POST("/DirectorRefuseApply", Controller.DirectorRefuseApply)
re.POST("/EmployeeBasicByDirector", Controller.EmployeeBasicByDirector)
re.POST("/EmployeeBasic/SearchByDirector", Controller.EmployeeBasicSearchByDirector)
re.POST("/EmployeeBasic/SearchDateByDirector", Controller.EmployeeBasicSearchDateByDirector)
re.POST("/EmployeeQuitByDirector", Controller.EmployeeQuitByDirector)
re.POST("/EmployeeQuitByDirector/SearchByDate", Controller.EmployeeBasicByDirectorBySearchByDate)
re.POST("/GetDepartmentName", Controller.GetDepartmentName)
re.POST("/TalentApplyPart", Controller.TalentApplyPart)
}
-
员工的导航栏
-
员工的监听路由
func EmployeeMapper(re *gin.Engine) {
re.POST("/ApplyPostInformation", Controller.ApplyPostInformation)
re.POST("/ApplyNewPost", Controller.ApplyNewPost)
re.POST("/ApplyResignedInformation", Controller.ApplyResignedInformation)
re.POST("/ApplyResigned", Controller.ApplyResigned)
re.POST("/EmployeeBasicByEmployee", Controller.EmployeeBasicByEmployee)
re.POST("/EmployeeBasic/SearchByEmployee", Controller.EmployeeBasicSearchByEmployee)
re.POST("/EmployeeBasic/SearchDateByEmployee", #Controller.EmployeeBasicSearchDateByEmployee)
}
注:本文是博主软件工程课程设计的总结,不支持任何商用,转载请注明出处!如果你也对Go语言开发大型项目的学习有一定的兴趣和理解,欢迎随时找博主交流~
更多推荐
所有评论(0)