bilibili-backup/app/admin/main/growup/service/format.go
2019-04-22 02:59:20 +00:00

199 lines
4.8 KiB
Go

package service
import (
"bytes"
"encoding/csv"
"strconv"
"time"
"go-common/app/admin/main/growup/model"
)
var (
_accountState = map[int]string{
1: "未申请",
2: "待审核",
3: "已签约",
4: "已驳回",
5: "主动退出",
6: "被动退出",
7: "封禁",
}
_avCategory = map[int]string{
0: "默认",
1: "动画",
3: "音乐",
129: "舞蹈",
4: "游戏",
36: "科技",
160: "生活",
119: "鬼畜",
155: "时尚",
23: "电影",
11: "电视剧",
13: "番剧",
167: "国创",
165: "广告",
5: "娱乐",
177: "纪录片",
181: "影视",
}
_cmCategory = map[int]string{
1: "游戏",
2: "动画",
3: "生活",
16: "轻小说",
28: "影视",
29: "兴趣",
}
)
// FormatCSV format to csv data
func FormatCSV(records [][]string) (data []byte, err error) {
buf := new(bytes.Buffer)
// add utf bom
if len(records) > 0 {
buf.WriteString("\xEF\xBB\xBF")
}
w := csv.NewWriter(buf)
err = w.WriteAll(records)
if err != nil {
return
}
data = buf.Bytes()
return
}
func formatBlacklist(blacklist []*model.Blacklist) (data [][]string) {
if len(blacklist) <= 0 {
return
}
data = make([][]string, len(blacklist)+1)
data[0] = []string{"稿件id", "加入时间", "加入原因", "累计收入", "UP主UID", "UP主昵称", "业务类型"}
for i := 0; i < len(blacklist); i++ {
list := blacklist[i]
var ctype, reasonStr string
switch list.CType {
case 0:
ctype = "视频"
case 1:
ctype = "音频"
case 2:
ctype = "专栏"
}
switch list.Reason {
case 1:
reasonStr = "停止收入"
case 2:
reasonStr = "违规扣除"
case 3:
reasonStr = "私单"
case 4:
reasonStr = "绿洲商单"
}
data[i+1] = []string{
strconv.FormatInt(list.AvID, 10),
time.Unix(int64(list.CTime), 0).Format("2006-01-02 15:04:05"),
reasonStr,
strconv.FormatFloat(float64(list.Income)*0.01, 'f', 3, 64),
strconv.FormatInt(list.MID, 10),
list.Nickname,
ctype,
}
}
return
}
func formatUpInfo(ups []*model.UpInfo, states []int64, typ int) (data [][]string) {
if len(ups) <= 0 {
return
}
data = make([][]string, len(ups)+1)
switch typ {
case _video:
data[0] = []string{"UID", "昵称", "原创稿件数", "稿件播放量", "稿件量", "分区", "粉丝数"}
case _column:
data[0] = []string{"UID", "昵称", "稿件数", "阅读量", "分区", "粉丝数"}
case _bgm:
data[0] = []string{"UID", "昵称", "素材量", "视频播放量", "素材使用量", "粉丝数"}
}
if len(states) == 0 {
data[0] = append(data[0], "账号状态")
} else {
switch states[0] {
case 2:
data[0] = append(data[0], "申请时间")
case 3:
data[0] = append(data[0], "申请时间")
data[0] = append(data[0], "签约时间")
case 4:
data[0] = append(data[0], "驳回时间")
data[0] = append(data[0], "到期时间")
case 5:
data[0] = append(data[0], "退出时间")
data[0] = append(data[0], "到期时间")
case 6:
data[0] = append(data[0], "退出时间")
case 7:
data[0] = append(data[0], "封禁时间")
data[0] = append(data[0], "恢复时间")
}
}
for i := 1; i <= len(ups); i++ {
up := ups[i-1]
data[i] = []string{
strconv.FormatInt(up.MID, 10),
up.Nickname,
}
switch typ {
case _video:
data[i] = append(data[i], strconv.Itoa(up.OriginalArchiveCount))
data[i] = append(data[i], strconv.Itoa(up.TotalPlayCount))
data[i] = append(data[i], strconv.Itoa(up.Avs))
data[i] = append(data[i], _avCategory[up.MainCategory])
case _column:
data[i] = append(data[i], strconv.Itoa(up.ArticleCount))
data[i] = append(data[i], strconv.Itoa(up.TotalViewCount))
data[i] = append(data[i], _cmCategory[up.MainCategory])
case _bgm:
data[i] = append(data[i], strconv.Itoa(up.BGMs))
data[i] = append(data[i], strconv.Itoa(up.BgmPlayCount))
data[i] = append(data[i], strconv.Itoa(up.BgmApplyCount))
}
data[i] = append(data[i], strconv.Itoa(up.Fans))
if len(states) == 0 {
data[i] = append(data[i], _accountState[up.AccountState])
} else {
switch states[0] {
case 2:
data[i] = append(data[i], up.ApplyAt.Time().Format("2006-01-02"))
case 3:
data[i] = append(data[i], up.ApplyAt.Time().Format("2006-01-02"))
data[i] = append(data[i], up.SignedAt.Time().Format("2006-01-02"))
case 4:
data[i] = append(data[i], up.RejectAt.Time().Format("2006-01-02"))
data[i] = append(data[i], up.ExpiredIn.Time().Format("2006-01-02"))
case 5:
data[i] = append(data[i], up.QuitAt.Time().Format("2006-01-02"))
data[i] = append(data[i], up.ExpiredIn.Time().Format("2006-01-02"))
case 6:
data[i] = append(data[i], up.DismissAt.Time().Format("2006-01-02"))
case 7:
data[i] = append(data[i], up.ForbidAt.Time().Format("2006-01-02"))
data[i] = append(data[i], up.ExpiredIn.Time().Format("2006-01-02"))
}
}
}
return
}