Procházet zdrojové kódy

增加频道验证

xh před 9 měsíci
rodič
revize
ababd5c6b2

+ 2 - 1
game/game_cluster/internal/mdb/models/achieveTask.go

@@ -23,7 +23,8 @@ type AchieveTaskBase struct {
 	Url       string            `json:"url" bson:"url"`             // 链接
 	Num       int               `json:"num" bson:"num"`             //已完成次数
 	RewardNum int               `json:"rewardNum" bson:"rewardNum"` //可领奖次数
-	Status    int               `json:"status" bson:"status"`       //完成状态0未完成1已完成2已领取奖励
+	Status    int               `json:"status" bson:"status"`       //完成状态0未完成  1已完成2已领取奖励
+	Validate  int               `json:"validate" bson:"validate"`   //验证状态 0 未验证 1待验证 2验证成功
 }
 
 type AchieveTask map[int]*AchieveTaskBase

+ 35 - 6
game/game_cluster/internal/mdb/models/player.go

@@ -10,6 +10,7 @@ import (
 	"github.com/mhaya/game/game_cluster/internal/data"
 	"github.com/mhaya/game/game_cluster/internal/mdb"
 	"github.com/mhaya/game/game_cluster/internal/param"
+	"github.com/mhaya/game/game_cluster/internal/third"
 	"github.com/mhaya/game/game_cluster/internal/token"
 	"time"
 
@@ -217,19 +218,47 @@ func (p *Player) RefreshRoll() bool {
 	return false
 }
 
-// FinishAchieveTaskByType1 完成成就类型1
+func (p *Player) CheckTaskByType1(userID string, id int) bool {
+	switch id {
+	case 1: //关注关注推特
+		return true
+	case 2: //加入TG频道
+		if third.GetIfChannel(userID) == 1 {
+			return true
+		} else {
+			return false
+		}
+	case 3: //关注Yutube账号
+		return true
+	case 4: //加入DC频道
+		return true
+	}
+	return false
+}
+
 func (p *Player) FinishAchieveTaskByType1(id int) bool {
 	if a, ok := p.AchieveTask[id]; ok {
-		if a.Num == 0 {
-			p.AchieveTask[id].Num = 1
-			p.AchieveTask[id].Status = 1
-			return true
+		if a.Num == 0 && a.Validate == 1 { //待验证
+			if p.CheckTaskByType1(p.UserName, id) {
+				p.AchieveTask[id].Validate = 2 //验证成功
+				p.AchieveTask[id].Num = 1
+				p.AchieveTask[id].Status = 1
+			} else {
+				mhayaLogger.Error("FinishAchieveTaskByType1 验证失败 username :%v,  id : v%", p.UserName, id)
+				return false
+			}
+
+		} else {
+			if a.Validate == 0 {
+				p.AchieveTask[id].Validate = 1
+			}
 		}
+		return true
 	}
 	return false
 }
 
-// FinishAchieveTaskByType2 完成成就类型1
+// FinishAchieveTaskByType2 完成成就类型2
 func (p *Player) FinishAchieveTaskByType2() bool {
 	var cur int
 	for _, v := range p.AchieveTask {

+ 7 - 0
game/game_cluster/internal/third/telegram.go

@@ -5,6 +5,7 @@ import (
 	jsoniter "github.com/json-iterator/go"
 	mhayaHttp "github.com/mhaya/extend/http"
 	"github.com/mhaya/game/game_cluster/internal/data"
+	mhayaLogger "github.com/mhaya/logger"
 )
 
 type GetIfChannelResp struct {
@@ -18,11 +19,17 @@ func GetIfChannel(userID string) int32 {
 	params := map[string]string{}
 	rs, _, err := mhayaHttp.GET(fmt.Sprintf("%v%v/getChatMember?chat_id=%v&user_id=%v", ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, userID), params)
 	if err != nil {
+		mhayaLogger.Error("third.GetIfChannel 验证频道失败  url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
+			ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, userID,
+			err.Error())
 		return 0
 	}
 	var resp GetIfChannelResp
 	err = jsoniter.Unmarshal(rs, &resp)
 	if err != nil {
+		mhayaLogger.Error("third.GetIfChannel 验证频道失败  url = %v, bottoken = %v, ChatIDName = %v, userID = %v",
+			ret.Params.AppUrl, ret.Params.BotToken, ret.Params.ChatIDName, userID,
+			err.Error())
 		return 0
 	}
 	if resp.Result.Status == "member" {