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().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().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().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 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 iPage = comActDAO.pageCommunity(page, pageComActDTO); return R.ok(iPage); } /** * 查询平台所有的社区 * * @return 社区集合 按照创建顺序倒序排列 */ @Override public R listCommunityAll(String areaCode) { List comActDOS = comActDAO.selectList(new QueryWrapper().lambda().eq(ComActDO::getState, 0) .eq(ComActDO::getAreaCode, areaCode).orderByDesc(ComActDO::getCreateAt)); List 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 streetList = this.comActDAO.getStreetList(appId); streetList.forEach(street -> { // 查询街道下社区列表 List 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 comPbMemberTypeVOS = comPbMemberDAO.statisticsPbMemberType(); return R.ok(comPbMemberTypeVOS); } public R selectUnitByNatureName(){ List comPbMemberTypeVOS = comPbMemberDAO.selectUnitByNatureName(); return R.ok(comPbMemberTypeVOS); } }