/*
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
*
|
* Redistributions of source code must retain the above copyright notice,
|
* this list of conditions and the following disclaimer.
|
* Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* Neither the name of the dreamlu.net developer nor the names of its
|
* contributors may be used to endorse or promote products derived from
|
* this software without specific prior written permission.
|
* Author: Chill 庄骞 (smallchill@163.com)
|
*/
|
package org.springblade.modules.ownersCommittee.service.impl;
|
|
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;
|
import org.springblade.modules.district.entity.DistrictEntity;
|
import org.springblade.modules.district.service.IDistrictService;
|
import org.springblade.modules.ownersCommittee.dto.OwnersCommitteeDTO;
|
import org.springblade.modules.ownersCommittee.entity.OwnersCommitteeEntity;
|
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;
|
|
/**
|
* 业委会表 服务实现类
|
*
|
* @author BladeX
|
* @since 2023-12-19
|
*/
|
@Service
|
public class OwnersCommitteeServiceImpl extends ServiceImpl<OwnersCommitteeMapper, OwnersCommitteeEntity> implements IOwnersCommitteeService {
|
|
@Override
|
public IPage<OwnersCommitteeVO> selectOwnersCommitteePage(IPage<OwnersCommitteeVO> page, OwnersCommitteeVO ownersCommittee) {
|
String userRole = AuthUtil.getUserRole();
|
// 街道身份,只查找该街道下面的业委会
|
if (userRole.contains("jdgly")) {
|
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));
|
List<String> fieldValues = list.stream().map(DistrictEntity::getId).collect(Collectors.toList());
|
ownersCommittee.setAreaIdList(fieldValues);
|
}
|
return page.setRecords(baseMapper.selectOwnersCommitteePage(page, ownersCommittee));
|
}
|
|
/**
|
* 查询业委会表
|
*
|
* @param id 业委会表ID
|
* @return 业委会表
|
*/
|
@Override
|
public OwnersCommitteeDTO selectOwnersCommitteeById(Integer id) {
|
return this.baseMapper.selectOwnersCommitteeById(id);
|
}
|
|
/**
|
* 查询业委会表列表
|
*
|
* @param ownersCommitteeDTO 业委会表
|
* @return 业委会表集合
|
*/
|
@Override
|
public List<OwnersCommitteeDTO> selectOwnersCommitteeList(OwnersCommitteeDTO ownersCommitteeDTO) {
|
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;
|
}
|
}
|