jeecg微服务中如何实现机构的概念(当前机构只能查到其子机构)
Posted 穆雄雄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jeecg微服务中如何实现机构的概念(当前机构只能查到其子机构)相关的知识,希望对你有一定的参考价值。
大家好,我是雄雄。
内容先知
前言
以前,我们做的国家平台项目,都是采用现在开源的框架来做的,比如若依,bladex,相比之下,若依用的要稍多点儿。因为那时候刚开始接触vue
,多方打探,若依比较容易上手。待做了几个项目,将若依用成熟之后,开始用bladex
,bladex
有个很大的改进,就是其内部集成了mybatis-plus
,不好上手,等上手了之后就很顺当了。
最近,新开了个产品,和团队成员三思过后,决定采用微服务去做,框架选择:jeecg-boot
.选其主要有以下几个方面的考虑:
- 该框架集成了
mybatis-plus
- 该框架集成的外部插件比较多,比如文件桶,企业微信,xxl-job等
- 正好是个微服务项目,就当来练练手
- 网上该框架的资源也比较,遇到
Bug
之后能有相应的解决方案。
现在新项目中,有个这样的需求,即:有代理商和机构的概念,当前机构只能查看自己机构及下级机构的信息,无法查看上级机构的信息,介于此,我们将原来的部门的概念,换成了机构的概念,相应的代码也有了调整。
代码实现
- 获取当前用户下的机构
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
返回给前端。
- 数据库中加入了两个字段,一个是等级
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;
然后其他的方法,我们直接用原生的即可。
以上是关于jeecg微服务中如何实现机构的概念(当前机构只能查到其子机构)的主要内容,如果未能解决你的问题,请参考以下文章