From 92432fc3105ed80a8cc75e0d047692f851944eff Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期三, 20 八月 2025 11:00:41 +0800
Subject: [PATCH] 用户信息导入导出修改

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java        |   28 +++++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserRoleExitVo.java                |   14 +++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml         |   26 +++++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java            |    9 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java         |    7 +++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java                      |    8 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java |   12 ++++++
 7 files changed, 103 insertions(+), 1 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
index 520f3ef..1529964 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.system.controller;
 
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.RandomUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -32,6 +33,7 @@
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
 import org.jeecg.modules.system.service.*;
 import org.jeecg.modules.system.vo.SysDepartUsersVO;
+import org.jeecg.modules.system.vo.SysUserRoleExitVo;
 import org.jeecg.modules.system.vo.SysUserRoleVO;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -580,7 +582,17 @@
         }
         //update-end--Author:kangxiaolin  Date:20180825 for锛歔03]鐢ㄦ埛瀵煎嚭锛屽鏋滈�夋嫨鏁版嵁鍒欏彧瀵煎嚭鐩稿叧鏁版嵁----------------------
         List<SysUser> pageList = sysUserService.list(queryWrapper);
-
+        // 鏌ヨ鐢ㄦ埛瑙掕壊
+        List<String> userIds = pageList.stream().map(SysUser::getId).collect(Collectors.toList());
+        List<SysUserRoleExitVo> userRoleExitVoList = sysUserRoleService.queryRoleNamesByUserIds(userIds);
+        if (!CollectionUtil.isEmpty(userRoleExitVoList)) {
+            Map<String, String> userRolesMap = userRoleExitVoList.stream().collect(Collectors.toMap(SysUserRoleExitVo::getUsername, SysUserRoleExitVo::getRoleNames));
+            pageList.forEach(user -> {
+                if (userRolesMap.containsKey(user.getUsername())) {
+                    user.setRoleIds(userRolesMap.get(user.getUsername()));
+                }
+            });
+        }
         //瀵煎嚭鏂囦欢鍚嶇О
         mv.addObject(NormalExcelConstants.FILE_NAME, "鐢ㄦ埛鍒楄〃");
         mv.addObject(NormalExcelConstants.CLASS, SysUser.class);
@@ -627,6 +639,9 @@
                     sysUserExcel.setSalt(salt);
                     String passwordEncode = PasswordUtil.encrypt(sysUserExcel.getUsername(), sysUserExcel.getPassword(), salt);
                     sysUserExcel.setPassword(passwordEncode);
+                    sysUserExcel.setDelFlag(CommonConstant.DEL_FLAG_0);
+                    sysUserExcel.setPasswordFlag(CommonConstant.DEL_FLAG_1);
+                    sysUserExcel.setPasswordTime(new Date());
                     try {
                         sysUserService.save(sysUserExcel);
                         successLines++;
@@ -672,6 +687,17 @@
                         }
                         userProductionService.saveBatch(userProductionList);
                     }
