| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package service
- import (
- "context"
- "dashoo.cn/opms_libary/micro_srv"
- "dashoo.cn/opms_libary/myerrors"
- "dashoo.cn/opms_libary/request"
- "github.com/gogf/gf/frame/g"
- )
- // ContextService 上下文管理服务
- type ContextService struct {
- Tenant string `json:"tenant"`
- Ctx context.Context `json:"ctx"`
- CxtUser *request.UserInfo `json:"cxtUser"`
- DataScope g.Map `json:"dataScope"`
- }
- // Init 初始化上下文对象指针到上下文对象中,以便后续的请求流程中可以修改。
- func (c *ContextService) Init(ctx context.Context) (*ContextService, error) {
- cs := ctx.Value("contextService")
- if cs != nil {
- return cs.(*ContextService), nil
- }
- c = new(ContextService)
- c.Ctx = ctx
- // 获取租户码
- tenant, err := micro_srv.GetTenant(ctx)
- if err != nil {
- return nil, myerrors.MicroCallError(err.Error())
- }
- c.Tenant = tenant
- c.CxtUser = nil
- if !micro_srv.IsAuthExclude(ctx) {
- userInfo, err := micro_srv.GetUserInfo(ctx)
- if err != nil {
- return nil, myerrors.MicroCallError(err.Error())
- }
- c.CxtUser = &userInfo
- c.DataScope = userInfo.DataScope
- }
- c.Ctx = context.WithValue(ctx, "contextService", c)
- return c, nil
- }
- func (c *ContextService) GetCxtUserId() int {
- if c.CxtUser == nil {
- return -1
- }
- return c.CxtUser.Id
- }
- func (c *ContextService) GetCxtUserUuid() string {
- if c.CxtUser == nil {
- return "-1"
- }
- return c.CxtUser.Uuid
- }
- func (c *ContextService) GetCxtUserName() string {
- if c.CxtUser == nil {
- return "-1"
- }
- return c.CxtUser.NickName
- }
- func (c *ContextService) GetCxtUserDingtalkId() string {
- if c.CxtUser == nil {
- return "-1"
- }
- return c.CxtUser.DingtalkId
- }
- func (c *ContextService) GetCxtUserDingtalkUid() string {
- if c.CxtUser == nil {
- return "-1"
- }
- return c.CxtUser.DingtalkUid
- }
- func (c *ContextService) GetCxtUserDeptId() int {
- if c.CxtUser == nil {
- return -1
- }
- return c.CxtUser.DeptId
- }
- func (c *ContextService) GetCxtUserRoles() []string {
- if c.CxtUser == nil {
- return []string{}
- }
- return c.CxtUser.Roles
- }
- func (c *ContextService) GetCxtUserPosts() []string {
- if c.CxtUser == nil {
- return []string{}
- }
- return c.CxtUser.Posts
- }
- func (c *ContextService) GetCxtUserGroups() []string {
- if c.CxtUser == nil {
- return []string{}
- }
- return c.CxtUser.Groups
- }
|