61 lines
1.8 KiB
Go
Executable File
61 lines
1.8 KiB
Go
Executable File
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 // 大使任务
|
|
)
|
|
|
|
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)
|
|
}
|
|
|
|
customNhTaskModel struct {
|
|
*defaultNhTaskModel
|
|
}
|
|
)
|
|
|
|
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))
|
|
}
|