【智能排班系统】后端项目结构介绍+开发环境介绍+项目启动

项目结构介绍

后端项目

├─file
│  └─data
│      ├─客流量数据
│      └─随机选择员工
├─shift-scheduling-calculate //算法模块
│  ├─src
│     └─main
│         └─java
│             └─com
│                 └─wskh
│                     ├─algo
│                     │  ├─personnel_scheduling
│                     │  │  └─others
│                     │  └─shift_generation
│                     │      └─heu
│                     ├─enums
│                     ├─output
│                     └─utils
├─shift-scheduling-calculate-service //算法服务模块
│  ├─src
│     ├─main
│     │  ├─java
│     │  │  └─com
│     │  │      └─dam
│     │  │          ├─aop
│     │  │          ├─component
│     │  │          ├─config
│     │  │          │  ├─cache
│     │  │          │  ├─feign
│     │  │          │  ├─sentinel
│     │  │          │  ├─thread
│     │  │          │  └─webSocket
│     │  │          ├─constant
│     │  │          ├─controller
│     │  │          ├─dao
│     │  │          ├─dto
│     │  │          ├─enums
│     │  │          ├─feign
│     │  │          ├─service
│     │  │          │  └─impl
│     │  │          └─utils
│     │  └─resources
│     │      └─mapper
│     └─test
│         └─java
├─sss-common //存放工具类、注解、常量类、全局异常、各个模块的实体类
│  ├─src
│     └─main
│         └─java
│             └─com
│                 └─dam
│                     ├─annotation //注解
│                     ├─config
│                     │  └─Mybatis // mybatis plus注解
│                     ├─constant // 常量
│                     ├─exception // 异常
│                     ├─model 
│                     │  ├─dto // 服务间传输数据类
│                     │  │  ├─scheduling_calculate
│                     │  │  ├─scheduling_calculate_service
│                     │  │  └─third_party
│                     │  ├─entity // 实体类
│                     │  │  ├─enterprise
│                     │  │  ├─quartz
│                     │  │  ├─shiftScheduling
│                     │  │  └─system
│                     │  │      └─monitor
│                     │  ├─enums // 枚举
│                     │  │  ├─log
│                     │  │  ├─quartz
│                     │  │  └─system
│                     │  ├─exception // 异常
│                     │  ├─result // 结果类封装
│                     │  └─vo // 封装返回给前端的数据
│                     │      ├─enterprise
│                     │      ├─scheduling_calculate_service
│                     │      ├─shiftScheduling
│                     │      │  └─applet
│                     │      ├─statistics
│                     │      │  ├─enterpriseManager
│                     │      │  ├─storeManager
│                     │      │  └─systemManager
│                     │      └─system
│                     ├─utils // 工具包
│                     │  ├─clone
│                     │  ├─date
│                     │  ├─http
│                     │  ├─ip
│                     │  ├─mail
│                     │  ├─password
│                     │  └─username
│                     └─xss
├─sss-enterprise // 企业数据管理模块
│  ├─src
│     ├─main
│     │  ├─java
│     │  │  └─com
│     │  │      └─dam
│     │  │          ├─aop
│     │  │          ├─config
│     │  │          │  ├─druid
│     │  │          │  ├─feign
│     │  │          │  ├─quartz
│     │  │          │  ├─rabbitMq
│     │  │          │  ├─redisson
│     │  │          │  └─thread
│     │  │          ├─controller
│     │  │          ├─custom
│     │  │          │  └─quartz // 定义定时任务要做什么
│     │  │          ├─dao
│     │  │          ├─dto
│     │  │          ├─feign
│     │  │          ├─service
│     │  │          │  └─impl
│     │  │          │      └─security
│     │  │          └─utils
│     │  │              └─spring
│     │  └─resources
│     │      ├─mapper
│     │      └─src
│     │          └─views
│     │              └─modules
│     │                  └─dam
│     └─test
│         └─java
├─sss-gateway // 网关模块
│  ├─src
│     └─main
│         ├─java
│         │  └─com
│         │      └─dam
│         │          └─config
│         └─resources
├─sss-security // spring security
│  ├─src
│     ├─main
│     │  ├─java
│     │  │  └─com
│     │  │      └─dam
│     │  │          ├─config
│     │  │          ├─constant
│     │  │          ├─custom
│     │  │          ├─filter
│     │  │          ├─service
│     │  │          │  └─impl
│     │  │          └─utils
│     │  └─resources
│     └─test
│         └─java
├─sss-system // 系统模块(用户、菜单、角色管理,登录日志、操作日志)
│  ├─src
│     └─main
│         ├─java
│         │  └─com
│         │      └─dam
│         │          ├─config
│         │          │  ├─feign
│         │          │  ├─mybatis
│         │          │  ├─register
│         │          │  └─thread
│         │          ├─dao
│         │          ├─exception
│         │          ├─feign
│         │          ├─service
│         │          │  └─impl
│         │          │      └─security
│         │          └─utils
│         │              ├─user_data_gererate
│         │              │  └─name
│         │              └─vo
│         └─resources
│             └─mapper
├─sss-system-server // 系统服务模块
│  ├─src
│     ├─main
│     │  ├─java
│     │  │  └─com
│     │  │      └─dam
│     │  │          ├─aop
│     │  │          ├─config
│     │  │          │  ├─feign
│     │  │          │  └─rabbitMq
│     │  │          └─controller
│     │  │              └─monitor
│     │  └─resources
│     └─test
│         └─java
├─sss-third-party // 第三方服务(oss、微信登录、邮件发送)
│  ├─src
│     └─main
│         ├─java
│         │  └─com
│         │      └─dam
│         │          ├─aop
│         │          ├─config
│         │          │  ├─feign
│         │          │  ├─mail
│         │          │  ├─rabbitMq
│         │          │  ├─swagger
│         │          │  └─wechatLogin
│         │          ├─controller
│         │          ├─feign
│         │          ├─listener
│         │          └─service
│         │              └─impl
│         └─resources

会不会有小伙伴好奇上面的文件结构是怎么整理出来的?其实非常简单,直接进入cmd使用tree命令就行

在这里插入图片描述

开发环境介绍

开发环境版本作用
jdk1.8.0_361
maven3.6.1
mysql8.0.27
nacos2.1.1
redis7.0.5
rabbitMq3.9.11
docker23.0.4我用来运行rabbitMq容器,同样也可以运行nacos、redis容器,怎么方便怎么来就行,有的软件用宝塔面板直接安装也非常方便了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目启动

环境准备

准备好上面提到的所有环境,启动Nacos、Redis、RabbitMQ

数据库准备

创建数据库

创建数据库的时候,字符集选择 utf8mb4,排序规则留空即可,如下图
在这里插入图片描述

执行sql

在这里插入图片描述
在这里插入图片描述
如果没有安装数据库可视化软件,可以使用命令行的方式来执行sql,操作可以参考博客命令行导入sql

准备工作

install部分包到本地maven仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

刷新依赖

在这里插入图片描述

项目启动

项目一开始只能以微服务方式启动,后面有读者反馈说服务器部署成本太高,因此我开发了一个聚合服务,将其他服务的功能聚合到一个模块中。下面两种方式只需要选择一种方式进行启动即可:

  • 微服务方式启动
  • 聚合方式启动

微服务方式启动

注意

开发的时候需要设置相应的环境,为了隔离我的环境和你们的环境,我在配置环境后面加上了-dam的后缀,active:dam表示启动项目的时候所激活的环境,但是为了保护我的服务器,我没有将带dam后缀的配置文件上传,所以需要麻烦你们在启动项目的时候激活dev环境。

后面项目上线的时候,需要将项目打包部署到服务器中,这时候使用的就是生产环境prod了,打包的时候不用修改active,因为运行Jar包的时候可以指定运行环境,如

java -jar sss-third-party-0.0.1-SNAPSHOT.jar --server.port=8160 --spring.profiles.active=prod

