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.
211 lines
4.7 KiB
211 lines
4.7 KiB
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)) |
|
}
|
|
|