84 lines
2.3 KiB
Go
84 lines
2.3 KiB
Go
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
|
|
}
|
|
|