189 lines
4.6 KiB
Go
189 lines
4.6 KiB
Go
/**
|
|
#*****************************************************************************
|
|
# @author MakerYang
|
|
# @site mir2.makeryang.com
|
|
#*****************************************************************************
|
|
*/
|
|
|
|
package DisktopController
|
|
|
|
import (
|
|
"Service/framework/database"
|
|
"Service/framework/database/game_account_data"
|
|
"Service/framework/database/game_code_data"
|
|
"Service/framework/utils"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
func MailCode(c *gin.Context) {
|
|
|
|
referer, _ := Utils.CheckHeader(c)
|
|
if !referer {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
mail := c.DefaultQuery("mail", "")
|
|
if mail == "" {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
randNumber := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
code := fmt.Sprintf("%06v", randNumber.Int31n(1000000))
|
|
|
|
codeDatabase := Database.New(GameCodeData.TableName)
|
|
codeData := &GameCodeData.Data{}
|
|
codeData.CodeMail = mail
|
|
codeData.CodePhone = ""
|
|
codeData.CodeContent = code
|
|
err := codeDatabase.CreateData(codeData)
|
|
if err != nil {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
send := Utils.SendMail(mail, "注册/登录验证码:"+codeData.CodeContent, "你的账号注册/登录验证码为:"+codeData.CodeContent)
|
|
if !send {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
Utils.Success(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
type responseMailLogin struct {
|
|
Account GameAccountData.Return `json:"account"`
|
|
LoginToken string `json:"token"`
|
|
}
|
|
|
|
func MailLogin(c *gin.Context) {
|
|
|
|
returnData := responseMailLogin{}
|
|
|
|
referer, _ := Utils.CheckHeader(c)
|
|
if !referer {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
email := c.DefaultQuery("email", "")
|
|
if email == "" {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
password := c.DefaultQuery("password", "")
|
|
if password == "" {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
accountDatabase := Database.New(GameAccountData.TableName)
|
|
accountData := GameAccountData.Data{}
|
|
accountWhere := fmt.Sprintf("account_mail = %q AND account_password = %q AND account_group = %d", email, Utils.EncryptMD5(password), 10)
|
|
err := accountDatabase.GetData(&accountData, accountWhere, "account_id DESC")
|
|
if err != nil {
|
|
Utils.Warning(c, 10000, "20006", Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
returnData.Account = GameAccountData.ReturnData(&accountData)
|
|
returnData.LoginToken = Utils.EncodeId(128, accountData.AccountId)
|
|
|
|
Utils.Success(c, returnData)
|
|
return
|
|
}
|
|
|
|
type responseMailRegister struct {
|
|
Account GameAccountData.Return `json:"account"`
|
|
LoginToken string `json:"token"`
|
|
}
|
|
|
|
func MailRegister(c *gin.Context) {
|
|
|
|
returnData := responseMailRegister{}
|
|
|
|
referer, _ := Utils.CheckHeader(c)
|
|
if !referer {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
email := c.DefaultQuery("email", "")
|
|
if email == "" {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
code := c.DefaultQuery("code", "")
|
|
if code == "" {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
password := c.DefaultQuery("password", "")
|
|
if password == "" {
|
|
Utils.Error(c, Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
codeDatabase := Database.New(GameCodeData.TableName)
|
|
codeData := GameCodeData.Data{}
|
|
codeWhere := fmt.Sprintf("code_mail = %q AND code_content = %q", email, code)
|
|
err := codeDatabase.GetData(&codeData, codeWhere, "code_id DESC")
|
|
if err != nil {
|
|
Utils.Warning(c, 10000, "20007", Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
accountDatabase := Database.New(GameAccountData.TableName)
|
|
accountData := GameAccountData.Data{}
|
|
accountWhere := fmt.Sprintf("account_mail = %q", email)
|
|
err = accountDatabase.GetData(&accountData, accountWhere, "account_id DESC")
|
|
if err == nil {
|
|
Utils.Warning(c, 10000, "20008", Utils.EmptyData{})
|
|
return
|
|
}
|
|
|
|
AccountGroup := 1
|
|
countWhere := fmt.Sprintf("account_status > %d", 0)
|
|
count, _ := accountDatabase.CountData(countWhere)
|
|
if count == 0 {
|
|
AccountGroup = 10
|
|
}
|
|
|
|
setData := &GameAccountData.Data{}
|
|
setData.AccountMail = email
|
|
setData.AccountPassword = Utils.EncryptMD5(password)
|
|
setData.AccountName = ""
|
|
setData.AccountNumber = ""
|
|
setData.AccountQuestionA = ""
|
|
setData.AccountAnswerA = ""
|
|
setData.AccountQuestionB = ""
|
|
setData.AccountAnswerB = ""
|
|
setData.AccountGroup = AccountGroup
|
|
setData.AccountStatus = 2
|
|
err = accountDatabase.CreateData(setData)
|
|
if err != nil {
|
|
Utils.Error(c, accountData)
|
|
return
|
|
}
|
|
if setData.AccountId == 0 {
|
|
Utils.Error(c, accountData)
|
|
return
|
|
}
|
|
|
|
returnData.LoginToken = Utils.EncodeId(128, setData.AccountId)
|
|
returnData.Account = GameAccountData.ReturnData(setData)
|
|
|
|
_ = codeDatabase.DeleteData(&GameCodeData.Data{}, fmt.Sprintf("code_mail = %q", email))
|
|
|
|
Utils.Success(c, returnData)
|
|
return
|
|
}
|