93 lines
2.0 KiB
Go
93 lines
2.0 KiB
Go
package user
|
|
|
|
import (
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/lego/sys/event"
|
|
"go_dreamfactory/lego/sys/log"
|
|
"go_dreamfactory/pb"
|
|
"go_dreamfactory/sys/cache"
|
|
"time"
|
|
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
//参数校验
|
|
func (this *apiComp) LoginCheck(session comm.IUserSession, req *pb.UserLoginReq) (result map[string]interface{}, code comm.ErrorCode) {
|
|
result = map[string]interface{}{}
|
|
return
|
|
}
|
|
|
|
//登录
|
|
func (this *apiComp) Login(session comm.IUserSession, result map[string]interface{}, req *pb.UserLoginReq) (code pb.ErrorCode) {
|
|
var (
|
|
err error
|
|
user *pb.DBUser
|
|
)
|
|
|
|
defer func() {
|
|
if user != nil {
|
|
err = session.SendMsg(string(this.module.GetType()), UserSubTypeLogin, &pb.UserLoginResp{
|
|
Data: user,
|
|
})
|
|
if err != nil {
|
|
code = pb.ErrorCode_SystemError
|
|
return
|
|
}
|
|
event.TriggerEvent(comm.EventUserLogin, user.Uid)
|
|
}
|
|
}()
|
|
|
|
// user := decodeUserData(req.Sec)
|
|
|
|
//从mgo查询user
|
|
user, err = this.module.modelUser.User_FindByAccount(req.Sid, req.Account)
|
|
if err != nil {
|
|
if err != mongo.ErrNoDocuments {
|
|
return
|
|
}
|
|
}
|
|
|
|
if user == nil {
|
|
//如果是新玩家,创建一条基础的数据,页面会引导进入创角页面
|
|
err = this.module.modelUser.User_Create(user)
|
|
if err != nil {
|
|
log.Errorf("User_CreateUser err %v", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
//bind user
|
|
err = session.Bind(user.Uid, this.service.GetId())
|
|
if err != nil {
|
|
code = pb.ErrorCode_BindUser
|
|
return
|
|
}
|
|
|
|
//set user other info
|
|
user.Logintime = time.Now().Unix()
|
|
user.Lastloginip = session.GetIP()
|
|
user.Createip = session.GetIP()
|
|
|
|
//缓存user session
|
|
err = this.module.modelSession.Change(user.Uid, map[string]interface{}{
|
|
"uid": user.Uid,
|
|
"sessionId": session.GetSessionId(),
|
|
"gatewayServiceId": session.GetGatewayServiceId(),
|
|
},
|
|
cache.WithExpire(time.Hour*12),
|
|
cache.WithDisabledMgoLog())
|
|
if err != nil {
|
|
code = pb.ErrorCode_DBError
|
|
return
|
|
}
|
|
|
|
//缓存user
|
|
err = this.module.modelUser.Add(user.Uid, user, cache.WithDisabledMgoLog())
|
|
if err != nil {
|
|
code = pb.ErrorCode_DBError
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|