+                    // 鎵归噺灏嗚鑹插拰鐢ㄦ埛淇℃伅寤虹珛鍏宠仈鍏崇郴
+                    String roleIds = sysUserExcel.getRoleIds();
+                    if (StringUtils.isNotBlank(roleIds)) {
+                        String userId = sysUserExcel.getId();
+                        String[] roleIdArray = roleIds.split(",");
+                        List<SysUserRole> sysRoleList = new ArrayList<>(roleIdArray.length);
+                        for (String roleId : roleIdArray) {
+                            sysRoleList.add(new SysUserRole(userId, roleId));
+                        }
+                        sysUserRoleService.saveBatch(sysRoleList);
+                    }
                 }
             } catch (Exception e) {
                 errorMessage.add("鍙戠敓寮傚父锛�" + e.getMessage());
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
index 0a3c06c..b1e7937 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
@@ -189,6 +189,14 @@
     private String productionIds;
 
     /**
+     * 瑙掕壊鍒嗛厤 (瀵煎叆瀵煎嚭浣跨敤)
+     */
+    @Excel(name="瑙掕壊鍒嗛厤",width = 15,dictTable ="sys_role",dicText = "role_name",dicCode = "id")
+    @Dict(dictTable ="sys_role",dicText = "role_name",dicCode = "id")
+    @TableField(exist = false)
+    private String roleIds;
+
+    /**
      * 澶氱鎴穒d閰嶇疆锛岀紪杈戠敤鎴风殑鏃跺�欒缃�
      */
     private String relTenantIds;
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java
index 15f8bb8..313e5aa 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java
@@ -1,10 +1,12 @@
 package org.jeecg.modules.system.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.SysUserRole;
+import org.jeecg.modules.system.vo.SysUserRoleExitVo;
 
 import java.util.List;
 
@@ -48,4 +50,11 @@
 	@Select("select username from sys_user where id in (select user_id from sys_user_role where role_id = #{roleId})")
 	List<String> getUserNameByRoleId(@Param("roleId") String roleId);
 
+	/**
+	 * 閫氳繃鐢ㄦ埛id闆嗗悎鑾峰彇鐢ㄦ埛鍜岃鑹插叧绯�
+	 * @param userIds
+	 * @return
+	 */
+	@InterceptorIgnore(tenantLine = "true") // 璺宠繃绉熸埛鎻掍欢瑙f瀽
+    List<SysUserRoleExitVo> queryRoleNamesByUserIds(@Param("userIds") List<String> userIds);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml
index c3812b4..9d99b9f 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserRoleMapper.xml
@@ -15,4 +15,30 @@
 		where t2.id is not null
 		)
 	</select>
+
+    <select id="queryRoleNamesByUserIds" resultType="org.jeecg.modules.system.vo.SysUserRoleExitVo">
+		SELECT
+			t1.username,
+			ISNULL(
+					STUFF(
+							(
+								SELECT ',' + t3.role_name
+								FROM sys_user_role t2
+										 INNER JOIN sys_role t3 ON t2.role_id = t3.id
+								WHERE t2.user_id = t1.id
+								FOR XML PATH(''), TYPE
+							).value('.', 'NVARCHAR(MAX)'), 1, 1, ''
+					), ''
+			) AS roleNames
+		FROM sys_user t1
+		<where>
+			<if test="userIds!=null  and userIds.size()>0">
+				AND t1.id IN
+				<foreach collection="userIds" index="index" item="userId" open="(" separator="," close=")">
+					#{userId}
+				</foreach>
+			</if>
+		</where>
+		GROUP BY t1.username, t1.id
+	</select>
 </mapper>
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java
index c0096a3..60ec394 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.SysUserRole;
+import org.jeecg.modules.system.vo.SysUserRoleExitVo;
 
 import java.util.List;
 
@@ -28,4 +29,10 @@
      */
     List<String> getUserNameByRoleId(String roleId);
 
+    /**
+     * 閫氳繃鐢ㄦ埛id闆嗗悎鑾峰彇鐢ㄦ埛鍜岃鑹插叧绯�
+     * @param userIds
+     * @return
+     */
+    List<SysUserRoleExitVo> queryRoleNamesByUserIds(List<String> userIds);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java
index 463b020..0d29a1c 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java
@@ -5,9 +5,11 @@
 import org.jeecg.modules.system.entity.SysUserRole;
 import org.jeecg.modules.system.mapper.SysUserRoleMapper;
 import org.jeecg.modules.system.service.ISysUserRoleService;
+import org.jeecg.modules.system.vo.SysUserRoleExitVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -42,4 +44,14 @@
         return sysUserRoleMapper.getUserNameByRoleId(roleId);
     }
 
+    /**
+     * 閫氳繃鐢ㄦ埛id闆嗗悎鑾峰彇鐢ㄦ埛鍜岃鑹插叧绯�
+     * @param userIds
+     * @return
+     */
+    @Override
+    public List<SysUserRoleExitVo> queryRoleNamesByUserIds(List<String> userIds) {
+        return sysUserRoleMapper.queryRoleNamesByUserIds(userIds);
+    }
+
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserRoleExitVo.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserRoleExitVo.java
new file mode 100644
index 0000000..836f1fb
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserRoleExitVo.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-08-20
+ * @Description:
+ */
+@Data
+public class SysUserRoleExitVo {
+    private String username;
+    private String roleNames;
+}

--
Gitblit v1.9.3