diff --git a/models/user_invitation.go b/models/user_invitation.go new file mode 100644 index 000000000..db004b7e1 --- /dev/null +++ b/models/user_invitation.go @@ -0,0 +1,50 @@ +package models + +import ( + "fmt" + + "code.gitea.io/gitea/modules/timeutil" +) + +// Follow represents relations of user and his/her followers. +type Invitation struct { + ID int64 `xorm:"pk autoincr"` + SrcUserID int64 `xorm:"NOT NULL DEFAULT 0"` + UserID int64 `xorm:"NOT NULL DEFAULT 0"` + Phone string `xorm:"NULL"` + CreatedUnix timeutil.TimeStamp `xorm:"created"` +} + +func QueryInvitaion(start int64, end int64) ([]*Invitation, int) { + statictisSess := xStatistic.NewSession() + defer statictisSess.Close() + cond := "created_unix >=" + fmt.Sprint(start) + " and created_unix <=" + fmt.Sprint(end) + + userList := make([]*Invitation, 0) + + if err := statictisSess.Table(new(Invitation)).Where(cond).OrderBy("created_unix desc"). + Find(&userList); err != nil { + return nil, 0 + } + return userList, len(userList) +} + +func InsertInvitaion(invitationUser *Invitation) { + statictisSess := xStatistic.NewSession() + defer statictisSess.Close() + statictisSess.Insert(invitationUser) +} + +func QueryInvitaionBySrcUserId(srcUserId int64) ([]*Invitation, int) { + statictisSess := xStatistic.NewSession() + defer statictisSess.Close() + cond := "src_user_id =" + fmt.Sprint(srcUserId) + + userList := make([]*Invitation, 0) + + if err := statictisSess.Table(new(Invitation)).Where(cond).OrderBy("created_unix desc"). + Find(&userList); err != nil { + return nil, 0 + } + return userList, len(userList) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 9d83594fa..4982edd93 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -504,6 +504,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/forgot_password", user.ForgotPasswd) m.Post("/forgot_password", user.ForgotPasswdPost) m.Post("/logout", user.SignOut) + m.Get("/invitation_code", user.GetInvitaionCode) }) // ***** END: User ***** diff --git a/routers/user/Invitation.go b/routers/user/Invitation.go new file mode 100644 index 000000000..12050d928 --- /dev/null +++ b/routers/user/Invitation.go @@ -0,0 +1,36 @@ +package user + +import ( + "strings" + + "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/services/repository" +) + +func GetInvitaionCode(ctx *context.Context) { + + url := setting.RecommentRepoAddr + "invitaion_page" + result, err := repository.RecommendFromPromote(url) + resultJsonMap := make(map[string]interface{}, 0) + if err == nil { + for _, strLine := range result { + tmpIndex := strings.Index(strLine, "=") + if tmpIndex != -1 { + key := strLine[0:tmpIndex] + value := strLine[tmpIndex+1:] + resultJsonMap[key] = value + } + } + } + + if ctx.IsSigned { + resultJsonMap["invitaion_code"] = ctx.User.Name + + } + ctx.JSON(200, resultJsonMap) +} + +func RegisteUserByInvitaionCode(ctx *context.Context) { + +}