91 lines
2.3 KiB
Go
91 lines
2.3 KiB
Go
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
|
||
}
|