89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package logic
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"math/rand"
|
|
"slgserver/constant"
|
|
"slgserver/db"
|
|
myhttp "slgserver/server/httpserver"
|
|
"slgserver/server/loginserver/model"
|
|
"slgserver/util"
|
|
"time"
|
|
)
|
|
|
|
type UserLogic struct{}
|
|
var DefaultUser = UserLogic{}
|
|
|
|
func (self UserLogic) CreateUser(ctx *gin.Context) error {
|
|
account := ctx.Query("username")
|
|
pwd := ctx.Query("password")
|
|
hardware := ctx.Query("hardware")
|
|
|
|
if len(account) > 0 && len(pwd) > 0 {
|
|
if self.UserExists("username", account) {
|
|
return myhttp.New("账号已经存在", constant.UserExist)
|
|
}
|
|
|
|
passcode := fmt.Sprintf("%x", rand.Int31())
|
|
user := &model.User{
|
|
Username: account,
|
|
Passcode: passcode,
|
|
Passwd: util.Password(pwd, passcode),
|
|
Hardware: hardware,
|
|
Ctime: time.Now(),
|
|
Mtime: time.Now()}
|
|
|
|
if _, err := db.MasterDB.Insert(user); err != nil {
|
|
return myhttp.New("数据库出错", constant.DBError)
|
|
} else{
|
|
return nil
|
|
}
|
|
}else{
|
|
return myhttp.New("用户名或密码是空", constant.InvalidParam)
|
|
}
|
|
}
|
|
|
|
func (self UserLogic) ChangePassword(ctx *gin.Context) error {
|
|
account := ctx.Query("username")
|
|
pwd := ctx.Query("password")
|
|
newpwd := ctx.Query("newpassword")
|
|
|
|
user := &model.User{}
|
|
if len(account) > 0 && len(pwd) > 0 && len(newpwd) > 0{
|
|
if _, err := db.MasterDB.Where("username=?", account).Get(user); err != nil {
|
|
return myhttp.New("数据库出错", constant.DBError)
|
|
}else{
|
|
if util.Password(pwd, user.Passcode) == user.Passwd {
|
|
passcode := fmt.Sprintf("%x", rand.Int31())
|
|
changeData := map[string]interface{}{
|
|
"passwd": util.Password(newpwd, passcode),
|
|
"passcode": passcode,
|
|
"Mtime": time.Now(),
|
|
}
|
|
|
|
if _, err := db.MasterDB.Table(user).Where("username=?", account).Update(changeData); err !=nil {
|
|
return myhttp.New("数据库出错", constant.DBError)
|
|
}else{
|
|
return nil
|
|
}
|
|
|
|
}else{
|
|
return myhttp.New("原密码错误", constant.PwdIncorrect)
|
|
}
|
|
}
|
|
|
|
}else{
|
|
return myhttp.New("用户名或密码是空", constant.InvalidParam)
|
|
}
|
|
}
|
|
|
|
func (UserLogic) UserExists(field, val string) bool {
|
|
userLogin := &model.User{}
|
|
_, err := db.MasterDB.Where(field+"=?", val).Get(userLogin)
|
|
if err != nil || userLogin.UId == 0 {
|
|
return false
|
|
}
|
|
return true
|
|
}
|