This commit is contained in:
2026-05-06 19:39:41 +08:00
parent 0a85cd4c49
commit 8bbde00594
+36 -16
View File
@@ -321,11 +321,14 @@ func ApiCalendar(r *gin.RouterGroup) {
} }
}) })
// 获取日历事件 // 获取日历事件(公开接口,无需登录)
r.POST("/calendar/events", func(ctx *gin.Context) { r.POST("/calendar/events", func(ctx *gin.Context) {
isAuth, _, data := AuthenticationAuthority(ctx) data, cookieval := SeparateData(ctx)
if isAuth {
// 直接从 data 中解析,避免 float64 → uint 类型问题 if data == nil {
ReturnJson(ctx, "jsonErr", nil)
return
}
calendarIDRaw, ok := data["calendar_id"].(float64) calendarIDRaw, ok := data["calendar_id"].(float64)
if !ok || calendarIDRaw == 0 { if !ok || calendarIDRaw == 0 {
ReturnJson(ctx, "jsonErr", nil) ReturnJson(ctx, "jsonErr", nil)
@@ -333,30 +336,47 @@ func ApiCalendar(r *gin.RouterGroup) {
} }
calendarID := uint(calendarIDRaw) calendarID := uint(calendarIDRaw)
// 解析日期字符串
startStr, _ := data["start"].(string) startStr, _ := data["start"].(string)
endStr, _ := data["end"].(string) endStr, _ := data["end"].(string)
startDate, _ := time.Parse("2006-01-02", startStr) startDate, _ := time.Parse("2006-01-02", startStr)
endDate, _ := time.Parse("2006-01-02", endStr) endDate, _ := time.Parse("2006-01-02", endStr)
// 查询:当前日历的事件 + 所有公共日程
var events []TabCalendarEvent var events []TabCalendarEvent
models.DB.Where("calendar_id = ? AND start_date <= ? AND end_date >= ? AND deleted_at IS NULL", models.DB.Where(
calendarID, &endDate, &startDate).Find(&events) "(calendar_id = ? OR is_public = ?) AND start_date <= ? AND end_date >= ? AND deleted_at IS NULL",
calendarID, true, &endDate, &startDate,
).Find(&events)
// 判断是否已登录
var currentUserID uint
isLogin := false
if cookieval != "" {
user, err := AuthenticationAuthorityFromCookie(cookieval)
if err == nil {
isLogin = true
currentUserID = user.ID
}
}
// 为事件添加编辑权限标识
var relist []map[string]interface{} var relist []map[string]interface{}
for _, event := range events { for _, event := range events {
data, _ := json.Marshal(event) eventMap, _ := json.Marshal(event)
var temp map[string]interface{} var item map[string]interface{}
json.Unmarshal(data, &temp) json.Unmarshal(eventMap, &item)
// 这里可以根据需要添加 edit 字段
relist = append(relist, temp) // 可编辑条件:事件创建者 或 日历管理员
canEdit := false
if isLogin {
if event.UserID == currentUserID || slices.Contains(calendarAdmins, currentUserID) {
canEdit = true
}
}
item["canEdit"] = canEdit
relist = append(relist, item)
} }
ReturnJson(ctx, "apiOK", gin.H{"list": relist}) ReturnJson(ctx, "apiOK", gin.H{"list": relist})
} else {
ReturnJson(ctx, "userCookieError", nil)
}
}) })
// 添加日历事件 // 添加日历事件