// 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
|
|
}
|