Files
2022-03-05 15:31:22 +08:00

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