Bladeren bron

伊宁项目更改相关 用户关联增加子系统用户关联操作功能

1037015548@qq.com 1 jaar geleden
bovenliggende
commit
8ad37cd087

+ 39 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -2,6 +2,9 @@ package com.ruoyi.web.controller.system;
 
 import java.util.List;
 import java.util.stream.Collectors;
+
+import com.ruoyi.system.domain.Dangan;
+import com.ruoyi.system.service.*;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -32,10 +35,6 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.shiro.service.SysPasswordService;
 import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysPostService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
 
 /**
  * 用户信息
@@ -63,6 +62,9 @@ public class SysUserController extends BaseController
     @Autowired
     private SysPasswordService passwordService;
 
+    @Autowired
+    private IDanganService danganService;
+
     @RequiresPermissions("system:user:view")
     @GetMapping()
     public String user()
@@ -262,6 +264,36 @@ public class SysUserController extends BaseController
         return success();
     }
 
+    /**
+     * @Author Lx
+     * @Description //TODO 查看用户的子系统列表
+     * @Date 14:47 2024/5/8
+     * @Param
+     * @return
+     **/
+    @GetMapping("/findChild/{userId}")
+    public String userByuserRelate(@PathVariable("userId") Long userId, ModelMap mmap)
+    {
+        mmap.put("userId",userId);
+        return prefix + "/userRelate/userRelate";
+    }
+
+    /**
+     * 进入修改子用户关联界面
+     */
+    @GetMapping("/authChild/{userId}")
+    public String authChild(@PathVariable("userId") Long userId, ModelMap mmap)
+    {
+        mmap.put("userId",userId);
+        //获取用户列表
+        List<SysUser> userList= userService.selectUserList(new SysUser());
+        mmap.put("userList",userList);
+        //获取档案列表
+        List<Dangan> danganList = danganService.selectDanganList(new Dangan());
+        mmap.put("danganList",danganList);
+        return prefix + "/userRelate/relateAdd";
+    }
+
     @RequiresPermissions("system:user:remove")
     @Log(title = "用户管理", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
@@ -373,14 +405,17 @@ public class SysUserController extends BaseController
     public AjaxResult getUserNameById(String userId)
     {
         String loginName = null;
+        String userName = null;
         AjaxResult result = AjaxResult.success();
         if(userId!=null){
             SysUser user1 = userService.selectUserById(Long.valueOf(userId));
             if(user1!=null){
                 loginName = user1.getLoginName();
+                userName = user1.getUserName();
             }
         }
         result.put("loginName",loginName);
+        result.put("userName",userName);
         return result;
     }
 

+ 66 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserRelateController.java

@@ -11,6 +11,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.Dangan;
 import com.ruoyi.system.domain.UserRelate;
+import com.ruoyi.system.domain.param.JPUserRelateAddList;
 import com.ruoyi.system.service.IDanganService;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.IUserRelateService;
@@ -18,6 +19,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.File;
@@ -139,6 +141,70 @@ public class UserRelateController extends BaseController
     }
 
     /**
+     * 批量新增保存子系统用户账号关联
+     */
+    @RequiresPermissions("system:userRelate:add")
+    @Log(title = "子系统用户账号关联", businessType = BusinessType.INSERT)
+    @PostMapping("/addList")
+    @ResponseBody
+    public AjaxResult addSaveList(JPUserRelateAddList userRelateAddList)
+    {
+        int successNum = 0;
+        try {
+            if(CollectionUtils.isEmpty(userRelateAddList.getDanganIdList())){
+                return AjaxResult.warn("子系统数据不可为空");
+            }
+            //TODO 检查数据完整性
+            for (int i = 0; i <userRelateAddList.getDanganIdList().size(); i++) {
+                if(StringUtils.isEmpty(userRelateAddList.getDanganNameList().get(i))){
+                    return AjaxResult.warn("子系统数据不完整");
+                }
+                if(StringUtils.isEmpty(userRelateAddList.getDananLoginNameList().get(i))){
+                    return AjaxResult.warn("子系统数据不完整");
+                }
+            }
+            //TODO 判断数据是否存在
+            for (int i = 0; i <userRelateAddList.getDanganIdList().size(); i++) {
+                UserRelate queryRelate = new UserRelate();
+                queryRelate.setUserId(userRelateAddList.getUserId());
+                queryRelate.setDanganId(userRelateAddList.getDanganIdList().get(i));
+                List<UserRelate> list = userRelateService.selectUserRelateList(queryRelate);
+                if(!CollectionUtils.isEmpty(list)){
+                    return AjaxResult.warn(userRelateAddList.getDanganNameList().get(i)+",该档案关系已存在");
+                }
+            }
+
+            InputStream inputStream = getConfigStream("application.yml");
+            Properties properties = new Properties();
+            properties.load(inputStream);
+            for (int i = 0; i < userRelateAddList.getDanganIdList().size(); i++) {
+                UserRelate userRelate = new UserRelate();
+                userRelate.setUserId(userRelateAddList.getUserId());
+                userRelate.setUserName(userRelateAddList.getUserName());
+                userRelate.setLoginName(userRelateAddList.getLoginName());
+                userRelate.setDanganId(userRelateAddList.getDanganIdList().get(i));
+                userRelate.setDanganName(userRelateAddList.getDanganNameList().get(i));
+                userRelate.setDanganLoginName(userRelateAddList.getDananLoginNameList().get(i));
+                userRelate.setStatus("1");
+                userRelate.setRelateTime(new Date());
+                String urlRules = properties.getProperty("user_ralte_url_rules[" + userRelate.getDanganId() + "]");
+                if(!StringUtils.isEmpty(urlRules)){
+                    userRelate.setUrlRules(urlRules);
+                }
+                userRelate.setCreateBy(ShiroUtils.getLoginName());
+                int resultInt = userRelateService.insertUserRelate(userRelate);
+                if(resultInt>0){
+                    successNum = successNum+1;
+                }
+            }
+        }catch(Exception e){
+            logger.error("addSaveRelate:"+e.getLocalizedMessage());
+        }
+
+        return AjaxResult.success("成功数:"+successNum);
+    }
+
+    /**
      * 修改子系统用户账号关联
      */
     @GetMapping("/edit/{relateId}")

