From 9aff69d38fa75981560ce21807be4b30122ef8f4 Mon Sep 17 00:00:00 2001 From: Jinquan_Ou <Jinquan@gdut.com> Date: 星期四, 13 四月 2023 23:32:06 +0800 Subject: [PATCH] 授权接口 --- zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 129 insertions(+), 0 deletions(-) diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java index 9fa02f2..93b18ec 100644 --- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java +++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; @@ -13,6 +15,7 @@ import com.ruoyi.domain.ZInfoUser; import com.ruoyi.domain.ZfEvent; import com.ruoyi.domain.ZfRelation; +import com.ruoyi.domain.dto.EmpowerDto; import com.ruoyi.domain.dto.UserRelationDto; import com.ruoyi.mapper.ZInfoUserMapper; import com.ruoyi.service.ZInfoUserService; @@ -162,5 +165,131 @@ } } + /** + * 缁欑敤鎴锋巿鏉冪殑鏂规硶 + * @param empowerDto + * @return + */ + @Override + @Transactional + public AjaxResult empower(EmpowerDto empowerDto) { + + //寰楀埌dto涓殑淇℃伅 + String otherUserId = empowerDto.getUserId(); + String destinationFamilyId = empowerDto.getFamilyId(); + List<String> authorityList = empowerDto.getAuthorityList(); + + String familyId = getMyFamilyId(); + checkAuthorization(familyId, destinationFamilyId,true); + + //鎺堟潈 //3{2007 1988 1004} + String finalStr = getFinalStr(destinationFamilyId, authorityList); + + //鏇存柊琚巿鏉冪敤鎴风殑鏉冮檺 + LambdaQueryWrapper<ZInfoUser> lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(ZInfoUser::getUserId,otherUserId); + ZInfoUser otherUser = getOne(lqw2); + String secondFamilyId = otherUser.getSecondFamilyId(); + + String replaceFamilyId=null; + + boolean save=true; + + if (StringUtils.isNotEmpty(secondFamilyId)){ + //濡傛灉鍘熸潵灏卞凡缁忔湁琚祴浜堟潈闄愪簡锛岄偅涔堥渶瑕佸垽鏂槸涓嶆槸璺熻繖涓搴彿鏈夊叧鐨勬潈闄� + + //杩欎釜secondFamilyId鏄綋鍓嶇敤鎴风殑瀹屾暣鏉冮檺瀛楁 + if(secondFamilyId.contains(",")){ + String[] split = secondFamilyId.split(","); + for (int i = 0; i < split.length; i++) { + String fid = split[i].substring(0, split[i].indexOf("{"));//浠庢潈闄愬潡涓嬁鍒拌鎺堟潈鐨勫搴彿 + if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ + //濡傛灉鍖归厤鍒颁簡瀵瑰簲鐨勫搴彿锛岄偅涔堝氨鏇挎崲鎺夊搴旂殑鏉冮檺鍧楀氨鍙互浜嗭紝涓嶉渶瑕佽拷鍔� + save=false; + split[i]=finalStr; + break; + } + } + List<String> finalList = Arrays.asList(split); + StringBuilder stringBuilder = new StringBuilder(); + for (String s : finalList) { + stringBuilder.append(s).append(","); + } + stringBuilder.deleteCharAt(stringBuilder.length()-1); + + replaceFamilyId = stringBuilder.toString(); + + }else { + String fid = secondFamilyId.substring(0, secondFamilyId.indexOf("{"));//浠庢潈闄愬潡涓嬁鍒拌鎺堟潈鐨勫搴彿 + if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ + //濡傛灉鍖归厤鍒颁簡瀵瑰簲鐨勫搴彿锛岄偅涔堝氨鏇挎崲鎺夊搴旂殑鏉冮檺鍧楀氨鍙互浜嗭紝涓嶉渶瑕佽拷鍔� + save=false; + replaceFamilyId=finalStr; + } + } + + if(save){ + //闇�瑕佽拷鍔�,娌℃湁鍖归厤鍒板搴旂殑瀹跺涵鍙� + replaceFamilyId=secondFamilyId+","+finalStr; + }else { + //涓嶉渶瑕佽拷鍔� + } + + }else { + //鍘熸潵灏辨病鏈夋潈闄愪簡 + replaceFamilyId=finalStr; + } + + LambdaUpdateWrapper<ZInfoUser> uw = new LambdaUpdateWrapper<>(); + uw.eq(ZInfoUser::getUserId,otherUserId).set(ZInfoUser::getSecondFamilyId,replaceFamilyId); + if (update(null,uw)) { + return AjaxResult.success(); + }else { + return AjaxResult.error(); + } + + } + + private void checkAuthorization(String familyId, String destinationFamilyId,boolean flag) { + String text=null; + if(flag){ + text="鎺堟潈"; + }else { + text="鍙栨秷鎺堟潈"; + } + + //瀵规湰浜虹殑瀹跺涵鍙疯繘琛屽鐞� + if(familyId.contains(",")){ + String[] familyIds = familyId.split(","); + List<String> idList = Arrays.asList(familyIds); + if (!idList.contains(destinationFamilyId)) { + throw new RuntimeException("涓嶈兘"+text+"涓嶅睘浜庤嚜宸卞搴殑鏁版嵁"); + } + }else { + if (!familyId.equals(destinationFamilyId)){ + throw new RuntimeException("涓嶈兘"+text+"涓嶅睘浜庤嚜宸卞搴殑鏁版嵁"); + } + } + } + + private String getMyFamilyId() { + //寰楀埌鑷繁鐨勫搴璱d淇℃伅 + SysUser user = SecurityUtils.getLoginUser().getUser(); + Long myUserId = user.getUserId(); + LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>(); + lqw.eq(ZInfoUser::getUserId,myUserId); + ZInfoUser zInfoUser = getOne(lqw); + String familyId = zInfoUser.getFamilyId(); + return familyId; + } + + + + private String getFinalStr(String destinationFamilyId, List<String> authorityList) { + String authorityListStr = authorityList.stream().collect(Collectors.joining(" ", "{", "}")); + String finalStr= destinationFamilyId +authorityListStr; //3{2007 1988 1004} + return finalStr; + } + } -- Gitblit v1.9.1