108 lines
2.6 KiB
Go
108 lines
2.6 KiB
Go
package tenant
|
|
|
|
import (
|
|
"SciencesServer/app/api/admin/model"
|
|
model2 "SciencesServer/app/common/model"
|
|
"SciencesServer/app/session"
|
|
"SciencesServer/serve/orm"
|
|
"errors"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Member 人员信息
|
|
type Member struct {
|
|
session *session.Admin
|
|
}
|
|
|
|
type MemberHandle func(session *session.Admin) *Member
|
|
|
|
type (
|
|
// MemberInfo 人员信息
|
|
MemberInfo struct {
|
|
ID string `json:"id"`
|
|
*model.SysUserTenantBasic
|
|
}
|
|
// MemberParams 人员参数信息
|
|
MemberParams struct {
|
|
Mobile, Password string
|
|
}
|
|
)
|
|
|
|
// Instance 人员信息
|
|
func (c *Member) Instance(tenantID uint64) (*MemberInfo, error) {
|
|
mSysUserTenant := model.NewSysUserTenant()
|
|
|
|
out, err := mSysUserTenant.User(model2.NewWhere("u_t.tenant_id", tenantID),
|
|
model2.NewWhere("u_t.identity", model2.SysUserTenantIdentityForSystemUser))
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
res := new(MemberInfo)
|
|
|
|
if out == nil && out.ID <= 0 {
|
|
goto RETURNS
|
|
}
|
|
res.ID = out.GetEncodeID()
|
|
res.SysUserTenantBasic = out
|
|
RETURNS:
|
|
return res, nil
|
|
}
|
|
|
|
// Form 数据操作
|
|
func (c *Member) Form(tenantID uint64, params *MemberParams) error {
|
|
mSysUserTenant := model.NewSysUserTenant()
|
|
|
|
var count int64
|
|
|
|
err := model2.Count(mSysUserTenant.SysUserTenant, &count, model2.NewWhere("tenant_id", tenantID),
|
|
model2.NewWhere("identity", model2.SysUserTenantIdentityForSystemAdmin))
|
|
|
|
if err != nil {
|
|
return err
|
|
} else if count > 0 {
|
|
return errors.New("操作错误,当前平台已存在管理员")
|
|
}
|
|
// 用户信息
|
|
mSysUser := model.NewSysUser()
|
|
|
|
// 查询手机号码是否存在
|
|
isExist := false
|
|
|
|
if isExist, err = model2.FirstField(mSysUser.SysUser, []string{"id", "uuid", "name", "account", "mobile"},
|
|
model2.NewWhere("mobile", params.Mobile)); err != nil {
|
|
return err
|
|
}
|
|
|
|
if isExist {
|
|
mSysUserTenant.TenantID = tenantID
|
|
mSysUserTenant.UID = mSysUser.UUID
|
|
mSysUserTenant.Identity = model2.SysUserTenantIdentityForSystemUser
|
|
return model2.Create(mSysUserTenant.SysUserTenant)
|
|
}
|
|
if params.Password == "" {
|
|
return errors.New("操作错误,密码不能为空")
|
|
}
|
|
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
|
mSysUser.Account = params.Mobile
|
|
mSysUser.Name = params.Mobile
|
|
mSysUser.Mobile = params.Mobile
|
|
mSysUser.Password = params.Password
|
|
mSysUser.Remark = "子平台管理员"
|
|
|
|
if err = model2.Create(mSysUser.SysUser, tx); err != nil {
|
|
return err
|
|
}
|
|
mSysUserTenant.TenantID = tenantID
|
|
mSysUserTenant.UID = mSysUser.UUID
|
|
mSysUserTenant.Identity = model2.SysUserTenantIdentityForSystemUser
|
|
return model2.Create(mSysUserTenant.SysUserTenant, tx)
|
|
})
|
|
}
|
|
|
|
func NewMember() MemberHandle {
|
|
return func(session *session.Admin) *Member {
|
|
return &Member{session: session}
|
|
}
|
|
}
|