水杉码园入坑指北
概述
水杉码园使用Go语言,基于Gitea开发。本文用于记录如何入坑开发。
开发机
先用Cisco的VPN登录,再连接开发机。
待完善……
Windows环境下clone代码
水杉码园的代码存储在gitlab上:ShuiShan / Gitea / gitea · GitLab。并且该地址需要拥有项目管理权限的人员(徐柴笛、周成义、李苗进、顾业鸣)进行授权才可访问。
clone代码的操作:
- 安装Git
Clone With HTTPS
- 先在命令行执行
git config --global http.sslVerify false
git clone https://code.kfcoding.com/ShuiShan/Gitea/gitea.git
- 先在命令行执行
Windows下环境搭建
安装go
安装node.js(一定要勾选会附带安装chocolatey的选项)
安装make(
choco install make
)设置npm的国内镜像代理
npm config set registry https://registry.npm.taobao.org
在Clone的项目文件夹下(
\gitea
),执行TAGS="bindata" make build
本地测试,执行
./gitea web
浏览器访问
http://localhost:3000/
登录水杉码园,配置本地数据库信息,记住要在可选设置中设置管理员账号
使用VS Code进行开发
安装git历史提交记录插件 GitLens
课程批量导入学生
- 入口:
/org/:org/teams/new_all_student
导入完成后,课程团队下会生成指定的团队:
团队为成员-仓库的形式
Owners
管理员-管理的仓库
AllStuRead
教师有操作权限,学生只有读权限。用于老师布置作业,分享数据、资料。
AllStuWrite
所有学生都有操作权限
课程中的仓库,除了AllStuWrite和AllStuRead这两个公开仓库之外,每个学生还有自己的个人仓库,目前以学号作为仓库名。仓库描述为student u.Name(学号) u.FullName(用户名)'s repo
。
代码
routes.go
下,m.Post("/teams/new_all_student", bindIgnErr(auth.CreateAllStuTeamForm{}), org.NewAllStuTeamPost)
auth.CreateAllStuTeamForm{}
相当于是前端的表单其中的Studentlist表示的上传的excel文件
这个Post函数将前端的表单传入后端的
NewAllStuTeamPost
函数,细看一下NewAllStuTeamPost方法
首先是通过前端的form获取相应的基本信息
再来我们可以先看一下这个函数最后的部分
GetCache().Set
这里把课程ID(
Organization.ID
)设置了1分钟的缓存再回过头来看上边的代码,如果能在缓存中获取到课程ID的缓存,说明之前一分钟内有过成功导入的记录,就会给出一个不要多次导入的提示并结束导入学生的操作