项目结构介绍
后端项目
├─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
开发环境介绍
项目启动
环境准备
准备好上面提到的所有环境,启动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对象存储服务、邮件发送服务、微信登录服务,后面如果需要引入其他的第三方服务,如短信服务、人脸识别服务。
网关模块
网关模块主要用来做请求转发、负载均衡,后面还可以新增其他功能,如何统一接口限流、ip禁用功能、灰色发布、统一业务处理等功能。
系统模块
该模块主要用来做系统的登录验证、权限控制,通过为角色分配操作菜单、操作功能,给用户分配角色,实现对账号的权限控制。
企业数据管理模块
企业数据模块主要用来管理企业信息、门店信息、门店的规则管理……
算法模块
算法模块主要提供排班计算、排班结果存储、排班月视图、周视图查看等服务。
系统账号
导入项目提供的sql之后,数据库里面内置了一些账号
- 系统管理员:admin 123456
- 企业管理员:one 123456
- 门店管理员:two 123456(three、four、five往上都是门店管理员的用户名,密码都是123456)