You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.4 KiB
Go

package app
import (
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"miniapp/api"
"miniapp/global"
"miniapp/model/app"
"miniapp/model/common"
"miniapp/model/common/request"
r "miniapp/model/common/response"
"strconv"
"time"
)
type TodosApi struct{}
func (t TodosApi) GetUserTodos(ctx *gin.Context) {
var p request.GetUserNotes
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("参数错误:"+err.Error(), ctx)
global.GVA_LOG.Error("参数错误", zap.Error(err))
return
}
var ue app.User
if api.GetUser(ctx, &ue, false, true); ctx.IsAborted() {
return
}
p.UserId = strconv.Itoa(int(ue.ID))
list, err := todosService.GetUserTodos(&p)
if err != nil {
r.FailWithMessage("获取Todo列表失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取Todo列表失败", zap.Error(err))
return
}
r.OkWithData(list, ctx)
}
// UpdateTodo 更新Todo
func (t TodosApi) UpdateTodo(ctx *gin.Context) {
var todo common.UserTodo
if err := ctx.ShouldBind(&todo); err != nil {
r.FailWithMessage("参数错误:"+err.Error(), ctx)
global.GVA_LOG.Error("参数错误", zap.Error(err))
return
}
// 更新
err := todosService.UpdateTodoById(&todo)
if err != nil {
r.FailWithMessage(err.Error(), ctx)
global.GVA_LOG.Error("更新失败", zap.Error(err))
return
}
r.Ok(ctx)
}
// GetTodayTodos 获取今日待办
func (t TodosApi) GetTodayTodos(ctx *gin.Context) {
var p request.GetUserNotes
if err := ctx.ShouldBind(&p); err != nil {
r.FailWithMessage("参数错误:"+err.Error(), ctx)
global.GVA_LOG.Error("参数错误", zap.Error(err))
return
}
var ue app.User
if api.GetUser(ctx, &ue, false, true); ctx.IsAborted() {
return
}
p.UserId = strconv.Itoa(int(ue.ID))
list, err := todosService.GetTodayTodos(&p)
if err != nil {
r.FailWithMessage("获取Todo列表失败:"+err.Error(), ctx)
global.GVA_LOG.Error("获取Todo列表失败", zap.Error(err))
return
}
todos := make([]common.UserTodo, 0)
hour := time.Now().Hour()
for i := range list {
//将remind_time截取前两位 转为int
rt, _ := strconv.Atoi(list[i].RemindTime[:2])
rt2 := 24
if i+1 == len(list) {
rt2, _ = strconv.Atoi(list[len(list)-1].RemindTime[:2])
} else {
rt2, _ = strconv.Atoi(list[i+1].RemindTime[:2])
}
if hour >= rt && hour <= rt2 {
todos = append(todos, list[i])
}
}
//删除todos第一个元素
if len(todos) > 0 {
todos = todos[1:]
}
r.OkWithData(todos, ctx)
}