优化日程和提醒互导功能

This commit is contained in:
2026-09-09 18:42:22 +08:00
parent c146dc2f2f
commit a89bdd839b
5 changed files with 184 additions and 9 deletions
+53
View File
@@ -555,6 +555,59 @@ func (c *PlatformReminderController) BatchDeleteReminder() {
c.ok(nil)
}
// FinishReminder POST /platform/reminder/:id/finish
// 切换日程提醒的结束状态:若尚有提醒未结束则全部置为已结束;若已全部结束则恢复为待提醒。
func (c *PlatformReminderController) FinishReminder() {
if _, err := c.platformClaims(); err != nil {
c.jsonErr(401, 401, err.Error())
return
}
idStr := c.Ctx.Input.Param(":id")
id, _ := strconv.ParseUint(idStr, 10, 64)
if id == 0 {
c.jsonErr(400, 400, "无效的ID")
return
}
var schedule models.PlatformSchedule
err := models.Orm.QueryTable(new(models.PlatformSchedule)).Filter("id", id).One(&schedule)
if err != nil {
c.jsonErr(404, 404, "日程未找到")
return
}
var reminders []models.PlatformScheduleReminder
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
Filter("schedule_id", id).
Filter("is_deleted", 0).
All(&reminders)
allFinished := len(reminders) > 0
for _, r := range reminders {
if r.RemindStatus != 2 {
allFinished = false
break
}
}
var newStatus int8
if allFinished {
newStatus = 0
} else {
newStatus = 2
}
now := time.Now()
for i := range reminders {
reminders[i].RemindStatus = newStatus
reminders[i].UpdateTime = now
_, _ = models.Orm.Update(&reminders[i], "RemindStatus", "UpdateTime")
}
c.ok(map[string]interface{}{"is_finished": newStatus == 2})
}
type reminderTestPayload struct {
Title string `json:"title"`
Content string `json:"content"`