talent/api.go

82 lines
1.7 KiB
Go

package main
import (
"path/filepath"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"github.com/line/line-bot-sdk-go/v7/linebot"
"github.com/rs/zerolog/log"
)
func ApiUpdateEmail(c *gin.Context) {
data := struct {
ID string `json:"id" binding:"required"`
Email string `json:"email" binding:"required,email"`
}{}
if err := c.ShouldBindJSON(&data); err != nil {
panic(err)
}
usr := &User{}
if err := DB.First(usr, "id = ?", data.ID).Error; err != nil {
// create user fallback
log.Error().Err(err).Msg("No User")
}
DB.Model(&User{}).Where("id = ?", data.ID).Update("email", data.Email)
OK(c, "ok")
msg := linebot.NewTextMessage("更新成功!")
sticker := linebot.NewStickerMessage("1070", "17840")
SendMessage("", data.ID, msg, sticker)
go func() {
time.Sleep(time.Second * 2)
SendMessage("", data.ID, DefaultMsg())
}()
}
func ApiPostReceipt(c *gin.Context) {
oid := c.Param("oid")
if oid == "" {
panic(ErrorBadRequest)
}
// order exists
order := &Order{}
if err := DB.First(order, "id = ?", oid).Error; err != nil {
panic(err)
}
// get file
f, err := c.FormFile("file")
if err != nil {
panic(err)
}
id := uuid.New()
ext := filepath.Ext(f.Filename)
storedFileName := strings.Replace(id.String(), "-", "", -1) + ext
t := time.Now()
dir := filepath.Join(
strconv.Itoa(t.Year()),
strconv.Itoa(int(t.Month())),
)
dest := filepath.Join(
"attachment",
dir,
)
Mkdir(dest)
// save file
dest = filepath.Join(dest, storedFileName)
if err = c.SaveUploadedFile(f, dest); err != nil {
panic(err)
}
if err = DB.Model(order).Update("attachment", filepath.Join(dir, storedFileName)).
Error; err != nil {
panic(err)
}
OK(c, "ok")
}