From aa86bd454b172f4417ed18fe079c63b91d61124b Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Wed, 12 Jun 2024 16:10:54 +0800 Subject: [PATCH] add: multi-tenancy --- .../system/repository/sys_user.impl.go | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/modules/system/repository/sys_user.impl.go b/src/modules/system/repository/sys_user.impl.go index 708f010f..24b73405 100644 --- a/src/modules/system/repository/sys_user.impl.go +++ b/src/modules/system/repository/sys_user.impl.go @@ -18,9 +18,11 @@ var NewSysUserImpl = &SysUserImpl{ selectSql: `select u.user_id, u.dept_id, u.tenant_id, u.user_name, u.nick_name, u.user_type, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, + t.tenant_id, t.parent_id, t.ancestors, t.tenant_name, t.order_num, t.tenancy_type, t.tenancy_key, t.status as tenant_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status from sys_user u left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id`, @@ -60,7 +62,7 @@ var NewSysUserImpl = &SysUserImpl{ sysTenantMap: map[string]string{ "tenant_id": "TenantID", "parent_id": "ParentID", - "Tenant_name": "TenantName", + "tenant_name": "TenantName", "ancestors": "Ancestors", "order_num": "OrderNum", "tenancy_type": "TenancyType", @@ -186,13 +188,13 @@ func (r *SysUserImpl) SelectUserPage(query map[string]any, dataScopeSQL string) params = append(params, parse.Number(endTime.(string))) } if v, ok := query["deptId"]; ok && v != "" { - conditions = append(conditions, "(u.dept_id = ? or u.dept_id in ( select t.dept_id from sys_dept t where find_in_set(?, ancestors) ))") + conditions = append(conditions, "(u.dept_id = ? or u.dept_id in ( select t.dept_id from sys_dept t where find_in_set(?, t.ancestors) ))") params = append(params, v) params = append(params, v) } if v, ok := query["tenantId"]; ok && v != "" { - conditions = append(conditions, "(u.tenant_id = ? or u.tenant_id in ( select n.tenant_id from sys_tenant n where find_in_set(?, ancestors) ))") + conditions = append(conditions, "(u.tenant_id = ? or u.tenant_id in ( select tt.tenant_id from sys_tenant tt where find_in_set(?, tt.ancestors) ))") params = append(params, v) params = append(params, v) } @@ -294,6 +296,7 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str // 查询数量 长度为0直接返回 totalSql := `select count(distinct u.user_id) as 'total' from sys_user u left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id` totalRows, err := datasource.RawDB("", totalSql+whereSql+dataScopeSQL, params) @@ -316,10 +319,11 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str // 查询数据 querySql := `select distinct - u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, - u.phonenumber, u.status, u.create_time, d.dept_name + u.user_id, u.dept_id, u.tenant_id, u.user_name, u.nick_name, u.email, + u.phonenumber, u.status, u.create_time, d.dept_name, t.tenant_name from sys_user u left join sys_dept d on u.dept_id = d.dept_id + left join sys_tenant t on u.tenant_id = t.tenant_id left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id` querySql = querySql + whereSql + dataScopeSQL + pageSql @@ -336,10 +340,12 @@ func (r *SysUserImpl) SelectAllocatedPage(query map[string]any, dataScopeSQL str // SelectUserList 根据条件查询用户列表 func (r *SysUserImpl) SelectUserList(sysUser model.SysUser, dataScopeSQL string) []model.SysUser { selectUserSql := `select - u.user_id, u.dept_id, u.tenant_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader + u.user_id, u.dept_id, u.tenant_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + d.dept_name, d.leader + t.tenant_name, t.tenancy_type, t.tenancy_key from sys_user u left join sys_dept d on u.dept_id = d.dept_id - left join sys_tenant d on u.tenant_id = t.tenant_id` + left join sys_tenant t on u.tenant_id = t.tenant_id` // 查询条件拼接 var conditions []string