123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package service
- import (
- "bytes"
- "encoding/csv"
- "fmt"
- "go-common/app/admin/main/laser/model"
- "strconv"
- "time"
- )
- var (
- csvMetaNodes = []model.CsvMetaNode{
- {Index: 0, Name: "日期", DataCode: 25},
- {Index: 1, Name: "操作人", DataCode: 26},
- {Index: 2, Name: "总操视频量", DataCode: model.TotalVideo},
- {Index: 3, Name: "总操作次数", DataCode: model.TotalVideoOper},
- {Index: 4, Name: "开放浏视频量", DataCode: model.OpenVideo},
- {Index: 5, Name: "开放浏览操作次数", DataCode: model.OpenVideoOper},
- {Index: 6, Name: "会员可视频量", DataCode: model.VipAccessVideo},
- {Index: 7, Name: "会员可见操作次数", DataCode: model.VipAccessVideoOper},
- {Index: 8, Name: "打视频量", DataCode: model.RejectVideo},
- {Index: 9, Name: "打回操作次数", DataCode: model.RejectVideoOper},
- {Index: 10, Name: "锁视频量", DataCode: model.LockVideo},
- {Index: 11, Name: "锁定操作次数", DataCode: model.LockVideoOper},
- {Index: 12, Name: "通过视频总时长", DataCode: model.PassVideoTotalDuration},
- {Index: 13, Name: "未通过视频总时长", DataCode: model.FailVideoTotalDuration},
- {Index: 14, Name: "视频提交到进入待审平均响应时间", DataCode: model.WaitAuditAvgTime},
- {Index: 15, Name: "视频提交到进入待审时间", DataCode: model.WaitAuditDuration},
- {Index: 16, Name: "视频提交到进入待审次数", DataCode: model.WaitAuditOper},
- }
- )
- // 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 formatAuditCargo(wrappers []*model.CargoViewWrapper, lineWidth int) (data [][]string) {
- size := len(wrappers)
- if size <= 0 {
- return
- }
- data = make([][]string, lineWidth+1)
- index := 0
- data[index] = []string{"username", "审核时间段", "接收量", "完成量"}
- for _, v1 := range wrappers {
- for k2, v2 := range v1.Data {
- data[index+1] = []string{
- v1.Username,
- fmt.Sprintf("%s %d:00:00", v1.Date, k2),
- strconv.FormatInt(v2.ReceiveValue, 10),
- strconv.FormatInt(v2.AuditValue, 10),
- }
- index = index + 1
- }
- }
- return
- }
- func formatVideoAuditStat(statViewExts []*model.StatViewExt, lineWidth int) (data [][]string) {
- if lineWidth <= 0 {
- return
- }
- data = make([][]string, lineWidth+1)
- index := 0
- rowHeight := len(csvMetaNodes)
- titles := make([]string, rowHeight)
- cursorMap := make(map[int]int)
- for _, v := range csvMetaNodes {
- titles[v.Index] = v.Name
- cursorMap[v.DataCode] = v.Index
- }
- data[index] = titles
- for _, v1 := range statViewExts {
- date := time.Unix(v1.Date, 0).Format("2006-01-02")
- for _, v2 := range v1.Wraps {
- name := v2.Uname
- tempRows := make([]string, rowHeight)
- tempRows = append([]string{date, name}, tempRows[0:]...)
- for _, v3 := range v2.Stats {
- if cursor, ok := cursorMap[v3.DataCode]; ok {
- if v3.DataCode == model.WaitAuditAvgTime || v3.DataCode == model.WaitAuditDuration || v3.DataCode == model.PassVideoTotalDuration || v3.DataCode == model.FailVideoTotalDuration {
- tempRows[cursor] = fmt.Sprintf("%d:%d:%d", v3.Value/3600, v3.Value%3600/60, v3.Value%3600%60/1)
- } else {
- tempRows[cursor] = strconv.FormatInt(v3.Value, 10)
- }
- }
- }
- data[index+1] = tempRows
- index = index + 1
- }
- }
- return
- }
|