代码拉取完成,页面将自动刷新
package user
import (
"errors"
"fmt"
"gitee.com/qw_1215/fc/FC/app/model/user"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/gvalid"
)
// 用户注册
func Register(data *VoRegisterRequest) error {
// 输入参数检查
if e := gvalid.CheckStruct(data, nil); e != nil {
return errors.New(e.FirstString())
}
// 昵称为非必需参数,默认使用账号名称
if data.Nickname == "" {
data.Nickname = data.Passport
}
// 账号唯一性数据检查
if !CheckPassport(data.Passport) {
return errors.New(fmt.Sprintf("账号 %s 已经存在", data.Passport))
}
// 昵称唯一性数据检查
if !CheckNickName(data.Nickname) {
return errors.New(fmt.Sprintf("昵称 %s 已经存在", data.Nickname))
}
// 将输入参数赋值到数据库实体对象上
var entity *user.Entity
if err := gconv.Struct(data, &entity); err != nil {
return err
}
// 记录账号创建/注册时间
entity.CreateTime = gtime.Now()
if _, err := user.Save(entity); err != nil {
return err
}
return nil
}
// 判断用户是否已经登录
func IsSignedIn(session *ghttp.Session) bool {
return session.Contains(SessionMarkUser)
}
// 用户登录,成功返回用户信息,否则返回nil; passport应当会md5值字符串
func SignIn(passport, password string, session *ghttp.Session) error {
one, err := user.FindOne("passport=? and password=?", passport, password)
if err != nil {
return err
}
if one == nil {
return errors.New("账号或密码错误")
}
return session.Set(SessionMarkUser, one)
}
// 用户注销
func SignOut(session *ghttp.Session) error {
return session.Remove(SessionMarkUser)
}
// 检查账号是否符合规范(目前仅检查唯一性),存在返回false,否则true
func CheckPassport(passport string) bool {
if i, err := user.FindCount("passport", passport); err != nil {
return false
} else {
return i == 0
}
}
// 检查昵称是否符合规范(目前仅检查唯一性),存在返回false,否则true
func CheckNickName(nickname string) bool {
if i, err := user.FindCount("nickname", nickname); err != nil {
return false
} else {
return i == 0
}
}
// 获得用户信息详情
func GetProfile(session *ghttp.Session) (u *user.Entity) {
_ = session.GetStruct(SessionMarkUser, &u)
return
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。