From 0fb6b9d8d414822668c401a2b507df1fe6d1fa2d Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期一, 16 六月 2025 14:28:08 +0800 Subject: [PATCH] 用户权限管理 --- framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java | 145 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 141 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java index 481b812..2d9ebf6 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/ClerkServiceImpl.java @@ -1,14 +1,16 @@ package cn.lili.modules.member.serviceimpl; - +import lombok.extern.slf4j.Slf4j; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.cache.Cache; import cn.lili.cache.CachePrefix; import cn.lili.common.enums.ResultCode; +import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; +import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.StoreClerkRole; @@ -16,6 +18,7 @@ import cn.lili.modules.member.entity.dto.ClerkAddDTO; import cn.lili.modules.member.entity.dto.ClerkEditDTO; import cn.lili.modules.member.entity.dto.ClerkQueryDTO; +import cn.lili.modules.member.entity.dto.MemberAddDTO; import cn.lili.modules.member.entity.vo.ClerkVO; import cn.lili.modules.member.mapper.ClerkMapper; import cn.lili.modules.member.service.*; @@ -43,6 +46,7 @@ */ @Service @Transactional(rollbackFor = Exception.class) +@Slf4j public class ClerkServiceImpl extends ServiceImpl<ClerkMapper, Clerk> implements ClerkService { @Autowired @@ -57,7 +61,100 @@ private Cache cache; @Override + public ResultMessage<Object> addClerk(ClerkAddDTO clerkAddDTO) { + int rolesMaxSize = 10; + try { + //瑙掕壊蹇呴�夛紝骞朵笖鏈�鍚庤缃�10涓� + if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) { + throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN); + } + //鏍¢獙鏄惁宸茬粡鏄細鍛� + Member member = memberService.findByMobile(clerkAddDTO.getMobile()); + if (member == null) { + //娣诲姞浼氬憳 + MemberAddDTO memberAddDTO = new MemberAddDTO(); + memberAddDTO.setMobile(clerkAddDTO.getMobile()); + memberAddDTO.setPassword(clerkAddDTO.getPassword()); + memberAddDTO.setUsername(clerkAddDTO.getUsername()); + member = memberService.addMember(memberAddDTO); + } else { + //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓� + if (Boolean.TRUE.equals(member.getHaveStore())) { + throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); + } + //鏍¢獙浼氬憳鐨勬湁鏁堟�� + if (Boolean.FALSE.equals(member.getDisabled())) { + throw new ServiceException(ResultCode.USER_STATUS_ERROR); + } + } + //娣诲姞搴楀憳 + clerkAddDTO.setMemberId(member.getId()); + clerkAddDTO.setShopkeeper(false); + clerkAddDTO.setStoreId(UserContext.getCurrentUser().getStoreId()); + this.saveClerk(clerkAddDTO); + //淇敼姝や細鍛樻嫢鏈夊簵閾� + List<String> ids = new ArrayList<>(); + ids.add(member.getId()); + memberService.updateHaveShop(true, UserContext.getCurrentUser().getStoreId(), ids); + } catch (ServiceException se) { + log.info(se.getMsg(), se); + throw se; + } catch (Exception e) { + log.error("娣诲姞搴楀憳鍑洪敊", e); + } + return ResultUtil.success(); + } + @Override + public Member addClerkReturnMember(ClerkAddDTO clerkAddDTO) { + int rolesMaxSize = 10; + Member member = null; + try { + //瑙掕壊蹇呴�夛紝骞朵笖鏈�鍚庤缃�10涓� + if (clerkAddDTO.getRoles() != null && clerkAddDTO.getRoles().size() >= rolesMaxSize) { + throw new ServiceException(ResultCode.PERMISSION_BEYOND_TEN); + } + //鏍¢獙鏄惁宸茬粡鏄細鍛� + member = memberService.findByMobile(clerkAddDTO.getMobile()); + if (member == null) { + //娣诲姞浼氬憳 + MemberAddDTO memberAddDTO = new MemberAddDTO(); + memberAddDTO.setMobile(clerkAddDTO.getMobile()); + memberAddDTO.setPassword(clerkAddDTO.getPassword()); + memberAddDTO.setUsername(clerkAddDTO.getUsername()); + member = memberService.addMember(memberAddDTO); + } else { + //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓� + if (Boolean.TRUE.equals(member.getHaveStore())) { + throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); + } + //鏍¢獙浼氬憳鐨勬湁鏁堟�� + if (Boolean.FALSE.equals(member.getDisabled())) { + throw new ServiceException(ResultCode.USER_STATUS_ERROR); + } + } + //娣诲姞搴楀憳 + clerkAddDTO.setMemberId(member.getId()); + clerkAddDTO.setShopkeeper(false); + String storeId = UserContext.getCurrentUser().getStoreId(); +// storeId = "1376433565247471616"; //娴嬭瘯鐢� + clerkAddDTO.setStoreId(storeId); + this.saveClerk(clerkAddDTO); + //淇敼姝や細鍛樻嫢鏈夊簵閾� + List<String> ids = new ArrayList<>(); + ids.add(member.getId()); + memberService.updateHaveShop(true,storeId, ids); + + } catch (ServiceException se) { + log.info(se.getMsg(), se); + throw se; + } catch (Exception e) { + log.error("娣诲姞搴楀憳鍑洪敊", e); + } + return member; + } + @Override public IPage<ClerkVO> clerkForPage(PageVO page, ClerkQueryDTO clerkQueryDTO) { + QueryWrapper<ClerkVO> clerkVOQueryWrapper = new QueryWrapper<>(); clerkVOQueryWrapper.eq("li_clerk.store_id", UserContext.getCurrentUser().getStoreId()); @@ -159,9 +256,10 @@ if (Boolean.TRUE.equals(clerk.getShopkeeper())) { throw new ServiceException(ResultCode.CANT_EDIT_CLERK_SHOPKEEPER); } - + String storeId = UserContext.getCurrentUser().getStoreId(); +// storeId = "1376433565247471616"; //鏍¢獙褰撳墠搴楀憳鏄惁鏄綋鍓嶅簵閾虹殑 - if (!clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { + if (!clerk.getStoreId().equals(storeId)) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } if (Boolean.TRUE.equals(clerkEditDTO.getIsSuper())) { @@ -186,8 +284,11 @@ //閮ㄩ棬鏍¢獙 if (CharSequenceUtil.isNotEmpty(clerkEditDTO.getDepartmentId())) { + System.out.println(clerkEditDTO.getDepartmentId()); + System.out.println(storeDepartmentService.getById(clerkEditDTO.getDepartmentId())); if (storeDepartmentService.getById(clerkEditDTO.getDepartmentId()) != null) { clerk.setDepartmentId(clerkEditDTO.getDepartmentId()); + System.out.println(clerk); } else { throw new ServiceException(ResultCode.PERMISSION_NOT_FOUND_ERROR); } @@ -226,6 +327,7 @@ //瑙掕壊鏍¢獙 if (clerkAddDTO.getRoles() != null && !clerkAddDTO.getRoles().isEmpty()) { List<StoreRole> storeRoles = storeRoleService.list(clerkAddDTO.getRoles()); + System.out.println(storeRoles); if (storeRoles.size() != clerkAddDTO.getRoles().size()) { throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } @@ -277,7 +379,9 @@ @Override public void deleteClerk(List<String> ids) { QueryWrapper<Clerk> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("store_id", UserContext.getCurrentUser().getStoreId()); + ; +// String storeId = "1376433565247471616"; + queryWrapper.eq("store_id", UserContext.getCurrentUser().getId()); queryWrapper.in("id", ids); List<Clerk> clerks = this.baseMapper.selectList(queryWrapper); if (!clerks.isEmpty()) { @@ -291,6 +395,7 @@ List<String> memberIds = new ArrayList<>(); clerks.forEach(clerk -> { //鏃犳硶鍒犻櫎褰撳墠鐧诲綍鐨勫簵鍛� + System.out.println(UserContext.getCurrentUser()); if (UserContext.getCurrentUser().getClerkId().equals(clerk.getId())) { throw new ServiceException(ResultCode.CLERK_CURRENT_SUPPER); } @@ -331,6 +436,38 @@ } @Override + public Member checkClerk(String memberId, String mobile) { + //鏍¢獙鏄惁宸茬粡鏄細鍛� + Member member = memberService.findByMobile(mobile); + System.out.println(member); + if (member != null) { + // 鏄綋鍓嶈处鍙蜂慨鏀� + if (memberId !=null && memberId.equals(member.getId())) { + return member; + } + + //鏍¢獙瑕佹坊鍔犵殑浼氬憳鏄惁宸茬粡鏄簵涓� + if (Boolean.TRUE.equals(member.getHaveStore())) { + throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); + } + //鏍¢獙浼氬憳鐨勬湁鏁堟�� + if (Boolean.FALSE.equals(member.getDisabled())) { + throw new ServiceException(ResultCode.USER_STATUS_ERROR); + } + //鏍¢獙姝や細鍛樻槸鍚﹀凡缁忔槸搴楀憳 + Clerk clerk = this.getClerkByMemberId(member.getId()); + if (clerk != null && !clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { + throw new ServiceException(ResultCode.CLERK_USER_ERROR); + } + if (clerk != null && clerk.getStoreId().equals(UserContext.getCurrentUser().getStoreId())) { + throw new ServiceException(ResultCode.CLERK_ALREADY_EXIT_ERROR); + } + return member; + } + return new Member(); + } + + @Override public void disable(String id, Boolean status) { Clerk clerk = this.getById(id); if (clerk == null) { -- Gitblit v1.8.0