From fff1cb12ab1210073db425e7d6243f7bd6b20099 Mon Sep 17 00:00:00 2001 From: juzeon <812312770@qq.com> Date: Tue, 7 Feb 2023 21:55:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=95=99=E5=B8=88=E6=83=85?= =?UTF-8?q?=E5=86=B5=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/main.go | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 script/main.go diff --git a/script/main.go b/script/main.go new file mode 100644 index 0000000..1ef9d18 --- /dev/null +++ b/script/main.go @@ -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") + } +}