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