118 lines
3.2 KiB
Go
118 lines
3.2 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"net/url"
|
|
"strconv"
|
|
|
|
"go-common/app/admin/main/reply/model"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
const (
|
|
_blockURL string = "http://account.bilibili.co/api/member/blockAccountWithTime"
|
|
_transferURL string = "http://api.bilibili.co/x/internal/credit/blocked/case/add"
|
|
)
|
|
|
|
// BlockAccount ban an account.
|
|
func (d *Dao) BlockAccount(c context.Context, mid int64, ftime int64, notify bool, freason int32, originTitle string, originContent string, redirectURL string, adname string, remark string) (err error) {
|
|
|
|
params := url.Values{}
|
|
params.Set("mid", strconv.FormatInt(mid, 10))
|
|
|
|
if ftime == -1 {
|
|
params.Set("blockTimeLength", "0")
|
|
params.Set("blockForever", "1")
|
|
} else {
|
|
params.Set("blockForever", "0")
|
|
params.Set("blockTimeLength", strconv.FormatInt(ftime, 10))
|
|
}
|
|
params.Set("blockRemark", remark)
|
|
params.Set("operator", adname)
|
|
params.Set("originType", "1")
|
|
params.Set("originContent", originContent)
|
|
params.Set("reasonType", strconv.FormatInt(int64(freason), 10))
|
|
if notify {
|
|
params.Set("isNotify", "1")
|
|
} else {
|
|
params.Set("isNotify", "0")
|
|
}
|
|
params.Set("originTitle", originTitle)
|
|
params.Set("originUrl", redirectURL)
|
|
|
|
var res struct {
|
|
Code int `json:"code"`
|
|
}
|
|
if err = d.httpClient.Post(c, _blockURL, "", params, &res); err != nil {
|
|
log.Error("sendMsg error(%v)", err)
|
|
return
|
|
}
|
|
if res.Code != ecode.OK.Code() {
|
|
err = model.ErrMsgSend
|
|
log.Error("sendMsg failed(%v) error(%v)", _apiMsgSend+"?"+params.Encode(), res.Code)
|
|
}
|
|
return
|
|
}
|
|
|
|
// TransferData transefer data
|
|
type TransferData struct {
|
|
Oid int64 `json:"oid"`
|
|
Type int32 `json:"type"`
|
|
Mid int64 `json:"mid"`
|
|
RpID int64 `json:"rp_id"`
|
|
Operator string `json:"operator"`
|
|
OperatorID int64 `json:"oper_id"`
|
|
Content string `json:"origin_content"`
|
|
Reason int32 `json:"reason_type"`
|
|
Title string `json:"origin_title"`
|
|
Link string `json:"origin_url"`
|
|
Ctime int64 `json:"business_time"`
|
|
OriginType int32 `json:"origin_type"`
|
|
}
|
|
|
|
// TransferArbitration transfer report to Arbitration.
|
|
func (d *Dao) TransferArbitration(c context.Context, rps map[int64]*model.Reply, rpts map[int64]*model.Report, adid int64, adname string, titles map[int64]string, links map[int64]string) (err error) {
|
|
var data []TransferData
|
|
for _, rp := range rps {
|
|
if rpts[rp.ID] == nil {
|
|
continue
|
|
}
|
|
rpt := rpts[rp.ID]
|
|
d := TransferData{
|
|
RpID: rp.ID,
|
|
Oid: rp.Oid,
|
|
Type: rp.Type,
|
|
Mid: rp.Mid,
|
|
Operator: adname,
|
|
OperatorID: adid,
|
|
Content: rp.Content.Message,
|
|
Reason: rpt.Reason,
|
|
Ctime: int64(rp.CTime),
|
|
OriginType: 1,
|
|
Title: titles[rp.ID],
|
|
Link: links[rp.ID],
|
|
}
|
|
data = append(data, d)
|
|
}
|
|
content, err := json.Marshal(data)
|
|
if err != nil {
|
|
return
|
|
}
|
|
params := url.Values{}
|
|
params.Set("data", string(content))
|
|
var res struct {
|
|
Code int `json:"code"`
|
|
}
|
|
if err = d.httpClient.Post(c, _transferURL, "", params, &res); err != nil {
|
|
log.Error("sendMsg error(%v)", err)
|
|
return
|
|
}
|
|
if res.Code != ecode.OK.Code() {
|
|
err = model.ErrMsgSend
|
|
log.Error("sendMsg failed(%v) error(%v)", _transferURL+"?"+params.Encode(), res.Code)
|
|
}
|
|
return
|
|
}
|