jeecg微服务中如何实现机构的概念(当前机构只能查到其子机构)

简介: jeecg微服务中如何实现机构的概念(当前机构只能查到其子机构)

前言

以前,我们做的国家平台项目,都是采用现在开源的框架来做的,比如若依bladex,相比之下,若依用的要稍多点儿。因为那时候刚开始接触vue,多方打探,若依比较容易上手。待做了几个项目,将若依用成熟之后,开始用bladexbladex有个很大的改进,就是其内部集成了mybatis-plus,不好上手,等上手了之后就很顺当了。

最近,新开了个产品,和团队成员三思过后,决定采用微服务去做,框架选择:jeecg-boot.选其主要有以下几个方面的考虑:

  1. 该框架集成了mybatis-plus
  2. 该框架集成的外部插件比较多,比如文件桶企业微信,xxl-job
  3. 正好是个微服务项目,就当来练练手
  4. 网上该框架的资源也比较,遇到Bug之后能有相应的解决方案。

现在新项目中,有个这样的需求,即:有代理商和机构的概念,当前机构只能查看自己机构及下级机构的信息,无法查看上级机构的信息,介于此,我们将原来的部门的概念,换成了机构的概念,相应的代码也有了调整。

代码实现

  1. 获取当前用户下的机构id,代码如下:
    /**
     * 获取当前用户下的机构id
     *
     * @return
     */
    @GetMapping("queryAllDepartByUser")
    public Object queryAllDepartByUser() {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        List<SysUserDepart> list = sysUserDepartService.list(
                new QueryWrapper<SysUserDepart>()
                        .eq("user_id", user.getId())
                        .select("dep_id")
        );
        StringBuilder ids = new StringBuilder();
        list.forEach(ud -> {
            ids.append(ud.getDepId()).append(",");
        });
        if (ids.length() > 0) {
            ids.delete(ids.length() - 1, ids.length());
        }
        return ids;
    }

分析:
该方法主要实现的功能就是获取当前登录的用户信息,然后根据其机构id和用户id,查询其机构id,最后将机构id返回给前端。

  1. 数据库中加入了两个字段,一个是等级level在,主要是为了确认当前的机构是第几级,好在后面操作。另一个是他的所有父级parentIds,所以我们需要修改一下添加机构的方法,代码如下:
/**
     * 添加新数据 添加用户新建的部门对象数据,并保存到数据库
     *
     * @param sysDepart
     * @return
     */
    //@RequiresRoles({"admin"})
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @CacheEvict(value = {CacheConstant.SYS_DEPARTS_CACHE, CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries = true)
    public Result<SysDepart> add(@RequestBody SysDepart sysDepart, HttpServletRequest request) {
        Result<SysDepart> result = new Result<SysDepart>();
        String username = JwtUtil.getUserNameByToken(request);
        try {
            //region 随机生成一个八位字符串的邀请码 如果数据库中存在则重新生成  wangjie 2022-08-23
            String shortBuffer = common.generateShortUuid();
            QueryWrapper<SysDepart> Depart = new QueryWrapper<>();
            Depart.eq("invite_code", shortBuffer);
            List<SysDepart> list = sysDepartService.list(Depart);
            if (list.size() > 0) {
                shortBuffer = common.generateShortUuid();
                sysDepart.setInviteCode(shortBuffer);
            } else {
                sysDepart.setInviteCode(shortBuffer);
            }

            sysDepart.setCreateBy(username);
            sysDepartService.saveDepartData(sysDepart, username);
            //获取当前部门的所有父级id
            Result resultPids = queryParentIds(sysDepart.getId(), null);
            JSONObject resultPidsObject = (JSONObject) resultPids.getResult();
            //根据当前部门的id获取值
            JSONObject parentIdsObject = resultPidsObject.getJSONObject(sysDepart.getId());
            JSONArray parentIdsList = parentIdsObject.getJSONArray("parentIds");
            StringBuilder pidsSb = new StringBuilder("");
            parentIdsList.forEach(p -> {
                pidsSb.append(p);
                pidsSb.append(",");
            });
            //设置所有父节点的值
            sysDepart.setAncestors(pidsSb.toString());
            sysDepart.setLevel(parentIdsList.size());
            sysDepartService.updateById(sysDepart);
            //清除部门树内存
            // FindsDepartsChildrenUtil.clearSysDepartTreeList();
            // FindsDepartsChildrenUtil.clearDepartIdModel();
            result.success("添加成功!");
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            result.error500("操作失败");
        }
        return result;
    }

然后其他的方法,我们直接用原生的即可。

目录
相关文章
|
监控 数据管理 API
深入了解微服务架构:从概念到实践
微服务架构是近年来在软件开发领域崭露头角的一种架构范式。它的灵活性和可伸缩性使其成为许多大型企业和创业公司的首选。本文将深入介绍微服务架构的概念、优势、挑战以及实际应用。
|
监控 负载均衡 测试技术
服务网格简介:探索现代微服务架构中的服务网格概念和价值
服务网格简介:探索现代微服务架构中的服务网格概念和价值
661 0
|
存储 关系型数据库 MySQL
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
2159 0
|
微服务
jeecg微服务项目调用接口报错Token验证失效的解决方法
jeecg微服务项目调用接口报错Token验证失效的解决方法
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
1017 24
|
测试技术 持续交付 微服务
深入理解微服务架构:从概念到实践
深入理解微服务架构:从概念到实践
348 20
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
949 6
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
1084 30
|
Java Docker 微服务
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
微服务架构的概念、特点以及如何在Java Web开发中实现微服务。
400 1
|
设计模式 消息中间件 监控
后端开发中的微服务架构:从概念到实践
后端开发中的微服务架构:从概念到实践