You can not 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
3.0 KiB
107 lines
3.0 KiB
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) |
|
}
|
|
|