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

update signin

parent 41822051
...@@ -10,7 +10,7 @@ api: ...@@ -10,7 +10,7 @@ api:
go build $(BUILD_FLAGS) -v -o=${GOBIN}/$@ ./cmd/api go build $(BUILD_FLAGS) -v -o=${GOBIN}/$@ ./cmd/api
docker: docker:
docker build -t caduceus/taskcenter:latest -f Dockerfile . docker build -t caduceus/taskcenter:latest-appbase -f Dockerfile .
push: push:
docker push caduceus/taskcenter:latest docker push caduceus/taskcenter:latest-appbase
\ No newline at end of file \ No newline at end of file
...@@ -21,12 +21,14 @@ const ( ...@@ -21,12 +21,14 @@ const (
TaskPlatformApp = "app" TaskPlatformApp = "app"
TaskPlatformTwitter = "twitter" TaskPlatformTwitter = "twitter"
TaskPlatformTelegram = "telegram" TaskPlatformTelegram = "telegram"
TaskPlatformAppbase = "appbase"
) )
var validPlatforms = map[string]bool{ var validPlatforms = map[string]bool{
TaskPlatformApp: true, TaskPlatformApp: true,
TaskPlatformTwitter: true, TaskPlatformTwitter: true,
TaskPlatformTelegram: true, TaskPlatformTelegram: true,
TaskPlatformAppbase: true,
} }
func IsValidPlatform(platform string) bool { func IsValidPlatform(platform string) bool {
...@@ -43,6 +45,8 @@ const ( ...@@ -43,6 +45,8 @@ const (
TaskActionReply = "reply" TaskActionReply = "reply"
TaskActionRetweet = "retweet" TaskActionRetweet = "retweet"
TaskActionInvite = "invite" TaskActionInvite = "invite"
TaskActionSignIn = "signIn"
TaskActionPremiumSignIn = "premiumSignIn"
) )
var validActions = map[string]bool{ var validActions = map[string]bool{
...@@ -54,6 +58,8 @@ var validActions = map[string]bool{ ...@@ -54,6 +58,8 @@ var validActions = map[string]bool{
TaskActionReply: true, TaskActionReply: true,
TaskActionRetweet: true, TaskActionRetweet: true,
TaskActionInvite: true, TaskActionInvite: true,
TaskActionSignIn: true,
TaskActionPremiumSignIn: true,
} }
func IsValidAction(action string) bool { func IsValidAction(action string) bool {
...@@ -65,6 +71,7 @@ var TaskAction = map[string][]string{ ...@@ -65,6 +71,7 @@ var TaskAction = map[string][]string{
TaskPlatformApp: {TaskActionActive, TaskActionInvite}, TaskPlatformApp: {TaskActionActive, TaskActionInvite},
TaskPlatformTelegram: {TaskActionJoin, TaskActionActive, TaskActionBind}, TaskPlatformTelegram: {TaskActionJoin, TaskActionActive, TaskActionBind},
TaskPlatformTwitter: {TaskActionFollow, TaskActionLike, TaskActionReply, TaskActionRetweet}, TaskPlatformTwitter: {TaskActionFollow, TaskActionLike, TaskActionReply, TaskActionRetweet},
TaskPlatformAppbase: {TaskActionSignIn, TaskActionPremiumSignIn},
} }
const ( const (
......
...@@ -225,14 +225,14 @@ func (d *Dao) UpdateTaskHistory(id int, status string) (err error) { ...@@ -225,14 +225,14 @@ func (d *Dao) UpdateTaskHistory(id int, status string) (err error) {
} }
func (d *Dao) GetUnprocessedTasks() (tasks []*dbModel.TaskHistory, err error) { func (d *Dao) GetUnprocessedTasks() (tasks []*dbModel.TaskHistory, err error) {
// twitter延迟3分钟,其余延迟1分钟 // twitter延迟3分钟,tg延迟1分钟,appbase不延迟
sql := fmt.Sprintf( 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(), (&dbModel.TaskHistory{}).TableName(), (&dbModel.Task{}).TableName(),
) )
// ignore log // ignore log
tx := d.db.Session(&gorm.Session{Logger: logger.Default.LogMode(logger.Error)}) 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 return
} }
......
...@@ -31,20 +31,20 @@ func (d *Dao) GetTGGroupInfo(chatId int) (title, username string, err error) { ...@@ -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 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) 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") log.WithField("url", url).Debug("check tg join")
data, err := httpGet(url) data, err := httpGet(url)
if err != nil { if err != nil {
return false, err return false, false, err
} }
retCode := gjson.Get(string(data), "code").Int() retCode := gjson.Get(string(data), "code").Int()
if retCode == 1 { 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) { func (d *Dao) CheckTGActive(userId string, chatId int) (msgCount int, err error) {
......
networks:
default:
name: aon-backend
services: services:
taskcenter-api: taskcenter-api:
image: caduceus/taskcenter:latest image: caduceus/taskcenter:latest-appbase
pull_policy: always pull_policy: always
container_name: taskcenter-api container_name: taskcenter-api
ports: ports:
...@@ -21,7 +17,7 @@ services: ...@@ -21,7 +17,7 @@ services:
unless-stopped unless-stopped
taskcenter-sync: taskcenter-sync:
image: caduceus/taskcenter:latest image: caduceus/taskcenter:latest-appbase
pull_policy: always pull_policy: always
container_name: taskcenter-sync container_name: taskcenter-sync
volumes: volumes:
......
...@@ -66,7 +66,7 @@ func (s *Sync) SyncTask(taskId int, userId string) (ok bool, err error) { ...@@ -66,7 +66,7 @@ func (s *Sync) SyncTask(taskId int, userId string) (ok bool, err error) {
case constant.TaskActionJoin, constant.TaskActionActive: case constant.TaskActionJoin, constant.TaskActionActive:
var taskDone bool var taskDone bool
if task.Action == constant.TaskActionJoin { if task.Action == constant.TaskActionJoin {
taskDone, err = s.d.CheckTGJoin(telegramUserId, task.TelegramChatId) taskDone, _, err = s.d.CheckTGJoin(telegramUserId, task.TelegramChatId)
} else { } else {
var msgCount int var msgCount int
msgCount, err = s.d.CheckTGActive(telegramUserId, task.TelegramChatId) msgCount, err = s.d.CheckTGActive(telegramUserId, task.TelegramChatId)
...@@ -121,6 +121,26 @@ func (s *Sync) SyncTask(taskId int, userId string) (ok bool, err error) { ...@@ -121,6 +121,26 @@ func (s *Sync) SyncTask(taskId int, userId string) (ok bool, err error) {
default: default:
return false, fmt.Errorf("unknown task action: %s", task.Action) 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: default:
return false, fmt.Errorf("unknown task platform: %s", task.Platform) 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