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.
283 lines
8.0 KiB
283 lines
8.0 KiB
package http |
|
|
|
import ( |
|
"context" |
|
"strconv" |
|
"time" |
|
|
|
"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" |
|
"go-common/library/xstr" |
|
) |
|
|
|
func push(c *bm.Context) { |
|
params := c.Request.Form |
|
appID, _ := strconv.ParseInt(params.Get("app_id"), 10, 64) |
|
if appID < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("app_id is wrong: %s", params.Get("app_id")) |
|
return |
|
} |
|
platform := params.Get("platform") |
|
alertTitle := params.Get("alert_title") |
|
if alertTitle != "" { |
|
res, err := pushSrv.Filter(c, alertTitle) |
|
if err == nil && res != alertTitle { |
|
log.Error("alertTitle(%s) contains invalid content", alertTitle) |
|
c.JSON(nil, ecode.PushSensitiveWordsErr) |
|
return |
|
} |
|
} |
|
alertBody := params.Get("alert_body") |
|
if alertBody == "" { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("alert_body is empty") |
|
return |
|
} |
|
res, err := pushSrv.Filter(c, alertBody) |
|
if err == nil && res != alertBody { |
|
log.Error("alertBody(%s) contains invalid content", alertBody) |
|
c.JSON(nil, ecode.PushSensitiveWordsErr) |
|
return |
|
} |
|
linkType, _ := strconv.Atoi(params.Get("link_type")) |
|
if linkType < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("link_type is wrong: %s", params.Get("link_type")) |
|
return |
|
} |
|
linkValue := params.Get("link_value") |
|
expireTime, _ := strconv.ParseInt(params.Get("expire_time"), 10, 64) |
|
if expireTime == 0 { |
|
expireTime = time.Now().Add(7 * 24 * time.Hour).Unix() |
|
} |
|
builds := params.Get("builds") |
|
sound, vibration := model.SwitchOn, model.SwitchOn |
|
if params.Get("sound") != "" { |
|
if sd, _ := strconv.Atoi(params.Get("sound")); sd == model.SwitchOff { |
|
sound = model.SwitchOff |
|
} |
|
} |
|
if params.Get("vibration") != "" { |
|
if vr, _ := strconv.Atoi(params.Get("vibration")); vr == model.SwitchOff { |
|
vibration = model.SwitchOff |
|
} |
|
} |
|
passThrough, _ := strconv.Atoi(params.Get("pass_through")) |
|
if passThrough != model.SwitchOn { |
|
passThrough = model.SwitchOff |
|
} |
|
mid := params.Get("mid") |
|
if mid == "" { |
|
log.Error("mid is empty", mid) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
mids, err := xstr.SplitInts(mid) |
|
if err != nil { |
|
log.Error("parse mid(%s) error(%v)", mid, err) |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
task := &model.Task{ |
|
ID: model.TempTaskID(), |
|
Job: model.JobName(time.Now().UnixNano(), alertBody, linkValue, ""), |
|
APPID: appID, |
|
Platform: model.SplitInts(platform), |
|
Title: alertTitle, |
|
Summary: alertBody, |
|
LinkType: int8(linkType), |
|
LinkValue: linkValue, |
|
PushTime: xtime.Time(time.Now().Unix()), |
|
ExpireTime: xtime.Time(expireTime), |
|
Build: model.ParseBuild(builds), |
|
Sound: sound, |
|
Vibration: vibration, |
|
PassThrough: passThrough, |
|
Group: params.Get("group"), |
|
ImageURL: params.Get("image_url"), |
|
} |
|
go pushSrv.Pushs(context.Background(), task, mids) |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func singlePush(c *bm.Context) { |
|
params := c.Request.Form |
|
appID, _ := strconv.ParseInt(params.Get("app_id"), 10, 64) |
|
if appID < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("app_id is wrong: %s", params.Get("app_id")) |
|
return |
|
} |
|
businessID, _ := strconv.ParseInt(params.Get("business_id"), 10, 64) |
|
if businessID < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("business_id is wrong: %s", params.Get("business_id")) |
|
return |
|
} |
|
token := params.Get("token") |
|
if token == "" { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("token is empty") |
|
return |
|
} |
|
platform := params.Get("platform") |
|
alertTitle := params.Get("alert_title") |
|
if alertTitle != "" { |
|
res, err := pushSrv.Filter(c, alertTitle) |
|
if err == nil && res != alertTitle { |
|
log.Error("alertTitle(%s) contains invalid content", alertTitle) |
|
c.JSON(nil, ecode.PushSensitiveWordsErr) |
|
return |
|
} |
|
} |
|
alertBody := params.Get("alert_body") |
|
if alertBody == "" { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("alert_body is empty") |
|
return |
|
} |
|
res, err := pushSrv.Filter(c, alertBody) |
|
if err == nil && res != alertBody { |
|
log.Error("alertBody(%s) contains invalid content", alertBody) |
|
c.JSON(nil, ecode.PushSensitiveWordsErr) |
|
return |
|
} |
|
linkType, _ := strconv.Atoi(params.Get("link_type")) |
|
if linkType < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("link_type is wrong: %s", params.Get("link_type")) |
|
return |
|
} |
|
linkValue := params.Get("link_value") |
|
expireTime, _ := strconv.ParseInt(params.Get("expire_time"), 10, 64) |
|
if expireTime == 0 { |
|
expireTime = time.Now().Add(7 * 24 * time.Hour).Unix() |
|
} |
|
builds := params.Get("builds") |
|
sound, vibration := model.SwitchOn, model.SwitchOn |
|
if params.Get("sound") != "" { |
|
if sd, _ := strconv.Atoi(params.Get("sound")); sd == model.SwitchOff { |
|
sound = model.SwitchOff |
|
} |
|
} |
|
if params.Get("vibration") != "" { |
|
if vr, _ := strconv.Atoi(params.Get("vibration")); vr == model.SwitchOff { |
|
vibration = model.SwitchOff |
|
} |
|
} |
|
passThrough, _ := strconv.Atoi(params.Get("pass_through")) |
|
if passThrough != model.SwitchOn { |
|
passThrough = model.SwitchOff |
|
} |
|
mid, _ := strconv.ParseInt(params.Get("mid"), 10, 64) |
|
if mid < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("mid is wrong (%d)", mid) |
|
return |
|
} |
|
task := &model.Task{ |
|
ID: model.TempTaskID(), |
|
Job: model.JobName(time.Now().UnixNano(), alertBody, linkValue, ""), |
|
BusinessID: businessID, |
|
APPID: appID, |
|
Platform: model.SplitInts(platform), |
|
Title: alertTitle, |
|
Summary: alertBody, |
|
LinkType: int8(linkType), |
|
LinkValue: linkValue, |
|
PushTime: xtime.Time(time.Now().Unix()), |
|
ExpireTime: xtime.Time(expireTime), |
|
Build: model.ParseBuild(builds), |
|
Sound: sound, |
|
Vibration: vibration, |
|
PassThrough: passThrough, |
|
Group: params.Get("group"), |
|
ImageURL: params.Get("image_url"), |
|
} |
|
go pushSrv.SinglePush(context.Background(), token, task, mid) |
|
c.JSON(nil, nil) |
|
} |
|
|
|
func testToken(c *bm.Context) { |
|
params := c.Request.Form |
|
appID, _ := strconv.ParseInt(params.Get("app_id"), 10, 64) |
|
if appID < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("app_id is wrong: %s", params.Get("app_id")) |
|
return |
|
} |
|
alertTitle := params.Get("alert_title") |
|
if alertTitle == "" { |
|
alertTitle = model.DefaultMessageTitle |
|
} |
|
res, err := pushSrv.Filter(c, alertTitle) |
|
if err == nil && res != alertTitle { |
|
log.Error("alertTitle(%s) contains invalid content", alertTitle) |
|
c.JSON(nil, ecode.PushSensitiveWordsErr) |
|
return |
|
} |
|
alertBody := params.Get("alert_body") |
|
if alertBody == "" { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("alert_body is empty") |
|
return |
|
} |
|
res, err = pushSrv.Filter(c, alertBody) |
|
if err == nil && res != alertBody { |
|
log.Error("alertBody(%s) contains invalid content", alertBody) |
|
c.JSON(nil, ecode.PushSensitiveWordsErr) |
|
return |
|
} |
|
token := params.Get("token") |
|
if token == "" { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("token is empty") |
|
return |
|
} |
|
linkType, _ := strconv.Atoi(params.Get("link_type")) |
|
if linkType < 1 { |
|
c.JSON(nil, ecode.RequestErr) |
|
log.Error("link_type is wrong: %s", params.Get("link_type")) |
|
return |
|
} |
|
linkValue := params.Get("link_value") |
|
expireTime, _ := strconv.ParseInt(params.Get("expire_time"), 10, 64) |
|
if expireTime == 0 { |
|
expireTime = time.Now().Add(7 * 24 * time.Hour).Unix() |
|
} |
|
sound, vibration := model.SwitchOn, model.SwitchOn |
|
if params.Get("sound") != "" { |
|
if sd, _ := strconv.Atoi(params.Get("sound")); sd == model.SwitchOff { |
|
sound = model.SwitchOff |
|
} |
|
} |
|
if params.Get("vibration") != "" { |
|
if vr, _ := strconv.Atoi(params.Get("vibration")); vr == model.SwitchOff { |
|
vibration = model.SwitchOff |
|
} |
|
} |
|
passThrough, _ := strconv.Atoi(params.Get("pass_through")) |
|
if passThrough != model.SwitchOn { |
|
passThrough = model.SwitchOff |
|
} |
|
info := &model.PushInfo{ |
|
TaskID: model.TempTaskID(), |
|
Job: model.JobName(time.Now().UnixNano(), alertBody, linkValue, ""), |
|
APPID: appID, |
|
Title: alertTitle, |
|
Summary: alertBody, |
|
LinkType: int8(linkType), |
|
LinkValue: linkValue, |
|
ExpireTime: xtime.Time(expireTime), |
|
PassThrough: passThrough, |
|
Sound: sound, |
|
Vibration: vibration, |
|
ImageURL: params.Get("image_url"), |
|
} |
|
go pushSrv.TestToken(context.Background(), info, token) |
|
c.JSON(nil, nil) |
|
}
|
|
|