# 可学AI-实训网站2.0 ## 项目简介 平台是一个基于Spring Boot的智能技能实训管理系统,提供技能生成、课程管理、用户认证、通知系统等功能。 ## 技术栈 - **基础框架**:Spring Boot 3.2.2 - **持久层**:MyBatis 3.0.3 - **数据库**:MySQL - **缓存**:Redis - **认证**:Sa-Token 1.38.0 - **API文档**:Swagger 3.0.0 - **短信服务**:SMS4J 3.3.5 - **分布式锁**:Redisson 3.23.5 - **AI集成**:DeepSeek、GLM-4.6v ## 项目结构 ``` backend/ ├── .mvn/ # Maven包装器 ├── db/ # 数据库脚本 ├── src/ │ ├── main/ │ │ ├── java/art/kexue/sxwz/ # 主源码 │ │ │ ├── annotation/ # 自定义注解 │ │ │ ├── aspect/ # AOP切面 │ │ │ ├── common/ # 通用工具和常量 │ │ │ ├── config/ # 配置类 │ │ │ ├── controller/ # 控制器 │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── dto/ # 数据传输对象 │ │ │ │ └── request/ # 请求对象 │ │ │ ├── exception/ # 异常处理 │ │ │ ├── interceptor/ # 拦截器 │ │ │ ├── mapper/ # 数据访问层 │ │ │ ├── service/ # 服务层 │ │ │ │ └── impl/ # 服务实现 │ │ │ └── utils/ # 工具类 │ │ └── resources/ # 资源文件 │ │ ├── mapper/ # MyBatis映射文件 │ │ ├── static/ # 静态资源 │ │ ├── application-*.yml # 配置文件 │ │ └── logback-spring.xml # 日志配置 │ └── test/ # 测试代码 ├── .gitignore # Git忽略文件 ├── Dockerfile # Docker构建文件 ├── README.md # 项目说明 ├── mvnw.cmd # Maven包装器脚本 └── pom.xml # Maven依赖配置 ``` ## 核心功能 ### 1. 用户认证与授权 - 基于Sa-Token的认证系统 - 支持账号密码登录 - 支持手机验证码登录 - 角色权限管理(多级管理员) - 防重复提交 ### 2. 通知系统 - 系统通知(管理员操作记录) - 管理员对用户通知(支持多级发送) - 课程通知(老师群发课程消息) - 角色层级权限控制 - 已读状态管理 ### 3. 用户管理 - 用户注册与登录 - 用户信息管理 - 角色分配(主要管理员、次级管理员、学校管理员、学院管理员、老师、学生) - 用户权限验证 ### 4. 课程管理 - 课程创建与管理 - 课程学生管理 - 课程作业管理 - 课程考试管理 ### 5. 考勤系统 - 考勤记录管理 - 考勤统计 ### 6. 优秀作品管理 - 作品展示与管理 - 作品点赞 ### 7. 支付系统 - 微信支付集成 - 支付订单管理 - 账户余额管理 ### 8. 系统管理 - 菜单管理 - 角色管理 - 字典管理 - 系统日志 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 5.7+ - Redis 5.0+ ### 配置说明 1. 修改 `application-dev.yml` 文件中的数据库连接信息 2. 修改 `application.yml` 文件中的Redis连接信息 3. 修改 `application.yml` 文件中的AI模型API密钥 4. 修改 `application.yml` 文件中的短信服务配置 ### 数据库初始化 1. 执行 `db/create_edu_tables.sql` 创建数据库表 2. 执行 `db/sys_role_permission_data_init_merged.sql` 初始化权限数据 ### 启动项目 ```bash # 编译项目 mvn clean compile # 运行项目 mvn spring-boot:run ``` ### 访问地址 - 项目首页:http://localhost:8080 - Swagger文档:http://localhost:8080/doc.html ## 主要API ### 用户认证 - `POST /api/login` - 用户登录 - `POST /api/logout` - 用户登出 - `GET /api/currentUser` - 获取当前用户信息 ### 通知管理 - `POST /api/notification/send-to-users` - 发送通知给指定用户 - `POST /api/notification/send-to-roles` - 发送通知给指定角色 - `POST /api/notification/send-to-course` - 发送课程通知 - `GET /api/notification/user` - 查询当前用户通知列表 - `PUT /api/notification/user/{userId}/read-all` - 全部标记为已读 ### 用户管理 - `GET /api/user/list` - 获取用户列表 - `POST /api/user/save` - 保存用户 - `DELETE /api/user/delete/{id}` - 删除用户 ### 课程管理 - `GET /api/course/list` - 获取课程列表 - `POST /api/course/save` - 保存课程 - `GET /api/course/students/{courseId}` - 获取课程学生列表 ## 角色层级权限 | 角色 | 角色类型 | 可通知对象 | |------|----------|-----------| | 主要管理员(SUPER) | 1 | 次级管理员、学校管理员、学院管理员、老师、学生 | | 次级管理员(SUPER1) | 1 | 学校管理员、学院管理员、老师、学生 | | 学校管理员(SCHOOL_ADMIN) | 2 | 学院管理员、老师、学生 | | 学院管理员(COLLEGE_ADMIN) | 3 | 老师、学生 | | 老师(TEACHER) | 4 | 指定课程的学生 | | 学生(STUDENT) | 5 | 仅收件箱 | ## 部署说明 ### Docker部署 1. 构建Docker镜像 ```bash docker build -t sxwz-backend . ``` 2. 运行Docker容器 ```bash docker run -p 8080:8080 --name sxwz-backend sxwz-backend ``` ### 生产环境部署 1. 打包项目 ```bash mvn clean package -DskipTests ``` 2. 部署jar包 ```bash java -jar sxwz-backend.jar --spring.profiles.active=prod ``` ## 注意事项 1. 项目使用Redis作为缓存,需要确保Redis服务正常运行 2. 项目使用阿里云短信服务,需要配置相关参数 3. 项目使用AI模型API,需要配置相关API密钥 ## 许可证 本项目仅供内部使用,未经授权不得用于商业用途。 ## 联系方式 如有问题,请联系项目维护人员。