package user import ( "context" "fmt" "go_dreamfactory/comm" "go_dreamfactory/modules" "go_dreamfactory/pb" "go_dreamfactory/sys/cache" "go_dreamfactory/sys/db" "go_dreamfactory/utils" "strings" "github.com/liwei1dao/lego/sys/log" "go.mongodb.org/mongo-driver/mongo" ) type LoginComp struct { modules.MComp_GateComp } //登录 func (this *LoginComp) Login(ctx context.Context, session comm.IUserSession, req *pb.UserLoginReq) error { log.Debugf("User - Login: session:%v rsp:%v", session.ToString(), req) var code pb.ErrorCode = pb.ErrorCode_Success rsp := &pb.UserLoginResp{} secStr := req.Sec if !strings.HasPrefix(secStr, "CE:") || len(secStr) < 35 { session.SendMsg("user", "login", pb.ErrorCode_SecKey, rsp) return nil } clientMd5Key := strings.TrimPrefix(secStr, "CE:") rawmsg := secStr[35:] serverMd5Key := utils.MD5Str(rawmsg) s := fmt.Sprintf("%x", serverMd5Key) if !strings.EqualFold(strings.ToLower(s), strings.ToLower(clientMd5Key)) { session.SendMsg("user", "login", pb.ErrorCode_SecKeyInvalid, rsp) return nil } account := "" db_user, err := db.Defsys.User_FindUserByAccount(account) if err != nil { if err != mongo.ErrNoDocuments { return err } } if db_user.UserId == "" { db_user.Account = account err = db.Defsys.User_CreateUser(db_user) if err != nil { return err } } session.Build(db_user.UserId) cache_user := &pb.Cache_UserData{ SessionId: session.GetSessionId(), GatewayServiceId: session.GetGatewayServiceId(), UserData: db_user, } err = cache.Defsys.User_UpdateUser(cache_user) if err != nil { return err } session.SendMsg("user", "login", code, &pb.UserLoginResp{ Data: &pb.Cache_UserData{ UserData: &pb.DB_UserData{ UserId: db_user.UserId, }, }, }) return nil } //注销 func (this *LoginComp) Logout(ctx context.Context, session comm.IUserSession, rsp *pb.UserLoginReq) error { log.Debugf("User - Logout: session:%v rsp:%v", session.ToString(), rsp) return nil }