123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package dao
- import (
- "context"
- "database/sql"
- "fmt"
- "time"
- "go-common/app/job/main/growup/model"
- "go-common/library/log"
- )
- const (
- // list all blacklist
- _listBlacklistSQL = "SELECT av_id,mid,reason,ctype,has_signed,nickname FROM av_black_list WHERE %s is_delete = 0 LIMIT ?,?"
- // query last record ctime by reason and id
- _queryOneByReasonSQL = "SELECT ctime FROM av_black_list WHERE reason = ? AND is_delete = 0 ORDER BY id DESC LIMIT 1"
- // query record from bilibili_business_up_cooperate.business_order_sheet
- _queryExecuteOrderSQL = "SELECT av_id, making_order_up_mid, ctime FROM business_order_sheet WHERE ctime >= ? AND ctime <= ? AND is_deleted = 0 ORDER BY ctime DESC"
- // add to blacklist batch
- _addBlacklistBatchSQL = "INSERT INTO av_black_list(av_id, mid, reason, ctype, has_signed, nickname) VALUES %s ON DUPLICATE KEY UPDATE mid=VALUES(mid),reason=VALUES(reason),has_signed=VALUES(has_signed),nickname=VALUES(nickname)"
- // query mid, nickname from up_info_video
- _queryHasSignUpInfoSQL = "SELECT mid, nickname FROM up_info_video where account_state = 3 AND is_deleted = 0 limit ?, ?"
- )
- // ListBlacklist list all blacklist
- func (d *Dao) ListBlacklist(c context.Context, query string, from, limit int) (backlists []*model.Blacklist, err error) {
- if query != "" {
- query += " AND"
- }
- rows, err := d.db.Query(c, fmt.Sprintf(_listBlacklistSQL, query), from, limit)
- if err != nil {
- log.Error("ListBlacklist d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- for rows.Next() {
- list := &model.Blacklist{}
- err = rows.Scan(&list.AvID, &list.MID, &list.Reason, &list.CType, &list.HasSigned, &list.Nickname)
- if err != nil {
- log.Error("ListBlacklist rows scan error(%v)", err)
- return
- }
- backlists = append(backlists, list)
- }
- err = rows.Err()
- return
- }
- // GetExecuteOrder get execute order by date
- func (d *Dao) GetExecuteOrder(c context.Context, startTime, endTime time.Time) (executeOrders []*model.ExecuteOrder, err error) {
- rows, err := d.rddb.Query(c, _queryExecuteOrderSQL, startTime, endTime)
- if err != nil {
- log.Error("GetExecuteOrder d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- for rows.Next() {
- order := &model.ExecuteOrder{}
- err = rows.Scan(&order.AvID, &order.MID, &order.CTime)
- if err != nil {
- log.Error("GetExecuteOrder rows.Scan error(%v)", err)
- return
- }
- if order.AvID > 0 {
- executeOrders = append(executeOrders, order)
- }
- }
- err = rows.Err()
- return
- }
- // GetLastCtime get last ctime by query
- func (d *Dao) GetLastCtime(c context.Context, reason int) (ctime int64, err error) {
- row := d.db.QueryRow(c, _queryOneByReasonSQL, reason)
- var t time.Time
- err = row.Scan(&t)
- if err != nil {
- if err == sql.ErrNoRows {
- err = nil
- ctime = 0
- } else {
- log.Error("GetLastCtime row Scan error(%v)", err)
- }
- } else {
- ctime = t.Unix()
- }
- return
- }
- // AddBlacklistBatch add batch to blacklist
- func (d *Dao) AddBlacklistBatch(c context.Context, blacklist []*model.Blacklist) (count int64, err error) {
- if len(blacklist) == 0 {
- return
- }
- var vals string
- for _, row := range blacklist {
- vals += fmt.Sprintf("(%d, %d, %d, %d, %d, '%s'),", row.AvID, row.MID, row.Reason, row.CType, row.HasSigned, row.Nickname)
- }
- if len(vals) > 0 {
- vals = vals[0 : len(vals)-1]
- }
- res, err := d.db.Exec(c, fmt.Sprintf(_addBlacklistBatchSQL, vals))
- if err != nil {
- log.Error("AddBlacklistBatch d.db.Exec error(%v)", err)
- return
- }
- return res.RowsAffected()
- }
- // GetHasSignUpInfo get all has signed up info
- func (d *Dao) GetHasSignUpInfo(c context.Context, offset, limit int, m map[int64]string) (err error) {
- rows, err := d.db.Query(c, _queryHasSignUpInfoSQL, offset, limit)
- if err != nil {
- log.Error("GetHasSignUpInfo d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- for rows.Next() {
- var mid int64
- var nickname string
- err = rows.Scan(&mid, &nickname)
- if err != nil {
- log.Error("GetHasSignUpInfo rows.Scan error(%v)", err)
- return
- }
- m[mid] = nickname
- }
- err = rows.Err()
- return
- }
|