You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.5 KiB
102 lines
2.5 KiB
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 |
|
}
|
|
|