+ 6 - 6
ruoyi-admin/src/main/resources/application-test.yml

@@ -53,15 +53,15 @@ spring:
                 # 主库数据源 stringtype=unspecified 如果stringtype设置为 unspecified,参数将作为非类型值发送到服务器,并且服务器将尝试推断适当的类型。
                 master:
 #                     url: jdbc:postgresql://119.96.165.176:5432/test_lixing?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
-#                     url: jdbc:postgresql://119.96.165.176:5432/lhk_union_mgr_new?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
-#                     username: postgres
-#                     password: kpr.23417.postgres
+                     url: jdbc:postgresql://119.96.165.176:5432/lhk_union_mgr_new?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
+                     username: postgres
+                     password: kpr.23417.postgres
 #                      url: jdbc:postgresql://140.246.183.164:5432/union_mgr?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
 #                      username: postgres
 #                      password: kpr.23417.postgres
-                      url: jdbc:postgresql://60.13.253.94:54321/union_mgr?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
-                      username: postgres
-                      password: kpr.23417.postgres
+#                      url: jdbc:postgresql://60.13.253.94:54321/union_mgr?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
+#                      username: postgres
+#                      password: kpr.23417.postgres
                 # 从库数据源
                 slave:
                     # 从数据源开关/默认关闭

+ 14 - 1
ruoyi-admin/src/main/resources/templates/system/user/user.html

@@ -159,7 +159,9 @@
 						var actions = [];
 						actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
 						actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a> ');
-						actions.push("<a class='btn btn-info btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authRole(" + row.userId + ")'><i class='fa fa-check-square-o'></i>分配角色</a>");
+						actions.push("<a class='btn btn-info btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authRole(" + row.userId + ")'><i class='fa fa-check-square-o'></i>分配角色</a> ");
+						actions.push("<a class='btn btn-warning btn-xs " + editFlag + "' href='javascript:void(0)' onclick='authChild("+row.userId+")'><i class='fa fa-edit'></i>添加子账号</a> ");
+						actions.push("<a class='btn btn-default btn-xs " + editFlag + "' href='javascript:void(0)' onclick='findChild("+row.userId+")'><i class='fa fa-eye'></i>查看子账号</a>");
 						return actions.join('');
 					}
 				}]
@@ -218,6 +220,17 @@
 		$.modal.openTab("用户分配角色", url);
 	}
 
