liujie
3 天以前 d130547c1f3b64cf8544261cdf1d9146ff319756
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemUserServiceImpl.java
@@ -1,36 +1,63 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.beust.jcommander.internal.Lists;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.sangeshenbian.dao.SystemUserLevelMapper;
import com.panzhihua.sangeshenbian.dao.SystemUserMapper;
import com.panzhihua.sangeshenbian.model.entity.ComAct;
import com.panzhihua.sangeshenbian.model.entity.ComStreet;
import com.panzhihua.sangeshenbian.model.entity.PartyMember;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.model.entity.SystemUserLevel;
import com.panzhihua.sangeshenbian.model.vo.RegionVO;
import com.panzhihua.sangeshenbian.service.IComActService;
import com.panzhihua.sangeshenbian.service.IComStreetService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.warpper.SystemUserList;
import com.panzhihua.sangeshenbian.warpper.SystemUserListVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 22:30
 */
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemUser> implements ISystemUserService {
   private final IComActService comActService;
   private final SystemUserLevelMapper systemUserLevelMapper;
   private final IComStreetService comStreetService;
   /**
    * 获取列表数据
    * @param query
    * @return
    */
   @Override
   public IPage<SystemUserListVo> list(Integer accountLevel, SystemUserList query) {
   public IPage<SystemUserListVo> list(SystemUser user, SystemUserList query) {
      Page page = new Page<>();
      page.setCurrent(query.getPageNum());
      page.setSize(query.getPageSize());
      IPage<SystemUserListVo> list = this.baseMapper.list(page, accountLevel, query);
      IPage<SystemUserListVo> list = this.baseMapper.list(page, user, query);
      list.getRecords().forEach(item -> {
         List<SystemUserLevel> systemUserLevels = systemUserLevelMapper.selectList(new LambdaQueryWrapper<SystemUserLevel>().eq(SystemUserLevel::getStatus,1).eq(SystemUserLevel::getSystemUserId, item.getId()));
         systemUserLevels.sort(Comparator.comparing(SystemUserLevel::getLevel));
         item.setList(systemUserLevels);
      });
      return list;
   }
@@ -40,7 +67,7 @@
    * @return
    */
   @Override
   public Optional<SystemUser> getSystemUserByPhone(String phone) {
   public Optional<SystemUser> getSystemUserAdminByPhone(String phone) {
      if (StringUtils.isBlank(phone)) {
         return Optional.empty();
      }
@@ -48,4 +75,100 @@
            .eq(SystemUser::getPhone, phone).ne(SystemUser::getStatus, 3)
            .eq(SystemUser::getIsAdmin, 1).last("LIMIT 1").oneOpt();
   }
   @Override
   public Optional<SystemUser> getSystemUserByPhone(String phone) {
      if (StringUtils.isBlank(phone)) {
         return Optional.empty();
      }
      return this.lambdaQuery()
            .eq(SystemUser::getPhone, phone).ne(SystemUser::getStatus, 3).last("LIMIT 1").oneOpt();
   }
   /**
    * 获取行政区划数据
    *
    * @param pcode
    * @return
    */
   @Override
   public List<RegionVO> getRegion(String pcode) {
      return this.baseMapper.getRegion(pcode);
   }
   /**
    * 获取街道数据
    *
    * @param areaCode
    * @return
    */
   @Override
   public List<RegionVO> getStreet(String areaCode) {
      return this.baseMapper.getStreet(areaCode);
   }
   /**
    * 获取社区数据
    *
    * @param streetId
    * @return
    */
   @Override
   public List<RegionVO> getCommunity(String streetId) {
      return this.baseMapper.getCommunity(streetId);
   }
   /**
    * 获取区县-街道-社区树
    * @return
    */
   @Override
   public List<RegionVO> getRegionTree(SystemUserVo loginUserInfo) {
      log.info("getRegionTree入参:{}",JSONObject.toJSONString(loginUserInfo));
      SystemUser systemUser = getById(loginUserInfo.getId());
      Integer accountLevel = systemUser.getAccountLevel();
      List<RegionVO> regionTree = new ArrayList<>();
      switch (accountLevel) {
         case 1:
            regionTree = baseMapper.getRegion("510400");
            baseMapper.getStreet("510400");
            regionTree.forEach(district -> {
               List<RegionVO> streets = baseMapper.getStreet(district.getId());
               district.setChildren(streets);
               streets.forEach(street -> {
                  List<RegionVO> communities = baseMapper.getCommunity(street.getId());
                  street.setChildren(communities);
               });
            });
            break;
         case 2:
            regionTree = baseMapper.getStreet(systemUser.getDistrictsCode());
            regionTree.forEach(regionVO->{
               List<RegionVO> communities = baseMapper.getCommunity(regionVO.getId());
               regionVO.setChildren(communities);
            });
            break;
         case 3:
            ComStreet street = comStreetService.getById(systemUser.getStreetId());
            RegionVO streetVO = new RegionVO();
            streetVO.setId(street.getStreetId());
            streetVO.setName(street.getName());
            List<RegionVO> communities = baseMapper.getCommunity(systemUser.getStreetId());
            streetVO.setChildren(communities);
            regionTree = Lists.newArrayList(streetVO);
            break;
         case 4:
            ComAct byId = comActService.getById(systemUser.getCommunityId());
            RegionVO regionVO = new RegionVO();
            regionVO.setId(byId.getCommunityId().toString());
            regionVO.setName(byId.getName());
            regionTree = Lists.newArrayList(regionVO);
            break;
      }
      return regionTree;
   }
}