| | |
| | | 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; |
| | |
| | | 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.*; |
| | |
| | | */ |
| | | @Service |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Slf4j |
| | | public class ClerkServiceImpl extends ServiceImpl<ClerkMapper, Clerk> implements ClerkService { |
| | | |
| | | @Autowired |
| | |
| | | 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()); |
| | |
| | | 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())) { |
| | |
| | | |
| | | //部门校验 |
| | | 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); |
| | | } |
| | |
| | | //角色校验 |
| | | 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); |
| | | } |
| | |
| | | @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()) { |
| | |
| | | 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); |
| | | } |
| | |
| | | } |
| | | |
| | | @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) { |