peng
11 小时以前 4372e6406222ce6b33f8c1c0703b460d39b5814e
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) {