updated contributors

This commit is contained in:
marvzhang
2020-03-19 11:13:25 +08:00
parent e0d953d18f
commit daef59be07
22 changed files with 211 additions and 31 deletions

View File

@@ -15,14 +15,14 @@ type Service interface {
Check() (bool, error)
}
func GetService(name string) Service {
func GetService(name string, uid bson.ObjectId) Service {
switch name {
case constants.ChallengeLogin7d:
return &Login7dService{}
return &Login7dService{UserId: uid}
case constants.ChallengeCreateCustomizedSpider:
return &CreateCustomizedSpiderService{}
return &CreateCustomizedSpiderService{UserId: uid}
case constants.ChallengeRunRandom:
return &RunRandomService{}
return &RunRandomService{UserId: uid}
}
return nil
}
@@ -42,14 +42,14 @@ func AddChallengeAchievement(name string, uid bson.ObjectId) error {
return nil
}
func CheckChallengeAndUpdate(name string, uid bson.ObjectId) error {
svc := GetService(name)
func CheckChallengeAndUpdate(ch model.Challenge, uid bson.ObjectId) error {
svc := GetService(ch.Name, uid)
achieved, err := svc.Check()
if err != nil {
return err
}
if achieved {
if err := AddChallengeAchievement(name, uid); err != nil {
if achieved && !ch.Achieved {
if err := AddChallengeAchievement(ch.Name, uid); err != nil {
return err
}
}
@@ -57,6 +57,15 @@ func CheckChallengeAndUpdate(name string, uid bson.ObjectId) error {
}
func CheckChallengeAndUpdateAll(uid bson.ObjectId) error {
challenges, err := model.GetChallengeListWithAchieved(nil, 0, constants.Infinite, "-_id", uid)
if err != nil {
return err
}
for _, ch := range challenges {
if err := CheckChallengeAndUpdate(ch, uid); err != nil {
continue
}
}
return nil
}

View File

@@ -1,8 +1,23 @@
package challenge
import (
"crawlab/constants"
"crawlab/model"
"github.com/globalsign/mgo/bson"
)
type CreateCustomizedSpiderService struct {
UserId bson.ObjectId
}
func (s *CreateCustomizedSpiderService) Check() (bool, error) {
return true, nil
query := bson.M{
"user_id": s.UserId,
"type": constants.Customized,
}
_, count, err := model.GetSpiderList(query, 0, 1, "-_id")
if err != nil {
return false, err
}
return count > 0, nil
}

View File

@@ -1,8 +1,18 @@
package challenge
import (
"crawlab/model"
"github.com/globalsign/mgo/bson"
)
type Login7dService struct {
UserId bson.ObjectId
}
func (s *Login7dService) Check() (bool, error) {
return true, nil
days, err := model.GetVisitDays(s.UserId)
if err != nil {
return false, err
}
return days >= 7, nil
}

View File

@@ -1,8 +1,23 @@
package challenge
import (
"crawlab/constants"
"crawlab/model"
"github.com/globalsign/mgo/bson"
)
type RunRandomService struct {
UserId bson.ObjectId
}
func (s *RunRandomService) Check() (bool, error) {
return true, nil
query := bson.M{
"user_id": s.UserId,
"run_type": constants.RunTypeRandom,
}
list, err := model.GetTaskList(query, 0, 1, "-_id")
if err != nil {
return false, err
}
return len(list) > 0, nil
}

View File

@@ -471,6 +471,7 @@ func InitDemoSpiders () {
ProjectId: bson.ObjectIdHex(constants.ObjectIdNull),
FileId: bson.ObjectIdHex(constants.ObjectIdNull),
Cmd: configData.Cmd,
UserId: bson.ObjectIdHex(constants.ObjectIdNull),
}
if err := spider.Add(); err != nil {
log.Errorf("add spider error: " + err.Error())
@@ -497,6 +498,7 @@ func InitDemoSpiders () {
ProjectId: bson.ObjectIdHex(constants.ObjectIdNull),
FileId: bson.ObjectIdHex(constants.ObjectIdNull),
Config: configData,
UserId: bson.ObjectIdHex(constants.ObjectIdNull),
}
if err := spider.Add(); err != nil {
log.Errorf("add spider error: " + err.Error())

View File

@@ -115,3 +115,8 @@ func GetCurrentUser(c *gin.Context) *model.User {
data, _ := c.Get("currentUser")
return data.(*model.User)
}
func GetCurrentUserId(c *gin.Context) bson.ObjectId {
return GetCurrentUser(c).Id
}