fix: unique tenancy and name check
This commit is contained in:
@@ -37,7 +37,7 @@ var NewSysTenantImpl = &SysTenantImpl{
|
||||
},
|
||||
}
|
||||
|
||||
// SysTenantImpl 部门表 数据层处理
|
||||
// SysTenantImpl 租户表 数据层处理
|
||||
type SysTenantImpl struct {
|
||||
// 查询视图对象SQL
|
||||
selectSql string
|
||||
@@ -60,7 +60,7 @@ func (r *SysTenantImpl) convertResultRows(rows []map[string]any) []model.SysTena
|
||||
return arr
|
||||
}
|
||||
|
||||
// SelectTenantList 查询部门管理数据
|
||||
// SelectTenantList 查询租户管理数据
|
||||
func (r *SysTenantImpl) SelectTenantList(sysTenant model.SysTenant, dataScopeSQL string) []model.SysTenant {
|
||||
// 查询条件拼接
|
||||
var conditions []string
|
||||
@@ -101,7 +101,7 @@ func (r *SysTenantImpl) SelectTenantList(sysTenant model.SysTenant, dataScopeSQL
|
||||
return r.convertResultRows(results)
|
||||
}
|
||||
|
||||
// SelectTenantListByRoleId 根据角色ID查询部门树信息
|
||||
// SelectTenantListByRoleId 根据角色ID查询租户树信息
|
||||
func (r *SysTenantImpl) SelectTenantListByRoleId(roleId string, tenantCheckStrictly bool) []string {
|
||||
querySql := `select t.tenant_id as 'str' from sys_tenant d
|
||||
left join sys_role_tenant rd on t.tenant_id = rt.tenant_id
|
||||
@@ -135,7 +135,7 @@ func (r *SysTenantImpl) SelectTenantListByRoleId(roleId string, tenantCheckStric
|
||||
return []string{}
|
||||
}
|
||||
|
||||
// SelectTenantById 根据部门ID查询信息
|
||||
// SelectTenantById 根据租户ID查询信息
|
||||
func (r *SysTenantImpl) SelectTenantById(tenantId string) model.SysTenant {
|
||||
querySql := `select t.tenant_id, t.parent_id, t.ancestors,
|
||||
t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status,
|
||||
@@ -154,7 +154,7 @@ func (r *SysTenantImpl) SelectTenantById(tenantId string) model.SysTenant {
|
||||
return model.SysTenant{}
|
||||
}
|
||||
|
||||
// SelectChildrenTenantById 根据ID查询所有子部门
|
||||
// SelectChildrenTenantById 根据ID查询所有子租户
|
||||
func (r *SysTenantImpl) SelectChildrenTenantById(tenantId string) []model.SysTenant {
|
||||
querySql := r.selectSql + " where find_in_set(?, t.ancestors)"
|
||||
results, err := datasource.RawDB("", querySql, []any{tenantId})
|
||||
@@ -181,7 +181,7 @@ func (r *SysTenantImpl) HasChildByTenantId(tenantId string) int64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// CheckTenantExistUser 查询部门是否存在用户
|
||||
// CheckTenantExistUser 查询租户是否存在用户
|
||||
func (r *SysTenantImpl) CheckTenantExistUser(tenantId string) int64 {
|
||||
querySql := "select count(1) as 'total' from sys_user where tenant_id = ? and del_flag = '0'"
|
||||
results, err := datasource.RawDB("", querySql, []any{tenantId})
|
||||
@@ -195,7 +195,7 @@ func (r *SysTenantImpl) CheckTenantExistUser(tenantId string) int64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// CheckUniqueTenant 校验部门是否唯一
|
||||
// CheckUniqueTenant 校验租户是否唯一
|
||||
func (r *SysTenantImpl) CheckUniqueTenant(sysTenant model.SysTenant) string {
|
||||
// 查询条件拼接
|
||||
var conditions []string
|
||||
@@ -231,7 +231,43 @@ func (r *SysTenantImpl) CheckUniqueTenant(sysTenant model.SysTenant) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// InsertTenant 新增部门信息
|
||||
// 校验租赁对象是否唯一
|
||||
func (r *SysTenantImpl) IsUniqueTenancy(sysTenant model.SysTenant) bool {
|
||||
// 查询条件拼接
|
||||
var conditions []string
|
||||
var params []any
|
||||
if sysTenant.TenancyType != "" {
|
||||
conditions = append(conditions, "tenancy_type = ?")
|
||||
params = append(params, sysTenant.TenancyType)
|
||||
}
|
||||
if sysTenant.TenancyKey != "" {
|
||||
conditions = append(conditions, "? like tenancy_key")
|
||||
params = append(params, sysTenant.TenancyKey)
|
||||
}
|
||||
|
||||
// 构建查询条件语句
|
||||
whereSql := ""
|
||||
if len(conditions) > 0 {
|
||||
whereSql += " where " + strings.Join(conditions, " and ")
|
||||
}
|
||||
if whereSql == "" {
|
||||
return true
|
||||
}
|
||||
|
||||
// 查询数据
|
||||
querySql := "select 1 from sys_tenant " + whereSql + " and status = '1' and del_flag = '0' limit 1"
|
||||
results, err := datasource.RawDB("", querySql, params)
|
||||
if err != nil {
|
||||
logger.Errorf("query err %v", err)
|
||||
return true
|
||||
}
|
||||
if len(results) > 0 {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// InsertTenant 新增租户信息
|
||||
func (r *SysTenantImpl) InsertTenant(sysTenant model.SysTenant) string {
|
||||
// 参数拼接
|
||||
params := make(map[string]any)
|
||||
@@ -243,6 +279,8 @@ func (r *SysTenantImpl) InsertTenant(sysTenant model.SysTenant) string {
|
||||
}
|
||||
if sysTenant.TenantName != "" {
|
||||
params["tenant_name"] = sysTenant.TenantName
|
||||
} else {
|
||||
params["tenant_name"] = sysTenant.TenantName
|
||||
}
|
||||
if sysTenant.Ancestors != "" {
|
||||
params["ancestors"] = sysTenant.Ancestors
|
||||
@@ -291,7 +329,7 @@ func (r *SysTenantImpl) InsertTenant(sysTenant model.SysTenant) string {
|
||||
return insertedID
|
||||
}
|
||||
|
||||
// UpdateTenant 修改部门信息
|
||||
// UpdateTenant 修改租户信息
|
||||
func (r *SysTenantImpl) UpdateTenant(sysTenant model.SysTenant) int64 {
|
||||
// 参数拼接
|
||||
params := make(map[string]any)
|
||||
@@ -335,7 +373,7 @@ func (r *SysTenantImpl) UpdateTenant(sysTenant model.SysTenant) int64 {
|
||||
return rows
|
||||
}
|
||||
|
||||
// UpdateTenantStatusNormal 修改所在部门正常状态
|
||||
// UpdateTenantStatusNormal 修改所在租户正常状态
|
||||
func (r *SysTenantImpl) UpdateTenantStatusNormal(tenantIds []string) int64 {
|
||||
placeholder := repo.KeyPlaceholderByQuery(len(tenantIds))
|
||||
sql := "update sys_tenant set status = '1' where tenant_id in (" + placeholder + ")"
|
||||
@@ -375,7 +413,7 @@ func (r *SysTenantImpl) UpdateTenantChildren(sysTenants []model.SysTenant) int64
|
||||
return results
|
||||
}
|
||||
|
||||
// DeleteTenantById 删除部门管理信息
|
||||
// DeleteTenantById 删除租户管理信息
|
||||
func (r *SysTenantImpl) DeleteTenantById(tenantId string) int64 {
|
||||
sql := "update sys_tenant set status = '0', del_flag = '1' where tenant_id = ?"
|
||||
results, err := datasource.ExecDB("", sql, []any{tenantId})
|
||||
|
||||
Reference in New Issue
Block a user