From 816b8c7e59043e5b4c17876fdde35256decdfacc Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Sun, 4 Jan 2026 15:35:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8A=A4=E7=90=86=E5=8D=95?= =?UTF-8?q?=E5=85=83=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=8F=8A=E5=91=98=E5=B7=A5=E5=AF=B9=E5=BA=94=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/NuAppPermissionController.java | 280 +++++++++++ .../appConfig/entity/AppPermissionTree.java | 439 ++++++++++++++++++ .../appConfig/entity/DefIndexConst.java | 25 + .../appConfig/entity/NuAppPermission.java | 196 ++++++++ .../modules/appConfig/entity/TreeModel.java | 183 ++++++++ .../mapper/NuAppPermissionMapper.java | 22 + .../mapper/xml/NuAppPermissionMapper.xml | 9 + .../service/INuAppPermissionService.java | 19 + .../impl/NuAppPermissionServiceImpl.java | 88 ++++ .../utils/AppPermissionDataUtil.java | 136 ++++++ nursing-unit-api/pom.xml | 6 + .../nu/modules/employess/EmployessApi.java | 44 ++ .../org/jeecg/config/shiro/ShiroConfig.java | 1 + .../java/com/nu/entity/NuBaseInfoEntity.java | 2 + .../com/nu/entity/NuidPermissionEntity.java | 71 +++ .../com/nu/modules/IEmployeesInfoApi.java | 8 + nursing-unit-employee/nu-employee-biz/pom.xml | 12 + .../impl/BizEmployeesInfoServiceImpl.java | 29 +- .../NuAppEmployessPermissionController.java | 288 ++++++++++++ .../entity/NuAppEmployessPermission.java | 72 +++ .../NuAppEmployessPermissionMapper.java | 19 + .../xml/NuAppEmployessPermissionMapper.xml | 13 + .../INuAppEmployessPermissionService.java | 20 + .../NuAppEmployessPermissionServiceImpl.java | 93 ++++ nursing-unit-nu/nu-nu-biz/pom.xml | 14 +- .../modules/nubaseinfo/entity/NuBaseInfo.java | 9 +- .../service/impl/NuBaseInfoServiceImpl.java | 20 + .../NuAppNuidPermissionController.java | 291 ++++++++++++ .../entity/NuAppNuidPermission.java | 73 +++ .../mapper/NuAppNuidPermissionMapper.java | 18 + .../mapper/xml/NuAppNuidPermissionMapper.xml | 14 + .../service/INuAppNuidPermissionService.java | 19 + .../impl/NuAppNuidPermissionServiceImpl.java | 92 ++++ 33 files changed, 2622 insertions(+), 3 deletions(-) create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/controller/NuAppPermissionController.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/AppPermissionTree.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/DefIndexConst.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/NuAppPermission.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/TreeModel.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/NuAppPermissionMapper.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/xml/NuAppPermissionMapper.xml create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/INuAppPermissionService.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/impl/NuAppPermissionServiceImpl.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/utils/AppPermissionDataUtil.java create mode 100644 nursing-unit-api/src/main/java/com/nu/modules/employess/EmployessApi.java create mode 100644 nursing-unit-common/src/main/java/com/nu/entity/NuidPermissionEntity.java create mode 100644 nursing-unit-employee/nu-employee-api/nu-employee-local-api/src/main/java/com/nu/modules/IEmployeesInfoApi.java create mode 100644 nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/controller/NuAppEmployessPermissionController.java create mode 100644 nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/entity/NuAppEmployessPermission.java create mode 100644 nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/NuAppEmployessPermissionMapper.java create mode 100644 nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/xml/NuAppEmployessPermissionMapper.xml create mode 100644 nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/INuAppEmployessPermissionService.java create mode 100644 nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/impl/NuAppEmployessPermissionServiceImpl.java create mode 100644 nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/controller/NuAppNuidPermissionController.java create mode 100644 nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/entity/NuAppNuidPermission.java create mode 100644 nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/NuAppNuidPermissionMapper.java create mode 100644 nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/xml/NuAppNuidPermissionMapper.xml create mode 100644 nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/INuAppNuidPermissionService.java create mode 100644 nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/impl/NuAppNuidPermissionServiceImpl.java diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/controller/NuAppPermissionController.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/controller/NuAppPermissionController.java new file mode 100644 index 00000000..e6c848cb --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/controller/NuAppPermissionController.java @@ -0,0 +1,280 @@ +package com.nu.modules.appConfig.controller; + +import java.util.*; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.nu.modules.appConfig.entity.AppPermissionTree; +import com.nu.modules.appConfig.utils.AppPermissionDataUtil; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import com.nu.modules.appConfig.entity.NuAppPermission; +import com.nu.modules.appConfig.service.INuAppPermissionService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: 菜单表 + * @Author: jeecg-boot + * @Date: 2025-12-31 + * @Version: V1.0 + */ +@Api(tags="菜单表") +@RestController +@RequestMapping("/appConfig/nuAppPermission") +@Slf4j +public class NuAppPermissionController extends JeecgController { + @Autowired + private INuAppPermissionService nuAppPermissionService; + + /** + * 分页列表查询 + * + * @param nuAppPermission + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "菜单表-分页列表查询") + @ApiOperation(value="菜单表-分页列表查询", notes="菜单表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(NuAppPermission nuAppPermission, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + long start = System.currentTimeMillis(); + Result> result = new Result<>(); + try { + LambdaQueryWrapper query = new LambdaQueryWrapper(); + query.eq(NuAppPermission::getDelFlag, CommonConstant.DEL_FLAG_0); + query.orderByAsc(NuAppPermission::getSortNo); + + //支持通过菜单名字,模糊查询 + if(oConvertUtils.isNotEmpty(nuAppPermission.getName())){ + query.like(NuAppPermission::getName, nuAppPermission.getName()); + } + List list = nuAppPermissionService.list(query); + List treeList = new ArrayList<>(); + + //如果有菜单名查询条件,则平铺数据 不做上下级 + if(oConvertUtils.isNotEmpty(nuAppPermission.getName())){ + if(list!=null && list.size()>0){ + treeList = list.stream().map(e -> { + e.setLeaf(true); + return new AppPermissionTree(e); + }).collect(Collectors.toList()); + } + }else{ + getTreeList(treeList, list, null); + } + result.setResult(treeList); + result.setSuccess(true); + log.info("======获取全部菜单数据=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + + /** + * 添加 + * @param permission + * @return + */ + @AutoLog(value = "菜单表-添加") + @ApiOperation(value="菜单表-添加", notes="菜单表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody NuAppPermission permission) { + Result result = new Result(); + try { + permission = AppPermissionDataUtil.intelligentProcessData(permission); + nuAppPermissionService.addPermission(permission); + result.success("添加成功!"); + } catch (Exception e) { + log.error(e.getMessage(), e); + result.error500("操作失败"); + } + return result; + } + + /** + * 编辑 + * + * @param permission + * @return + */ + @AutoLog(value = "菜单表-编辑") + @ApiOperation(value="菜单表-编辑", notes="菜单表-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody NuAppPermission permission) { + Result result = new Result<>(); + try { + permission = AppPermissionDataUtil.intelligentProcessData(permission); + nuAppPermissionService.editPermission(permission); + result.success("修改成功!"); + } catch (Exception e) { + log.error(e.getMessage(), e); + result.error500("操作失败"); + } + return result; + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "菜单表-通过id删除") + @ApiOperation(value="菜单表-通过id删除", notes="菜单表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + nuAppPermissionService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "菜单表-批量删除") + @ApiOperation(value="菜单表-批量删除", notes="菜单表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.nuAppPermissionService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "菜单表-通过id查询") + @ApiOperation(value="菜单表-通过id查询", notes="菜单表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + NuAppPermission nuAppPermission = nuAppPermissionService.getById(id); + if(nuAppPermission==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(nuAppPermission); + } + + /** + * 导出excel + * + * @param request + * @param nuAppPermission + */ + @RequiresPermissions("appConfig:nu_app_permission:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, NuAppPermission nuAppPermission) { + return super.exportXls(request, nuAppPermission, NuAppPermission.class, "菜单表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("appConfig:nu_app_permission:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, NuAppPermission.class); + } + + /** + * 校验角色编码唯一 + */ + @RequestMapping(value = "/checkRoleCode", method = RequestMethod.GET) + public Result checkUsername(String id,String roleCode) { + Result result = new Result<>(); + //如果此参数为false则程序发生异常 + result.setResult(true); + log.info("--验证角色编码是否唯一---id:"+id+"--roleCode:"+roleCode); + try { + NuAppPermission role = null; + if(oConvertUtils.isNotEmpty(id)) { + role = nuAppPermissionService.getById(id); + } + //SysRole newRole = sysRoleService.getOne(new QueryWrapper().lambda().eq(SysRole::getRoleCode, roleCode)); + NuAppPermission newRole = nuAppPermissionService.getRoleNoTenant(roleCode); + if(newRole!=null) { + //如果根据传入的roleCode查询到信息了,那么就需要做校验了。 + if(role==null) { + //role为空=>新增模式=>只要roleCode存在则返回false + result.setSuccess(false); + result.setMessage("角色编码已存在"); + return result; + }else if(!id.equals(newRole.getId())) { + //否则=>编辑模式=>判断两者ID是否一致- + result.setSuccess(false); + result.setMessage("角色编码已存在"); + return result; + } + } + } catch (Exception e) { + result.setSuccess(false); + result.setResult(false); + result.setMessage(e.getMessage()); + return result; + } + result.setSuccess(true); + return result; + } + + + private void getTreeList(List treeList, List metaList, AppPermissionTree temp) { + for (NuAppPermission permission : metaList) { + String tempPid = permission.getParentId(); + AppPermissionTree tree = new AppPermissionTree(permission); + if (temp == null && oConvertUtils.isEmpty(tempPid)) { + treeList.add(tree); + if (!tree.getIsLeaf()) { + getTreeList(treeList, metaList, tree); + } + } else if (temp != null && tempPid != null && tempPid.equals(temp.getId())) { + temp.getChildren().add(tree); + if (!tree.getIsLeaf()) { + getTreeList(treeList, metaList, tree); + } + } + + } + } +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/AppPermissionTree.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/AppPermissionTree.java new file mode 100644 index 00000000..000314b1 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/AppPermissionTree.java @@ -0,0 +1,439 @@ +package com.nu.modules.appConfig.entity; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 菜单树,封装树结构 + * @author: jeecg-boot + */ +public class AppPermissionTree implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + private String key; + private String title; + + /** + * 父id + */ + private String parentId; + + /** + * 菜单名称 + */ + private String name; + + /** + * 菜单权限编码 + */ + private String perms; + /** + * 权限策略1显示2禁用 + */ + private String permsType; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 组件 + */ + private String component; + + /** + * 组件名字 + */ + private String componentName; + + /** + * 跳转网页链接 + */ + private String url; + + /** + * 一级菜单跳转地址 + */ + private String redirect; + + /** + * 菜单排序 + */ + private Double sortNo; + + /** + * 类型(0:一级菜单;1:子菜单 ;2:按钮权限) + */ + private Integer menuType; + + /** + * 是否叶子节点: 1:是 0:不是 + */ + private boolean isLeaf; + + /** + * 是否路由菜单: 0:不是 1:是(默认值1) + */ + private boolean route; + + + /** + * 是否路缓存页面: 0:不是 1:是(默认值1) + */ + private boolean keepAlive; + + + /** + * 描述 + */ + private String description; + + /** + * 删除状态 0正常 1已删除 + */ + private Integer delFlag; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /**alwaysShow*/ + private boolean alwaysShow; + /**是否隐藏路由菜单: 0否,1是(默认值0)*/ + private boolean hidden; + + /**按钮权限状态(0无效1有效)*/ + private String status; + + /*update_begin author:wuxianquan date:20190908 for:model增加字段 */ + /** 外链菜单打开方式 0/内部打开 1/外部打开 */ + private boolean internalOrExternal; + /*update_end author:wuxianquan date:20190908 for:model增加字段 */ + + /*update_begin author:liusq date:20230601 for:【issues/4986】model增加hideTab字段 */ + /** + * 是否隐藏Tab: 0否,1是(默认值0) + */ + private boolean hideTab; + /*update_end author:liusq date:20230601 for:【issues/4986】model增加hideTab字段 */ + + private String menuCode; + + public AppPermissionTree() { + } + + public AppPermissionTree(NuAppPermission permission) { + this.key = permission.getId(); + this.id = permission.getId(); + this.perms = permission.getPerms(); + this.permsType = permission.getPermsType(); + this.component = permission.getComponent(); + this.componentName = permission.getComponentName(); + this.createBy = permission.getCreateBy(); + this.createTime = permission.getCreateTime(); + this.delFlag = permission.getDelFlag(); + this.description = permission.getDescription(); + this.icon = permission.getIcon(); + this.isLeaf = permission.isLeaf(); + this.menuType = permission.getMenuType(); + this.name = permission.getName(); + this.parentId = permission.getParentId(); + this.sortNo = permission.getSortNo(); + this.updateBy = permission.getUpdateBy(); + this.updateTime = permission.getUpdateTime(); + this.redirect = permission.getRedirect(); + this.url = permission.getUrl(); + this.hidden = permission.isHidden(); + this.route = permission.isRoute(); + this.keepAlive = permission.isKeepAlive(); + this.alwaysShow= permission.isAlwaysShow(); + /*update_begin author:wuxianquan date:20190908 for:赋值 */ + this.internalOrExternal = permission.isInternalOrExternal(); + /*update_end author:wuxianquan date:20190908 for:赋值 */ + this.title=permission.getName(); + /*update_end author:liusq date:20230601 for:【issues/4986】model增加hideTab字段 */ + this.hideTab = permission.isHideTab(); + /*update_end author:liusq date:20230601 for:【issues/4986】model增加hideTab字段 */ + if (!permission.isLeaf()) { + this.children = new ArrayList(); + } + this.status = permission.getStatus(); + this.menuCode = permission.getMenuCode(); + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + private List children; + + public boolean isLeaf() { + return isLeaf; + } + + public void setLeaf(boolean leaf) { + isLeaf = leaf; + } + + public boolean isKeepAlive() { + return keepAlive; + } + + public void setKeepAlive(boolean keepAlive) { + this.keepAlive = keepAlive; + } + + public boolean isAlwaysShow() { + return alwaysShow; + } + + public void setAlwaysShow(boolean alwaysShow) { + this.alwaysShow = alwaysShow; + } + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public String getRedirect() { + return redirect; + } + + public void setRedirect(String redirect) { + this.redirect = redirect; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public boolean isHidden() { + return hidden; + } + + public void setHidden(boolean hidden) { + this.hidden = hidden; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getComponent() { + return component; + } + + public void setComponent(String component) { + this.component = component; + } + + public String getComponentName() { + return componentName; + } + + public void setComponentName(String componentName) { + this.componentName = componentName; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Double getSortNo() { + return sortNo; + } + + public void setSortNo(Double sortNo) { + this.sortNo = sortNo; + } + + public Integer getMenuType() { + return menuType; + } + + public void setMenuType(Integer menuType) { + this.menuType = menuType; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isRoute() { + return route; + } + + public void setRoute(boolean route) { + this.route = route; + } + + public Integer getDelFlag() { + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + this.delFlag = delFlag; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getPerms() { + return perms; + } + + public void setPerms(String perms) { + this.perms = perms; + } + + public boolean getIsLeaf() { + return isLeaf; + } + + public void setIsLeaf(boolean isLeaf) { + this.isLeaf = isLeaf; + } + + public String getPermsType() { + return permsType; + } + + public void setPermsType(String permsType) { + this.permsType = permsType; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + /*update_begin author:wuxianquan date:20190908 for:get set方法 */ + public boolean isInternalOrExternal() { + return internalOrExternal; + } + + public void setInternalOrExternal(boolean internalOrExternal) { + this.internalOrExternal = internalOrExternal; + } + /*update_end author:wuxianquan date:20190908 for:get set 方法 */ + + public boolean isHideTab() { + return hideTab; + } + + public void setHideTab(boolean hideTab) { + this.hideTab = hideTab; + } + + public String getMenuCode() { + return menuCode; + } + + public void setMenuCode(String menuCode) { + this.menuCode = menuCode; + } +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/DefIndexConst.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/DefIndexConst.java new file mode 100644 index 00000000..8f70a5cc --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/DefIndexConst.java @@ -0,0 +1,25 @@ +package com.nu.modules.appConfig.entity; + +/** + * 默认首页常量 + */ +public interface DefIndexConst { + + /** + * 默认首页的roleCode + */ + String DEF_INDEX_ALL = "DEF_INDEX_ALL"; + + /** + * 默认首页的缓存key + */ + String CACHE_KEY = "sys:cache:def_index"; + + /** + * 默认首页的初始值 + */ + String DEF_INDEX_NAME = "首页"; + String DEF_INDEX_URL = "/dashboard/analysis"; + String DEF_INDEX_COMPONENT = "dashboard/Analysis"; + +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/NuAppPermission.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/NuAppPermission.java new file mode 100644 index 00000000..c8dff4e5 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/NuAppPermission.java @@ -0,0 +1,196 @@ +package com.nu.modules.appConfig.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 菜单表 + * @Author: jeecg-boot + * @Date: 2025-12-31 + * @Version: V1.0 + */ +@Data +@TableName("nu_app_permission") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_app_permission对象", description="菜单表") +public class NuAppPermission implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + /** + * 父id + */ + private String parentId; + + /** + * 菜单名称 + */ + private String name; + + /** + * 菜单权限编码,例如:“sys:schedule:list,sys:schedule:info”,多个逗号隔开 + */ + private String perms; + /** + * 权限策略1显示2禁用 + */ + private String permsType; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 组件 + */ + private String component; + + /** + * 组件名字 + */ + private String componentName; + + /** + * 路径 + */ + private String url; + /** + * 一级菜单跳转地址 + */ + private String redirect; + + /** + * 菜单排序 + */ + private Double sortNo; + + /** + * 类型(0:一级菜单;1:子菜单 ;2:按钮权限) + */ + @Dict(dicCode = "menu_type") + private Integer menuType; + + /** + * 是否叶子节点: 1:是 0:不是 + */ + @TableField(value="is_leaf") + private boolean leaf; + + /** + * 是否路由菜单: 0:不是 1:是(默认值1) + */ + @TableField(value="is_route") + private boolean route; + + + /** + * 是否缓存页面: 0:不是 1:是(默认值1) + */ + @TableField(value="keep_alive") + private boolean keepAlive; + + /** + * 描述 + */ + private String description; + + /** + * 创建人 + */ + private String createBy; + + /** + * 删除状态 0正常 1已删除 + */ + private Integer delFlag; + + /** + * 是否配置菜单的数据权限 1是0否 默认0 + */ + private Integer ruleFlag; + + /** + * 是否隐藏路由菜单: 0否,1是(默认值0) + */ + private boolean hidden; + + /** + * 是否隐藏Tab: 0否,1是(默认值0) + */ + private boolean hideTab; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /**按钮权限状态(0无效1有效)*/ + private java.lang.String status; + + /**alwaysShow*/ + private boolean alwaysShow; + + private String menuCode; + + /*update_begin author:wuxianquan date:20190908 for:实体增加字段 */ + /** 外链菜单打开方式 0/内部打开 1/外部打开 */ + private boolean internalOrExternal; + /*update_end author:wuxianquan date:20190908 for:实体增加字段 */ + + public NuAppPermission() { + + } + public NuAppPermission(boolean index) { + if(index) { + this.id = "9502685863ab87f0ad1134142788a385"; + this.name = DefIndexConst.DEF_INDEX_NAME; + this.component = DefIndexConst.DEF_INDEX_COMPONENT; + this.componentName = "dashboard-analysis"; + this.url = DefIndexConst.DEF_INDEX_URL; + this.icon="home"; + this.menuType=0; + this.sortNo=0.0; + this.ruleFlag=0; + this.delFlag=0; + this.alwaysShow=false; + this.route=true; + this.keepAlive=true; + this.leaf=true; + this.hidden=false; + } + + } +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/TreeModel.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/TreeModel.java new file mode 100644 index 00000000..981b1085 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/entity/TreeModel.java @@ -0,0 +1,183 @@ +package com.nu.modules.appConfig.entity; + + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 树形列表用到 + * @author: jeecg-boot + */ +public class TreeModel implements Serializable { + + private static final long serialVersionUID = 4013193970046502756L; + + private String key; + + private String title; + + private String slotTitle; + + private boolean isLeaf; + + private String icon; + + private Integer ruleFlag; + + private Map scopedSlots; + + public Map getScopedSlots() { + return scopedSlots; + } + + public void setScopedSlots(Map scopedSlots) { + this.scopedSlots = scopedSlots; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public boolean getIsLeaf() { + return isLeaf; + } + + public void setIsLeaf(boolean isLeaf) { + this.isLeaf = isLeaf; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + private List children; + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public TreeModel() { + + } + + public TreeModel(NuAppPermission permission) { + this.key = permission.getId(); + this.icon = permission.getIcon(); + this.parentId = permission.getParentId(); + this.title = permission.getName(); + this.slotTitle = permission.getName(); + this.value = permission.getId(); + this.isLeaf = permission.isLeaf(); + this.label = permission.getName(); + if(!permission.isLeaf()) { + this.children = new ArrayList(); + } + } + + public TreeModel(String key, String parentId, String slotTitle, Integer ruleFlag, boolean isLeaf,String code) { + this.key = key; + this.parentId = parentId; + this.ruleFlag=ruleFlag; + this.slotTitle = slotTitle; + Map map = new HashMap(5); + map.put("title", "hasDatarule"); + this.scopedSlots = map; + this.isLeaf = isLeaf; + this.value = key; + this.code = code; + if(!isLeaf) { + this.children = new ArrayList(); + } + } + + private String parentId; + + private String label; + + private String value; + private String code; + + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the value + */ + public String getValue() { + return value; + } + + /** + * @param value the value to set + */ + public void setValue(String value) { + this.value = value; + } + + public String getSlotTitle() { + return slotTitle; + } + + public void setSlotTitle(String slotTitle) { + this.slotTitle = slotTitle; + } + + public Integer getRuleFlag() { + return ruleFlag; + } + + public void setRuleFlag(Integer ruleFlag) { + this.ruleFlag = ruleFlag; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/NuAppPermissionMapper.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/NuAppPermissionMapper.java new file mode 100644 index 00000000..ee61b582 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/NuAppPermissionMapper.java @@ -0,0 +1,22 @@ +package com.nu.modules.appConfig.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.nu.modules.appConfig.entity.NuAppPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Update; + +/** + * @Description: 菜单表 + * @Author: jeecg-boot + * @Date: 2025-12-31 + * @Version: V1.0 + */ +public interface NuAppPermissionMapper extends BaseMapper { + + NuAppPermission getRoleNoTenant(@Param("roleCode") String roleCode); + + @Update("update nu_app_permission set is_leaf=#{leaf} where id = #{id}") + public int setMenuLeaf(@Param("id") String id,@Param("leaf") int leaf); +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/xml/NuAppPermissionMapper.xml b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/xml/NuAppPermissionMapper.xml new file mode 100644 index 00000000..e0ed9ebb --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/mapper/xml/NuAppPermissionMapper.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/INuAppPermissionService.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/INuAppPermissionService.java new file mode 100644 index 00000000..306f16ed --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/INuAppPermissionService.java @@ -0,0 +1,19 @@ +package com.nu.modules.appConfig.service; + +import com.nu.modules.appConfig.entity.NuAppPermission; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 菜单表 + * @Author: jeecg-boot + * @Date: 2025-12-31 + * @Version: V1.0 + */ +public interface INuAppPermissionService extends IService { + + NuAppPermission getRoleNoTenant(String roleCode); + + void addPermission(NuAppPermission permission); + + void editPermission(NuAppPermission permission); +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/impl/NuAppPermissionServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/impl/NuAppPermissionServiceImpl.java new file mode 100644 index 00000000..8f9c9bce --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/service/impl/NuAppPermissionServiceImpl.java @@ -0,0 +1,88 @@ +package com.nu.modules.appConfig.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.modules.appConfig.entity.NuAppPermission; +import com.nu.modules.appConfig.mapper.NuAppPermissionMapper; +import com.nu.modules.appConfig.service.INuAppPermissionService; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.util.oConvertUtils; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Date; + +/** + * @Description: 菜单表 + * @Author: jeecg-boot + * @Date: 2025-12-31 + * @Version: V1.0 + */ +@Service +public class NuAppPermissionServiceImpl extends ServiceImpl implements INuAppPermissionService { + + @Override + public NuAppPermission getRoleNoTenant(String roleCode) { + return baseMapper.getRoleNoTenant(roleCode); + } + + @Override + public void addPermission(NuAppPermission sysPermission) { + //---------------------------------------------------------------------- + //判断是否是一级菜单,是的话清空父菜单 + if(CommonConstant.MENU_TYPE_0.equals(sysPermission.getMenuType())) { + sysPermission.setParentId(null); + } + //---------------------------------------------------------------------- + String pid = sysPermission.getParentId(); + if(oConvertUtils.isNotEmpty(pid)) { + //设置父节点不为叶子节点 + this.baseMapper.setMenuLeaf(pid, 0); + } + sysPermission.setCreateTime(new Date()); + sysPermission.setDelFlag(0); + sysPermission.setLeaf(true); + this.save(sysPermission); + } + + @Override + public void editPermission(NuAppPermission sysPermission) { + NuAppPermission p = this.getById(sysPermission.getId()); + //TODO 该节点判断是否还有子节点 + if(p==null) { + throw new JeecgBootException("未找到菜单信息"); + }else { + sysPermission.setUpdateTime(new Date()); + //---------------------------------------------------------------------- + //Step1.判断是否是一级菜单,是的话清空父菜单ID + if(CommonConstant.MENU_TYPE_0.equals(sysPermission.getMenuType())) { + sysPermission.setParentId(""); + } + //Step2.判断菜单下级是否有菜单,无则设置为叶子节点 + Long count = this.count(new QueryWrapper().lambda().eq(NuAppPermission::getParentId, sysPermission.getId())); + if(count==0) { + sysPermission.setLeaf(true); + } + //---------------------------------------------------------------------- + this.updateById(sysPermission); + + //如果当前菜单的父菜单变了,则需要修改新父菜单和老父菜单的,叶子节点状态 + String pid = sysPermission.getParentId(); + boolean flag = (oConvertUtils.isNotEmpty(pid) && !pid.equals(p.getParentId())) || oConvertUtils.isEmpty(pid)&&oConvertUtils.isNotEmpty(p.getParentId()); + if (flag) { + //a.设置新的父菜单不为叶子节点 + this.baseMapper.setMenuLeaf(pid, 0); + //b.判断老的菜单下是否还有其他子菜单,没有的话则设置为叶子节点 + Long cc = this.count(new QueryWrapper().lambda().eq(NuAppPermission::getParentId, p.getParentId())); + if(cc==0) { + if(oConvertUtils.isNotEmpty(p.getParentId())) { + this.baseMapper.setMenuLeaf(p.getParentId(), 1); + } + } + + } + + } + } +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/utils/AppPermissionDataUtil.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/utils/AppPermissionDataUtil.java new file mode 100644 index 00000000..4206e04b --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/appConfig/utils/AppPermissionDataUtil.java @@ -0,0 +1,136 @@ +package com.nu.modules.appConfig.utils; + +import com.nu.modules.appConfig.entity.NuAppPermission; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.SymbolConstant; +import org.jeecg.common.util.oConvertUtils; + +import java.util.List; + +/** + * @Author: scott + * @Date: 2019-04-03 + */ +public class AppPermissionDataUtil { + + /** + * 路径:views/ + */ + private static final String PATH_VIEWS = "views/"; + + /** + * 路径:src/views/ + */ + private static final String PATH_SRC_VIEWS = "src/views/"; + + /** + * .vue后缀 + */ + private static final String VUE_SUFFIX = ".vue"; + + /** + * 智能处理错误数据,简化用户失误操作 + * + * @param permission + */ + public static NuAppPermission intelligentProcessData(NuAppPermission permission) { + if (permission == null) { + return null; + } + + // 组件 + if (oConvertUtils.isNotEmpty(permission.getComponent())) { + String component = permission.getComponent(); + if (component.startsWith(SymbolConstant.SINGLE_SLASH)) { + component = component.substring(1); + } + if (component.startsWith(PATH_VIEWS)) { + component = component.replaceFirst(PATH_VIEWS, ""); + } + if (component.startsWith(PATH_SRC_VIEWS)) { + component = component.replaceFirst(PATH_SRC_VIEWS, ""); + } + if (component.endsWith(VUE_SUFFIX)) { + component = component.replace(VUE_SUFFIX, ""); + } + permission.setComponent(component); + } + + // 请求URL + if (oConvertUtils.isNotEmpty(permission.getUrl())) { + String url = permission.getUrl(); + if (url.endsWith(VUE_SUFFIX)) { + url = url.replace(VUE_SUFFIX, ""); + } + if (!url.startsWith(CommonConstant.STR_HTTP) && !url.startsWith(SymbolConstant.SINGLE_SLASH)&&!url.trim().startsWith(SymbolConstant.DOUBLE_LEFT_CURLY_BRACKET)) { + url = SymbolConstant.SINGLE_SLASH + url; + } + permission.setUrl(url); + } + + // 一级菜单默认组件 + if (0 == permission.getMenuType() && oConvertUtils.isEmpty(permission.getComponent())) { + // 一级菜单默认组件 + permission.setComponent("layouts/RouteView"); + } + return permission; + } + + /** + * 如果没有index页面 需要new 一个放到list中 + * @param metaList + */ +// public static void addIndexPage(List metaList) { +// boolean hasIndexMenu = false; +// SysRoleIndex defIndexCfg = PermissionDataUtil.getDefIndexConfig(); +// for (SysPermission sysPermission : metaList) { +// if(defIndexCfg.getUrl().equals(sysPermission.getUrl())) { +// hasIndexMenu = true; +// break; +// } +// } +// if(!hasIndexMenu) { +// metaList.add(0,new SysPermission(true)); +// } +// } + + /** + * 判断是否授权首页 + * @param metaList + * @return + */ +// public static boolean hasIndexPage(List metaList, SysRoleIndex defIndexCfg){ +// boolean hasIndexMenu = false; +// for (NuAppPermission sysPermission : metaList) { +// if(defIndexCfg.getUrl().equals(sysPermission.getUrl())) { +// hasIndexMenu = true; +// break; +// } +// } +// return hasIndexMenu; +// } + + /** + * 通过id判断是否授权某个页面 + * + * @param metaList + * @return + */ + public static boolean hasMenuById(List metaList, String id) { + for (NuAppPermission sysPermission : metaList) { + if (id.equals(sysPermission.getId())) { + return true; + } + } + return false; + } + + /** + * 获取默认首页配置 + */ +// public static SysRoleIndex getDefIndexConfig() { +// ISysRoleIndexService sysRoleIndexService = SpringContextUtils.getBean(ISysRoleIndexService.class); +// return sysRoleIndexService.queryDefaultIndex(); +// } + +} diff --git a/nursing-unit-api/pom.xml b/nursing-unit-api/pom.xml index 4d76aca5..b1505717 100644 --- a/nursing-unit-api/pom.xml +++ b/nursing-unit-api/pom.xml @@ -69,5 +69,11 @@ 2.0.0 compile + + com.nursingunit.boot + nu-employee-local-api + 2.0.0 + compile + diff --git a/nursing-unit-api/src/main/java/com/nu/modules/employess/EmployessApi.java b/nursing-unit-api/src/main/java/com/nu/modules/employess/EmployessApi.java new file mode 100644 index 00000000..75570c18 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/employess/EmployessApi.java @@ -0,0 +1,44 @@ +package com.nu.modules.employess; + +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Maps; +import com.nu.modules.IEmployeesInfoApi; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * 获取常用信息(不涉及安全信息) + * @author zmy + * @date 2025-5-22 08:43:05 + */ +@RestController +@RequestMapping("/api/employessInfo") +public class EmployessApi { + + @Lazy + @Autowired + private IEmployeesInfoApi employeesInfoApi; + + /** + * 返回机构信息配置的"协议域名" + * @return + */ + @GetMapping("/getPermissionList") + public Result getPermissionList(String employessId){ + if (StringUtils.isBlank(employessId)){ + return Result.error("参数错误"); + } + List> result = employeesInfoApi.getPermissionList(employessId); + return Result.ok(result); + } + +} diff --git a/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 21fedca1..c98d4386 100644 --- a/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/nursing-unit-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -93,6 +93,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/api/tplink/videoStorage/**", "anon"); //视频缓存存储接口 filterChainDefinitionMap.put("/api/pad/invoicing/getShareInfoByCgdId", "anon"); //查询采购单信息(分享接口使用) // filterChainDefinitionMap.put("/api/pad/invoicing/pdd/**", "anon"); //查询盘点单 + filterChainDefinitionMap.put("/api/employessInfo/**", "anon"); //测试员工接口 // filterChainDefinitionMap.put("/api/pad/invoicing/**", "anon"); //测试进销存对应的接口 // filterChainDefinitionMap.put("/api/pad/qingling/**", "anon"); //测试请领对应的接口 // filterChainDefinitionMap.put("/api/pad/care/**", "anon"); //服务指令 diff --git a/nursing-unit-common/src/main/java/com/nu/entity/NuBaseInfoEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/NuBaseInfoEntity.java index 79de8f0f..52ea0677 100644 --- a/nursing-unit-common/src/main/java/com/nu/entity/NuBaseInfoEntity.java +++ b/nursing-unit-common/src/main/java/com/nu/entity/NuBaseInfoEntity.java @@ -85,6 +85,8 @@ public class NuBaseInfoEntity implements Serializable { private List humidDeviceList; //长者信息 private ElderInfoEntity elderInfo; + + private List permissionList; private java.lang.String fzr; diff --git a/nursing-unit-common/src/main/java/com/nu/entity/NuidPermissionEntity.java b/nursing-unit-common/src/main/java/com/nu/entity/NuidPermissionEntity.java new file mode 100644 index 00000000..9b8c821f --- /dev/null +++ b/nursing-unit-common/src/main/java/com/nu/entity/NuidPermissionEntity.java @@ -0,0 +1,71 @@ +package com.nu.entity; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: nu_app_nuid_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Data +@TableName("nu_app_nuid_permission") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_app_nuid_permission对象", description="nu_app_nuid_permission") +public class NuidPermissionEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private String id; + /**角色id*/ + @Excel(name = "角色id", width = 15) + @ApiModelProperty(value = "角色id") + private String roleId; + /**权限id*/ + @Excel(name = "权限id", width = 15) + @ApiModelProperty(value = "权限id") + private String permissionId; + /**数据权限ids*/ + @Excel(name = "数据权限ids", width = 15) + @ApiModelProperty(value = "数据权限ids") + private String dataRuleIds; + /**操作时间*/ + @Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "操作时间") + private Date operateDate; + /**操作ip*/ + @Excel(name = "操作ip", width = 15) + @ApiModelProperty(value = "操作ip") + private String operateIp; + + @TableField(exist = false) + private String menuName; + @TableField(exist = false) + private String menuCode; + + + + public NuidPermissionEntity(String roleId, String permissionId) { + this.roleId = roleId; + this.permissionId = permissionId; + } +} diff --git a/nursing-unit-employee/nu-employee-api/nu-employee-local-api/src/main/java/com/nu/modules/IEmployeesInfoApi.java b/nursing-unit-employee/nu-employee-api/nu-employee-local-api/src/main/java/com/nu/modules/IEmployeesInfoApi.java new file mode 100644 index 00000000..3b38248e --- /dev/null +++ b/nursing-unit-employee/nu-employee-api/nu-employee-local-api/src/main/java/com/nu/modules/IEmployeesInfoApi.java @@ -0,0 +1,8 @@ +package com.nu.modules; + +import java.util.List; +import java.util.Map; + +public interface IEmployeesInfoApi { + List> getPermissionList(String employessId); +} diff --git a/nursing-unit-employee/nu-employee-biz/pom.xml b/nursing-unit-employee/nu-employee-biz/pom.xml index 6efb0f76..60e664dd 100644 --- a/nursing-unit-employee/nu-employee-biz/pom.xml +++ b/nursing-unit-employee/nu-employee-biz/pom.xml @@ -45,6 +45,18 @@ 2.0.0 compile + + com.nursingunit.boot + nu-admin-biz + 2.0.0 + compile + + + com.nursingunit.boot + nu-nu-biz + 2.0.0 + compile + diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employeesInfo/service/impl/BizEmployeesInfoServiceImpl.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employeesInfo/service/impl/BizEmployeesInfoServiceImpl.java index 989c3dca..dbfb698b 100644 --- a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employeesInfo/service/impl/BizEmployeesInfoServiceImpl.java +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employeesInfo/service/impl/BizEmployeesInfoServiceImpl.java @@ -1,12 +1,24 @@ package com.nu.modules.employeesInfo.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.modules.IEmployeesInfoApi; import com.nu.modules.employeesInfo.entity.BizEmployeesInfo; import com.nu.modules.employeesInfo.mapper.BizEmployeesInfoMapper; import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService; +import com.nu.modules.employessPermission.entity.NuAppEmployessPermission; +import com.nu.modules.employessPermission.service.INuAppEmployessPermissionService; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import com.nu.modules.nuidPermission.service.INuAppNuidPermissionService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @Description: 员工信息 * @Author: jeecg-boot @@ -14,6 +26,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; * @Version: V1.0 */ @Service -public class BizEmployeesInfoServiceImpl extends ServiceImpl implements IBizEmployeesInfoService { +public class BizEmployeesInfoServiceImpl extends ServiceImpl implements IBizEmployeesInfoService, IEmployeesInfoApi { + @Autowired + private INuAppEmployessPermissionService nuAppEmployessPermissionService; + + @Override + public List> getPermissionList(String employessId) { + List> mapList = new ArrayList<>(); + List permissionList = nuAppEmployessPermissionService.listByEmployessId(employessId); + for(NuAppEmployessPermission par:permissionList){ + Map map = new HashMap<>(); + map.put("menuName", par.getMenuName()); + map.put("menuCode", par.getMenuCode()); + mapList.add(map); + } + return mapList; + } } diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/controller/NuAppEmployessPermissionController.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/controller/NuAppEmployessPermissionController.java new file mode 100644 index 00000000..6a8bc6a7 --- /dev/null +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/controller/NuAppEmployessPermissionController.java @@ -0,0 +1,288 @@ +package com.nu.modules.employessPermission.controller; + +import java.util.*; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.nu.modules.appConfig.entity.NuAppPermission; +import com.nu.modules.appConfig.entity.TreeModel; +import com.nu.modules.appConfig.service.INuAppPermissionService; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import com.nu.modules.employessPermission.entity.NuAppEmployessPermission; +import com.nu.modules.employessPermission.service.INuAppEmployessPermissionService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecg.modules.base.service.BaseCommonService; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: nu_app_employess_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Api(tags="nu_app_employess_permission") +@RestController +@RequestMapping("/employessPermission/nuAppEmployessPermission") +@Slf4j +public class NuAppEmployessPermissionController extends JeecgController { + @Autowired + private INuAppEmployessPermissionService nuAppEmployessPermissionService; + + @Autowired + private INuAppPermissionService nuAppPermissionService; + @Autowired + private BaseCommonService baseCommonService; + /** + * 分页列表查询 + * + * @param nuAppEmployessPermission + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "nu_app_employess_permission-分页列表查询") + @ApiOperation(value="nu_app_employess_permission-分页列表查询", notes="nu_app_employess_permission-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(NuAppEmployessPermission nuAppEmployessPermission, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(nuAppEmployessPermission, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = nuAppEmployessPermissionService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param nuAppEmployessPermission + * @return + */ + @AutoLog(value = "nu_app_employess_permission-添加") + @ApiOperation(value="nu_app_employess_permission-添加", notes="nu_app_employess_permission-添加") + @RequiresPermissions("employessPermission:nu_app_employess_permission:add") + @PostMapping(value = "/add") + public Result add(@RequestBody NuAppEmployessPermission nuAppEmployessPermission) { + nuAppEmployessPermissionService.save(nuAppEmployessPermission); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param nuAppEmployessPermission + * @return + */ + @AutoLog(value = "nu_app_employess_permission-编辑") + @ApiOperation(value="nu_app_employess_permission-编辑", notes="nu_app_employess_permission-编辑") + @RequiresPermissions("employessPermission:nu_app_employess_permission:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody NuAppEmployessPermission nuAppEmployessPermission) { + nuAppEmployessPermissionService.updateById(nuAppEmployessPermission); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "nu_app_employess_permission-通过id删除") + @ApiOperation(value="nu_app_employess_permission-通过id删除", notes="nu_app_employess_permission-通过id删除") + @RequiresPermissions("employessPermission:nu_app_employess_permission:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + nuAppEmployessPermissionService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "nu_app_employess_permission-批量删除") + @ApiOperation(value="nu_app_employess_permission-批量删除", notes="nu_app_employess_permission-批量删除") + @RequiresPermissions("employessPermission:nu_app_employess_permission:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.nuAppEmployessPermissionService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "nu_app_employess_permission-通过id查询") + @ApiOperation(value="nu_app_employess_permission-通过id查询", notes="nu_app_employess_permission-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + NuAppEmployessPermission nuAppEmployessPermission = nuAppEmployessPermissionService.getById(id); + if(nuAppEmployessPermission==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(nuAppEmployessPermission); + } + + /** + * 导出excel + * + * @param request + * @param nuAppEmployessPermission + */ + @RequiresPermissions("employessPermission:nu_app_employess_permission:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, NuAppEmployessPermission nuAppEmployessPermission) { + return super.exportXls(request, nuAppEmployessPermission, NuAppEmployessPermission.class, "nu_app_employess_permission"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("employessPermission:nu_app_employess_permission:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, NuAppEmployessPermission.class); + } + /** + * 用户角色授权功能,查询菜单权限树 + * @param request + * @return + */ + @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET) + public Result> queryTreeList(HttpServletRequest request) { + Result> result = new Result<>(); + //全部权限ids + List ids = new ArrayList<>(); + try { + LambdaQueryWrapper query = new LambdaQueryWrapper(); + query.eq(NuAppPermission::getDelFlag, CommonConstant.DEL_FLAG_0); + query.orderByAsc(NuAppPermission::getSortNo); + List list = nuAppPermissionService.list(query); + for(NuAppPermission sysPer : list) { + ids.add(sysPer.getId()); + } + List treeList = new ArrayList<>(); + getTreeModelList(treeList, list, null); + Map resMap = new HashMap(5); + //全部树节点数据 + resMap.put("treeList", treeList); + //全部树ids + resMap.put("ids", ids); + result.setResult(resMap); + result.setSuccess(true); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + + private void getTreeModelList(List treeList, List metaList, TreeModel temp) { + for (NuAppPermission permission : metaList) { + String tempPid = permission.getParentId(); + TreeModel tree = new TreeModel(permission.getId(), tempPid, permission.getName(),permission.getRuleFlag(), permission.isLeaf(),permission.getMenuCode()); + if(temp==null && oConvertUtils.isEmpty(tempPid)) { + treeList.add(tree); + if(!tree.getIsLeaf()) { + getTreeModelList(treeList, metaList, tree); + } + }else if(temp!=null && tempPid!=null && tempPid.equals(temp.getKey())){ + temp.getChildren().add(tree); + if(!tree.getIsLeaf()) { + getTreeModelList(treeList, metaList, tree); + } + } + + } + } + + /** + * 查询角色授权 + * + * @return + */ + @RequestMapping(value = "/queryEmployessPermission", method = RequestMethod.GET) + public Result> queryEmployessPermission(@RequestParam(name = "employessId", required = true) String employessId) { + Result> result = new Result<>(); + try { + List list = nuAppEmployessPermissionService.list(new QueryWrapper().lambda().eq(NuAppEmployessPermission::getRoleId, employessId)); + result.setResult(list.stream().map(sysRolePermission -> String.valueOf(sysRolePermission.getPermissionId())).collect(Collectors.toList())); + result.setSuccess(true); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + + /** + * 保存角色授权 + * + * @return + */ + @RequestMapping(value = "/saveRolePermission", method = RequestMethod.POST) +// @RequiresPermissions("system:permission:saveRole") + public Result saveRolePermission(@RequestBody JSONObject json) { + long start = System.currentTimeMillis(); + Result result = new Result<>(); + try { + String roleId = json.getString("roleId"); + String permissionIds = json.getString("permissionIds"); + String lastPermissionIds = json.getString("lastpermissionIds"); + this.nuAppEmployessPermissionService.saveRolePermission(roleId, permissionIds, lastPermissionIds); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]用户管理角色授权添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("修改角色ID: "+roleId+" 的权限配置,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]用户管理角色授权添加敏感日志------------ + result.success("保存成功!"); + log.info("======角色授权成功=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); + + } catch (Exception e) { + result.error500("授权失败!"); + log.error(e.getMessage(), e); + } + return result; + } +} diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/entity/NuAppEmployessPermission.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/entity/NuAppEmployessPermission.java new file mode 100644 index 00000000..c34abd80 --- /dev/null +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/entity/NuAppEmployessPermission.java @@ -0,0 +1,72 @@ +package com.nu.modules.employessPermission.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: nu_app_employess_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Data +@TableName("nu_app_employess_permission") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_app_employess_permission对象", description="nu_app_employess_permission") +public class NuAppEmployessPermission implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**角色id*/ + @Excel(name = "角色id", width = 15) + @ApiModelProperty(value = "角色id") + private java.lang.String roleId; + /**权限id*/ + @Excel(name = "权限id", width = 15) + @ApiModelProperty(value = "权限id") + private java.lang.String permissionId; + /**数据权限ids*/ + @Excel(name = "数据权限ids", width = 15) + @ApiModelProperty(value = "数据权限ids") + private java.lang.String dataRuleIds; + /**操作时间*/ + @Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "操作时间") + private java.util.Date operateDate; + /**操作ip*/ + @Excel(name = "操作ip", width = 15) + @ApiModelProperty(value = "操作ip") + private java.lang.String operateIp; + + @TableField(exist = false) + private String menuName; + @TableField(exist = false) + private String menuCode; + + + public NuAppEmployessPermission(String roleId, String permissionId) { + this.roleId = roleId; + this.permissionId = permissionId; + } +} diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/NuAppEmployessPermissionMapper.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/NuAppEmployessPermissionMapper.java new file mode 100644 index 00000000..8e4d49a2 --- /dev/null +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/NuAppEmployessPermissionMapper.java @@ -0,0 +1,19 @@ +package com.nu.modules.employessPermission.mapper; + +import java.util.List; + +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import org.apache.ibatis.annotations.Param; +import com.nu.modules.employessPermission.entity.NuAppEmployessPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: nu_app_employess_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +public interface NuAppEmployessPermissionMapper extends BaseMapper { + + List listByEmployessId(@Param("roleId") String employessId); +} diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/xml/NuAppEmployessPermissionMapper.xml b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/xml/NuAppEmployessPermissionMapper.xml new file mode 100644 index 00000000..75a91042 --- /dev/null +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/mapper/xml/NuAppEmployessPermissionMapper.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/INuAppEmployessPermissionService.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/INuAppEmployessPermissionService.java new file mode 100644 index 00000000..7e6a45ff --- /dev/null +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/INuAppEmployessPermissionService.java @@ -0,0 +1,20 @@ +package com.nu.modules.employessPermission.service; + +import com.nu.modules.employessPermission.entity.NuAppEmployessPermission; +import com.baomidou.mybatisplus.extension.service.IService; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; + +import java.util.List; + +/** + * @Description: nu_app_employess_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +public interface INuAppEmployessPermissionService extends IService { + + void saveRolePermission(String roleId, String permissionIds, String lastPermissionIds); + + List listByEmployessId(String employessId); +} diff --git a/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/impl/NuAppEmployessPermissionServiceImpl.java b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/impl/NuAppEmployessPermissionServiceImpl.java new file mode 100644 index 00000000..ccd7290d --- /dev/null +++ b/nursing-unit-employee/nu-employee-biz/src/main/java/com/nu/modules/employessPermission/service/impl/NuAppEmployessPermissionServiceImpl.java @@ -0,0 +1,93 @@ +package com.nu.modules.employessPermission.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.modules.employessPermission.entity.NuAppEmployessPermission; +import com.nu.modules.employessPermission.mapper.NuAppEmployessPermissionMapper; +import com.nu.modules.employessPermission.service.INuAppEmployessPermissionService; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import org.jeecg.common.util.IpUtils; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.common.util.oConvertUtils; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +/** + * @Description: nu_app_employess_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Service +public class NuAppEmployessPermissionServiceImpl extends ServiceImpl implements INuAppEmployessPermissionService { + + @Override + public void saveRolePermission(String roleId, String permissionIds, String lastPermissionIds) { + String ip = ""; + try { + //获取request + HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); + //获取IP地址 + ip = IpUtils.getIpAddr(request); + } catch (Exception e) { + ip = "127.0.0.1"; + } + List add = getDiff(lastPermissionIds,permissionIds); + if(add!=null && add.size()>0) { + List list = new ArrayList(); + for (String p : add) { + if(oConvertUtils.isNotEmpty(p)) { + NuAppEmployessPermission rolepms = new NuAppEmployessPermission(roleId, p); + rolepms.setOperateDate(new Date()); + rolepms.setOperateIp(ip); + list.add(rolepms); + } + } + this.saveBatch(list); + } + + List delete = getDiff(permissionIds,lastPermissionIds); + if(delete!=null && delete.size()>0) { + for (String permissionId : delete) { + this.remove(new QueryWrapper().lambda().eq(NuAppEmployessPermission::getRoleId, roleId).eq(NuAppEmployessPermission::getPermissionId, permissionId)); + } + } + } + + @Override + public List listByEmployessId(String employessId) { + return baseMapper.listByEmployessId(employessId); + } + + /** + * 从diff中找出main中没有的元素 + * @param main + * @param diff + * @return + */ + private List getDiff(String main,String diff){ + if(oConvertUtils.isEmpty(diff)) { + return null; + } + if(oConvertUtils.isEmpty(main)) { + return Arrays.asList(diff.split(",")); + } + + String[] mainArr = main.split(","); + String[] diffArr = diff.split(","); + Map map = new HashMap(5); + for (String string : mainArr) { + map.put(string, 1); + } + List res = new ArrayList(); + for (String key : diffArr) { + if(oConvertUtils.isNotEmpty(key) && !map.containsKey(key)) { + res.add(key); + } + } + return res; + } +} diff --git a/nursing-unit-nu/nu-nu-biz/pom.xml b/nursing-unit-nu/nu-nu-biz/pom.xml index 90d99d6a..18aad2bc 100644 --- a/nursing-unit-nu/nu-nu-biz/pom.xml +++ b/nursing-unit-nu/nu-nu-biz/pom.xml @@ -47,7 +47,19 @@ 2.0.0 compile + + com.nursingunit.boot + nu-admin-biz + 2.0.0 + compile + + + com.nursingunit.boot + nu-admin-biz + 2.0.0 + compile + - + diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/entity/NuBaseInfo.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/entity/NuBaseInfo.java index b30e188f..355b49ee 100644 --- a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/entity/NuBaseInfo.java +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/entity/NuBaseInfo.java @@ -2,7 +2,11 @@ package com.nu.modules.nubaseinfo.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; -import com.nu.entity.*; +import com.nu.entity.CameraInfoEntity; +import com.nu.entity.ElderInfoEntity; +import com.nu.entity.ElderServerEntity; +import com.nu.entity.HumidDeviceEntity; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -172,5 +176,8 @@ public class NuBaseInfo implements Serializable { //温湿度计 @TableField(exist = false) private List humidDeviceList; + //单元对应外挂 + @TableField(exist = false) + private List permissionList; } diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java index da54c2ab..52dc1990 100644 --- a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nubaseinfo/service/impl/NuBaseInfoServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nu.entity.*; +import com.nu.modules.appConfig.entity.NuAppPermission; import com.nu.modules.camerainfo.api.CameraInfoApi; import com.nu.modules.elder.api.IElderInfoApi; import com.nu.modules.humiddevice.api.IHumidAlarmApi; @@ -17,6 +18,8 @@ import com.nu.modules.nubaseinfo.entity.NuBaseInfo; import com.nu.modules.nubaseinfo.mapper.NuBaseInfoMapper; import com.nu.modules.nubaseinfo.service.INuBaseInfoService; import com.nu.modules.nubaseinfo.api.INuBaseInfoApi; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import com.nu.modules.nuidPermission.service.INuAppNuidPermissionService; import org.apache.commons.lang.StringUtils; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.query.QueryGenerator; @@ -54,6 +57,8 @@ public class NuBaseInfoServiceImpl extends ServiceImpl humidDeviceList = humidDeviceApi.listAll(); + //查询护理单元对应菜单权限 + List permissionList = nuAppNuidPermissionService.listByNuId(null); + + //查找list集合里的nuid等于cameraList集合中nuid的就给list集合赋值 list.getRecords().forEach(ni -> { //赋值摄像头信息 @@ -179,6 +188,17 @@ public class NuBaseInfoServiceImpl extends ServiceImpl { + if (StringUtils.equals(ni.getNuId(), humidDto.getRoleId())) { + List permissionDtoList = ni.getPermissionList(); + if (permissionDtoList == null) { + permissionDtoList = new ArrayList<>(); + } + permissionDtoList.add(humidDto); + ni.setPermissionList(permissionDtoList); + } + }); }); IPage entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/controller/NuAppNuidPermissionController.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/controller/NuAppNuidPermissionController.java new file mode 100644 index 00000000..43113a30 --- /dev/null +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/controller/NuAppNuidPermissionController.java @@ -0,0 +1,291 @@ +package com.nu.modules.nuidPermission.controller; + +import java.util.*; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.nu.modules.appConfig.entity.NuAppPermission; +import com.nu.modules.appConfig.entity.TreeModel; +import com.nu.modules.appConfig.service.INuAppPermissionService; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import com.nu.modules.nuidPermission.service.INuAppNuidPermissionService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecg.modules.base.service.BaseCommonService; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: nu_app_nuid_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Api(tags="nu_app_nuid_permission") +@RestController +@RequestMapping("/nuidPermission/nuAppNuidPermission") +@Slf4j +public class NuAppNuidPermissionController extends JeecgController { + @Autowired + private INuAppNuidPermissionService nuAppNuidPermissionService; + @Autowired + private INuAppPermissionService nuAppPermissionService; + @Autowired + private BaseCommonService baseCommonService; + /** + * 分页列表查询 + * + * @param nuAppNuidPermission + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "nu_app_nuid_permission-分页列表查询") + @ApiOperation(value="nu_app_nuid_permission-分页列表查询", notes="nu_app_nuid_permission-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(NuAppNuidPermission nuAppNuidPermission, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(nuAppNuidPermission, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = nuAppNuidPermissionService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param nuAppNuidPermission + * @return + */ + @AutoLog(value = "nu_app_nuid_permission-添加") + @ApiOperation(value="nu_app_nuid_permission-添加", notes="nu_app_nuid_permission-添加") + @RequiresPermissions("nuidPermission:nu_app_nuid_permission:add") + @PostMapping(value = "/add") + public Result add(@RequestBody NuAppNuidPermission nuAppNuidPermission) { + nuAppNuidPermissionService.save(nuAppNuidPermission); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param nuAppNuidPermission + * @return + */ + @AutoLog(value = "nu_app_nuid_permission-编辑") + @ApiOperation(value="nu_app_nuid_permission-编辑", notes="nu_app_nuid_permission-编辑") + @RequiresPermissions("nuidPermission:nu_app_nuid_permission:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody NuAppNuidPermission nuAppNuidPermission) { + nuAppNuidPermissionService.updateById(nuAppNuidPermission); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "nu_app_nuid_permission-通过id删除") + @ApiOperation(value="nu_app_nuid_permission-通过id删除", notes="nu_app_nuid_permission-通过id删除") + @RequiresPermissions("nuidPermission:nu_app_nuid_permission:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + nuAppNuidPermissionService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "nu_app_nuid_permission-批量删除") + @ApiOperation(value="nu_app_nuid_permission-批量删除", notes="nu_app_nuid_permission-批量删除") + @RequiresPermissions("nuidPermission:nu_app_nuid_permission:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.nuAppNuidPermissionService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "nu_app_nuid_permission-通过id查询") + @ApiOperation(value="nu_app_nuid_permission-通过id查询", notes="nu_app_nuid_permission-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + NuAppNuidPermission nuAppNuidPermission = nuAppNuidPermissionService.getById(id); + if(nuAppNuidPermission==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(nuAppNuidPermission); + } + + /** + * 导出excel + * + * @param request + * @param nuAppNuidPermission + */ + @RequiresPermissions("nuidPermission:nu_app_nuid_permission:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, NuAppNuidPermission nuAppNuidPermission) { + return super.exportXls(request, nuAppNuidPermission, NuAppNuidPermission.class, "nu_app_nuid_permission"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("nuidPermission:nu_app_nuid_permission:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, NuAppNuidPermission.class); + } + + /** + * 用户角色授权功能,查询菜单权限树 + * @param request + * @return + */ + @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET) + public Result> queryTreeList(HttpServletRequest request) { + Result> result = new Result<>(); + //全部权限ids + List ids = new ArrayList<>(); + try { + LambdaQueryWrapper query = new LambdaQueryWrapper(); + query.eq(NuAppPermission::getDelFlag, CommonConstant.DEL_FLAG_0); + query.orderByAsc(NuAppPermission::getSortNo); + List list = nuAppPermissionService.list(query); + for(NuAppPermission sysPer : list) { + ids.add(sysPer.getId()); + } + List treeList = new ArrayList<>(); + getTreeModelList(treeList, list, null); + Map resMap = new HashMap(5); + //全部树节点数据 + resMap.put("treeList", treeList); + //全部树ids + resMap.put("ids", ids); + result.setResult(resMap); + result.setSuccess(true); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + + private void getTreeModelList(List treeList, List metaList, TreeModel temp) { + for (NuAppPermission permission : metaList) { + String tempPid = permission.getParentId(); + TreeModel tree = new TreeModel(permission.getId(), tempPid, permission.getName(),permission.getRuleFlag(), permission.isLeaf(),permission.getMenuCode()); + if(temp==null && oConvertUtils.isEmpty(tempPid)) { + treeList.add(tree); + if(!tree.getIsLeaf()) { + getTreeModelList(treeList, metaList, tree); + } + }else if(temp!=null && tempPid!=null && tempPid.equals(temp.getKey())){ + temp.getChildren().add(tree); + if(!tree.getIsLeaf()) { + getTreeModelList(treeList, metaList, tree); + } + } + + } + } + + + /** + * 查询角色授权 + * + * @return + */ + @RequestMapping(value = "/queryNuidPermission", method = RequestMethod.GET) + public Result> queryNuidPermission(@RequestParam(name = "nuId", required = true) String nuId) { + Result> result = new Result<>(); + try { + List list = nuAppNuidPermissionService.list(new QueryWrapper().lambda().eq(NuAppNuidPermission::getRoleId, nuId)); + result.setResult(list.stream().map(sysRolePermission -> String.valueOf(sysRolePermission.getPermissionId())).collect(Collectors.toList())); + result.setSuccess(true); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + + + /** + * 保存角色授权 + * + * @return + */ + @RequestMapping(value = "/saveRolePermission", method = RequestMethod.POST) +// @RequiresPermissions("system:permission:saveRole") + public Result saveRolePermission(@RequestBody JSONObject json) { + long start = System.currentTimeMillis(); + Result result = new Result<>(); + try { + String roleId = json.getString("roleId"); + String permissionIds = json.getString("permissionIds"); + String lastPermissionIds = json.getString("lastpermissionIds"); + this.nuAppNuidPermissionService.saveRolePermission(roleId, permissionIds, lastPermissionIds); + //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]用户管理角色授权添加敏感日志------------ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("修改角色ID: "+roleId+" 的权限配置,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]用户管理角色授权添加敏感日志------------ + result.success("保存成功!"); + log.info("======角色授权成功=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); + + } catch (Exception e) { + result.error500("授权失败!"); + log.error(e.getMessage(), e); + } + return result; + } +} diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/entity/NuAppNuidPermission.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/entity/NuAppNuidPermission.java new file mode 100644 index 00000000..56f7726b --- /dev/null +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/entity/NuAppNuidPermission.java @@ -0,0 +1,73 @@ +package com.nu.modules.nuidPermission.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: nu_app_nuid_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Data +@TableName("nu_app_nuid_permission") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_app_nuid_permission对象", description="nu_app_nuid_permission") +public class NuAppNuidPermission implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**角色id*/ + @Excel(name = "角色id", width = 15) + @ApiModelProperty(value = "角色id") + private java.lang.String roleId; + /**权限id*/ + @Excel(name = "权限id", width = 15) + @ApiModelProperty(value = "权限id") + private java.lang.String permissionId; + /**数据权限ids*/ + @Excel(name = "数据权限ids", width = 15) + @ApiModelProperty(value = "数据权限ids") + private java.lang.String dataRuleIds; + /**操作时间*/ + @Excel(name = "操作时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "操作时间") + private java.util.Date operateDate; + /**操作ip*/ + @Excel(name = "操作ip", width = 15) + @ApiModelProperty(value = "操作ip") + private java.lang.String operateIp; + + @TableField(exist = false) + private String menuName; + @TableField(exist = false) + private String menuCode; + + + + public NuAppNuidPermission(String roleId, String permissionId) { + this.roleId = roleId; + this.permissionId = permissionId; + } +} diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/NuAppNuidPermissionMapper.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/NuAppNuidPermissionMapper.java new file mode 100644 index 00000000..195968ef --- /dev/null +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/NuAppNuidPermissionMapper.java @@ -0,0 +1,18 @@ +package com.nu.modules.nuidPermission.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: nu_app_nuid_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +public interface NuAppNuidPermissionMapper extends BaseMapper { + + List listByNuId(@Param("roleId") String nuId); +} diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/xml/NuAppNuidPermissionMapper.xml b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/xml/NuAppNuidPermissionMapper.xml new file mode 100644 index 00000000..5ce7cd22 --- /dev/null +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/mapper/xml/NuAppNuidPermissionMapper.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/INuAppNuidPermissionService.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/INuAppNuidPermissionService.java new file mode 100644 index 00000000..1a917802 --- /dev/null +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/INuAppNuidPermissionService.java @@ -0,0 +1,19 @@ +package com.nu.modules.nuidPermission.service; + +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @Description: nu_app_nuid_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +public interface INuAppNuidPermissionService extends IService { + + void saveRolePermission(String roleId, String permissionIds, String lastPermissionIds); + + List listByNuId(String nuId); +} diff --git a/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/impl/NuAppNuidPermissionServiceImpl.java b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/impl/NuAppNuidPermissionServiceImpl.java new file mode 100644 index 00000000..43334ed8 --- /dev/null +++ b/nursing-unit-nu/nu-nu-biz/src/main/java/com/nu/modules/nuidPermission/service/impl/NuAppNuidPermissionServiceImpl.java @@ -0,0 +1,92 @@ +package com.nu.modules.nuidPermission.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.modules.nuidPermission.entity.NuAppNuidPermission; +import com.nu.modules.nuidPermission.mapper.NuAppNuidPermissionMapper; +import com.nu.modules.nuidPermission.service.INuAppNuidPermissionService; +import org.jeecg.common.util.IpUtils; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.common.util.oConvertUtils; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +/** + * @Description: nu_app_nuid_permission + * @Author: jeecg-boot + * @Date: 2026-01-04 + * @Version: V1.0 + */ +@Service +public class NuAppNuidPermissionServiceImpl extends ServiceImpl implements INuAppNuidPermissionService { + + @Override + public void saveRolePermission(String roleId, String permissionIds, String lastPermissionIds) { + String ip = ""; + try { + //获取request + HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); + //获取IP地址 + ip = IpUtils.getIpAddr(request); + } catch (Exception e) { + ip = "127.0.0.1"; + } + List add = getDiff(lastPermissionIds,permissionIds); + if(add!=null && add.size()>0) { + List list = new ArrayList(); + for (String p : add) { + if(oConvertUtils.isNotEmpty(p)) { + NuAppNuidPermission rolepms = new NuAppNuidPermission(roleId, p); + rolepms.setOperateDate(new Date()); + rolepms.setOperateIp(ip); + list.add(rolepms); + } + } + this.saveBatch(list); + } + + List delete = getDiff(permissionIds,lastPermissionIds); + if(delete!=null && delete.size()>0) { + for (String permissionId : delete) { + this.remove(new QueryWrapper().lambda().eq(NuAppNuidPermission::getRoleId, roleId).eq(NuAppNuidPermission::getPermissionId, permissionId)); + } + } + } + + @Override + public List listByNuId(String nuId) { + return baseMapper.listByNuId(nuId); + } + + /** + * 从diff中找出main中没有的元素 + * @param main + * @param diff + * @return + */ + private List getDiff(String main,String diff){ + if(oConvertUtils.isEmpty(diff)) { + return null; + } + if(oConvertUtils.isEmpty(main)) { + return Arrays.asList(diff.split(",")); + } + + String[] mainArr = main.split(","); + String[] diffArr = diff.split(","); + Map map = new HashMap(5); + for (String string : mainArr) { + map.put(string, 1); + } + List res = new ArrayList(); + for (String key : diffArr) { + if(oConvertUtils.isNotEmpty(key) && !map.containsKey(key)) { + res.add(key); + } + } + return res; + } +}