145 lines
3.8 KiB
Go
145 lines
3.8 KiB
Go
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
|
|
}
|