在这里插入图片描述

第三方服务

第三方服务模块主要用来集成第三方提供的服务,如阿里云的OSS对象存储服务、邮件发送服务、微信登录服务,后面如果需要引入其他的第三方服务,如短信服务、人脸识别服务。

  • 有的朋友没有开通阿里云OSS,没有相关秘钥,可以不启动该服务,不启动该服务,网站只是无法修改头像和上传logo,不会影响其他操作(其实开通一下也不难,随便找个教程看看就行,不过注意,自己的OSS桶名不要泄露出去,不然可能被不法分子刷流量,钱包就空了)

  • 使用邮箱服务需要开头邮件发送功能,如果是使用QQ邮箱,可以参考SpringBoot整合邮件发送服务进行开通

在这里插入图片描述

网关模块

网关模块主要用来做请求转发、负载均衡,后面还可以新增其他功能,如何统一接口限流、ip禁用功能、灰色发布、统一业务处理等功能。

在这里插入图片描述
以微服务方式启动的话,需要修改配置文件,来使用微服务的相关配置
在这里插入图片描述

系统模块

该模块主要用来做系统的登录验证、权限控制,通过为角色分配操作菜单、操作功能,给用户分配角色,实现对账号的权限控制。

在这里插入图片描述

企业数据管理模块

企业数据模块主要用来管理企业信息、门店信息、门店的规则管理……
在这里插入图片描述
还有这个

在这里插入图片描述

算法模块

算法模块主要提供排班计算、排班结果存储、排班月视图、周视图查看等服务。

在这里插入图片描述

聚合方式启动

聚合方式启动只需要启动两个服务

在这里插入图片描述
注意,以聚合方式启动的话,需要修改网关服务的配置文件,来使用聚合服务的相关配置

在这里插入图片描述
在启动聚合服务之前,请确保如下配置文件的Mysql、Redis等相关账号密码都修改成你的。很多朋友没有开启自己的阿里云OSS,启动聚合服务要求必须配置OSS、Mail相关信息。

在这里插入图片描述
聚合服务的开发可以参考 智能排班系统 【聚合服务开发】

系统账号

导入项目提供的sql之后,数据库里面内置了一些账号密码

  • 系统管理员:admin 123456
  • 企业管理员:one 123456
  • 门店管理员:two 123456(three、four、five往上都是门店管理员的用户名,密码都是123456)
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
智能排班系统是一个应用了Spring、Spring MVC、MyBatis、PageHelper等技术的系统。Spring是一个开源的Java开发框架,提供了依赖注入和面向切面编程等功能,可以简化应用程序开发的复杂性。Spring框架的主要特点是易于扩展和集成其他框架。 Spring MVC是Spring框架中的模块,用于开发基于Model-View-Controller模式的Web应用程序。它通过请求映射和视图解析等功能,将用户请求和响应进行有效地处理和分发。 MyBatis是一种Java持久层框架,通过XML或注解对数据库操作进行配置,提供了对SQL语句的执行和结果的映射功能。它简化了数据库访问的复杂性,提供了更好的SQL控制和性能优化。 PageHelper是一个开源的MyBatis物理分页插件,可以自动地对查询结果进行分页处理。它提供了简单的配置和使用方式,能够有效地减轻数据库的查询压力,提高系统性能。 GitHub是一个基于Git版本控制系统的代码托管平台,开发人员可以在上面创建和管理项目的代码仓库。它提供了多人协同开发、版本控制、代码审查、问题追踪等功能,能够有效地提高开发效率和代码质量。 综上所述,智能排班系统应用了Spring、Spring MVC、MyBatis和PageHelper等技术,通过依赖注入、面向切面编程、模型-视图-控制器模式和物理分页等功能,实现了对数据库操作的简化、Web应用程序的高效处理和查询结果的分页处理。同时,利用GitHub进行代码托管,实现了多人协同开发和版本控制,提高了系统的可维护性和代码的质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello Dam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值