修复日程提醒功能
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"server/models"
|
||||
"server/pkg/jwtutil"
|
||||
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
@@ -23,18 +24,18 @@ type AppReminderController struct {
|
||||
func (c *AppReminderController) appClaims() (*jwtutil.Claims, error) {
|
||||
auth := c.Ctx.Request.Header.Get("Authorization")
|
||||
if auth == "" {
|
||||
return nil, fmt.Errorf("未登录")
|
||||
return nil, orm.ErrNoRows
|
||||
}
|
||||
parts := strings.SplitN(auth, " ", 2)
|
||||
if len(parts) != 2 || parts[0] != "Bearer" {
|
||||
return nil, fmt.Errorf("认证信息格式错误")
|
||||
return nil, orm.ErrNoRows
|
||||
}
|
||||
claims, err := jwtutil.ParseToken(parts[1])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("无效的token")
|
||||
return nil, err
|
||||
}
|
||||
if claims.UserType != "backend" && claims.UserType != "app" && claims.UserType != "platform" {
|
||||
return nil, fmt.Errorf("无权访问")
|
||||
return nil, orm.ErrNoRows
|
||||
}
|
||||
return claims, nil
|
||||
}
|
||||
@@ -71,7 +72,7 @@ type appSchedulePayload struct {
|
||||
func (c *AppReminderController) GetList() {
|
||||
claims, err := c.appClaims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
c.jsonErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -87,8 +88,9 @@ func (c *AppReminderController) GetList() {
|
||||
pageSize = 20
|
||||
}
|
||||
|
||||
qs := models.Orm.QueryTable(new(models.PlatformSchedule)).
|
||||
Filter("user_id", claims.UserID)
|
||||
qs := models.Orm.QueryTable(new(models.BackendSchedule)).
|
||||
Filter("user_id", claims.UserID).
|
||||
Filter("tid", claims.TenantId)
|
||||
|
||||
if keyword != "" {
|
||||
qs = qs.Filter("content__contains", keyword)
|
||||
@@ -96,17 +98,20 @@ func (c *AppReminderController) GetList() {
|
||||
|
||||
total, _ := qs.Count()
|
||||
|
||||
var schedules []models.PlatformSchedule
|
||||
var schedules []models.BackendSchedule
|
||||
_, err = qs.OrderBy("-id").Limit(pageSize, (page-1)*pageSize).All(&schedules)
|
||||
if err != nil {
|
||||
if err != nil && err != orm.ErrNoRows {
|
||||
c.jsonErr(500, 500, "查询失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
if schedules == nil {
|
||||
schedules = []models.BackendSchedule{}
|
||||
}
|
||||
|
||||
list := make([]map[string]interface{}, 0, len(schedules))
|
||||
for _, s := range schedules {
|
||||
var reminders []models.PlatformScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
var reminders []models.BackendScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", s.ID).
|
||||
Filter("is_deleted", 0).
|
||||
All(&reminders)
|
||||
@@ -166,7 +171,7 @@ func (c *AppReminderController) GetList() {
|
||||
func (c *AppReminderController) GetDetail() {
|
||||
claims, err := c.appClaims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
c.jsonErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -177,24 +182,25 @@ func (c *AppReminderController) GetDetail() {
|
||||
return
|
||||
}
|
||||
|
||||
var schedule models.PlatformSchedule
|
||||
err = models.Orm.QueryTable(new(models.PlatformSchedule)).
|
||||
var schedule models.BackendSchedule
|
||||
err = models.Orm.QueryTable(new(models.BackendSchedule)).
|
||||
Filter("id", id).
|
||||
Filter("user_id", claims.UserID).
|
||||
Filter("tid", claims.TenantId).
|
||||
One(&schedule)
|
||||
if err != nil {
|
||||
c.jsonErr(404, 404, "日程未找到")
|
||||
return
|
||||
}
|
||||
|
||||
var reminders []models.PlatformScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
var reminders []models.BackendScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", schedule.ID).
|
||||
Filter("is_deleted", 0).
|
||||
All(&reminders)
|
||||
|
||||
channels := make([]string, 0, len(reminders))
|
||||
var first models.PlatformScheduleReminder
|
||||
var first models.BackendScheduleReminder
|
||||
for _, r := range reminders {
|
||||
channels = append(channels, r.RemindChannel)
|
||||
first = r
|
||||
@@ -236,7 +242,7 @@ func (c *AppReminderController) GetDetail() {
|
||||
func (c *AppReminderController) Create() {
|
||||
claims, err := c.appClaims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
c.jsonErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -275,7 +281,8 @@ func (c *AppReminderController) Create() {
|
||||
title = "日程提醒"
|
||||
}
|
||||
|
||||
schedule := models.PlatformSchedule{
|
||||
schedule := models.BackendSchedule{
|
||||
Tid: claims.TenantId,
|
||||
Title: title,
|
||||
Content: content,
|
||||
ScheduleTime: schedTime,
|
||||
@@ -298,7 +305,8 @@ func (c *AppReminderController) Create() {
|
||||
|
||||
firstSendTime := schedTime.Add(-time.Duration(p.AdvanceMinutes) * time.Minute)
|
||||
|
||||
reminder := models.PlatformScheduleReminder{
|
||||
reminder := models.BackendScheduleReminder{
|
||||
Tid: claims.TenantId,
|
||||
ScheduleID: uint64(schedID),
|
||||
RemindChannel: ch,
|
||||
AdvanceMinutes: p.AdvanceMinutes,
|
||||
@@ -336,7 +344,7 @@ func (c *AppReminderController) Create() {
|
||||
func (c *AppReminderController) Update() {
|
||||
claims, err := c.appClaims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
c.jsonErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -364,18 +372,19 @@ func (c *AppReminderController) Update() {
|
||||
return
|
||||
}
|
||||
|
||||
var schedule models.PlatformSchedule
|
||||
err = models.Orm.QueryTable(new(models.PlatformSchedule)).
|
||||
var schedule models.BackendSchedule
|
||||
err = models.Orm.QueryTable(new(models.BackendSchedule)).
|
||||
Filter("id", id).
|
||||
Filter("user_id", claims.UserID).
|
||||
Filter("tid", claims.TenantId).
|
||||
One(&schedule)
|
||||
if err != nil {
|
||||
c.jsonErr(404, 404, "日程未找到")
|
||||
return
|
||||
}
|
||||
|
||||
var reminders []models.PlatformScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
var reminders []models.BackendScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", id).
|
||||
Filter("is_deleted", 0).
|
||||
All(&reminders)
|
||||
@@ -414,7 +423,7 @@ func (c *AppReminderController) Update() {
|
||||
}
|
||||
|
||||
// 软删除旧提醒,重建
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", id).
|
||||
Update(map[string]interface{}{
|
||||
"IsDeleted": 1,
|
||||
@@ -432,7 +441,8 @@ func (c *AppReminderController) Update() {
|
||||
|
||||
firstSendTime := schedTime.Add(-time.Duration(p.AdvanceMinutes) * time.Minute)
|
||||
|
||||
reminder := models.PlatformScheduleReminder{
|
||||
reminder := models.BackendScheduleReminder{
|
||||
Tid: claims.TenantId,
|
||||
ScheduleID: id,
|
||||
RemindChannel: ch,
|
||||
AdvanceMinutes: p.AdvanceMinutes,
|
||||
@@ -470,7 +480,7 @@ func (c *AppReminderController) Update() {
|
||||
func (c *AppReminderController) Delete() {
|
||||
claims, err := c.appClaims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
c.jsonErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -481,18 +491,19 @@ func (c *AppReminderController) Delete() {
|
||||
return
|
||||
}
|
||||
|
||||
var schedule models.PlatformSchedule
|
||||
err = models.Orm.QueryTable(new(models.PlatformSchedule)).
|
||||
var schedule models.BackendSchedule
|
||||
err = models.Orm.QueryTable(new(models.BackendSchedule)).
|
||||
Filter("id", id).
|
||||
Filter("user_id", claims.UserID).
|
||||
Filter("tid", claims.TenantId).
|
||||
One(&schedule)
|
||||
if err != nil {
|
||||
c.jsonErr(404, 404, "日程未找到")
|
||||
return
|
||||
}
|
||||
|
||||
var reminders []models.PlatformScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
var reminders []models.BackendScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", id).
|
||||
Filter("is_deleted", 0).
|
||||
All(&reminders)
|
||||
@@ -512,9 +523,9 @@ func (c *AppReminderController) Delete() {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = models.Orm.QueryTable(new(models.PlatformSchedule)).Filter("id", id).Delete()
|
||||
_, err = models.Orm.QueryTable(new(models.BackendSchedule)).Filter("id", id).Delete()
|
||||
if err == nil {
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", id).
|
||||
Update(map[string]interface{}{
|
||||
"IsDeleted": 1,
|
||||
@@ -530,7 +541,7 @@ func (c *AppReminderController) Delete() {
|
||||
func (c *AppReminderController) ToggleComplete() {
|
||||
claims, err := c.appClaims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
c.jsonErr(401, 401, "未登录或无权限")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -541,18 +552,19 @@ func (c *AppReminderController) ToggleComplete() {
|
||||
return
|
||||
}
|
||||
|
||||
var schedule models.PlatformSchedule
|
||||
err = models.Orm.QueryTable(new(models.PlatformSchedule)).
|
||||
var schedule models.BackendSchedule
|
||||
err = models.Orm.QueryTable(new(models.BackendSchedule)).
|
||||
Filter("id", id).
|
||||
Filter("user_id", claims.UserID).
|
||||
Filter("tid", claims.TenantId).
|
||||
One(&schedule)
|
||||
if err != nil {
|
||||
c.jsonErr(404, 404, "日程未找到")
|
||||
return
|
||||
}
|
||||
|
||||
var reminders []models.PlatformScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.PlatformScheduleReminder)).
|
||||
var reminders []models.BackendScheduleReminder
|
||||
_, _ = models.Orm.QueryTable(new(models.BackendScheduleReminder)).
|
||||
Filter("schedule_id", id).
|
||||
Filter("is_deleted", 0).
|
||||
All(&reminders)
|
||||
|
||||
Reference in New Issue
Block a user