212 lines
4.7 KiB
Go
212 lines
4.7 KiB
Go
|
package http
|
|||
|
|
|||
|
import (
|
|||
|
"bytes"
|
|||
|
"encoding/csv"
|
|||
|
"fmt"
|
|||
|
"strconv"
|
|||
|
|
|||
|
"go-common/app/admin/main/member/model"
|
|||
|
"go-common/library/ecode"
|
|||
|
bm "go-common/library/net/http/blademaster"
|
|||
|
)
|
|||
|
|
|||
|
func officials(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficial{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if arg.Pn <= 0 {
|
|||
|
arg.Pn = 1
|
|||
|
}
|
|||
|
if arg.Ps <= 0 {
|
|||
|
arg.Ps = 10
|
|||
|
}
|
|||
|
os, total, err := svc.Officials(ctx, arg)
|
|||
|
if err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res := map[string]interface{}{
|
|||
|
"officials": os,
|
|||
|
"page": map[string]int{
|
|||
|
"num": arg.Pn,
|
|||
|
"size": arg.Ps,
|
|||
|
"total": total,
|
|||
|
},
|
|||
|
}
|
|||
|
ctx.JSON(res, nil)
|
|||
|
}
|
|||
|
|
|||
|
func officialsExcel(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficial{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if arg.Pn <= 0 {
|
|||
|
arg.Pn = 1
|
|||
|
}
|
|||
|
if arg.Ps <= 0 {
|
|||
|
arg.Ps = 10
|
|||
|
}
|
|||
|
os, _, err := svc.Officials(ctx, arg)
|
|||
|
if err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
data := make([][]string, 0, len(os))
|
|||
|
data = append(data, []string{"完成认证时间", "用户ID", "昵称", "认证类型", "认证称号", "称号后缀"})
|
|||
|
for _, of := range os {
|
|||
|
fields := []string{
|
|||
|
of.CTime.Time().Format("2006-01-02 15:04:05"),
|
|||
|
strconv.FormatInt(of.Mid, 10),
|
|||
|
of.Name,
|
|||
|
model.OfficialRoleName(of.Role),
|
|||
|
of.Title,
|
|||
|
of.Desc,
|
|||
|
}
|
|||
|
data = append(data, fields)
|
|||
|
}
|
|||
|
buf := bytes.NewBuffer(nil)
|
|||
|
w := csv.NewWriter(buf)
|
|||
|
for _, record := range data {
|
|||
|
if err := w.Write(record); err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
}
|
|||
|
w.Flush()
|
|||
|
res := buf.Bytes()
|
|||
|
ctx.Writer.Header().Set("Content-Type", "application/csv")
|
|||
|
ctx.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.csv", "官方认证名单"))
|
|||
|
ctx.Writer.Write([]byte("\xEF\xBB\xBF")) // 写 UTF-8 的 BOM 头,别删,删了客服就找上门了
|
|||
|
ctx.Writer.Write(res)
|
|||
|
}
|
|||
|
|
|||
|
func officialDocs(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficialDoc{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if arg.Pn <= 0 {
|
|||
|
arg.Pn = 1
|
|||
|
}
|
|||
|
if arg.Ps <= 0 {
|
|||
|
arg.Ps = 10
|
|||
|
}
|
|||
|
ods, total, err := svc.OfficialDocs(ctx, arg)
|
|||
|
if err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res := map[string]interface{}{
|
|||
|
"officials": ods,
|
|||
|
"page": map[string]int{
|
|||
|
"num": arg.Pn,
|
|||
|
"size": arg.Ps,
|
|||
|
"total": total,
|
|||
|
},
|
|||
|
}
|
|||
|
ctx.JSON(res, nil)
|
|||
|
}
|
|||
|
|
|||
|
func officialDocsExcel(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficialDoc{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if arg.Pn <= 0 {
|
|||
|
arg.Pn = 1
|
|||
|
}
|
|||
|
if arg.Ps <= 0 {
|
|||
|
arg.Ps = 10
|
|||
|
}
|
|||
|
ods, _, err := svc.OfficialDocs(ctx, arg)
|
|||
|
if err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
data := make([][]string, 0, len(ods))
|
|||
|
data = append(data, []string{"申请时间", "认证类型", "用户ID", "用户昵称", "审核状态", "认证称号", "称号后缀", "操作人"})
|
|||
|
for _, od := range ods {
|
|||
|
fields := []string{
|
|||
|
od.CTime.Time().Format("2006-01-02 15:04:05"),
|
|||
|
model.OfficialRoleName(od.Role),
|
|||
|
strconv.FormatInt(od.Mid, 10),
|
|||
|
od.Name,
|
|||
|
model.OfficialStateName(od.State),
|
|||
|
od.Title,
|
|||
|
od.Desc,
|
|||
|
od.Uname,
|
|||
|
}
|
|||
|
data = append(data, fields)
|
|||
|
}
|
|||
|
buf := bytes.NewBuffer(nil)
|
|||
|
w := csv.NewWriter(buf)
|
|||
|
for _, record := range data {
|
|||
|
if err := w.Write(record); err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
}
|
|||
|
w.Flush()
|
|||
|
res := buf.Bytes()
|
|||
|
ctx.Writer.Header().Set("Content-Type", "application/csv")
|
|||
|
ctx.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.csv", "官方认证审核记录"))
|
|||
|
ctx.Writer.Write([]byte("\xEF\xBB\xBF")) // 写 UTF-8 的 BOM 头,别删,删了客服就找上门了
|
|||
|
ctx.Writer.Write(res)
|
|||
|
}
|
|||
|
|
|||
|
func officialDoc(ctx *bm.Context) {
|
|||
|
arg := &model.ArgMid{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
od, logs, block, spys, rn, sameCreditCodeMids, err := svc.OfficialDoc(ctx, arg.Mid)
|
|||
|
if err != nil {
|
|||
|
ctx.JSON(nil, err)
|
|||
|
return
|
|||
|
}
|
|||
|
res := map[string]interface{}{
|
|||
|
"official": od,
|
|||
|
"logs": logs.Result,
|
|||
|
"block": block,
|
|||
|
"spys": spys,
|
|||
|
"realname": rn,
|
|||
|
"same_credit_code_mids": sameCreditCodeMids,
|
|||
|
}
|
|||
|
ctx.JSON(res, nil)
|
|||
|
}
|
|||
|
|
|||
|
func officialDocAudit(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficialAudit{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
if arg.State == model.OfficialStateNoPass && arg.Reason == "" {
|
|||
|
ctx.JSON(nil, ecode.RequestErr)
|
|||
|
return
|
|||
|
}
|
|||
|
if arg.Source != "" {
|
|||
|
arg.Reason = fmt.Sprintf("%s(来源:%s)", arg.Reason, arg.Source)
|
|||
|
}
|
|||
|
ctx.JSON(nil, svc.OfficialDocAudit(ctx, arg))
|
|||
|
}
|
|||
|
|
|||
|
func officialDocEdit(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficialEdit{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
ctx.JSON(nil, svc.OfficialDocEdit(ctx, arg))
|
|||
|
}
|
|||
|
|
|||
|
func officialDocSubmit(ctx *bm.Context) {
|
|||
|
arg := &model.ArgOfficialSubmit{}
|
|||
|
if err := ctx.Bind(arg); err != nil {
|
|||
|
return
|
|||
|
}
|
|||
|
ctx.JSON(nil, svc.OfficialDocSubmit(ctx, arg))
|
|||
|
}
|