GAAS GFrame项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.8 KiB

// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
package container
import (
"LAPP_GAAS_GFrame_BACKEND/web/models"
"errors"
"fmt"
"reflect"
)
// 会话
type Session struct {
// 会话上下文
SessionContext
// 会话标识
sessionId string
// 用户信息
user *models.Usertab
//
serviceMapping map[reflect.Type]reflect.Value
// 组件句柄管理器
handlers *HandlerManager
// 事务句柄工厂
transactionHandlerFactory TransactionHandlerFactory
}
// 创建会话
// 参数
// 1.会话标识
// 2.用户信息
// 3.组件句柄管理器
// 4.事务句柄工厂
// 返回值:
// 1.会话
// 2.错误
func NewSession(sessionId string, user *models.Usertab, handlerManager *HandlerManager, transactionHandlerFactory TransactionHandlerFactory) (*Session, error) {
if sessionId == "" {
return nil, errors.New(fmt.Sprintf("会话标识不能为空!"))
}
if user == nil {
return nil, errors.New(fmt.Sprintf("用户信息不能为空!"))
}
if handlerManager == nil {
return nil, errors.New(fmt.Sprintf("组件句柄管理器不能为空!"))
}
if transactionHandlerFactory == nil {
return nil, errors.New(fmt.Sprintf("事务句柄工厂为空!"))
}
context, err := NewSessionContext(user.Userid)
if err != nil {
return nil, err
}
return &Session{*context, sessionId, user, make(map[reflect.Type]reflect.Value, 10), handlerManager, transactionHandlerFactory}, nil
}
// 获取用户信息
// 返回值:
// 1.用户信息
func (session *Session) User() *models.Usertab {
return session.user
}
// 获取会话标识
// 返回值:
// 1.会话标识
func (session *Session) SessionId() string {
return session.sessionId
}
// 获取组件句柄管理器
// 返回值:
// 1.组件句柄管理器
func (session *Session) Handlers() *HandlerManager {
return session.handlers
}