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.
65 lines
1.6 KiB
65 lines
1.6 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"net/url" |
|
|
|
"go-common/library/ecode" |
|
"go-common/library/net/metadata" |
|
"go-common/library/xstr" |
|
|
|
"go-common/library/log" |
|
|
|
"github.com/pkg/errors" |
|
) |
|
|
|
// MutliSendSysMsg Mutli send sys msg. |
|
func (d *Dao) MutliSendSysMsg(c context.Context, allMids []int64, title string, context string) (err error) { |
|
var times int |
|
ulen := len(allMids) |
|
if ulen%100 == 0 { |
|
times = ulen / 100 |
|
} else { |
|
times = ulen/100 + 1 |
|
} |
|
var mids []int64 |
|
for i := 0; i < times; i++ { |
|
if i == times-1 { |
|
mids = allMids[i*100:] |
|
} else { |
|
mids = allMids[i*100 : (i+1)*100] |
|
} |
|
if err = d.SendSysMsg(c, mids, title, context); err != nil { |
|
err = errors.Wrapf(err, "d.SendSysMsg(%+v,%s,%s)", mids, title, context) |
|
continue |
|
} |
|
} |
|
return |
|
} |
|
|
|
// SendSysMsg send sys msg. |
|
func (d *Dao) SendSysMsg(c context.Context, mids []int64, title string, context string) (err error) { |
|
var ip = metadata.String(c, metadata.RemoteIP) |
|
params := url.Values{} |
|
params.Set("mc", "1_14_6") |
|
params.Set("title", title) |
|
params.Set("data_type", "4") |
|
params.Set("context", context) |
|
params.Set("mid_list", xstr.JoinInts(mids)) |
|
var res struct { |
|
Code int `json:"code"` |
|
Data *struct { |
|
Status int8 `json:"status"` |
|
Remark string `json:"remark"` |
|
} `json:"data"` |
|
} |
|
if err = d.client.Post(c, d.msgURL, ip, params, &res); err != nil { |
|
err = errors.Wrapf(err, "SendSysMsg d.client.Post(%s)", d.msgURL+"?"+params.Encode()) |
|
return |
|
} |
|
log.Info("dao.SendSysMsg res (%+v) ", res) |
|
if res.Code != 0 { |
|
err = errors.Wrapf(ecode.Int(res.Code), "SendSysMsg d.client.Post(%s,%d)", d.msgURL+"?"+params.Encode(), res.Code) |
|
} |
|
return |
|
}
|
|
|