From 203edd6bbdf883e897a0075037a4ef68cd519ac9 Mon Sep 17 00:00:00 2001
From: yzh <snbbt@21cn.com>
Date: 星期四, 23 六月 2022 00:07:56 +0800
Subject: [PATCH] 系统账户管理列表用户角色显示优化

---
 web/Dao/UserDao.cs |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/web/Dao/UserDao.cs b/web/Dao/UserDao.cs
index 8ae5992..3e8e6d3 100644
--- a/web/Dao/UserDao.cs
+++ b/web/Dao/UserDao.cs
@@ -34,12 +34,25 @@
         {
             List<SysUser> list = new List<SysUser>();
             recordCount = 0;
-            using (OracleDataReader reader = OracleHelper.ExecuteReader("select count(*) as count from Sys_User", OracleHelper.Connection))
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.Append(" FROM ( ");
+            stringBuilder.Append(" SELECT su.*, t.ROLE_NAMES  FROM sys_user su ");
+            stringBuilder.Append(" LEFT JOIN ( ");
+            stringBuilder.Append(" select su.user_id, wm_concat( sdd.dict_label) ROLE_NAMES from sys_user su  ");
+            stringBuilder.Append(" LEFT JOIN (select DICT_VALUE, DICT_LABEL from sys_dict_data where dict_type='USER_ROLE' ) sdd ");
+            stringBuilder.Append(" on INSTR (user_type, sdd.dict_value) > 0 ");
+            stringBuilder.Append(" GROUP BY su.user_id ");
+            stringBuilder.Append(" ) t on t.user_id = su.user_id ");
+            stringBuilder.Append(" ) ");
+
+            //using (OracleDataReader reader = OracleHelper.ExecuteReader("select count(*) as count from Sys_User", OracleHelper.Connection))
+            using (OracleDataReader reader = OracleHelper.ExecuteReader("select count(*) as count " + stringBuilder.ToString(), OracleHelper.Connection))
             {
                 while (((DbDataReader)reader).Read())
                     recordCount = this.ReadCount(reader);
             }
-            using (OracleDataReader reader = OracleHelper.ExecuteReader(PubConstant.doOracleSql(pageIndex, pageSize, recordCount, "select * from Sys_User").ToString(), OracleHelper.Connection))
+            //using (OracleDataReader reader = OracleHelper.ExecuteReader(PubConstant.doOracleSql(pageIndex, pageSize, recordCount, "select * from Sys_User").ToString(), OracleHelper.Connection))
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(PubConstant.doOracleSql(pageIndex, pageSize, recordCount, "select * " + stringBuilder.ToString() ).ToString(), OracleHelper.Connection))
             {
                 while (((DbDataReader)reader).Read())
                 {
@@ -197,6 +210,7 @@
             e.Salt = oracleReaderWrapper.GetString("SALT", "");
             e.UserName = oracleReaderWrapper.GetString("USER_NAME", "");
             e.UserType = oracleReaderWrapper.GetString("USER_TYPE", "");
+            e.RoleNames = oracleReaderWrapper.GetString("ROLE_NAMES", "");            
             e.ExpireTime = oracleReaderWrapper.GetDateTime("EXPIRE_TIME");
             e.CreateTime = oracleReaderWrapper.GetDateTime("CREATE_TIME");
             e.Remark = oracleReaderWrapper.GetString("REMARK", "");

--
Gitblit v1.9.1