+	/* 用户管理-编辑子账号 */
+	function authChild(userId) {
+		var url = prefix + '/authChild/' + userId;
+		$.modal.open("添加子用户", url,window.width,600);
+	}
+	/* 用户管理-查看子账号 */
+	function findChild(userId) {
+		var url = prefix + '/findChild/' + userId;
+        $.modal.open("查看子用户", url,window.width,600);
+	}
+
 	/* 用户状态显示 */
 	function statusTools(row) {
 		if (row.status == 1) {

+ 304 - 0
ruoyi-admin/src/main/resources/templates/system/user/userRelate/relateAdd.html

@@ -0,0 +1,304 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增子系统用户账号关联')" />
+    <th:block th:include="include :: datetimepicker-css" />
+    <!--<th:block th:include="include :: select2-css" />-->
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-userRelate-add">
+            <div class="form-group" style="display: none">
+                <div class="form-group">
+                    <div class="col-sm-8">
+                        <input id="userId" name="userId" type="text" th:value="${userId}">
+                    </div>
+                </div>
+            </div>
+            <div class="copyDivClass">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">系统登录名:</label>
+                    <div class="col-sm-8">
+                        <input id="loginName" name="loginName" class="form-control" type="text" required readonly>
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">子系统名称:</label>
+                    <div class="col-sm-8">
+
+                        <select id="danganId" name="danganId" class="form-control" required   >
+                            <option value="">请选择</option>
+                            <!--<option th:each="user:${danganList}" th:text="${user.danganName}" th:value="${user.danganId}"></option>-->
+                        </select>
+
+                    </div>
+                </div>
+
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">子系统登录名:</label>
+                    <div class="col-sm-8">
+                        <input id="danganLoginName" name="danganLoginName" class="form-control" type="text" required  >
+                    </div>
+                </div>
+
+                <div class="form-group" style="display:none">
+                    <label class="col-sm-3 control-label">url通配规则(JSON [{key:"...",value:".."}]):</label>
+                    <div class="col-sm-8">
+                        <input id="urlRules" name="urlRules" class="form-control" type="text" />
+                    </div>
+                </div>
+
+                <div class="row">
+                    <div class="col-sm-offset-2 col-sm-10">
+                        <button type="button" class="btn btn-sm btn-primary" style="width:30px!important;height:30px!important;" onclick="addCopyDiv(this)">+</button>&nbsp;
+                    </div>
+                </div>
+            </div>
+
+            <div class="row">
+                <div class="col-sm-offset-5 col-sm-10">
+                    <button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
+                    <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
+                </div>
+            </div>
+
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: datetimepicker-js" />
+    <link th:href="@{/ajax/libs/table-edit/bootstrap-table.css}" rel="stylesheet"/>
+    <link th:href="@{/ajax/libs/table-edit/bootstrap-table.min.css}" rel="stylesheet"/>
+    <script th:src="@{/ajax/libs/table-edit/bootstrap-table.js}"></script>
+    <script th:src="@{/ajax/libs/table-edit/bootstrap-table.min.js}"></script>
+    <script th:src="@{/ajax/libs/table-edit/bootstrap-table-zh-CN.js}"></script>
+    <script th:src="@{/ajax/libs/table-edit/bootstrap-table-edit.js}"></script>
+    <script th:src="@{/ajax/libs/table-edit/bootstrap-table-edit.min.js}"></script>
+    <script th:src="@{/ajax/libs/table-edit/bootstrap-select.js}"></script>
+    <!--<th:block th:include="include :: select2-js" />-->
+    <script th:inline="javascript">
+        var prefix = ctx + "system/userRelate"
+        var danganList =[[${danganList}]];
+
+        $("#form-userRelate-add").validate({
+            focusCleanup: true
+        });
+
+        var userId=  $("#userId").val();
+        var letLoginName = "";
+        var letUserName = "";
+        getLoginName();
+        //TODO 初始化元素
+        let optionListHtml = "";
+        for(let i = 0;i<danganList.length;i++){
+            let optItem = "<option text ='"+danganList[i].danganName+"' value='"+danganList[i].danganId+"'>"+danganList[i].danganName+"</option>";
+            optionListHtml+=optItem;
+        }
+
+        $("#danganId").append(optionListHtml);
+        $("#loginName").val(letLoginName);
+
+        //TODO 添加元素
+        function addCopyDiv(opt) {
+            $(opt).parent().parent().parent().after("<div class=\"copyDivClass\">\n" +
+                "<hr/>" +
+                "                <div class=\"form-group\">\n" +
+                "                    <label class=\"col-sm-3 control-label\">系统登录名:</label>\n" +
+                "                    <div class=\"col-sm-8\">\n" +
+                "                        <input name=\"loginName\" class=\"form-control\" type=\"text\" value='"+letLoginName+"' required readonly>\n" +
+                "                    </div>\n" +
+                "                </div>\n" +
+                "\n" +
+                "\n" +
+                "                <div class=\"form-group\">\n" +
+                "                    <label class=\"col-sm-3 control-label\">子系统名称:</label>\n" +
+                "                    <div class=\"col-sm-8\">\n" +
+                "\n" +
+                "                        <select name=\"danganId\" class=\"form-control\" required   >\n" +
+                "                            <option value=\"\">请选择</option>\n" +
+                optionListHtml +
+                "                        </select>\n" +
+                "\n" +
+                "                    </div>\n" +
+                "                </div>\n" +
+                "\n" +
+                "                <div class=\"form-group\">\n" +
+                "                    <label class=\"col-sm-3 control-label\">子系统登录名:</label>\n" +
+                "                    <div class=\"col-sm-8\">\n" +
+                "                        <input name=\"danganLoginName\" class=\"form-control\" type=\"text\" required  >\n" +
+                "                    </div>\n" +
+                "                </div>\n" +
+                "\n" +
+                "                <div class=\"form-group\" style=\"display:none\">\n" +
+                "                    <label class=\"col-sm-3 control-label\">url通配规则(JSON [{key:\"...\",value:\"..\"}]):</label>\n" +
+                "                    <div class=\"col-sm-8\">\n" +
+                "                        <input name=\"urlRules\" class=\"form-control\" type=\"text\" />\n" +
+                "                    </div>\n" +
+                "                </div>\n" +
+                "\n" +
+                "                <div class=\"row\">\n" +
+                "                    <div class=\"col-sm-offset-2 col-sm-10\">\n" +
+                "                        <button type=\"button\" class=\"btn btn-sm btn-primary\" style=\"width:30px!important;height:30px!important;\" onclick=\"addCopyDiv(this)\">+</button>&nbsp;\n" +
+                "                        <button type=\"button\" class=\"btn btn-sm btn-danger\" style=\"width:30px!important;height:30px!important;\" onclick=\"removeCopyDiv(this)\">-</button>\n" +
+                "                    </div>\n" +
+                "                </div>\n" +
+                "            </div>");
+        }
+
+        //TODO 删除元素
+        function removeCopyDiv(opt){
+            $(opt).parent().parent().parent().remove();
+        }
+
+        function getLoginName(){
+            $.ajax({
+                url: ctx + "system/user/getUserNameById",
+                data: {userId:userId},
+                type: "post",
+                async: false,
+                success: function(result) {
+
+
+                    // console.log({result})
+                    letLoginName = result.loginName;
+                    letUserName = result.userName;
+                }
+            })
+        }
+
+        $(function() {
+            loadEditTable();
+        });
+
+        var bool = false;
+        function loadEditTable(){
+            $('#table1').bootstrapTable('destroy');
+            $('#table1').bootstrapTable({
+                method: 'post',
+                url: ctx + "system/a/list",
+                editable:true,//开启编辑模式
+                clickToSelect: true,
+                cache : false,
+                columns: [
+                    {
+                        field: 'danganId',
+                        title: '子系统名称',
+                        align:"center",
+                        edit: {
+                            required: true, editable:false,type: 'select', data: danganList,
+                            valueField: 'danganId',
+                            textField: 'danganName',
+                            onSelect: function (val, rec) {
+                                var data = $("#table1").bootstrapTable('getData');
+                                console.log({data})
+
+
+                                bool = data.some(item=>item.danganId==val);
+                                console.log({bool})
+                            }
+                        },
+                    },
+                    {
+                        field: 'danganLoginName',
+                        title: '子系统登录名',
+                        align:"center",
+                        edit:{required:true ,type:'text'}
+                    },
+                    {
+                        title:"操作",
+                        align:"center",
+                        formatter : operateFormatter1,
+                        edit:false
+                    }
+                ],
+                onEditableHidden: function(field, row, $el, reason) { // 当编辑状态被隐藏时触发
+                    if(reason === 'save') {
+                        var $td = $el.closest('tr').children();
+                        $td.eq(-1).html((row.price*row.number).toFixed(2));
+                        $el.closest('tr').next().find('.editable').editable('show'); //编辑状态向下一行移动
+                    } else if(reason === 'nochange') {
+                        $el.closest('tr').next().find('.editable').editable('show');
+                    }
+                },
+                onEditableSave: function (field, row, oldValue, $el) {
+                    $table = $('#table1').bootstrapTable({});
+                    $table.bootstrapTable('updateRow', {index: row.rowId, row: row});
+                }
+            });
+        }
+
+        function operateFormatter1(value, row, index) {
+            return [
+                "<a class=\"remove\" href='javascript:removeRow("+index+")' title=\"删除改行\">",
+                "<i class='glyphicon glyphicon-remove'></i>",
+                "</a>     "
+            ].join('');
+        }
+
+        $('#table1').on( 'click', 'td:has(.editable)', function (e) {
+            e.stopPropagation(); // 阻止事件的冒泡行为
+            $(this).find('.editable').editable('show'); // 打开被点击单元格的编辑状态
+        } );
+
+        function addRow(){
+            var rows = [];
+            $('#table1').bootstrapTable('append',rows);
+        }
+
+        //删除指定行
+        function removeRow(deleteIndex){
+            $('#table1').bootstrapTable('removeRow', deleteIndex);
+        }
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                let userIdParam = userId;//用户id
+                let userName = letUserName;//用户名
+                let loginName = letLoginName;//主登录名
+                let danganIdList = [];//档案集合
+                let danganNameList = [];//档案名称集合
+                let dananLoginNameList = [];//档案子登录名集合
+                $.each($("select[name='danganId']"),function(i,val){
+                    danganIdList.push($(val).val());
+                });
+                $.each($("select[name='danganId']"),function(i,val){
+                    danganNameList.push($(val).find("option:selected").text());
+                });
+                $.each($("input[name='danganLoginName']"),function(i,val){
+                    dananLoginNameList.push($(val).val());
+                });
+
+                let pushData = {
+                    userId:userIdParam,
+                    userName:userName,
+                    loginName:loginName,
+                    danganIdList:danganIdList,
+                    danganNameList:danganNameList,
+                    dananLoginNameList:dananLoginNameList
+                };
+                var config = {
+                    url: prefix + "/addList",
+                    type: "post",
+                    dataType: "json",
+                    data: pushData,
+                    beforeSend: function () {
+                        $.modal.loading("正在处理中,请稍候...");
+                        $.modal.disable();
+                    },
+                    success: function(result) {
+                        $.modal.closeLoading();
+                        if(result.code==web_status.SUCCESS) {
+                            $.modal.alertSuccess(result.msg);
+                            window.location.reload();
+                        }else{
+                            $.modal.alertWarning(result.msg);
+                        }
+                    }
+                };
+                $.ajax(config)
+            }
+        }
+
+    </script>
+</body>
+</html>

