-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclass-joinin-get.go
105 lines (89 loc) · 2.92 KB
/
class-joinin-get.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package edurouter
import (
"eduX/eduiface"
"eduX/edumodel"
"eduX/edunet"
"eduX/utils"
"fmt"
"time"
"github.com/tidwall/gjson"
)
// ClassJoinInGetRouter 用于获取当前用户已加入的班级
type ClassJoinInGetRouter struct {
edunet.BaseRouter
}
// ClassJoinInGetReplyData 定义发当前用户已加入班级时Data段的参数
type ClassJoinInGetData struct {
UID string `json:"useruid"`
}
// ClassJoinInGetReplyData 定义返回当前用户已加入班级时Data段的参数
type ClassJoinInGetReplyData struct {
ClassName string `json:"class"`
AlterName string `json:"alter"`
TeacherList []string `json:"teachers"`
StudentList []string `json:"students"`
CreateTime time.Time `json:"time"`
}
// 返回状态
var classjoiningetReplyStatus string
// 返回数据
var classjoiningetReplyData ClassJoinInGetReplyData
// PreHandle 用于进行原始数据校验,权限验证,身份验证,数据获取和数据库操作
func (router *ClassJoinInGetRouter) PreHandle(request eduiface.IRequest) {
var reqMsgInJSON *ReqMsg
var ok bool
// 试图解码原始数据
reqMsgInJSON, classjoiningetReplyStatus, ok = CheckMsgFormat(request)
if ok != true {
return
}
// 检查当前连接是否已登录
classjoiningetReplyStatus, ok = CheckConnectionLogin(request, reqMsgInJSON.UID)
if ok != true {
return
}
var user *edumodel.User
uid := gjson.GetBytes(reqMsgInJSON.Data, "useruid").String()
if uid == "" {
uid = reqMsgInJSON.UID
}
user = edumodel.GetUserByUID(uid)
if user == nil {
classjoiningetReplyStatus = "user_not_found"
return
}
// 从数据库中获取当前用户已加入班级数据
class := edumodel.GetClassByUID(user.UID, user.Place)
// 如果班级存在则将班级数据返回
if class == nil {
classjoiningetReplyStatus = "not_join_class"
} else {
classjoiningetReplyStatus = "success"
classjoiningetReplyData.AlterName = class.AlterName
classjoiningetReplyData.ClassName = class.ClassName
classjoiningetReplyData.StudentList = class.StudentList
classjoiningetReplyData.TeacherList = class.TeacherList
classjoiningetReplyData.CreateTime = class.CreateDate
}
}
// Handle 用于将请求的处理结果发回客户端
func (router *ClassJoinInGetRouter) Handle(request eduiface.IRequest) {
// 打印请求处理Log
fmt.Println("[ROUTERS] ", time.Now().Format(utils.GlobalObject.TimeFormat), ", Client Address: ", request.GetConnection().GetTCPConnection().RemoteAddr(), ",ClassJoinInGetRouter: ", classjoiningetReplyStatus)
var jsonMsg []byte
var err error
// 生成返回数据
if classjoiningetReplyStatus == "success" {
jsonMsg, err = CombineReplyMsg(classjoiningetReplyStatus, classjoiningetReplyData)
} else {
jsonMsg, err = CombineReplyMsg(classjoiningetReplyStatus, nil)
}
// 如果生成失败则报错返回
if err != nil {
fmt.Println("ClassJoinInGetRouter", err)
return
}
// 发送返回数据
c := request.GetConnection()
c.SendMsg(request.GetMsgID(), jsonMsg)
}