package cn.lili.modules.lmk.service.impl; import cn.lili.base.Result; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.modules.lmk.domain.entity.StoreMember; import cn.lili.modules.lmk.domain.form.StoreMemberForm; import cn.lili.modules.lmk.domain.query.StoreMemberQuery; import cn.lili.modules.lmk.domain.vo.CheckClerkPermissionVO; import cn.lili.modules.lmk.domain.vo.StoreMemberVO; import cn.lili.modules.lmk.mapper.StoreMemberMapper; import cn.lili.modules.lmk.service.StoreMemberService; import cn.lili.modules.member.entity.dos.Clerk; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dto.*; import cn.lili.modules.member.entity.vo.ClerkVO; import cn.lili.modules.member.service.ClerkService; import cn.lili.modules.member.service.MemberService; import cn.lili.utils.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; /** * 用户权限管理(商家) 服务实现类 * * @author zxl * @since 2025-05-30 */ @Service @RequiredArgsConstructor public class StoreMemberServiceImpl extends ServiceImpl implements StoreMemberService { private final StoreMemberMapper storeMemberMapper; private final MemberService memberService; private final ClerkService clerkService; /** * 添加 * @param form * @return */ @Override public Result add(StoreMemberForm form) { String storeId =UserContext.getCurrentUser().getStoreId(); System.out.println(storeId); // storeId = "1376433565247471616"; //测试用 if ( storeId == null){ return null; } ClerkAddDTO clerkAddDTO = new ClerkAddDTO(); clerkAddDTO.setPassword(form.getPassword()); clerkAddDTO.setRoles(form.getRole()); clerkAddDTO.setUsername(form.getMobile()); clerkAddDTO.setMobile(form.getMobile()); clerkAddDTO.setDepartmentId(form.getDepartmentId()); clerkAddDTO.setIsSuper(form.getIsSuper()); Member member = clerkService.addClerkReturnMember(clerkAddDTO); //插入用户权限表 //id插入问题 StoreMember entity = StoreMemberForm.getEntityByForm(form, null); entity.setMemberId(member.getId()); baseMapper.insert(entity); return Result.ok("添加成功"); } /** * 修改 * @param form * @return */ @Override public Result update(StoreMemberForm form) { ClerkEditDTO clerkEditDTO = new ClerkEditDTO(); clerkEditDTO.setId(form.getId()); clerkEditDTO.setRoles(form.getRole()); clerkEditDTO.setDepartmentId(form.getDepartmentId()); clerkEditDTO.setIsSuper(form.getIsSuper()); Clerk clerk = clerkService.updateClerk(clerkEditDTO); StoreMember entity = new LambdaQueryChainWrapper<>(baseMapper) .eq(StoreMember::getMemberId,clerk.getMemberId()) .one(); if (entity == null){ //插入 entity = new StoreMember(); entity.setMemberId(clerk.getMemberId()); entity.setRealName(form.getRealName()); baseMapper.insert(entity); }else { //修改真实姓名 entity.setRealName(form.getRealName()); baseMapper.updateById(entity); } return Result.ok("修改成功"); } /** * 批量删除 * @param ids * @return */ @Override public Result remove(List ids) { baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); } /** * id删除 * @param id * @return */ @Override public Result removeById(String id) { ClerkVO clerkVO =clerkService.get(id); List ids = new ArrayList<>(); ids.add(id); clerkService.deleteClerk(ids); baseMapper.delete(new LambdaQueryChainWrapper<>(baseMapper) .eq(StoreMember::getMemberId,clerkVO.getMemberId())); //同时删除用户 // 用户角色 return Result.ok("删除成功"); } /** * 分页查询 * @param query * @return */ @Override public Result page(StoreMemberQuery query) { String storeId = UserContext.getCurrentUser().getStoreId(); //TODO 不通过UserContext获得店铺id,通过会员id查询数据库里的商店id // String storeId = "1376433565247471616"; if (storeId == null) { return Result.error("当前登录账户未绑定商户或用户id获取异常"); } System.out.println(query.getPageNumber()); IPage page = PageUtil.getPage(query, ClerkVO.class); query.setStoreId(storeId); baseMapper.getClerkPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { ClerkVO clerkVO = clerkService.get(id); StoreMember storeMember = new LambdaQueryChainWrapper<>(baseMapper) .eq(StoreMember::getMemberId, clerkVO.getMemberId()) .one(); if (storeMember != null) { clerkVO.setRealName(storeMember.getRealName()); } //密码是否需要解密 Assert.notNull(clerkVO, "记录不存在"); return Result.ok().data(clerkVO); } /** * 列表 * @return */ @Override public Result all() { List entities = baseMapper.selectList(null); List vos = entities.stream() .map(entity -> StoreMemberVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } // 获得当前账号的用户店员信息 public ClerkVO getUserContextClerkInfo(){ String id = UserContext.getCurrentUser().getId(); Clerk clerk = clerkService.getClerkByMemberId(id); if (clerk == null){ throw new RuntimeException("获取店员信息异常"); } return clerkService.get(clerk.getId()); } @Override public Result checkDelAndUpdatePermission() { ClerkVO clerkVO = getUserContextClerkInfo(); CheckClerkPermissionVO permissionVO = new CheckClerkPermissionVO(); permissionVO.setClerkId(clerkVO.getId()); permissionVO.setIsShopkeeper(clerkVO.getShopkeeper()); permissionVO.setIsSuper(clerkVO.getIsSuper()); return Result.ok().data(permissionVO); } }