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.
344 lines
7.7 KiB
344 lines
7.7 KiB
package http |
|
|
|
import ( |
|
"net/url" |
|
"strconv" |
|
"strings" |
|
|
|
"go-common/app/admin/main/dm/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/xstr" |
|
) |
|
|
|
// checkState check admin operation. |
|
func checkState(state int8) (ok bool) { |
|
if state != model.StatFirstInit && |
|
state != model.StatFirstDelete && |
|
state != model.StatFirstIgnore && |
|
state != model.StatSecondInit && |
|
state != model.StatSecondIgnore && |
|
state != model.StatSecondAutoDelete && |
|
state != model.StatSecondDelete { |
|
ok = false |
|
} else { |
|
ok = true |
|
} |
|
return |
|
} |
|
|
|
func reportList2(c *bm.Context) { |
|
var ( |
|
v = new(model.ReportListParams) |
|
) |
|
if err := c.Bind(v); err != nil { |
|
return |
|
} |
|
c.JSON(dmSvc.ReportList2(c, v)) |
|
} |
|
|
|
func changeReportStat(c *bm.Context) { |
|
var ( |
|
reason, notice, block, blockReason, moral int64 |
|
cidDmids = map[int64][]int64{} |
|
params = c.Request.Form |
|
data struct { |
|
Affect int64 `json:"affect"` |
|
} |
|
) |
|
uid, err := strconv.ParseInt(params.Get("adminId"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
state, err := strconv.ParseInt(params.Get("state"), 10, 8) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
uname := params.Get("uname") |
|
remark := params.Get("remark") |
|
noticeStr := params.Get("notice") |
|
if noticeStr != "" { |
|
if notice, err = strconv.ParseInt(noticeStr, 10, 8); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
ids := strings.Split(params.Get("ids"), "|") |
|
if len(ids) == 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
for _, idStr := range ids { |
|
var ( |
|
cid int64 |
|
dmids []int64 |
|
) |
|
s := strings.Split(idStr, ":") |
|
if len(s) != 2 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if cid, err = strconv.ParseInt(s[0], 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if dmids, err = xstr.SplitInts(s[1]); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if !checkState(int8(state)) { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
cidDmids[cid] = dmids |
|
} |
|
if state == int64(model.StatSecondDelete) || state == int64(model.StatFirstDelete) { |
|
blockStr := params.Get("block") |
|
if blockStr != "" { |
|
if block, err = strconv.ParseInt(blockStr, 10, 8); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
MoralStr := params.Get("moral") |
|
if MoralStr != "" { |
|
if moral, err = strconv.ParseInt(MoralStr, 10, 8); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
blockReasonStr := params.Get("block_reason") |
|
if blockReasonStr != "" { |
|
if blockReason, err = strconv.ParseInt(blockReasonStr, 10, 8); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
reasonStr := params.Get("reason") |
|
if reasonStr != "" { |
|
if reason, err = strconv.ParseInt(reasonStr, 10, 8); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
} |
|
data.Affect, err = dmSvc.ChangeReportStat(c, cidDmids, int8(state), int8(reason), int8(notice), uid, block, blockReason, moral, remark, uname) |
|
if err != nil { |
|
log.Error("dmSvc.ChangeReportStat(id:%+v, uid:%d) error(%v)", cidDmids, uid, err) |
|
c.JSON(nil, err) |
|
} |
|
res := map[string]interface{}{} |
|
res["data"] = data |
|
c.JSONMap(res, err) |
|
} |
|
|
|
func reportList(c *bm.Context) { |
|
var ( |
|
tid, rpID []int64 |
|
rt *model.Report |
|
p = c.Request.Form |
|
start, end, sort, order, keyword string |
|
) |
|
rt = &model.Report{ |
|
Aid: -1, |
|
UID: -1, |
|
RpUID: -1, |
|
RpType: -1, |
|
Cid: -1, |
|
} |
|
state, err := xstr.SplitInts(p.Get("state")) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
upOp, err := xstr.SplitInts(p.Get("up_op")) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
page, err := strconv.ParseInt(p.Get("page"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
tidStr := p.Get("tid") |
|
if tidStr != "" { |
|
if tid, err = xstr.SplitInts(tidStr); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
aidStr := p.Get("aid") |
|
if aidStr != "" { |
|
if rt.Aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
cidStr := p.Get("cid") |
|
if cidStr != "" { |
|
if rt.Cid, err = strconv.ParseInt(cidStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
uidStr := p.Get("uid") |
|
if uidStr != "" { |
|
if rt.UID, err = strconv.ParseInt(uidStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
userStr := p.Get("rp_user") |
|
if userStr != "" { |
|
if rt.RpUID, err = strconv.ParseInt(userStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
typeStr := p.Get("rp_type") |
|
if typeStr != "" { |
|
if rpID, err = xstr.SplitInts(typeStr); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
} |
|
startStr := p.Get("start") |
|
start, err = url.QueryUnescape(startStr) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
endStr := p.Get("end") |
|
end, err = url.QueryUnescape(endStr) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
pageSizeStr := p.Get("page_size") |
|
var pageSize int64 |
|
if pageSizeStr != "" { |
|
if pageSize, err = strconv.ParseInt(pageSizeStr, 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if pageSize > 100 { |
|
pageSize = 100 |
|
} |
|
} else { |
|
pageSize = 100 |
|
} |
|
// TODO: swap order&sort |
|
order = p.Get("sort") |
|
sort = p.Get("order") |
|
keyword = p.Get("keyword") |
|
rpts, err := dmSvc.ReportList(c, page, pageSize, start, end, order, sort, keyword, tid, rpID, state, upOp, rt) |
|
res := map[string]interface{}{} |
|
res["data"] = rpts |
|
c.JSONMap(res, err) |
|
} |
|
|
|
func reportLog(c *bm.Context) { |
|
p := c.Request.Form |
|
dmid, err := strconv.ParseInt(p.Get("dmid"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
data, err := dmSvc.ReportLog(c, dmid) |
|
res := map[string]interface{}{} |
|
res["data"] = data |
|
c.JSONMap(res, err) |
|
} |
|
|
|
func changeReportUserStat(c *bm.Context) { |
|
p := c.Request.Form |
|
dmids, err := xstr.SplitInts(p.Get("dmids")) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
err = dmSvc.ChangeReportUserStat(c, dmids) |
|
c.JSON(nil, err) |
|
} |
|
|
|
func transferJudge(c *bm.Context) { |
|
var ( |
|
err error |
|
uname string |
|
cidDmids = map[int64][]int64{} |
|
p = c.Request.Form |
|
) |
|
|
|
ids := strings.Split(p.Get("ids"), "|") |
|
if len(ids) == 0 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
for _, idStr := range ids { |
|
var ( |
|
cid int64 |
|
dmids []int64 |
|
) |
|
s := strings.Split(idStr, ":") |
|
if len(s) != 2 { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if cid, err = strconv.ParseInt(s[0], 10, 64); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
if dmids, err = xstr.SplitInts(s[1]); err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
cidDmids[cid] = dmids |
|
} |
|
uname = p.Get("uname") |
|
uid, err := strconv.ParseInt(p.Get("adminId"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
err = dmSvc.DMReportJudge(c, cidDmids, uid, uname) |
|
c.JSON(nil, err) |
|
} |
|
|
|
// JudgeResult post judgement result |
|
func JudgeResult(c *bm.Context) { |
|
p := c.Request.Form |
|
cid, err := strconv.ParseInt(p.Get("cid"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
dmid, err := strconv.ParseInt(p.Get("dmid"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
result, err := strconv.ParseInt(p.Get("result"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
err = dmSvc.JudgeResult(c, cid, dmid, result) |
|
c.JSON(nil, err) |
|
} |
|
|
|
func logList(c *bm.Context) { |
|
p := c.Request.Form |
|
dmid, err := strconv.ParseInt(p.Get("dmid"), 10, 64) |
|
if err != nil { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
data, err := dmSvc.QueryOpLogs(c, dmid) |
|
res := map[string]interface{}{} |
|
res["data"] = data |
|
c.JSONMap(res, err) |
|
}
|
|
|