bilibili-backup/app/admin/main/credit/service/extra_func.go

91 lines
2.3 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package service
import (
"bytes"
"context"
"encoding/csv"
"io"
"strconv"
"time"
coinclient "go-common/app/service/main/coin/api"
"go-common/library/log"
)
// FormatCSV format csv data.
func (s *Service) FormatCSV(records [][]string) (res []byte) {
buf := new(bytes.Buffer)
w := csv.NewWriter(buf)
for _, record := range records {
if err := w.Write(record); err != nil {
log.Error("error(%+v) writing record to csv:", err)
return
}
}
w.Flush()
res = buf.Bytes()
return
}
// Upload http upload file.
func (s *Service) Upload(c context.Context, fileName, fileType string, expire int64, body io.Reader) (location string, err error) {
if location, err = s.uploadDao.Upload(c, fileName, fileType, expire, body); err != nil {
log.Error("s.upload.Upload() error(%v)", err)
}
return
}
// AnnualCoins .
func (s *Service) AnnualCoins(c context.Context, reader *csv.Reader) (fmid []int64) {
for {
record, err := reader.Read()
if err == io.EOF {
log.Warn("AnnualCoins is over!")
err = nil
break
}
if err != nil {
log.Error("AnnualCoins(%+v) Error(%+v)", record, err)
err = nil
continue
}
log.Info("AnnualCoins record(%+v)", record)
if len(record) < 2 {
log.Error("AnnualCoins record(%+v) len<2", record)
continue
}
mid, err := strconv.ParseInt(record[0], 10, 64)
if err != nil {
log.Error("AnnualCoins strconv.ParseInt mid(%+v) err(%+v)", record, err)
err = nil
continue
}
coins, err := strconv.ParseInt(record[1], 10, 64)
if err != nil {
log.Error("AnnualCoins strconv.ParseInt coins(%+v) err(%+v)", record, err)
err = nil
continue
}
arg := &coinclient.ModifyCoinsReq{
Mid: mid,
Count: float64(coins),
Reason: "风纪委奖励",
IP: "",
Operator: "credit",
CheckZero: 1,
Ts: time.Now().Unix(),
}
_, err = s.coinClient.ModifyCoins(context.Background(), arg)
if err != nil {
fmid = append(fmid, mid)
log.Error("ModifyCoins arg(%+v), err(%+v)", arg, err)
continue
}
if err = s.msgDao.SendSysMsg(context.Background(), mid, "您的风纪委硬币礼包已到账", "Hi 风纪委员你好你的2018年风纪委硬币礼包已到账快进入你的硬币账户看看吧"); err != nil {
log.Error("SendSysMsg mid(%d), err(%+v)", mid, err)
}
time.Sleep(time.Duration(50) * time.Millisecond)
}
return
}