78 lines
1.6 KiB
Go
78 lines
1.6 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, 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")
|
|
}
|