linwe
2024-08-09 8b7258c9427882bb1798f1502eaa35184c6e374e
src/main/java/org/springblade/modules/ownersCommittee/service/impl/OwnersCommitteeServiceImpl.java
@@ -19,6 +19,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import liquibase.repackaged.org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.SysCache;
import org.springblade.common.utils.SpringUtils;
import org.springblade.core.secure.utils.AuthUtil;
@@ -29,8 +30,12 @@
import org.springblade.modules.ownersCommittee.mapper.OwnersCommitteeMapper;
import org.springblade.modules.ownersCommittee.service.IOwnersCommitteeService;
import org.springblade.modules.ownersCommittee.vo.OwnersCommitteeVO;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -48,7 +53,7 @@
      String userRole = AuthUtil.getUserRole();
      // 街道身份,只查找该街道下面的业委会
      if (userRole.contains("jdgly")) {
         List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
         List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId(),null);
         IDistrictService bean = SpringUtils.getBean(IDistrictService.class);
         List<DistrictEntity> list = bean.list(Wrappers.<DistrictEntity>lambdaQuery()
            .in(DistrictEntity::getCommunityCode, regionChildCodesList));
@@ -80,4 +85,83 @@
      return this.baseMapper.selectOwnersCommitteeList(ownersCommitteeDTO);
   }
   @Override
   public Boolean saveOrUpdateOwnersCommittee(OwnersCommitteeEntity ownersCommittee) {
      boolean b = saveOrUpdate(ownersCommittee);
      if (b) {
         // 更新负责人用户角色
         IUserService bean = SpringUtils.getBean(IUserService.class);
         User userInfo = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, ownersCommittee.getPrincipalId()));
         // 判断角色
         if (!userInfo.getRoleId().contains("1759487358708310017")) {
            userInfo.setRoleId(userInfo.getRoleId() + ",1759487358708310017");
         }
         bean.updateById(userInfo);
      }
      //
      return b;
   }
   @Override
   public Boolean updateOwnersCommittee(OwnersCommitteeEntity ownersCommittee) {
      OwnersCommitteeEntity one = getOne(Wrappers.<OwnersCommitteeEntity>lambdaQuery().eq(OwnersCommitteeEntity::getId, ownersCommittee.getId()));
      // 负责人没有变化
      if(one.getPrincipalId().equals(ownersCommittee.getPrincipalId())){
         // 更新业委会信息
         return updateById(ownersCommittee);
      }
      // 负责人有变化
      // 1.更新原负责人用户角色
      IUserService bean = SpringUtils.getBean(IUserService.class);
      User userInfo = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, one.getPrincipalId()));
      // 判断角色
      if (userInfo.getRoleId().contains("1759487358708310017")) {
         userInfo.setRoleId(userInfo.getRoleId().replace("1759487358708310017", ""));
      }
      List<String> stringList = Arrays.asList(userInfo.getRoleId().split(","));
      // 查询是否对应有业委会负责人,如果有则删除,如果没有则不删除对应的角色
      List<String> arrayList = new ArrayList<>();
      for (String roleId : stringList) {
         if (!roleId.equals("1759487358708310017")) {
            arrayList.add(roleId);
         }
      }
      userInfo.setRoleId(StringUtils.join(arrayList, ","));
      bean.updateById(userInfo);
      // 2.更新现在的负责人
      User userInfoNew = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, ownersCommittee.getPrincipalId()));
      // 判断角色
      if (!userInfoNew.getRoleId().contains("1759487358708310017")) {
         userInfoNew.setRoleId(userInfo.getRoleId() + ",1759487358708310017");
      }
      bean.updateById(userInfoNew);
      // 3.更新业委会信息
      return updateById(ownersCommittee);
   }
   @Override
   public Boolean removeOwnersCommittee(List<Long> toLongList) {
      for (Long aLong : toLongList) {
         OwnersCommitteeEntity ownersCommittee = getOne(Wrappers.<OwnersCommitteeEntity>lambdaQuery().eq(OwnersCommitteeEntity::getId, aLong));
         // 更新负责人用户角色
         IUserService bean = SpringUtils.getBean(IUserService.class);
         User userInfo = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, ownersCommittee.getPrincipalId()));
         // 判断角色
         if (userInfo.getRoleId().contains("1759487358708310017")) {
            userInfo.setRoleId(userInfo.getRoleId().replace("1759487358708310017", ""));
         }
         List<String> stringList = Arrays.asList(userInfo.getRoleId().split(","));
         // 查询是否对应有业委会负责人,如果有则删除,如果没有则不删除对应的角色
         List<String> arrayList = new ArrayList<>();
         for (String roleId : stringList) {
            if (!roleId.equals("1759487358708310017")) {
               arrayList.add(roleId);
            }
         }
         userInfo.setRoleId(StringUtils.join(arrayList, ","));
         bean.updateById(userInfo);
         return removeById(ownersCommittee);
      }
      return false;
   }
}