优化
This commit is contained in:
1 parent
d9a50e23dd
commit
4f1acaa451
25 files changed
+1265
-335
No files matched your search
@@ -447,14 +447,14 @@ func (c *BackendOaScheduleController) Stats() {
|
||||
}
|
||||
|
||||
type oaSchedulePayload struct {
|
||||
Title string `json:"title"`
|
||||
Content string `json:"content"`
|
||||
ScheduleDate string `json:"schedule_date"`
|
||||
StartTime string `json:"start_time"`
|
||||
EndTime string `json:"end_time"`
|
||||
AllDay int8 `json:"all_day"`
|
||||
Color string `json:"color"`
|
||||
Priority int8 `json:"priority"`
|
||||
Title string `json:"title"`
|
||||
Content string `json:"content"`
|
||||
ScheduleDate string `json:"schedule_date"`
|
||||
StartTime string `json:"start_time"`
|
||||
EndTime string `json:"end_time"`
|
||||
AllDay int8 `json:"all_day"`
|
||||
Color string `json:"color"`
|
||||
Priority int8 `json:"priority"`
|
||||
// 提醒绑定:开启后会在提醒工具生成一条提醒任务,并把其 ID 回写到 ReminderID。
|
||||
ReminderEnabled bool `json:"reminder_enabled"`
|
||||
ReminderTime string `json:"reminder_time"`
|
||||
@@ -1157,6 +1157,7 @@ func (c *BackendOaScheduleController) CarrySchedule() {
|
||||
// 目标日期可选,不传则默认顺延到下一天
|
||||
var payload struct {
|
||||
TargetDate string `json:"target_date"`
|
||||
Mode string `json:"mode"`
|
||||
}
|
||||
if raw, e := io.ReadAll(c.Ctx.Request.Body); e == nil && len(raw) > 0 {
|
||||
_ = json.Unmarshal(raw, &payload)
|
||||
@@ -1180,7 +1181,56 @@ func (c *BackendOaScheduleController) CarrySchedule() {
|
||||
targetDate = nextOaDate(normalizeOaDate(item.ScheduleDate), 1)
|
||||
}
|
||||
|
||||
mode := strings.TrimSpace(payload.Mode)
|
||||
if mode != "" && mode != "to" && mode != "through" {
|
||||
c.oasJsonErr(400, 400, "延期方式无效")
|
||||
return
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
if mode == "through" {
|
||||
startDate := normalizeOaDate(item.ScheduleDate)
|
||||
if targetDate <= startDate {
|
||||
c.oasJsonErr(400, 400, "延期至日期需晚于当前日程日期")
|
||||
return
|
||||
}
|
||||
// 延期至代表将原日程推至终点日期,并在起始日之后到终点日的每一天创建独立待办。
|
||||
rootID := oaScheduleRootID(&item)
|
||||
created := 0
|
||||
for date := nextOaDate(startDate, 1); date != "" && date <= targetDate; date = nextOaDate(date, 1) {
|
||||
exists := models.Orm.QueryTable(new(models.OaSchedule)).Filter("is_deleted", 0).
|
||||
Filter("tid", claims.TenantId).Filter("user_id", claims.UserID).
|
||||
Filter("source_id", rootID).Filter("schedule_date", date).Exist()
|
||||
if exists {
|
||||
continue
|
||||
}
|
||||
next := &models.OaSchedule{
|
||||
Tid: item.Tid, UserID: item.UserID, UserName: item.UserName,
|
||||
Title: item.Title, Content: item.Content, Images: item.Images,
|
||||
ScheduleDate: date, StartTime: item.StartTime, EndTime: item.EndTime,
|
||||
AllDay: item.AllDay, Color: item.Color, Priority: item.Priority,
|
||||
Status: 0, SourceID: rootID, CarryCount: item.CarryCount + 1,
|
||||
IsDeleted: 0, CreateTime: now, UpdateTime: &now,
|
||||
}
|
||||
if _, insertErr := models.Orm.Insert(next); insertErr != nil {
|
||||
c.oasJsonErr(500, 500, "生成延期日程失败")
|
||||
return
|
||||
}
|
||||
created++
|
||||
}
|
||||
item.Status = 1
|
||||
item.FinishTime = &now
|
||||
item.CarryOver = 1
|
||||
item.CarryToDate = targetDate
|
||||
item.UpdateTime = &now
|
||||
if _, updateErr := models.Orm.Update(&item, "Status", "FinishTime", "CarryOver", "CarryToDate", "UpdateTime"); updateErr != nil {
|
||||
c.oasJsonErr(500, 500, "更新原日程失败")
|
||||
return
|
||||
}
|
||||
c.oasOk(map[string]interface{}{"created": created, "schedule_date": targetDate, "mode": "through"})
|
||||
return
|
||||
}
|
||||
|
||||
next, msg := carryOaSchedule(&item, targetDate, claims, now)
|
||||
if msg != "" {
|
||||
c.oasJsonErr(400, 400, msg)
|
||||
|
||||
Reference in new issue
Block a user