package com.panzhihua.service_community.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.Comparator;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
import javax.annotation.Resource;
|
|
import com.panzhihua.common.model.vos.community.ComActPasswordVo;
|
import com.panzhihua.common.model.vos.community.ComBasicDataVo;
|
import com.panzhihua.common.model.vos.partybuilding.ComPbMemberTypeVO;
|
import com.panzhihua.service_community.dao.ComPbMemberDAO;
|
import com.panzhihua.service_community.util.MyAESUtil;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.panzhihua.common.model.dtos.community.PageComActDTO;
|
import com.panzhihua.common.model.dtos.community.switchs.SearchCommunityDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComActVO;
|
import com.panzhihua.common.model.vos.community.switchs.CommunitySwitchAllAppletsVO;
|
import com.panzhihua.common.model.vos.community.switchs.StreetAllAppletsVO;
|
import com.panzhihua.service_community.dao.ComActDAO;
|
import com.panzhihua.service_community.dao.ComStreetDAO;
|
import com.panzhihua.service_community.model.dos.ComActDO;
|
import com.panzhihua.service_community.model.dos.ComStreetDO;
|
import com.panzhihua.service_community.service.ComActService;
|
|
/**
|
* @program: springcloud_k8s_panzhihuazhihuishequ
|
* @description: 社区
|
* @author: huang.hongfa weixin hhf9596 qq 959656820
|
* @create: 2020-12-15 10:13
|
**/
|
@Service
|
public class ComActServiceImpl implements ComActService {
|
@Resource
|
private ComActDAO comActDAO;
|
@Resource
|
private ComStreetDAO comStreetDAO;
|
@Resource
|
private ComPbMemberDAO comPbMemberDAO;
|
|
/**
|
* 新增社区
|
*
|
* @param comActVO
|
* 社区信息
|
* @return 新增结果
|
*/
|
@Override
|
public R addCommunity(ComActVO comActVO) {
|
String password = comActVO.getPassword();
|
String encode = new BCryptPasswordEncoder().encode(password);
|
comActVO.setPassword(encode);
|
ComStreetDO comStreetDO = comStreetDAO.selectById(comActVO.getStreetId());
|
if (comStreetDO == null) {
|
return R.fail("当前街道不存在!");
|
}
|
ComActDO comActDO = new ComActDO();
|
Integer integer =
|
comActDAO.selectCount(new QueryWrapper<ComActDO>().lambda()
|
.eq(ComActDO::getName, comActVO.getName())
|
.eq(ComActDO::getCityCode,comActVO.getCityCode())
|
.eq(ComActDO::getAreaCode,comActVO.getAreaCode())
|
.eq(ComActDO::getProvinceCode,comActVO.getProvinceCode())
|
.eq(ComActDO::getAppId,comActVO.getAppId())
|
);
|
if (integer > 0) {
|
return R.fail("社区已经存在");
|
}
|
BeanUtils.copyProperties(comActVO, comActDO);
|
comActDO.setPlaintextPassword(password);
|
int insert = comActDAO.insert(comActDO);
|
if (insert > 0) {
|
ComActDO comActDO1 =
|
comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda()
|
.eq(ComActDO::getCommunityId, comActVO.getCommunityId())
|
);
|
BeanUtils.copyProperties(comActDO1, comActVO);
|
return R.ok(comActVO);
|
}
|
return R.fail();
|
}
|
|
/**
|
* 编辑社区
|
*
|
* @param comActVO
|
* 编辑内容
|
* @return 编辑结果
|
*/
|
@Override
|
public R putCommunity(ComActVO comActVO) {
|
ComActDO comActDO = new ComActDO();
|
String password = comActVO.getPassword();
|
String account = comActVO.getAccount();
|
Long communityId = comActVO.getCommunityId();
|
// String contacts = comActVO.getContacts();
|
int a = 0;
|
if (!ObjectUtils.isEmpty(password)) {
|
String encode = new BCryptPasswordEncoder().encode(password);
|
comActVO.setPassword(encode);
|
comActDO.setPlaintextPassword(password);
|
a = 1;
|
}
|
ComStreetDO comStreetDO = comStreetDAO.selectById(comActVO.getStreetId());
|
if (comStreetDO == null) {
|
return R.fail("当前街道不存在!");
|
}
|
// if(!ObjectUtils.isEmpty(account)||!ObjectUtils.isEmpty(contacts)){
|
// a=1;
|
// }
|
BeanUtils.copyProperties(comActVO, comActDO);
|
// ComActDO selectOne = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getAccount, account));
|
// if (null != selectOne && selectOne.getAccount().equals(comActVO.getAccount())) {
|
// return R.fail("该登录账号重复,请重新修改");
|
// }
|
int update = comActDAO.updateById(comActDO);
|
if (update > 0) {
|
if (a == 1) {
|
// 修改登录账户的密码
|
comActDAO.updateAccountPassword(comActVO.getPassword(), account, communityId);
|
}
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 查询社区
|
*
|
* @param comActVO
|
* 登录人的经纬度、或者指定区域的社区
|
* @return 社区集合
|
*/
|
@Override
|
public R listCommunity(ComActVO comActVO) {
|
List<ComActVO> comActVOS = comActDAO.listCommunity(comActVO);
|
return R.ok(comActVOS);
|
}
|
|
/**
|
* 社区详情
|
*
|
* @param communityId
|
* 社区id
|
* @return 社区详情
|
*/
|
@Override
|
public R detailCommunity(Long communityId) {
|
ComActDO comActDO = comActDAO.selectById(communityId);
|
if (ObjectUtils.isEmpty(comActDO)) {
|
return R.fail();
|
}
|
ComActVO comActVO = new ComActVO();
|
BeanUtils.copyProperties(comActDO, comActVO);
|
comActVO.setAreaName(comActDAO.selectAreaName(comActVO.getAreaCode()));
|
comActVO.setAccount(null);
|
comActVO.setPassword(null);
|
comActVO.setAddress(null);
|
comActVO.setContacts(null);
|
comActVO.setCreateAt(null);
|
comActVO.setState(null);
|
comActVO.setDistance(null);
|
return R.ok(comActVO);
|
}
|
|
/**
|
* 分页查询社区
|
*
|
* @param pageComActDTO
|
* 查询参数
|
* @return 分页集合
|
*/
|
@Override
|
public R pageCommunity(PageComActDTO pageComActDTO) {
|
Page page = new Page<>();
|
Long pageNum = pageComActDTO.getPageNum();
|
Long pageSize = pageComActDTO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1l;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10l;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<ComActVO> iPage = comActDAO.pageCommunity(page, pageComActDTO);
|
return R.ok(iPage);
|
}
|
|
/**
|
* 查询平台所有的社区
|
*
|
* @return 社区集合 按照创建顺序倒序排列
|
*/
|
@Override
|
public R listCommunityAll(String areaCode) {
|
List<ComActDO> comActDOS = comActDAO.selectList(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getState, 0)
|
.eq(ComActDO::getAreaCode, areaCode).orderByDesc(ComActDO::getCreateAt));
|
List<ComActVO> comActVOS = new ArrayList<>();
|
if (!ObjectUtils.isEmpty(comActDOS)) {
|
comActDOS.forEach(comActDO -> {
|
ComActVO comActVO = new ComActVO();
|
BeanUtils.copyProperties(comActDO, comActVO);
|
comActVOS.add(comActVO);
|
});
|
}
|
return R.ok(comActVOS);
|
}
|
|
/**
|
* 删除社区
|
*
|
* @param communityId
|
* 社区id
|
* @return 删除结果
|
*/
|
@Override
|
public R delectCommunity(Long communityId) {
|
int delete = comActDAO.deleteById(communityId);
|
if (delete > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 综治后台-查询社区列表
|
*
|
* @return 社区列表
|
*/
|
@Override
|
public R getCommunityLists(String appId) {
|
return R.ok(this.comActDAO.getCommunityLists(appId));
|
}
|
|
@Override
|
public R getWestCommunityLists(String areaCode) {
|
return R.ok(this.comActDAO.getWestCommunityLists(areaCode));
|
}
|
|
/**
|
* 查询社区所有列表
|
*
|
* @return 社区列表
|
*/
|
@Override
|
public R getCommunityAllList(String appId) {
|
// 查询街道列表
|
List<StreetAllAppletsVO> streetList = this.comActDAO.getStreetList(appId);
|
streetList.forEach(street -> {
|
// 查询街道下社区列表
|
List<CommunitySwitchAllAppletsVO> communityList =
|
this.comActDAO.getCommunityListByStreetId(street.getStreetId());
|
if (!communityList.isEmpty()) {
|
street.setChildList(communityList);
|
street.setCount(communityList.size());
|
}
|
});
|
streetList = streetList.stream().sorted(Comparator.comparing(StreetAllAppletsVO::getCount).reversed())
|
.collect(Collectors.toList());
|
return R.ok(streetList);
|
}
|
|
/**
|
* 根据名字查询所有社区列表
|
*
|
* @param name
|
* 社区名字
|
* @return 社区列表
|
*/
|
@Override
|
public R communitySwitchSearchList(String name,String appId) {
|
return R.ok(this.comActDAO.getCommunityListByName(name,appId));
|
}
|
|
/**
|
* 根据经纬度以及距离搜索附近社区列表
|
*
|
* @param communityDTO
|
* 请求参数
|
* @return 社区列表
|
*/
|
@Override
|
public R communitySwitchSearchDistanceList(SearchCommunityDTO communityDTO) {
|
return R.ok(this.comActDAO.getCommunityListByNearby(communityDTO));
|
}
|
|
@Override
|
public R getCommunityPassword(Long communityId){
|
ComActPasswordVo comActPasswordVo=comActDAO.getCommunityPassword(communityId);
|
try {
|
comActPasswordVo.setPassword(MyAESUtil.Decrypt(comActPasswordVo.getPassword(),"Ryo7M3n8loC5Abcd"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return R.ok(comActPasswordVo);
|
}
|
@Override
|
public R selectIds(Long id){
|
return R.ok(this.comActDAO.selectIds(id));
|
}
|
|
@Override
|
public R selectBasicData(){
|
//社区数
|
Integer community = comActDAO.countCommunity();
|
//商家数
|
Integer merchants = comActDAO.countMerchants();
|
//党员数
|
Integer pbMember = comActDAO.countPbMember();
|
//报道单位
|
Integer pbUnit = comActDAO.countPbUnit();
|
//实有人口
|
Integer population = comActDAO.countPopulation();
|
//实有房屋
|
Integer populationHouse = comActDAO.countPopulationHouse();
|
//社会组织
|
Integer socialOrg = comActDAO.countSocialOrg();
|
//志愿者
|
Integer volunteer = comActDAO.countVolunteer();
|
|
ComBasicDataVo comBasicDataVo = new ComBasicDataVo();
|
comBasicDataVo.setCommunity(community);
|
comBasicDataVo.setMerchants(merchants);
|
comBasicDataVo.setPbMember(pbMember);
|
comBasicDataVo.setPbUnit(pbUnit);
|
comBasicDataVo.setPopulation(population);
|
comBasicDataVo.setPopulationHouse(populationHouse);
|
comBasicDataVo.setSocialOrg(socialOrg);
|
comBasicDataVo.setVolunteer(volunteer);
|
return R.ok(comBasicDataVo);
|
}
|
|
@Override
|
public R statisticsPbMemberType(){
|
List<ComPbMemberTypeVO> comPbMemberTypeVOS = comPbMemberDAO.statisticsPbMemberType();
|
return R.ok(comPbMemberTypeVOS);
|
}
|
|
public R selectUnitByNatureName(){
|
List<ComPbMemberTypeVO> comPbMemberTypeVOS = comPbMemberDAO.selectUnitByNatureName();
|
return R.ok(comPbMemberTypeVOS);
|
}
|
}
|