File diff suppressed because it is too large
+ 185 - 0
ruoyi-admin/src/main/resources/templates/system/user/userRelate/userRelate.html


+ 8 - 4
ruoyi-admin/src/main/resources/templates/system/userRelate/userRelate.html

@@ -80,19 +80,23 @@
                 },
                     {
                         field: 'danganName',
-                        title: '子系统名称'
+                        title: '子系统名称',
+                        sortable: true
                     },
                 {
                     field: 'userName',
-                    title: '用户姓名'
+                    title: '用户姓名',
+                    sortable: true
                 },
                 {
                     field: 'loginName',
-                    title: '本系统登录名'
+                    title: '本系统登录名',
+                    sortable: true
                 },
                 {
                     field: 'danganLoginName',
-                    title: '子系统登录名'
+                    title: '子系统登录名',
+                    sortable: true
                 },
                 {
                     field: 'relateTime',

+ 81 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/param/JPUserRelateAddList.java

@@ -0,0 +1,81 @@
+package com.ruoyi.system.domain.param;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @ClassName JPUserRelateAddList
+ * @Description: TODO
+ * @Author LX
+ * @Date 2024/5/8
+ * @Version V1.0
+ **/
+public class JPUserRelateAddList implements Serializable{
+    private static final long serialVersionUID = 1L;
+
+    /** 用户id */
+    private Long userId;
+
+    /** 用户姓名 */
+    private String userName;
+
+    /** 本系统登录名 */
+    private String loginName;
+
+    /** 子系统id集合 */
+    private List<Long> danganIdList;
+
+    /** 子系统名称集合 */
+    private List<String> danganNameList;
+
+    /** 子系统登录名集合 */
+    private List<String> dananLoginNameList;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public List<Long> getDanganIdList() {
+        return danganIdList;
+    }
+
+    public void setDanganIdList(List<Long> danganIdList) {
+        this.danganIdList = danganIdList;
+    }
+
+    public List<String> getDanganNameList() {
+        return danganNameList;
+    }
+
+    public void setDanganNameList(List<String> danganNameList) {
+        this.danganNameList = danganNameList;
+    }
+
+    public List<String> getDananLoginNameList() {
+        return dananLoginNameList;
+    }
+
+    public void setDananLoginNameList(List<String> dananLoginNameList) {
+        this.dananLoginNameList = dananLoginNameList;
+    }
+}