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