package controllers import ( "encoding/json" "io" "strconv" "server/pkg/identity" "server/pkg/jwtutil" "server/services" beego "github.com/beego/beego/v2/server/web" ) type BackendSiteReminderController struct { beego.Controller } func (c *BackendSiteReminderController) backendClaims() (*jwtutil.Claims, error) { return identity.Claims(c.Ctx.Request.Header.Get("Authorization"), identity.EndBackend) } func (c *BackendSiteReminderController) jsonErr(httpStatus, bizCode int, msg string) { c.Ctx.Output.SetStatus(httpStatus) c.Data["json"] = map[string]interface{}{"code": bizCode, "msg": msg} _ = c.ServeJSON() } // GetMyList GET /backend/sitereminder/myList func (c *BackendSiteReminderController) GetMyList() { claims, err := c.backendClaims() if err != nil { code := identity.Status(err) c.jsonErr(code, code, err.Error()) return } page, _ := c.GetInt("page", 1) pageSize, _ := c.GetInt("pageSize", 10) var isRead *int8 if isReadStr := c.GetString("isRead"); isReadStr != "" { if val, err := strconv.Atoi(isReadStr); err == nil { v := int8(val) isRead = &v } } list, total, err := services.ListReminders(uint64(claims.UserID), "tenant", page, pageSize, isRead) if err != nil { c.jsonErr(500, 500, "获取消息列表失败: "+err.Error()) return } c.Data["json"] = map[string]interface{}{ "code": 200, "msg": "success", "data": map[string]interface{}{ "list": list, "total": total, }, } _ = c.ServeJSON() } // MarkRead POST /backend/sitereminder/read func (c *BackendSiteReminderController) MarkRead() { claims, err := c.backendClaims() if err != nil { code := identity.Status(err) c.jsonErr(code, code, err.Error()) return } raw, err := io.ReadAll(c.Ctx.Request.Body) if err != nil { c.jsonErr(400, 400, "参数错误") return } var p struct { ID uint64 `json:"id"` } if err := json.Unmarshal(raw, &p); err != nil { c.jsonErr(400, 400, "参数错误") return } err = services.MarkReminderRead(p.ID, uint64(claims.UserID), "tenant") if err != nil { c.jsonErr(500, 500, "操作失败: "+err.Error()) return } c.Data["json"] = map[string]interface{}{"code": 200, "msg": "success"} _ = c.ServeJSON() } // MarkAllRead POST /backend/sitereminder/readall func (c *BackendSiteReminderController) MarkAllRead() { claims, err := c.backendClaims() if err != nil { code := identity.Status(err) c.jsonErr(code, code, err.Error()) return } err = services.MarkAllRemindersRead(uint64(claims.UserID), "tenant") if err != nil { c.jsonErr(500, 500, "操作失败: "+err.Error()) return } c.Data["json"] = map[string]interface{}{"code": 200, "msg": "success"} _ = c.ServeJSON() } // Delete POST /backend/sitereminder/delete func (c *BackendSiteReminderController) Delete() { claims, err := c.backendClaims() if err != nil { code := identity.Status(err) c.jsonErr(code, code, err.Error()) return } raw, err := io.ReadAll(c.Ctx.Request.Body) if err != nil { c.jsonErr(400, 400, "参数错误") return } var p struct { ID uint64 `json:"id"` } if err := json.Unmarshal(raw, &p); err != nil { c.jsonErr(400, 400, "参数错误") return } err = services.DeleteReminder(p.ID, uint64(claims.UserID), "tenant") if err != nil { c.jsonErr(500, 500, "删除失败: "+err.Error()) return } c.Data["json"] = map[string]interface{}{"code": 200, "msg": "success"} _ = c.ServeJSON() }