导出教师情况脚本
This commit is contained in:
父節點
a190e759c7
當前提交
fff1cb12ab
62
script/main.go
Normal file
62
script/main.go
Normal file
@ -0,0 +1,62 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"integrity-checkin/dao"
|
||||
"integrity-checkin/data/po"
|
||||
"io"
|
||||
"os"
|
||||
"sort"
|
||||
)
|
||||
|
||||
type UserActivityWithRealName struct {
|
||||
RealName string `json:"real_name"`
|
||||
po.UserActivity
|
||||
}
|
||||
|
||||
func main() {
|
||||
dao.Setup()
|
||||
var userActivities []UserActivityWithRealName
|
||||
err := dao.DB.Raw("select u.real_name,ua.* from user_activity ua " +
|
||||
" left join users u on u.id=ua.user_id where u.type=2").Find(&userActivities).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
days := map[string]struct{}{}
|
||||
teacherDays := map[string]map[string]struct{}{}
|
||||
for _, userActivity := range userActivities {
|
||||
if _, ok := days[userActivity.Day]; !ok {
|
||||
days[userActivity.Day] = struct{}{}
|
||||
}
|
||||
if teacherDays[userActivity.RealName] == nil {
|
||||
teacherDays[userActivity.RealName] = map[string]struct{}{}
|
||||
}
|
||||
teacherDays[userActivity.RealName][userActivity.Day] = struct{}{}
|
||||
}
|
||||
var daysArr []string
|
||||
for day := range days {
|
||||
daysArr = append(daysArr, day)
|
||||
}
|
||||
sort.Slice(daysArr, func(i, j int) bool {
|
||||
return daysArr[i] < daysArr[j]
|
||||
})
|
||||
f, err := os.OpenFile("out.csv", os.O_WRONLY|os.O_CREATE, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
io.WriteString(f, "姓名")
|
||||
for _, day := range daysArr {
|
||||
io.WriteString(f, ","+day)
|
||||
}
|
||||
io.WriteString(f, "\n")
|
||||
for teacherName, teacherMap := range teacherDays {
|
||||
io.WriteString(f, teacherName)
|
||||
for _, day := range daysArr {
|
||||
if _, ok := teacherMap[day]; ok {
|
||||
io.WriteString(f, ",1")
|
||||
} else {
|
||||
io.WriteString(f, ",0")
|
||||
}
|
||||
}
|
||||
io.WriteString(f, "\n")
|
||||
}
|
||||
}
|
載入中…
x
新增問題並參考
Block a user