Commit 35341f8c authored by 贾浩@五瓣科技's avatar 贾浩@五瓣科技

update signin

parent 41822051
......@@ -10,7 +10,7 @@ api:
go build $(BUILD_FLAGS) -v -o=${GOBIN}/$@ ./cmd/api
docker:
docker build -t caduceus/taskcenter:latest -f Dockerfile .
docker build -t caduceus/taskcenter:latest-appbase -f Dockerfile .
push:
docker push caduceus/taskcenter:latest
\ No newline at end of file
docker push caduceus/taskcenter:latest-appbase
\ No newline at end of file
......@@ -21,12 +21,14 @@ const (
TaskPlatformApp = "app"
TaskPlatformTwitter = "twitter"
TaskPlatformTelegram = "telegram"
TaskPlatformAppbase = "appbase"
)
var validPlatforms = map[string]bool{
TaskPlatformApp: true,
TaskPlatformTwitter: true,
TaskPlatformTelegram: true,
TaskPlatformAppbase: true,
}
func IsValidPlatform(platform string) bool {
......@@ -35,25 +37,29 @@ func IsValidPlatform(platform string) bool {
}
const (
TaskActionBind = "bind"
TaskActionJoin = "join"
TaskActionActive = "active"
TaskActionFollow = "follow"
TaskActionLike = "like"
TaskActionReply = "reply"
TaskActionRetweet = "retweet"
TaskActionInvite = "invite"
TaskActionBind = "bind"
TaskActionJoin = "join"
TaskActionActive = "active"
TaskActionFollow = "follow"
TaskActionLike = "like"
TaskActionReply = "reply"
TaskActionRetweet = "retweet"
TaskActionInvite = "invite"
TaskActionSignIn = "signIn"
TaskActionPremiumSignIn = "premiumSignIn"
)
var validActions = map[string]bool{
TaskActionBind: true,
TaskActionJoin: true,
TaskActionActive: true,
TaskActionFollow: true,
TaskActionLike: true,
TaskActionReply: true,
TaskActionRetweet: true,
TaskActionInvite: true,
TaskActionBind: true,
TaskActionJoin: true,
TaskActionActive: true,
TaskActionFollow: true,
TaskActionLike: true,
TaskActionReply: true,
TaskActionRetweet: true,
TaskActionInvite: true,
TaskActionSignIn: true,
TaskActionPremiumSignIn: true,
}
func IsValidAction(action string) bool {
......@@ -65,6 +71,7 @@ var TaskAction = map[string][]string{
TaskPlatformApp: {TaskActionActive, TaskActionInvite},
TaskPlatformTelegram: {TaskActionJoin, TaskActionActive, TaskActionBind},
TaskPlatformTwitter: {TaskActionFollow, TaskActionLike, TaskActionReply, TaskActionRetweet},
TaskPlatformAppbase: {TaskActionSignIn, TaskActionPremiumSignIn},
}
const (
......
......@@ -225,14 +225,14 @@ func (d *Dao) UpdateTaskHistory(id int, status string) (err error) {
}
func (d *Dao) GetUnprocessedTasks() (tasks []*dbModel.TaskHistory, err error) {
// twitter延迟3分钟,其余延迟1分钟
// twitter延迟3分钟,tg延迟1分钟,appbase不延迟
sql := fmt.Sprintf(
`SELECT TH.* FROM %s AS TH JOIN %s AS T ON TH.task_id = T.id WHERE TH.status = ? AND ((T.platform = ? AND TH.updated_at <= NOW() - INTERVAL '3 minutes') OR (T.platform != ? AND TH.updated_at <= NOW() - INTERVAL '1 minutes'))`,
`SELECT TH.* FROM %s AS TH JOIN %s AS T ON TH.task_id = T.id WHERE TH.status = ? AND ((T.platform = ? AND TH.updated_at <= NOW() - INTERVAL '3 minutes') OR (T.platform = ? AND TH.updated_at <= NOW() - INTERVAL '1 minutes') OR (T.platform = ?) )`,
(&dbModel.TaskHistory{}).TableName(), (&dbModel.Task{}).TableName(),
)
// ignore log
tx := d.db.Session(&gorm.Session{Logger: logger.Default.LogMode(logger.Error)})
err = tx.Raw(sql, constant.TaskHistoryStatusPending, constant.TaskPlatformTwitter, constant.TaskPlatformTwitter).Scan(&tasks).Error
err = tx.Raw(sql, constant.TaskHistoryStatusPending, constant.TaskPlatformTwitter, constant.TaskPlatformTwitter, constant.TaskPlatformAppbase).Scan(&tasks).Error
return
}
......
......@@ -31,20 +31,20 @@ func (d *Dao) GetTGGroupInfo(chatId int) (title, username string, err error) {
return gjson.Get(string(data), "data.title").String(), gjson.Get(string(data), "data.username").String(), nil
}
func (d *Dao) CheckTGJoin(userId string, chatId int) (ok bool, err error) {
func (d *Dao) CheckTGJoin(userId string, chatId int) (ok, premium bool, err error) {
url := fmt.Sprintf("%s/api/v1/user/joined?chatId=%d&userId=%s", strings.TrimSuffix(d.c.TGTask.URL, "/"), chatId, userId)
log.WithField("url", url).Debug("check tg join")
data, err := httpGet(url)
if err != nil {
return false, err
return false, false, err
}
retCode := gjson.Get(string(data), "code").Int()
if retCode == 1 {
return false, errors.New(string(data))
return false, false, errors.New(string(data))
}
return gjson.Get(string(data), "data.joined").Bool(), nil
return gjson.Get(string(data), "data.joined").Bool(), gjson.Get(string(data), "data.isPremium").Bool(), nil
}
func (d *Dao) CheckTGActive(userId string, chatId int) (msgCount int, err error) {
......
networks:
default:
name: aon-backend
services:
taskcenter-api:
image: caduceus/taskcenter:latest
image: caduceus/taskcenter:latest-appbase
pull_policy: always
container_name: taskcenter-api
ports:
......@@ -21,7 +17,7 @@ services:
unless-stopped
taskcenter-sync:
image: caduceus/taskcenter:latest
image: caduceus/taskcenter:latest-appbase
pull_policy: always
container_name: taskcenter-sync
volumes:
......
......@@ -66,7 +66,7 @@ func (s *Sync) SyncTask(taskId int, userId string) (ok bool, err error) {
case constant.TaskActionJoin, constant.TaskActionActive:
var taskDone bool
if task.Action == constant.TaskActionJoin {
taskDone, err = s.d.CheckTGJoin(telegramUserId, task.TelegramChatId)
taskDone, _, err = s.d.CheckTGJoin(telegramUserId, task.TelegramChatId)
} else {
var msgCount int
msgCount, err = s.d.CheckTGActive(telegramUserId, task.TelegramChatId)
......@@ -121,6 +121,26 @@ func (s *Sync) SyncTask(taskId int, userId string) (ok bool, err error) {
default:
return false, fmt.Errorf("unknown task action: %s", task.Action)
}
case constant.TaskPlatformAppbase:
switch task.Action {
case constant.TaskActionSignIn:
// 签到直接成功
return true, nil
case constant.TaskActionPremiumSignIn:
telegramUserId, err := s.d.GetProviderId(userId, constant.TaskPlatformTelegram)
if err != nil {
log.WithError(err).Error("get provider telegram user id error")
return false, err
}
if telegramUserId == "" {
return false, nil
}
_, premium, err := s.d.CheckTGJoin(telegramUserId, task.TelegramChatId)
return premium, nil
default:
return false, fmt.Errorf("unknown task action: %s", task.Action)
}
default:
return false, fmt.Errorf("unknown task platform: %s", task.Platform)
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment