package model import ( "context" "errors" "fmt" "github.com/zeromicro/go-zero/core/stores/sqlx" ) var _ NhTaskModel = (*customNhTaskModel)(nil) const ( TASKTYPE_FOLLOW_TWITTER = 0 // 关注推特任务 TASKTYPE_BIND_TWITTER = 1 // 绑定推特任务 TASKTYPE_CAST_TWITTER = 2 // 发推任务 TASKTYPE_PUBLISH_TWITTER = 3 // 发布任务 TASKTYPE_REPOST_TWITTER = 4 // 转推任务 TASKTYPE_WATCH_YOUTUBE = 5 // 观看YouTube任务 TASKTYPE_FOLLOW_YOUTUBE = 6 // 关注YouTube任务 TASKTYPE_BIND_DISCORD = 7 // 绑定Discord任务 TASKTYPE_JOIN_TELEGRAM = 8 // 加入TG群组任务 TASKTYPE_DAILY_PAY = 9 // 每日支出任务 TASKTYPE_INVITE_USER = 10 // 邀请任务 TASKTYPE_AMBASSADOR_TASK = 11 // 大使任务 TASKTYPE_TRUMP_HEAD = 12 // trump_head TASKTYPE_BIND_TRIBALLY = 13 // 绑定TRIBALLY任务 ) type ( // NhTaskModel is an interface to be customized, add more methods here, // and implement the added methods in customNhTaskModel. NhTaskModel interface { nhTaskModel withSession(session sqlx.Session) NhTaskModel FindTasksByCommunity(ctx context.Context, communityId uint) ([]*NhTask, error) FindDailyPayTask(ctx context.Context) (*NhTask, error) } customNhTaskModel struct { *defaultNhTaskModel } ) func (m *customNhTaskModel) FindDailyPayTask(ctx context.Context) (*NhTask, error) { query := fmt.Sprintf("select %s from %s where `status` = 1 and `type` = ? limit 1", nhTaskRows, m.table) var resp NhTask err := m.conn.QueryRowCtx(ctx, &resp, query, TASKTYPE_DAILY_PAY) switch { case err == nil: return &resp, nil case errors.Is(err, sqlx.ErrNotFound): return nil, ErrNotFound default: return nil, err } } func (m *customNhTaskModel) FindTasksByCommunity(ctx context.Context, communityId uint) ([]*NhTask, error) { query := fmt.Sprintf("select %s from %s where `status` = 1 and community_id = ? order by `sort`", nhTaskRows, m.table) var tasks []*NhTask err := m.conn.QueryRowsCtx(ctx, &tasks, query, communityId) if err != nil && !errors.Is(err, sqlx.ErrNotFound) { return nil, err } return tasks, nil } // NewNhTaskModel returns a model for the database table. func NewNhTaskModel(conn sqlx.SqlConn) NhTaskModel { return &customNhTaskModel{ defaultNhTaskModel: newNhTaskModel(conn), } } func (m *customNhTaskModel) withSession(session sqlx.Session) NhTaskModel { return NewNhTaskModel(sqlx.NewSqlConnFromSession(session)) }