From aa4b2a8f10065accbf6a0334f4ab49d84fab8ef9 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Fri, 2 May 2025 21:58:40 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9monitor=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/tool.go | 61 ++++++++++++++++++++++++++++--------------------- proto/req.go | 7 ++++++ proto/status.go | 5 ++++ 3 files changed, 47 insertions(+), 26 deletions(-) create mode 100644 proto/req.go diff --git a/handler/tool.go b/handler/tool.go index 677a3e3..820854a 100644 --- a/handler/tool.go +++ b/handler/tool.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/gin-gonic/gin" "io" + "log" "net/http" "os" "strconv" @@ -58,40 +59,48 @@ func SetUpToolGroup(router *gin.Engine) { func SetDeviceStatusV2(c *gin.Context) { // TODO var req SetDeviceStatusReq + var resp proto.GeneralResp if err := c.ShouldBind(&req); err != nil { - c.JSON(200, gin.H{"code": 400, "message": "参数错误"}) - return + resp.Code = proto.ParameterError + resp.Message = "参数解析失败:" + err.Error() } else { token := c.Request.Header.Get("token") if token == "" { - c.JSON(200, gin.H{"code": 401, "message": "token为空"}) - return - } - devices := worker.GetRedisSetMembers(token) - if len(devices) == 0 { - c.JSON(200, gin.H{"code": 402, "message": "设备为空"}) - return - } - for _, v := range devices { - if v == req.ID { - // 继续处理请求 - //是否是暂停之后第一次上线,如果是则发送邮件通知 - device_status := worker.GetRedis("monitor_" + req.ID) - isExist := worker.IsContainKey("monitor_" + req.ID) - if device_status == "2" || !isExist { - //发送邮件通知 - title := "设备上线" - content := "设备上线\n设备:" + req.ID + "\t状态:" + req.Status + "\t时间:" + time.Now().String() - go SendMail(title, content) + resp.Code = proto.TokenIsNull //token为空 + } else { + devices := worker.GetRedisSetMembers(token) + if len(devices) == 0 { + resp.Code = proto.MonitorServerIDIsNull + resp.Message = "服务器设备监控为空!" + } else { + isExit := false + for _, v := range devices { + if v == req.ID { + // 继续处理请求 + //是否是暂停之后第一次上线,如果是则发送邮件通知 + deviceStatus := worker.GetRedis("monitor_" + req.ID) + isExist := worker.IsContainKey("monitor_" + req.ID) + if deviceStatus == "2" || !isExist { + //发送邮件通知 + title := "设备上线" + content := "设备上线\n设备:" + req.ID + "\t状态:" + req.Status + "\t时间:" + time.Now().String() + go SendMail(title, content) + } + worker.SetRedisWithExpire("monitor_"+req.ID, "1", time.Second*300) + resp.Code = proto.SuccessCode + resp.Message = "success" + isExit = true + } + } + if isExit == false { + resp.Code = proto.MonitorServerIDNotFound + resp.Message = "设备不存在!" + log.Println("设备不存在,id:", req.ID, "\ttoken:", token, "\tdevices:", devices) } - worker.SetRedisWithExpire("monitor_"+req.ID, "1", time.Second*300) - c.JSON(200, gin.H{"code": 0, "message": "success"}) - return } } - c.JSON(200, gin.H{"code": 402, "message": "设备不存在"}) } - + c.JSON(http.StatusOK, resp) } func GetFileList(c *gin.Context) { diff --git a/proto/req.go b/proto/req.go new file mode 100644 index 0000000..699e44e --- /dev/null +++ b/proto/req.go @@ -0,0 +1,7 @@ +package proto + +type GeneralResp struct { + Code int `json:"code"` + Message string `json:"message"` + Data any `json:"data"` +} diff --git a/proto/status.go b/proto/status.go index a4e005a..3d9710b 100644 --- a/proto/status.go +++ b/proto/status.go @@ -73,4 +73,9 @@ const ( ShellUpdateFailed = 101 // 更新shell失败 ShellDeleteFailed = 102 // 删除shell失败 ShellSearchFailed = 103 // 获取shell失败 + + //monitor部分错误码 + MonitorServerIDIsNull = 110 // 监控服务器ID为空 + MonitorServerIDNotFound = 111 // 监控服务器ID不存在 + ) From 252fa4683bb957ec7ebb689f9376a2c3c91b4531 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 16:34:37 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/cid.go | 7 +- main.go | 8 +- service/userService.go | 66 +++++++++++++ worker/req.go | 220 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 295 insertions(+), 6 deletions(-) diff --git a/handler/cid.go b/handler/cid.go index ca79ba8..2154dc5 100644 --- a/handler/cid.go +++ b/handler/cid.go @@ -11,6 +11,7 @@ import ( "time" "videoplayer/dao" "videoplayer/proto" + "videoplayer/service" "videoplayer/worker" ) @@ -62,7 +63,8 @@ func RunCID(c *gin.Context) { id, _ := c.Get("id") authID := int(id.(float64)) //获取权限 - user := dao.FindUserByUserID(authID) + //user := dao.FindUserByUserID(authID) + user := service.GetUserByIDFromUserCenter(authID) if user.Run == false { c.JSON(200, gin.H{"error": "no run Permissions", "code": proto.NoRunPermissions, "message": "no run Permissions"}) return @@ -197,7 +199,8 @@ func CIDCallback(c *gin.Context) { return } - user := dao.FindUserByUserID(res.Auth_id) + //user := dao.FindUserByUserID(res.Auth_id) + user := service.GetUserByIDFromUserCenter(res.Auth_id) if user.Run == false { c.JSON(200, gin.H{"error": "no run Permissions", "code": proto.NoRunPermissions, "message": "the user has no run Permissions"}) return diff --git a/main.go b/main.go index 5f00575..d9674d0 100644 --- a/main.go +++ b/main.go @@ -31,9 +31,9 @@ func main() { panic("failed to connect redis:" + err.Error()) } r.Use(handler.CrosHandler()) - r.Use(JWTAuthMiddleware()) // 使用 JWT 认证中间件 - handler.SetUpVideoGroup(r) // Video - handler.SetUpUserGroup(r) // User + r.Use(JWTAuthMiddleware()) // 使用 JWT 认证中间件 + handler.SetUpVideoGroup(r) // Video + //handler.SetUpUserGroup(r) // User handler.SetUpDeviceGroup(r) // Device handler.SetUpIMGroup(r) // IM handler.SetUpCIDGroup(r) // CID,持续集成、部署 @@ -351,7 +351,7 @@ func RunGeneralCron() { // 用户功能拦截,返回true表示拦截,false表示不拦截 func UserFuncIntercept(id int, url string) bool { //先查看是否有权限 - user := dao.FindUserByUserID(id) + user := service.GetUserByIDFromUserCenter(id) //如果用户有权限,则不拦截 for k, v := range proto.Per_menu_map { if strings.Contains(url, k) { diff --git a/service/userService.go b/service/userService.go index 6cf4e86..e2585dd 100644 --- a/service/userService.go +++ b/service/userService.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "github.com/golang-jwt/jwt" + "log" "regexp" "strconv" "time" @@ -400,3 +401,68 @@ func CreateTokenAndSave(user dao.User) (string, error) { // 返回令牌 return tokenString, err } + +// 获取用户信息,有redis缓存 +func GetUserByIDFromUserCenter(id int) dao.User { + if id <= 0 { + return dao.User{} + } + var user dao.User + //先从redis获取 + key := "user_info_" + strconv.Itoa(id) + user_str := worker.GetRedis(key) + if user_str != "" { + err := json.Unmarshal([]byte(user_str), &user) + if err != nil { + fmt.Println("get user info , json unmarshal error:", err, "\tuser_str:", user_str) + return dao.User{} + } + } else { + user = GetUserInfoByIDFromUserCenterHttp(id) + if user.ID != 0 { + userJson, err := json.Marshal(user) + if err != nil { + fmt.Println("get user info , json marshal error:", err) + return dao.User{} + } + success := worker.SetRedisWithExpire(key, string(userJson), time.Second*10) + if !success { + fmt.Println("set redis error,user json:", string(userJson)) + } + } + } + return user +} + +type UserInfoResponse struct { + Code int `json:"code"` + Message string `json:"message"` + Data dao.User `json:"data"` +} + +func GetUserInfoByIDFromUserCenterHttp(id int) dao.User { + var resp UserInfoResponse + url := "https://uc.ljsea.top/user/info?super_id=1" + tokens := worker.GetRedisSetMembers("super_permission_tokens") + if len(tokens) == 0 { + return resp.Data + } + token := tokens[0] + //请求参数 + req := map[string]int{ + "id": id, + } + headers := map[string]string{ + "token": token, + } + reqByte, _ := json.Marshal(req) + err, respBytes := worker.DoPostRequestJSON(url, reqByte, headers) + if err != nil { + log.Println("GetUserInfoByIDFromUserCenterHttp error:", err) + return resp.Data + } + if err2 := json.Unmarshal(respBytes, &resp); err2 != nil { + log.Println("GetUserInfoByIDFromUserCenterHttp json unmarshal error:", err2) + } + return resp.Data +} diff --git a/worker/req.go b/worker/req.go index 56615cb..bff6bc9 100644 --- a/worker/req.go +++ b/worker/req.go @@ -6,7 +6,11 @@ import ( "fmt" "io" "io/ioutil" + "log" + "mime/multipart" "net/http" + "net/url" + "strconv" "strings" "videoplayer/dao" "videoplayer/proto" @@ -279,3 +283,219 @@ func SyncDataFromMasterShellReq3(url string, data proto.SyncUserShellResp) ([]pr res = response.Data return res, nil } + +func DoPostRequestJSON(url string, jsonData []byte, headers map[string]string) (error, []byte) { + httpClient := &http.Client{} + defer func() { + if r := recover(); r != nil { + fmt.Println("SyncDataFromMasterReq2 error:", r) + } + }() + + //从接口获取数据 + req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) + if err != nil { + return err, nil + } + req.Header.Set("Content-Type", "application/json") + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0") + //设置header + for k, v := range headers { + req.Header.Set(k, v) + } + //传输数据 + if httpClient == nil { + httpClient = &http.Client{} + } + //获取数据 + resp, err := httpClient.Do(req) + if err != nil { + return err, nil + } + defer resp.Body.Close() + //解析数据 + responseBod, err := io.ReadAll(resp.Body) + if err != nil { + return err, nil + } + return err, responseBod +} + +func DoPostRequestForm(url string, jsonData []byte, headers map[string]string) (error, []byte) { + httpClient := &http.Client{} + defer func() { + if r := recover(); r != nil { + fmt.Println("SyncDataFromMasterReq2 error:", r) + } + }() + + // 创建一个新的 buffer 用于存储 multipart/form-data 请求体 + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + // 修改 data 类型为 map[string]interface{} 以支持不同类型的值 + var data map[string]interface{} + err2 := json.Unmarshal(jsonData, &data) + if err2 != nil { + log.Println("do post json unmarshal error:", err2) + return err2, nil + } + + var err error + for k, v := range data { + switch val := v.(type) { + case bool: + // 处理布尔类型的值 + err = writer.WriteField(k, strconv.FormatBool(val)) + case string: + // 处理字符串类型的值 + err = writer.WriteField(k, val) + default: + // 其他类型可以根据需要扩展处理逻辑 + log.Printf("Unsupported type for field %s: %T\n", k, v) + continue + } + if err != nil { + log.Println("write field error:", err) + return err, nil + } + } + + // 关闭 writer 以完成请求体的构建 + err = writer.Close() + if err != nil { + return err, nil + } + + // 创建 POST 请求 + req, err := http.NewRequest("POST", url, body) + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0") + if err != nil { + return err, nil + } + + // 设置 Content-Type 为 multipart/form-data,并带上 boundary + req.Header.Set("Content-Type", writer.FormDataContentType()) + + // 设置其他自定义请求头 + for k, v := range headers { + req.Header.Set(k, v) + } + + // 发送请求 + resp, err := httpClient.Do(req) + if err != nil { + return err, nil + } + defer resp.Body.Close() + + // 读取响应体 + responseBod, err := io.ReadAll(resp.Body) + if err != nil { + return err, nil + } + + return nil, responseBod +} + +func DoPostRequestFormUrlEncoded(url_ string, jsonData []byte, headers map[string]string) (error, []byte) { + httpClient := &http.Client{} + defer func() { + if r := recover(); r != nil { + log.Println("SyncDataFromMasterReq2 error:", r) + } + }() + + // 解析 JSON 数据 + var data map[string]interface{} + err := json.Unmarshal(jsonData, &data) + if err != nil { + log.Println("do post json unmarshal error:", err) + return err, nil + } + + // 创建 url.Values 来存储请求参数 + reqData := url.Values{} + for k, v := range data { + switch val := v.(type) { + case bool: + // 处理布尔类型的值 + reqData.Set(k, strconv.FormatBool(val)) + case string: + // 处理字符串类型的值 + reqData.Set(k, val) + default: + // 其他类型可以根据需要扩展处理逻辑 + log.Printf("Unsupported type for field %s: %T\n", k, v) + continue + } + } + + // 将 url.Values 编码为 URL 编码的格式 + encodedData := reqData.Encode() + + // 创建 POST 请求 + req, err := http.NewRequest("POST", url_, bytes.NewBufferString(encodedData)) + if err != nil { + return err, nil + } + + // 设置请求头 + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0") + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + // 设置其他自定义请求头 + for k, v := range headers { + req.Header.Set(k, v) + } + + // 发送请求 + resp, err := httpClient.Do(req) + if err != nil { + return err, nil + } + defer resp.Body.Close() + + // 读取响应体 + responseBod, err := io.ReadAll(resp.Body) + if err != nil { + return err, nil + } + + return nil, responseBod +} + +func DoGetRequest(url string, headers map[string]string) (error, []byte) { + httpClient := &http.Client{} + defer func() { + if r := recover(); r != nil { + fmt.Println("SyncDataFromMasterReq2 error:", r) + } + }() + + //从接口获取数据 + req, err := http.NewRequest("GET", url, nil) + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0") + if err != nil { + return err, nil + } + //设置header + for k, v := range headers { + req.Header.Set(k, v) + } + //传输数据 + if httpClient == nil { + httpClient = &http.Client{} + } + //获取数据 + resp, err := httpClient.Do(req) + if err != nil { + return err, nil + } + defer resp.Body.Close() + //解析数据 + responseBod, err := io.ReadAll(resp.Body) + if err != nil { + return err, nil + } + return err, responseBod +} From 724c5e6c1f719c80a345f7a424c2e5f18f5a483a Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 16:44:33 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/userService.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/service/userService.go b/service/userService.go index e2585dd..eaaca60 100644 --- a/service/userService.go +++ b/service/userService.go @@ -431,6 +431,8 @@ func GetUserByIDFromUserCenter(id int) dao.User { } } } + user_str = worker.GetRedis(key) + log.Println("user_str:", user_str) return user } From 8a55bfc82b90bd2c2dc3c11b3600fb6f21c6dfc4 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 16:50:43 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/userService.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/service/userService.go b/service/userService.go index eaaca60..4bfd932 100644 --- a/service/userService.go +++ b/service/userService.go @@ -425,13 +425,13 @@ func GetUserByIDFromUserCenter(id int) dao.User { fmt.Println("get user info , json marshal error:", err) return dao.User{} } - success := worker.SetRedisWithExpire(key, string(userJson), time.Second*10) + user_str = string(userJson) + success := worker.SetRedisWithExpire(key, user_str, time.Second*10) if !success { - fmt.Println("set redis error,user json:", string(userJson)) + fmt.Println("set redis error,user json:", user_str) } } } - user_str = worker.GetRedis(key) log.Println("user_str:", user_str) return user } From 4ecdda946849236a0642c83c27e6b3538ba50153 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 16:53:29 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/userService.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/service/userService.go b/service/userService.go index 4bfd932..f95cfb5 100644 --- a/service/userService.go +++ b/service/userService.go @@ -410,11 +410,12 @@ func GetUserByIDFromUserCenter(id int) dao.User { var user dao.User //先从redis获取 key := "user_info_" + strconv.Itoa(id) - user_str := worker.GetRedis(key) - if user_str != "" { - err := json.Unmarshal([]byte(user_str), &user) + userStr := worker.GetRedis(key) + log.Println("user_str:", userStr) + if userStr != "" { + err := json.Unmarshal([]byte(userStr), &user) if err != nil { - fmt.Println("get user info , json unmarshal error:", err, "\tuser_str:", user_str) + fmt.Println("get user info , json unmarshal error:", err, "\tuser_str:", userStr) return dao.User{} } } else { @@ -425,14 +426,16 @@ func GetUserByIDFromUserCenter(id int) dao.User { fmt.Println("get user info , json marshal error:", err) return dao.User{} } - user_str = string(userJson) - success := worker.SetRedisWithExpire(key, user_str, time.Second*10) + userStr = string(userJson) + success := worker.SetRedisWithExpire(key, userStr, time.Second*10) if !success { - fmt.Println("set redis error,user json:", user_str) + fmt.Println("set redis error,user json:", userStr) } + } else { + log.Println("GetUserByIDFromUserCenter user not found, id:", id) + log.Println("response user:", user) } } - log.Println("user_str:", user_str) return user } From 1dd87d717e12a55558007e31f7ef5b49064b72bd Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 16:55:16 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/userService.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/service/userService.go b/service/userService.go index f95cfb5..6edd7e1 100644 --- a/service/userService.go +++ b/service/userService.go @@ -469,5 +469,9 @@ func GetUserInfoByIDFromUserCenterHttp(id int) dao.User { if err2 := json.Unmarshal(respBytes, &resp); err2 != nil { log.Println("GetUserInfoByIDFromUserCenterHttp json unmarshal error:", err2) } + if resp.Data.ID == 0 { + log.Println("GetUserInfoByIDFromUserCenterHttp user not found, resp:", string(respBytes)) + return resp.Data + } return resp.Data } From 6366a029004bd55c47116bac0a02a07fe219da5e Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 19:50:02 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/userService.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/userService.go b/service/userService.go index 6edd7e1..dd09c8e 100644 --- a/service/userService.go +++ b/service/userService.go @@ -125,8 +125,8 @@ func UpdateUser(user_id int, req proto.UpdateUserInfoReq) (int, error) { func UpdateUserCache(id int) { key := "user_info_" + strconv.Itoa(id) if worker.IsContainKey(key) { - user := GetUserByID(id) - userJson, err := json.Marshal(user) + users := GetUserByID(id) + userJson, err := json.Marshal(users[0]) //统一使用User不使用数组 if err != nil { fmt.Println("get user info , json marshal error:", err) } From abd00e9ec076ee4c50f882ef2dd591865d2a662b Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 1 Jun 2025 20:24:24 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/userService.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/userService.go b/service/userService.go index dd09c8e..844f56d 100644 --- a/service/userService.go +++ b/service/userService.go @@ -411,7 +411,7 @@ func GetUserByIDFromUserCenter(id int) dao.User { //先从redis获取 key := "user_info_" + strconv.Itoa(id) userStr := worker.GetRedis(key) - log.Println("user_str:", userStr) + //log.Println("user_str:", userStr) if userStr != "" { err := json.Unmarshal([]byte(userStr), &user) if err != nil { From 892e080d6a0a7193ea1285b8cdf99669de383c9d Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Mon, 2 Jun 2025 14:47:38 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9redis=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worker/redis.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/worker/redis.go b/worker/redis.go index 3de62e6..b31735f 100644 --- a/worker/redis.go +++ b/worker/redis.go @@ -50,7 +50,7 @@ func IsContainKey(key string) bool { ctx := context.Background() val, err := RedisClient.Exists(ctx, key).Result() // 检查键是否存在, 如果存在则返回 1, 否则返回 0 if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return false } if val == 0 { @@ -170,7 +170,7 @@ func GetRedis(key string) string { ctx := context.Background() val, err := RedisClient.Get(ctx, key).Result() // 从 Redis 读取键值, 如果键不存在则返回空字符串, 如果出现错误则返回错误 if err != nil { - fmt.Println(key, " Error getting key: %v", err) + //fmt.Println(key, " Error getting key: %v", err) return "" } return val @@ -220,7 +220,7 @@ func GetRedisListLen(key string) int64 { ctx := context.Background() val, err := RedisClient.LLen(ctx, key).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return 0 } return val @@ -281,7 +281,7 @@ func hGetRedis(key string, field string) string { ctx := context.Background() val, err := RedisClient.HGet(ctx, key, field).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) } return val } @@ -362,7 +362,7 @@ func GetRedisSetIntersect(key1 string, key2 string) []string { ctx := context.Background() val, err := RedisClient.SInter(ctx, key1, key2).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return nil } return val @@ -373,7 +373,7 @@ func IsContainSet(key string, value string) bool { ctx := context.Background() val, err := RedisClient.SIsMember(ctx, key, value).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return false } return val @@ -384,7 +384,7 @@ func GetRedisSetMembers(key string) []string { ctx := context.Background() val, err := RedisClient.SMembers(ctx, key).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return nil } return val @@ -395,7 +395,7 @@ func SetRedisBitmap(key string, offset int64, value int) bool { ctx := context.Background() err := RedisClient.SetBit(ctx, key, offset, value).Err() if err != nil { - fmt.Println("Error setting key: %v", err) + //fmt.Println("Error setting key: %v", err) return false } return true @@ -406,7 +406,7 @@ func GetRedisBitmap(key string, offset int64) int { ctx := context.Background() val, err := RedisClient.GetBit(ctx, key, offset).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return 0 } return int(val) @@ -476,7 +476,7 @@ func GetRedisSetUnion(key1 string, key2 string) []string { ctx := context.Background() val, err := RedisClient.SUnion(ctx, key1, key2).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return nil } return val @@ -494,7 +494,7 @@ func GetAllRedisInfo() ([]RedisInfo, error) { ctx := context.Background() keys, err := RedisClient.Keys(ctx, "*").Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return nil, err } var redisInfos []RedisInfo @@ -502,12 +502,12 @@ func GetAllRedisInfo() ([]RedisInfo, error) { //先查看key类型,再根据类型获取value key_type, val, err := getKeyTypeAndData(key) if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return nil, err } expire, err := RedisClient.TTL(ctx, key).Result() if err != nil { - fmt.Println("Error getting key: %v", err) + //fmt.Println("Error getting key: %v", err) return nil, err } redisInfo := RedisInfo{ From d6bf91c9fdcbafa62282913ca0473cd52009aabf Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Mon, 2 Jun 2025 17:58:12 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/main.go b/main.go index d9674d0..faec90f 100644 --- a/main.go +++ b/main.go @@ -124,12 +124,7 @@ func JWTAuthMiddleware() gin.HandlerFunc { if proto.Config.TOKEN_USE_REDIS { redisToken := worker.GetRedis(tokenString) if redisToken == "" { - c.AbortWithStatus(200) - c.JSON(200, gin.H{ - "message": "NOT_LOGIN", - "error": "server token is empty", - "code": proto.TokenIsNull, - }) + c.AbortWithStatusJSON(http.StatusOK, gin.H{"message": "NOT_LOGIN", "error": "server token is empty", "code": proto.TokenIsNull}) return } } @@ -141,12 +136,7 @@ func JWTAuthMiddleware() gin.HandlerFunc { sId = c.Query("super_id") } if sId == "" { - c.AbortWithStatus(200) - c.JSON(200, gin.H{ - "message": "NOT_LOGIN", - "error": "super_id is empty", - "code": proto.TokenIsNull, - }) + c.AbortWithStatusJSON(http.StatusOK, gin.H{"message": "unauthorized", "error": "super_id is empty", "code": proto.TokenIsNull}) return } id, _ := strconv.Atoi(sId) @@ -164,8 +154,7 @@ func JWTAuthMiddleware() gin.HandlerFunc { // 验证令牌 if err != nil || !token.Valid { - c.AbortWithStatus(200) - c.JSON(200, gin.H{ + c.AbortWithStatusJSON(http.StatusOK, gin.H{ "message": "NOT_LOGIN", "error": "Invalid token", "code": proto.TokenExpired, @@ -178,8 +167,7 @@ func JWTAuthMiddleware() gin.HandlerFunc { c.Set("username", token.Claims.(jwt.MapClaims)["username"]) if UserFuncIntercept(int(token.Claims.(jwt.MapClaims)["id"].(float64)), c.Request.URL.Path) { - c.AbortWithStatus(200) - c.JSON(http.StatusOK, gin.H{ + c.AbortWithStatusJSON(http.StatusOK, gin.H{ "message": "no function permission", "error": "no permission", "code": proto.NoPermission,