Skip to content

EndlessTHchan/back_engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

毕设/课题管理后端服务

这是一个基于 Go 的简单课题/项目管理后端,提供登录注册、教师发布课题、学生选题、项目状态管理等基础接口,可用于课程设计或毕业设计选题系统的后端示例。

功能概览

  • 用户登录、注册(区分学生 / 教师)
  • 教师创建、更新、删除项目
  • 按教师姓名、标题、条件(状态/类型/专业/教师)查询项目
  • 查询所有项目、查询已提交/已审核项目
  • 学生选题、查看当前用户关联的项目
  • 查询个人信息、查询所有学生及其选题状态

主要接口(部分)

  • POST /login:用户登录,返回 JWT Token
  • POST /register:用户注册
  • GET /project-by-name:按教师姓名查询项目
  • GET /allproject:获取所有项目,支持 pagepage_size 分页
  • GET /projects/filter:按 statustypemajorteacher_name 等条件筛选项目,同样支持 pagepage_size 分页,并返回总数
  • POST /project-create:教师创建项目(需登录)
  • DELETE /delete-project:教师按标题删除项目(需登录)
  • PUT /update-project:教师更新项目(需登录)
  • GET /updatestatus:查询已提交项目(需登录)
  • PUT /updatestatus:将项目更新为已审核(需登录)
  • GET /personinfo:获取当前登录用户的个人信息(需登录)
  • GET /allstudentinfo:获取所有学生及其选题状态(需登录)
  • GET /my-projects:获取当前用户关联的项目(教师:自己创建的项目;学生:自己选择的项目,需登录)
  • POST /project-select:学生选择项目,将自己与项目建立关联(需登录)

受 JWT 保护的接口需要在 Authorization Header 中携带登录返回的 Token。

环境要求

  • Go 1.20+
  • MySQL 5.7/8.0

快速开始

  1. 安装依赖
go mod tidy
  1. 配置数据库

编辑 internal/config/Config.yaml,根据实际环境修改数据库连接信息(host、port、user、password、name)。

也可以通过环境变量覆盖配置,便于在开发、测试、生产环境中使用不同的数据库:

  • DB_HOST
  • DB_PORT
  • DB_USER
  • DB_PASSWORD
  • DB_NAME
  1. 运行服务
go run main.go

服务默认监听在 :8080 端口。

API 使用示例

1. 用户登录

curl -X POST "http://localhost:8080/login" \
	-H "Content-Type: application/json" \
	-d '{"userID": 10001, "password": "your_password"}'

返回示例(简化):

{
	"user_id": 10001,
	"username": "alice",
	"user_type": "student",
	"token": "<JWT_TOKEN>"
}

后续受保护接口在 Header 中携带:

Authorization: <JWT_TOKEN>

2. 分页获取项目列表

curl "http://localhost:8080/allproject?page=1&page_size=10"

返回示例(结构):

{
	"data": [
		{ "project_id": 1, "title": "..." }
	],
	"pagination": {
		"page": 1,
		"page_size": 10,
		"total": 20,
		"total_pages": 2
	}
}

3. 条件筛选项目

curl "http://localhost:8080/projects/filter?status=开放&type=论文&major=软件工程&page=1&page_size=10"

4. 学生选题

curl -X POST "http://localhost:8080/project-select" \
	-H "Authorization: <JWT_TOKEN>" \
	-H "Content-Type: application/json" \
	-d '{"project_id": 1}'

技术栈

  • 语言:Go
  • Web 框架:Gin (github.com/gin-gonic/gin)
  • ORM:GORM (gorm.io/gormgorm.io/driver/mysql)
  • 数据库:MySQL
  • 配置管理:YAML(gopkg.in/yaml.v2
  • 身份认证:JWT(github.com/dgrijalva/jwt-go
  • 密码加密:bcrypt(golang.org/x/crypto/bcrypt
  • 若需要部署在服务器上,配置nignx反向代理即可

核心数据模型(简要)

  • User:用户账号(user 表),包含 user_idusernamepasswordroleuser_type
  • Student:学生信息(student 表),通过 user_id 关联 User
  • Teacher:教师信息(teacher 表),通过 user_id 关联 User
  • Project:课题/项目(project 表),包含教师、状态、类型、专业等信息
  • project_student:项目与学生的多对多关联表(学生选题关系)

目录结构简介

  • main.go:程序入口,初始化数据库与路由
  • router/:路由注册
  • controller/:业务控制器,实现具体接口逻辑
  • internal/model/:数据模型定义
  • internal/config/:数据库配置与初始化
  • pkg/utils/:JWT、中间件等通用工具

About

毕设/课题管理后端服务

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors