From 81e2eb4dd2e27da3c4cc447d6aeb9150a5ff7464 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 19 二月 2025 18:30:09 +0800
Subject: [PATCH] 开发角色模块接口

---
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleMenuService.java         |   11 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/DepartmentServiceImpl.java     |   15 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRole.java                      |   38 +++
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/EditSystemRole.java                 |   22 ++
 ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMenuMapper.java            |   11 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleServiceImpl.java     |   29 ++
 ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMapper.xml                      |   15 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Department.java                      |   50 ++++
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleMenuServiceImpl.java |   15 +
 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java              |   11 
 ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemRoleController.java        |  129 +++++++++++
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/AddSystemRole.java                  |   20 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/DepartmentMapper.java                |   11 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRoleMenu.java                  |   24 ++
 ruoyi-admin/src/main/java/com/ruoyi/sange/controller/DepartmentController.java        |  107 +++++++++
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/IDepartmentService.java             |   11 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMapper.java                |   23 ++
 ruoyi-admin/src/main/resources/mapper/sange/SystemUserMapper.xml                      |    7 
 ruoyi-common/pom.xml                                                                  |    6 
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleInfo.java                 |   22 ++
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleListVo.java               |   18 +
 ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMenuMapper.xml                  |    7 
 ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleService.java             |   21 +
 ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleList.java                 |   20 +
 ruoyi-admin/src/main/resources/mapper/sange/DepartmentMapper.xml                      |    7 
 25 files changed, 645 insertions(+), 5 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/DepartmentController.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/DepartmentController.java
new file mode 100644
index 0000000..854816f
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/DepartmentController.java
@@ -0,0 +1,107 @@
+package com.ruoyi.sange.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.sange.domain.Department;
+import com.ruoyi.sange.domain.SystemUser;
+import com.ruoyi.sange.service.IDepartmentService;
+import com.ruoyi.sange.service.ISystemUserService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:44
+ */
+@RestController
+@RequestMapping("/api/department")
+public class DepartmentController {
+	
+	@Resource
+	private IDepartmentService departmentService;
+	
+	@Resource
+	private ISystemUserService systemUserService;
+	
+	
+	@GetMapping("/list")
+	@ApiOperation(value = "获取单位列表", tags = {"管理后台-用户管理"})
+	public R<List<Department>> list(){
+		List<Department> list = departmentService.list();
+		List<Department> departmentList1 = list.stream().filter(s -> s.getPid() == 0).collect(Collectors.toList());
+		for (Department department : departmentList1) {
+			List<Department> departmentList2 = list.stream().filter(s -> s.getPid().equals(department.getId())).collect(Collectors.toList());
+			for (Department department1 : departmentList2) {
+				List<Department> departmentList3 = list.stream().filter(s -> s.getPid().equals(department1.getId())).collect(Collectors.toList());
+				for (Department department2 : departmentList3) {
+					List<Department> departmentList4 = list.stream().filter(s -> s.getPid().equals(department2.getId())).collect(Collectors.toList());
+					department2.setChild(departmentList4);
+				}
+				department1.setChild(departmentList3);
+			}
+			department.setChild(departmentList2);
+		}
+		return R.ok(departmentList1);
+	}
+	
+	
+	
+	@PostMapping("/add")
+	@ApiOperation(value = "添加单位信息", tags = {"管理后台-用户管理"})
+	public R add(@RequestBody Department department){
+		if(null == department.getPid()){
+			department.setPid(0);
+		}
+		int count = departmentService.count(new LambdaQueryWrapper<Department>().eq(Department::getPid, department.getPid()).eq(Department::getName, department.getName()));
+		if(0 < count){
+			return R.fail("单位名称重复。");
+		}
+		Department department1 = departmentService.getById(department.getPid());
+		if(null != department1 && 4 == department1.getTier()){
+			return R.fail("层级超过4级,保存失败。");
+		}
+		department.setTier(null == department1 ? 1 : department1.getTier() + 1);
+		departmentService.save(department);
+		return R.ok();
+	}
+	
+	
+	@PutMapping("/edit")
+	@ApiOperation(value = "编辑单位信息", tags = {"管理后台-用户管理"})
+	public R edit(@RequestBody Department department){
+		if(null == department.getPid()){
+			department.setPid(0);
+		}
+		int count = departmentService.count(new LambdaQueryWrapper<Department>().eq(Department::getPid, department.getPid())
+				.eq(Department::getName, department.getName()).ne(Department::getId, department.getId()));
+		if(0 < count){
+			return R.fail("单位名称重复。");
+		}
+		Department department1 = departmentService.getById(department.getPid());
+		if(null != department1 && 4 == department1.getTier()){
+			return R.fail("层级超过4级,保存失败。");
+		}
+		department.setTier(null == department1 ? 1 : department1.getTier() + 1);
+		departmentService.updateById(department);
+		return R.ok();
+	}
+	
+	
+	
+	@DeleteMapping("/delete/{id}")
+	@ApiOperation(value = "删除单位信息", tags = {"管理后台-用户管理"})
+	public R delete(@PathVariable("id") Integer id){
+		int count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, id).or().eq(SystemUser::getTwoDepartmentId, id)
+				.or().eq(SystemUser::getThreeDepartmentId, id).or().eq(SystemUser::getFourDepartmentId, id).ne(SystemUser::getStatus, 3));
+		if(0 < count){
+			return R.fail("该单位已被使用,删除失败。");
+		}
+		departmentService.removeById(id);
+		return R.ok();
+	}
+	
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemRoleController.java
new file mode 100644
index 0000000..c9ea825
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/controller/SystemRoleController.java
@@ -0,0 +1,129 @@
+package com.ruoyi.sange.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.sange.domain.SystemRole;
+import com.ruoyi.sange.domain.SystemRoleMenu;
+import com.ruoyi.sange.service.ISystemRoleMenuService;
+import com.ruoyi.sange.service.ISystemRoleService;
+import com.ruoyi.sange.warpper.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:41
+ */
+@Api
+@RestController
+@RequestMapping("/api/systemRole")
+public class SystemRoleController extends BaseController {
+	
+	@Resource
+	private ISystemRoleService systemRoleService;
+	
+	@Resource
+	private ISystemRoleMenuService systemRoleMenuService;
+	
+	
+	
+	@GetMapping("/list")
+	@ApiOperation(value = "获取列表数据", tags = {"管理后台-角色管理"})
+	public TableDataInfo<SystemRoleListVo> list(SystemRoleList systemRoleList){
+		startPage();
+		List<SystemRoleListVo> list = systemRoleService.list(systemRoleList.getName());
+		return getDataTable(list);
+	}
+	
+	
+	
+	@PostMapping("/add")
+	@ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"})
+	public R add(@RequestBody AddSystemRole addSystemRole){
+		int count = systemRoleService.count(new LambdaQueryWrapper<SystemRole>().eq(SystemRole::getDel, 0).eq(SystemRole::getName, addSystemRole.getName()));
+		if(0 < count){
+			return R.fail("该角色名称已存在");
+		}
+		SystemRole systemRole = new SystemRole();
+		systemRole.setName(addSystemRole.getName());
+		systemRole.setDel(0);
+		systemRole.setCreateTime(LocalDateTime.now());
+		systemRoleService.save(systemRole);
+		//添加角色菜单权限
+		List<Integer> systemMenuIds = addSystemRole.getSystemMenuIds();
+		for (Integer systemMenuId : systemMenuIds) {
+			SystemRoleMenu systemRoleMenu = new SystemRoleMenu();
+			systemRoleMenu.setSystemRoleId(systemRole.getId());
+			systemRoleMenu.setSystemMenuId(systemMenuId);
+			systemRoleMenuService.save(systemRoleMenu);
+		}
+		return R.ok();
+	}
+	
+	@PutMapping("/edit")
+	@ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"})
+	public R edit(@RequestBody EditSystemRole editSystemRole){
+		int count = systemRoleService.count(new LambdaQueryWrapper<SystemRole>().eq(SystemRole::getDel, 0)
+				.eq(SystemRole::getName, editSystemRole.getName()).ne(SystemRole::getId, editSystemRole.getId()));
+		if(0 < count){
+			return R.fail("该角色名称已存在");
+		}
+		SystemRole systemRole = systemRoleService.getById(editSystemRole.getId());
+		if(null == systemRole){
+			return R.fail("无效的角色数据");
+		}
+		systemRole.setName(editSystemRole.getName());
+		systemRoleService.updateById(systemRole);
+		//添加角色菜单权限
+		systemRoleMenuService.remove(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, editSystemRole.getId()));
+		List<Integer> systemMenuIds = editSystemRole.getSystemMenuIds();
+		for (Integer systemMenuId : systemMenuIds) {
+			SystemRoleMenu systemRoleMenu = new SystemRoleMenu();
+			systemRoleMenu.setSystemRoleId(systemRole.getId());
+			systemRoleMenu.setSystemMenuId(systemMenuId);
+			systemRoleMenuService.save(systemRoleMenu);
+		}
+		return R.ok();
+	}
+	
+	
+	@DeleteMapping("/delete/{id}")
+	@ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"})
+	public R delete(@PathVariable("id") Integer id){
+		SystemRole systemRole = systemRoleService.getById(id);
+		systemRole.setDel(1);
+		systemRoleService.updateById(systemRole);
+		//删除角色菜单权限
+		systemRoleMenuService.remove(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, id));
+		return R.ok();
+	}
+	
+	
+	
+	@GetMapping("/getSystemRoleInfo/{id}")
+	@ApiOperation(value = "获取角色详情", tags = {"管理后台-角色管理"})
+	public R<SystemRoleInfo> getSystemRoleInfo(@PathVariable("id") Integer id){
+		SystemRole systemRole = systemRoleService.getById(id);
+		if(null == systemRole){
+			return R.fail("无效的角色数据");
+		}
+		
+		List<SystemRoleMenu> list = systemRoleMenuService.list(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, id));
+		SystemRoleInfo systemRoleInfo = new SystemRoleInfo();
+		systemRoleInfo.setId(systemRole.getId());
+		systemRoleInfo.setName(systemRoleInfo.getName());
+		systemRoleInfo.setSystemMenuIds(list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList()));
+		return R.ok(systemRoleInfo);
+	}
+	
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Department.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Department.java
new file mode 100644
index 0000000..408ba46
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/Department.java
@@ -0,0 +1,50 @@
+package com.ruoyi.sange.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:40
+ */
+@Data
+@ApiModel
+@TableName("t_department")
+public class Department {
+	/**
+	 * 主键
+	 */
+	@TableId(value = "id", type = IdType.AUTO)
+	@ApiModelProperty("数据ID")
+	private Integer id;
+	/**
+	 * 上级id
+	 */
+	@TableField("pid")
+	@ApiModelProperty("上级id")
+	private Integer pid;
+	/**
+	 * 单位名称
+	 */
+	@TableField("name")
+	@ApiModelProperty("单位名称")
+	private String name;
+	/**
+	 * 层级,最多4层
+	 */
+	@TableField("tier")
+	@ApiModelProperty("层级,最多4层")
+	private Integer tier;
+	
+	
+	@TableField(exist = false)
+	@ApiModelProperty("下级单位")
+	private List<Department> child;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRole.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRole.java
new file mode 100644
index 0000000..3aeaec5
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRole.java
@@ -0,0 +1,38 @@
+package com.ruoyi.sange.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:35
+ */
+@Data
+@TableName("t_system_role")
+public class SystemRole {
+	/**
+	 * 主键
+	 */
+	@TableId(value = "id", type = IdType.AUTO)
+	private Integer id;
+	/**
+	 * 角色名称
+	 */
+	@TableField("name")
+	private String name;
+	/**
+	 * 删除标识(0=否,1=是)
+	 */
+	@TableField("del")
+	private Integer del;
+	/**
+	 * 添加时间
+	 */
+	@TableField("create_time")
+	private LocalDateTime createTime;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRoleMenu.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRoleMenu.java
new file mode 100644
index 0000000..6cc5777
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/domain/SystemRoleMenu.java
@@ -0,0 +1,24 @@
+package com.ruoyi.sange.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:21
+ */
+@Data
+@TableName("t_system_role_menu")
+public class SystemRoleMenu {
+	/**
+	 * 角色id
+	 */
+	@TableField("system_role_id")
+	private Integer systemRoleId;
+	/**
+	 * 菜单id
+	 */
+	@TableField("system_menu_id")
+	private Integer systemMenuId;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/DepartmentMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/DepartmentMapper.java
new file mode 100644
index 0000000..e39c9f3
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/DepartmentMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sange.domain.Department;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:42
+ */
+public interface DepartmentMapper extends BaseMapper<Department> {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMapper.java
new file mode 100644
index 0000000..860de35
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.sange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sange.domain.SystemRole;
+import com.ruoyi.sange.warpper.SystemRoleListVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:40
+ */
+public interface SystemRoleMapper extends BaseMapper<SystemRole> {
+	
+	
+	/**
+	 * 获取列表数据
+	 * @param name
+	 * @return
+	 */
+	List<SystemRoleListVo> list(@Param("name") String name);
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMenuMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMenuMapper.java
new file mode 100644
index 0000000..9da3307
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/mapper/SystemRoleMenuMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sange.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sange.domain.SystemRoleMenu;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:24
+ */
+public interface SystemRoleMenuMapper extends BaseMapper<SystemRoleMenu> {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/IDepartmentService.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/IDepartmentService.java
new file mode 100644
index 0000000..646efe4
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/IDepartmentService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sange.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sange.domain.Department;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:43
+ */
+public interface IDepartmentService extends IService<Department> {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleMenuService.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleMenuService.java
new file mode 100644
index 0000000..f0b2e08
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleMenuService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sange.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sange.domain.SystemRoleMenu;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:25
+ */
+public interface ISystemRoleMenuService extends IService<SystemRoleMenu> {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleService.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleService.java
new file mode 100644
index 0000000..2b924bf
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/ISystemRoleService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.sange.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sange.domain.SystemRole;
+import com.ruoyi.sange.warpper.SystemRoleListVo;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:40
+ */
+public interface ISystemRoleService extends IService<SystemRole> {
+	
+	/**
+	 * 获取列表数据
+	 * @param name
+	 * @return
+	 */
+	List<SystemRoleListVo> list(String name);
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/DepartmentServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/DepartmentServiceImpl.java
new file mode 100644
index 0000000..c03f866
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/DepartmentServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.sange.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sange.domain.Department;
+import com.ruoyi.sange.mapper.DepartmentMapper;
+import com.ruoyi.sange.service.IDepartmentService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:43
+ */
+@Service
+public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements IDepartmentService {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleMenuServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleMenuServiceImpl.java
new file mode 100644
index 0000000..2dfe82a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleMenuServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.sange.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sange.domain.SystemRoleMenu;
+import com.ruoyi.sange.mapper.SystemRoleMenuMapper;
+import com.ruoyi.sange.service.ISystemRoleMenuService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:26
+ */
+@Service
+public class SystemRoleMenuServiceImpl extends ServiceImpl<SystemRoleMenuMapper, SystemRoleMenu> implements ISystemRoleMenuService {
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleServiceImpl.java
new file mode 100644
index 0000000..9a3495d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/service/impl/SystemRoleServiceImpl.java
@@ -0,0 +1,29 @@
+package com.ruoyi.sange.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sange.domain.SystemRole;
+import com.ruoyi.sange.mapper.SystemRoleMapper;
+import com.ruoyi.sange.service.ISystemRoleService;
+import com.ruoyi.sange.warpper.SystemRoleListVo;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:41
+ */
+@Service
+public class SystemRoleServiceImpl extends ServiceImpl<SystemRoleMapper, SystemRole> implements ISystemRoleService {
+	
+	
+	/**
+	 * 获取列表数据
+	 * @param name
+	 * @return
+	 */
+	@Override
+	public List<SystemRoleListVo> list(String name) {
+		return this.baseMapper.list(name);
+	}
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/AddSystemRole.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/AddSystemRole.java
new file mode 100644
index 0000000..12f2e01
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/AddSystemRole.java
@@ -0,0 +1,20 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:11
+ */
+@Data
+@ApiModel
+public class AddSystemRole {
+	@ApiModelProperty(value = "角色名称", required = true)
+	private String name;
+	@ApiModelProperty(value = "权限id集合", required = true)
+	private List<Integer> systemMenuIds;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/EditSystemRole.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/EditSystemRole.java
new file mode 100644
index 0000000..0a75689
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/EditSystemRole.java
@@ -0,0 +1,22 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:11
+ */
+@Data
+@ApiModel
+public class EditSystemRole {
+	@ApiModelProperty(value = "角色ID", required = true)
+	private Integer id;
+	@ApiModelProperty(value = "角色名称", required = true)
+	private String name;
+	@ApiModelProperty(value = "权限id集合", required = true)
+	private List<Integer> systemMenuIds;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleInfo.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleInfo.java
new file mode 100644
index 0000000..0ccd025
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleInfo.java
@@ -0,0 +1,22 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 17:36
+ */
+@Data
+@ApiModel
+public class SystemRoleInfo {
+	@ApiModelProperty("角色ID")
+	private Integer id;
+	@ApiModelProperty("角色名称")
+	private String name;
+	@ApiModelProperty("菜单id集合")
+	private List<Integer> systemMenuIds;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleList.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleList.java
new file mode 100644
index 0000000..e5f9b9b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleList.java
@@ -0,0 +1,20 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:58
+ */
+@Data
+@ApiModel
+public class SystemRoleList {
+	@ApiModelProperty(value = "角色名称")
+	private String name;
+	@ApiModelProperty(value = "页码", required = true)
+	private Integer pageNum;
+	@ApiModelProperty(value = "每页数量", required = true)
+	private Integer pageSize;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleListVo.java b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleListVo.java
new file mode 100644
index 0000000..de247c5
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/sange/warpper/SystemRoleListVo.java
@@ -0,0 +1,18 @@
+package com.ruoyi.sange.warpper;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2025/2/19 16:50
+ */
+@Data
+@ApiModel
+public class SystemRoleListVo {
+	@ApiModelProperty("数据ID")
+	private Integer id;
+	@ApiModelProperty("角色名称")
+	private String name;
+}
diff --git a/ruoyi-admin/src/main/resources/mapper/sange/DepartmentMapper.xml b/ruoyi-admin/src/main/resources/mapper/sange/DepartmentMapper.xml
new file mode 100644
index 0000000..c29b069
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/sange/DepartmentMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sange.mapper.DepartmentMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMapper.xml b/ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMapper.xml
new file mode 100644
index 0000000..c55e113
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sange.mapper.SystemRoleMapper">
+
+	
+	<select id="list" resultType="com.ruoyi.sange.warpper.SystemRoleListVo">
+		select id, name from t_system_role where del = 0
+		<if test="null != name and '' != name">
+			and name like CONCAT('%', #{name}, '%')
+		</if>
+		order by create_time desc
+	</select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMenuMapper.xml b/ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMenuMapper.xml
new file mode 100644
index 0000000..3e40ffb
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/sange/SystemRoleMenuMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sange.mapper.SystemRoleMenuMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/sange/SystemUserMapper.xml b/ruoyi-admin/src/main/resources/mapper/sange/SystemUserMapper.xml
new file mode 100644
index 0000000..86387a7
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/sange/SystemUserMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sange.mapper.SystemUserMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 17f63b8..9523e1e 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -94,7 +94,11 @@
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
-
+    
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-boot-starter</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
index 373e592..07393ce 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
@@ -1,5 +1,7 @@
 package com.ruoyi.common.core.page;
 
+import io.swagger.annotations.ApiModel;
+
 import java.io.Serializable;
 import java.util.List;
 
@@ -8,7 +10,8 @@
  * 
  * @author ruoyi
  */
-public class TableDataInfo implements Serializable
+@ApiModel
+public class TableDataInfo<T> implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
@@ -16,7 +19,7 @@
     private long total;
 
     /** 列表数据 */
-    private List<?> rows;
+    private List<T> rows;
 
     /** 消息状态码 */
     private int code;
@@ -37,7 +40,7 @@
      * @param list 列表数据
      * @param total 总记录数
      */
-    public TableDataInfo(List<?> list, int total)
+    public TableDataInfo(List<T> list, int total)
     {
         this.rows = list;
         this.total = total;
@@ -58,7 +61,7 @@
         return rows;
     }
 
-    public void setRows(List<?> rows)
+    public void setRows(List<T> rows)
     {
         this.rows = rows;
     }

--
Gitblit v1.7.1