bilibili-backup/app/admin/main/reply/dao/block.go
2019-04-22 02:59:20 +00:00

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
}