水杉码园入坑指北

概述

水杉码园使用Go语言,基于Gitea开发。本文用于记录如何入坑开发。


开发机

先用Cisco的VPN登录,再连接开发机。

待完善……


Windows环境下clone代码

水杉码园的代码存储在gitlab上:ShuiShan / Gitea / gitea · GitLab。并且该地址需要拥有项目管理权限的人员(徐柴笛、周成义、李苗进、顾业鸣)进行授权才可访问。

clone代码的操作:

  1. 安装Git
  2. Clone With HTTPS
    1. 先在命令行执行git config --global http.sslVerify false
    2. git clone https://code.kfcoding.com/ShuiShan/Gitea/gitea.git

Windows下环境搭建

  1. 安装go

  2. 安装node.js(一定要勾选会附带安装chocolatey的选项)

  3. 安装make(choco install make

  4. 设置npm的国内镜像代理npm config set registry https://registry.npm.taobao.org

  5. Clone的项目文件夹下(\gitea),执行TAGS="bindata" make build

  6. 本地测试,执行./gitea web

  7. 浏览器访问http://localhost:3000/

  8. 登录水杉码园,配置本地数据库信息,记住要在可选设置中设置管理员账号

    管理员账号设置

node版本如何升级 - 知乎


使用VS Code进行开发


课程批量导入学生

  • 入口:/org/:org/teams/new_all_student

导入完成后,课程团队下会生成指定的团队:

团队为成员-仓库的形式

  • Owners

    管理员-管理的仓库

  • AllStuRead

    教师有操作权限,学生只有读权限。用于老师布置作业,分享数据、资料。

  • AllStuWrite

    所有学生都有操作权限

课程中的仓库,除了AllStuWrite和AllStuRead这两个公开仓库之外,每个学生还有自己的个人仓库,目前以学号作为仓库名。仓库描述为student u.Name(学号) u.FullName(用户名)'s repo


代码

  1. routes.go下,m.Post("/teams/new_all_student", bindIgnErr(auth.CreateAllStuTeamForm{}), org.NewAllStuTeamPost)

    • auth.CreateAllStuTeamForm{}相当于是前端的表单

      其中的Studentlist表示的上传的excel文件

    这个Post函数将前端的表单传入后端的NewAllStuTeamPost函数,

  2. 细看一下NewAllStuTeamPost方法

    • 首先是通过前端的form获取相应的基本信息

    • 再来我们可以先看一下这个函数最后的部分GetCache().Set

      这里把课程ID(Organization.ID)设置了1分钟的缓存

    • 再回过头来看上边的代码,如果能在缓存中获取到课程ID的缓存,说明之前一分钟内有过成功导入的记录,就会给出一个不要多次导入的提示并结束导入学生的操作


批量移除选中的仓库


批量删除成员