优化日程和提醒互导功能
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
"server/services"
|
||||
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
)
|
||||
|
||||
type BackendReminderController struct {
|
||||
@@ -90,12 +91,16 @@ func (c *BackendReminderController) GetReminderList() {
|
||||
pageSize = 20
|
||||
}
|
||||
|
||||
qs := models.Orm.QueryTable(new(models.BackendSchedule)).
|
||||
Filter("tid", claims.TenantId)
|
||||
|
||||
qs := models.Orm.QueryTable(new(models.BackendSchedule))
|
||||
cond := orm.NewCondition().And("tid", claims.TenantId)
|
||||
if keyword != "" {
|
||||
qs = qs.Filter("content__contains", keyword)
|
||||
// 关键字同时匹配备注(content)与标题(title),兼容关联 OA 工作日程的提醒
|
||||
kwCond := orm.NewCondition().
|
||||
Or("content__contains", keyword).
|
||||
Or("title__contains", keyword)
|
||||
cond = cond.AndCond(kwCond)
|
||||
}
|
||||
qs = qs.SetCond(cond)
|
||||
|
||||
total, _ := qs.Count()
|
||||
|
||||
@@ -127,10 +132,16 @@ func (c *BackendReminderController) GetReminderList() {
|
||||
}
|
||||
}
|
||||
|
||||
// 兼容关联 OA 工作日程的提醒:日程备注(content)可能为空,
|
||||
// 实际描述存在标题(title),此时回退用标题填充内容,避免列表显示空白。
|
||||
displayContent := strings.TrimSpace(s.Content)
|
||||
if displayContent == "" {
|
||||
displayContent = s.Title
|
||||
}
|
||||
item := map[string]interface{}{
|
||||
"id": s.ID,
|
||||
"title": s.Title,
|
||||
"content": s.Content,
|
||||
"content": displayContent,
|
||||
"schedule_time": s.ScheduleTime.Format("2006-01-02 15:04:05"),
|
||||
"remind_channels": channels,
|
||||
"user_id": s.UserID,
|
||||
@@ -209,10 +220,15 @@ func (c *BackendReminderController) GetReminderDetail() {
|
||||
}
|
||||
}
|
||||
|
||||
// 同列表:关联 OA 工作日程的提醒 content 可能为空,回退用 title 填充
|
||||
detailContent := strings.TrimSpace(schedule.Content)
|
||||
if detailContent == "" {
|
||||
detailContent = schedule.Title
|
||||
}
|
||||
data := map[string]interface{}{
|
||||
"id": schedule.ID,
|
||||
"title": schedule.Title,
|
||||
"content": schedule.Content,
|
||||
"content": detailContent,
|
||||
"schedule_time": schedule.ScheduleTime.Format("2006-01-02 15:04:05"),
|
||||
"remind_channels": channels,
|
||||
"receiver_targets": targets,
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -293,6 +293,7 @@ func Register() {
|
||||
beego.Router("/platform/reminder/:id", &controllers.PlatformReminderController{}, "get:GetReminderDetail;put:UpdateReminder;delete:DeleteReminder")
|
||||
beego.Router("/platform/reminder", &controllers.PlatformReminderController{}, "post:CreateReminder")
|
||||
beego.Router("/platform/reminder/batchDelete", &controllers.PlatformReminderController{}, "post:BatchDeleteReminder")
|
||||
beego.Router("/platform/reminder/:id/finish", &controllers.PlatformReminderController{}, "post:FinishReminder")
|
||||
|
||||
// 官网模板管理(上传/扫描登记/在线编辑/启停删除 + 标签调用说明)
|
||||
beego.Router("/platform/template/index", &controllers.PlatformTemplateController{}, "get:Index")
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
exit status 0xffffffff
|
||||
Reference in New Issue
Block a user