108 lines
3.0 KiB
Go
108 lines
3.0 KiB
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"net/url"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
"time"
|
||
|
|
||
|
pushmdl "go-common/app/service/main/push/model"
|
||
|
"go-common/library/ecode"
|
||
|
"go-common/library/log"
|
||
|
bm "go-common/library/net/http/blademaster"
|
||
|
xtime "go-common/library/time"
|
||
|
)
|
||
|
|
||
|
func addTask(c *bm.Context) {
|
||
|
var (
|
||
|
id int64
|
||
|
err error
|
||
|
req = c.Request
|
||
|
auth = req.Header.Get("Authorization")
|
||
|
)
|
||
|
req.ParseMultipartForm(500 * 1024 * 1024) // 500M
|
||
|
appID, _ := strconv.ParseInt(req.FormValue("app_id"), 10, 64)
|
||
|
if appID < 1 {
|
||
|
log.Error("app_id is wrong: %s", req.FormValue("app_id"))
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
businessID, _ := strconv.ParseInt(req.FormValue("business_id"), 10, 64)
|
||
|
if businessID < 1 {
|
||
|
log.Error("business_id is wrong: %s", req.FormValue("business_id"))
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
platform := req.FormValue("platform")
|
||
|
am, err := url.ParseQuery(auth)
|
||
|
if err != nil {
|
||
|
log.Error("parse Authorization(%s) error(%v)", auth, err)
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
token := am.Get("token")
|
||
|
if token == "" {
|
||
|
log.Error("token is empty")
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
alertTitle := req.FormValue("alert_title")
|
||
|
alertBody := req.FormValue("alert_body")
|
||
|
if alertBody == "" {
|
||
|
log.Error("alert_body is empty")
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
mids := req.FormValue("mids")
|
||
|
if mids == "" {
|
||
|
log.Error("mids is empty")
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
linkType, _ := strconv.Atoi(req.FormValue("link_type"))
|
||
|
if linkType < 1 {
|
||
|
log.Error("link_type is wrong: %s", req.FormValue("link_type"))
|
||
|
c.JSON(nil, ecode.RequestErr)
|
||
|
return
|
||
|
}
|
||
|
linkValue := req.FormValue("link_value")
|
||
|
expireTime, _ := strconv.ParseInt(req.FormValue("expire_time"), 10, 64)
|
||
|
if expireTime == 0 {
|
||
|
expireTime = time.Now().Add(3 * 24 * time.Hour).Unix()
|
||
|
}
|
||
|
pushTime, _ := strconv.ParseInt(req.FormValue("push_time"), 10, 64)
|
||
|
if pushTime == 0 {
|
||
|
pushTime = time.Now().Unix()
|
||
|
}
|
||
|
passThrough, _ := strconv.Atoi(req.FormValue("pass_throught"))
|
||
|
builds := req.FormValue("builds")
|
||
|
group := req.FormValue("group")
|
||
|
uuid := req.FormValue("uuid")
|
||
|
imageURL := req.FormValue("image_url")
|
||
|
task := &pushmdl.Task{
|
||
|
Job: pushmdl.JobName(time.Now().UnixNano(), alertBody, linkValue, group),
|
||
|
Type: pushmdl.TaskTypeStrategyMid,
|
||
|
APPID: appID,
|
||
|
BusinessID: businessID,
|
||
|
Platform: pushmdl.SplitInts(platform),
|
||
|
Title: alertTitle,
|
||
|
Summary: alertBody,
|
||
|
LinkType: int8(linkType),
|
||
|
LinkValue: linkValue,
|
||
|
Build: pushmdl.ParseBuild(builds),
|
||
|
PassThrough: passThrough,
|
||
|
PushTime: xtime.Time(pushTime),
|
||
|
ExpireTime: xtime.Time(expireTime),
|
||
|
Status: pushmdl.TaskStatusPretreatmentPrepared,
|
||
|
Group: group,
|
||
|
ImageURL: imageURL,
|
||
|
Extra: &pushmdl.TaskExtra{Group: group},
|
||
|
}
|
||
|
log.Info("http add task(%d) uuid(%s) business(%d) link_value(%s) mids(%d)", task.Job, uuid, task.BusinessID, task.LinkValue, len(strings.Split(mids, ",")))
|
||
|
if id, err = srv.AddTask(c, uuid, token, task, mids); err != nil {
|
||
|
c.JSON(nil, err)
|
||
|
return
|
||
|
}
|
||
|
c.JSON(id, nil)
|
||
|
}
|