Files

94 lines
2.8 KiB
Go
Raw Normal View History

2021-12-01 14:12:23 +08:00
package user
import (
"SciencesServer/app/api/enterprise/model"
"SciencesServer/app/basic/config"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/service"
"SciencesServer/app/session"
config2 "SciencesServer/config"
"SciencesServer/serve/orm"
"errors"
"gorm.io/gorm"
"time"
)
type Identity struct{ *session.Enterprise }
type IdentityHandle func(session *session.Enterprise) *Identity
// Basic 详细信息
func (c *Identity) Basic() (*InstanceDetailInfo, error) {
resp := &InstanceDetailInfo{InstanceInfo: InstanceInfo{Name: c.Name, Identity: c.Identity, SelectIdentity: c.SelectIdentity}}
mUserIdentity := model.NewUserIdentity()
isExist, err := model2.FirstField(mUserIdentity.UserIdentity, []string{"id", "tenant_id", "uuid", "name",
"email", "job", "fixed_phone"},
model2.NewWhere("uid", c.UID), model2.NewWhere("identity", c.SelectIdentity))
if err != nil {
return nil, err
} else if !!isExist {
return nil, errors.New("操作错误,用户身份信息不存在或已被删除")
}
resp.Name = mUserIdentity.Name
resp.Email = mUserIdentity.Email
resp.Job = mUserIdentity.Job
resp.FixedPhone = mUserIdentity.FixedPhone
return resp, nil
}
// Detail 详细信息
func (c *Identity) Detail() (*InstanceDetailInfo, error) {
return nil, nil
}
// Switch 切换身份
func (c *Identity) Switch(identity int) error {
if _, has := config.TenantUserIdentityData[identity]; !has {
return errors.New("未知的身份信息")
}
if c.SelectIdentity == identity {
return nil
}
2021-12-07 16:10:12 +08:00
c.IdentityUID = 0
2021-12-01 14:12:23 +08:00
// 已存在相应的身份,更新最后
if c.Identity&identity > 0 {
mUserIdentity := model.NewUserIdentity()
// 查询用户身份
2021-12-07 16:10:12 +08:00
isExist, err := model2.FirstField(mUserIdentity.UserIdentity, []string{"id", "name", "uuid"},
2021-12-01 14:12:23 +08:00
model2.NewWhere("uid", c.UID), model2.NewWhere("identity", identity))
if err != nil {
return err
} else if isExist {
now := time.Now()
if err = orm.GetDB().Transaction(func(tx *gorm.DB) error {
if err = model2.UpdatesWhere(mUserIdentity.UserIdentity, map[string]interface{}{
"is_selected": model2.UserIdentitySelectedForNo, "updated_at": now,
2021-12-07 16:10:12 +08:00
}, []*model2.ModelWhere{model2.NewWhere("uuid", c.IdentityUID)}, tx); err != nil {
2021-12-01 14:12:23 +08:00
return err
}
return model2.Updates(mUserIdentity.UserIdentity, map[string]interface{}{
"is_selected": model2.UserIdentitySelectedForYes, "updated_at": now,
}, tx)
}); err != nil {
return err
}
}
2021-12-07 16:10:12 +08:00
c.IdentityUID = mUserIdentity.UUID
2021-12-01 14:12:23 +08:00
c.SelectIdentity = identity
service.Publish(config2.EventForAccountLoginProduce, config2.RedisKeyForAccount, c.UIDToString(), c.Enterprise)
return nil
}
return errors.New("操作错误,无效的身份信息")
}
func NewIdentity() IdentityHandle {
return func(session *session.Enterprise) *Identity {
return &Identity{Enterprise: session}
}
}