103 lines
2.5 KiB
Go
103 lines
2.5 KiB
Go
|
package income
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"context"
|
||
|
"strconv"
|
||
|
|
||
|
model "go-common/app/admin/main/growup/model/income"
|
||
|
"go-common/library/database/sql"
|
||
|
"go-common/library/log"
|
||
|
)
|
||
|
|
||
|
// ArchiveBlack stop archives income, add archive into av_black_list
|
||
|
func (s *Service) ArchiveBlack(c context.Context, typ int, aIDs []int64, mid int64) (err error) {
|
||
|
if len(aIDs) == 0 {
|
||
|
return
|
||
|
}
|
||
|
tx, err := s.dao.BeginTran(c)
|
||
|
if err != nil {
|
||
|
log.Error("s.dao.BeginTran error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if err = s.TxInsertAvBlacklist(c, tx, typ, aIDs, mid, _avBlack, len(aIDs)); err != nil {
|
||
|
log.Error("s.InsertAvBlacklist error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if err = tx.Commit(); err != nil {
|
||
|
log.Error("tx.Commit error")
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// GetAvBlackListByAvIds get av_black_list by av_id and ctype
|
||
|
func (s *Service) GetAvBlackListByAvIds(c context.Context, avs []*model.ArchiveIncome, ctype int) (avBMap map[int64]struct{}, err error) {
|
||
|
avIDMap := make(map[int64]struct{})
|
||
|
for _, av := range avs {
|
||
|
avIDMap[av.AvID] = struct{}{}
|
||
|
}
|
||
|
avIDList := []int64{}
|
||
|
for avID := range avIDMap {
|
||
|
avIDList = append(avIDList, avID)
|
||
|
}
|
||
|
avBMap = make(map[int64]struct{})
|
||
|
if len(avIDList) > 0 {
|
||
|
avBMap, err = s.dao.ListAvBlackList(c, avIDList, ctype)
|
||
|
if err != nil {
|
||
|
log.Error("s.dao.ListAvBlackList error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// TxInsertAvBlacklist insert av_black_list
|
||
|
func (s *Service) TxInsertAvBlacklist(c context.Context, tx *sql.Tx, ctype int, aIDs []int64, mid int64, reason int, count int) (err error) {
|
||
|
nickname, err := s.dao.GetUpInfoNicknameByMID(c, mid, getUpInfoTable(ctype))
|
||
|
if err != nil {
|
||
|
log.Error("s.dao.GetUpInfoNicknameByMID error(%v)", err)
|
||
|
return
|
||
|
}
|
||
|
isDeleted, hasSigned := 0, 0
|
||
|
if nickname != "" {
|
||
|
hasSigned = 1
|
||
|
}
|
||
|
|
||
|
var buf bytes.Buffer
|
||
|
for _, id := range aIDs {
|
||
|
buf.WriteString("(")
|
||
|
buf.WriteString(strconv.FormatInt(id, 10))
|
||
|
buf.WriteByte(',')
|
||
|
buf.WriteString(strconv.FormatInt(mid, 10))
|
||
|
buf.WriteByte(',')
|
||
|
buf.WriteString(strconv.Itoa(ctype))
|
||
|
buf.WriteByte(',')
|
||
|
buf.WriteString(strconv.Itoa(reason))
|
||
|
buf.WriteByte(',')
|
||
|
buf.WriteString("\"" + nickname + "\"")
|
||
|
buf.WriteByte(',')
|
||
|
buf.WriteString(strconv.Itoa(hasSigned))
|
||
|
buf.WriteByte(',')
|
||
|
buf.WriteString(strconv.Itoa(isDeleted))
|
||
|
buf.WriteString(")")
|
||
|
buf.WriteByte(',')
|
||
|
}
|
||
|
if buf.Len() > 0 {
|
||
|
buf.Truncate(buf.Len() - 1)
|
||
|
}
|
||
|
vals := buf.String()
|
||
|
buf.Reset()
|
||
|
|
||
|
rows, err := s.dao.TxInsertAvBlackList(tx, vals)
|
||
|
if err != nil {
|
||
|
tx.Rollback()
|
||
|
return
|
||
|
}
|
||
|
if rows < int64(count) {
|
||
|
log.Info("TxInsertAvBlackList(%v) rows(%d) < count(%d) error", vals, rows, count)
|
||
|
}
|
||
|
return
|
||
|
}
|