package services import "server/models" // BindTenantUser 绑定用户到租户(若已存在则更新状态/默认值) func BindTenantUser(tid, uid uint64, account, name, phone, email, password *string, isDefault, status int8, remark *string) (uint64, error) { var existed models.TenantUser err := models.Orm.QueryTable(new(models.TenantUser)). Filter("tid", tid). Filter("uid", uid). One(&existed) if err == nil { update := map[string]interface{}{ "account": account, "name": name, "phone": phone, "email": email, "password": password, "status": status, "is_default": isDefault, "remark": remark, } _, uErr := models.Orm.QueryTable(new(models.TenantUser)).Filter("id", existed.ID).Update(update) return existed.ID, uErr } m := &models.TenantUser{ Tid: tid, Uid: uid, Account: account, Name: name, Phone: phone, Email: email, Password: password, IsDefault: isDefault, Status: status, Remark: remark, } id, iErr := models.Orm.Insert(m) return uint64(id), iErr } // UnbindTenantUser 删除绑定关系 func UnbindTenantUser(id uint64) error { _, err := models.Orm.QueryTable(new(models.TenantUser)).Filter("id", id).Delete() return err } // ListTenantUsersByTid 根据租户ID查询绑定关系 func ListTenantUsersByTid(tid uint64) ([]models.TenantUser, error) { var rows []models.TenantUser _, err := models.Orm.QueryTable(new(models.TenantUser)). Filter("tid", tid). OrderBy("-is_default", "-id"). All(&rows) return rows, err } // ListTenantBindingsByUid 根据用户ID查询绑定关系 func ListTenantBindingsByUid(uid uint64) ([]models.TenantUser, error) { var rows []models.TenantUser _, err := models.Orm.QueryTable(new(models.TenantUser)). Filter("uid", uid). OrderBy("-is_default", "-id"). All(&rows) return rows, err } // SetDefaultTenant 设置用户默认租户(同一用户仅一个默认) func SetDefaultTenant(uid, tid uint64) error { _, err := models.Orm.QueryTable(new(models.TenantUser)).Filter("uid", uid).Update(map[string]interface{}{ "is_default": 0, }) if err != nil { return err } _, err = models.Orm.QueryTable(new(models.TenantUser)). Filter("uid", uid). Filter("tid", tid). Update(map[string]interface{}{"is_default": 1}) return err }