101captain
2022-01-14 2bc69b919ef626e6093d598d7eae07c8f9e3e0e4
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -1,10 +1,22 @@
package com.panzhihua.service_user.service.impl;
import java.util.*;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.entity.SysAppConfig;
import com.panzhihua.service_user.entity.SysTemplateConfig;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.BeanUtils;
@@ -23,26 +35,79 @@
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.DataKanBansDto;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.dtos.community.ExportUserDTO;
import com.panzhihua.common.model.dtos.community.NoticeReadDTO;
import com.panzhihua.common.model.dtos.grid.*;
import com.panzhihua.common.model.dtos.user.*;
import com.panzhihua.common.model.vos.*;
import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.community.convenient.DisableOrEnableConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.grid.EventGridMemberAddDTO;
import com.panzhihua.common.model.dtos.grid.EventGridMemberEditAdminDTO;
import com.panzhihua.common.model.dtos.grid.EventGridMemberEditStatusDTO;
import com.panzhihua.common.model.dtos.grid.EventGridMemberPassResetDTO;
import com.panzhihua.common.model.dtos.grid.PageEventGridMemberRelationDTO;
import com.panzhihua.common.model.dtos.user.EexcelUserDTO;
import com.panzhihua.common.model.dtos.user.PageFeedBackDTO;
import com.panzhihua.common.model.dtos.user.PageUserAppletsBackstageDTO;
import com.panzhihua.common.model.dtos.user.SysUserEditTipsDTO;
import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO;
import com.panzhihua.common.model.vos.AppletUserInfoVO;
import com.panzhihua.common.model.vos.EditUserInfoPassAppDTO;
import com.panzhihua.common.model.vos.IndexDataKanbanVO;
import com.panzhihua.common.model.vos.IndexDataVO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.SystemmanagementConfigVO;
import com.panzhihua.common.model.vos.community.ComActVO;
import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
import com.panzhihua.common.model.vos.community.IndexUserCommunityVo;
import com.panzhihua.common.model.vos.community.IndexUserStatisticsVo;
import com.panzhihua.common.model.vos.community.IndexUserStreetVo;
import com.panzhihua.common.model.vos.grid.GridMemberVO;
import com.panzhihua.common.model.vos.grid.admin.GridMemberBuildingVO;
import com.panzhihua.common.model.vos.partybuilding.ActivityManagerVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.model.dos.*;
import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
import com.panzhihua.common.model.vos.user.ChangePasswordVO;
import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
import com.panzhihua.common.model.vos.user.ComMngUserTagVO;
import com.panzhihua.common.model.vos.user.CommunityUserInfoVO;
import com.panzhihua.common.model.vos.user.MenuRoleVO;
import com.panzhihua.common.model.vos.user.NoticeUnReadVO;
import com.panzhihua.common.model.vos.user.SysOperLogVO;
import com.panzhihua.common.model.vos.user.SysUserAgreementVO;
import com.panzhihua.common.model.vos.user.SysUserFeedbackVO;
import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.model.vos.user.UpdateUserArchivesVO;
import com.panzhihua.common.model.vos.user.UserArchivesVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import com.panzhihua.common.utlis.IdCard;
import com.panzhihua.common.utlis.SensitiveUtil;
import com.panzhihua.common.utlis.Snowflake;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.service_user.model.dos.ComActFourMember;
import com.panzhihua.service_user.model.dos.ComMngFamilyInfoDO;
import com.panzhihua.service_user.model.dos.ComMngUserTagDO;
import com.panzhihua.service_user.model.dos.EventGridMemberBuildingRelationDO;
import com.panzhihua.service_user.model.dos.LcCompareCodeMemberDO;
import com.panzhihua.service_user.model.dos.SysMenuDO;
import com.panzhihua.service_user.model.dos.SysOperLogDO;
import com.panzhihua.service_user.model.dos.SysRoleDO;
import com.panzhihua.service_user.model.dos.SysRoleMenuDO;
import com.panzhihua.service_user.model.dos.SysUserAgreementDO;
import com.panzhihua.service_user.model.dos.SysUserDO;
import com.panzhihua.service_user.model.dos.SysUserFeedbackDO;
import com.panzhihua.service_user.model.dos.SysUserInputDO;
import com.panzhihua.service_user.model.dos.SysUserNoticeDO;
import com.panzhihua.service_user.model.dos.SysUserRoleDO;
import com.panzhihua.service_user.model.dtos.DataKanbanDTO;
import com.panzhihua.service_user.service.EventGridMemberBuildingRelationService;
import com.panzhihua.service_user.service.UserService;
import cn.hutool.core.util.IdcardUtil;
import lombok.extern.slf4j.Slf4j;
// import com.panzhihua.common.service.grid.GridService;
@@ -88,6 +153,12 @@
    private EventGridMemberBuildingRelationMapper eventGridMemberBuildingRelationMapper;
    @Resource
    private LcCompareMemberCodeMapper lcCompareMemberCodeMapper;
    @Resource
    private ComActFourMemberDao comActFourMemberDao;
    @Resource
    private SysAppConfigDao sysAppConfigDao;
    @Resource
    private SysTemplateConfigDao sysTemplateConfigDao;
    // @Resource
    // private GridService gridService;
@@ -239,7 +310,16 @@
        loginUserInfoVO.setType(sysUserDO.getType());
        loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard() != null);// 暂时 身份证判断实名制
        if(sysUserDO.getCommunityId()!=null){
            ComActVO comActVO = userDao.selectCommunity(sysUserDO.getCommunityId());
            loginUserInfoVO.setCommunityId(sysUserDO.getCommunityId());
            if(comActVO!=null){
                loginUserInfoVO.setComActVO(comActVO);
                SysAppConfig sysAppConfig=sysAppConfigDao.selectOne(new QueryWrapper<SysAppConfig>().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode()));
                if(sysAppConfig!=null){
                    loginUserInfoVO.setAppId(sysAppConfig.getAppId());
                    loginUserInfoVO.setAppSecret(sysAppConfig.getSecret());
                }
            }
        }
        List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId());
        Set<String> set = new HashSet<>();
@@ -276,6 +356,9 @@
            loginUserInfoVO.setRoles(set);
        }
        loginUserInfoVO.setIsmemberrole(2);
        loginUserInfoVO.setIsFourMember(2);
        loginUserInfoVO.setIsCommunityWorker(2);
        loginUserInfoVO.setIsPropertyWorker(2);
        // 志愿者状态
        String phone = sysUserDO.getPhone();
        Long userCommunityId = sysUserDO.getCommunityId();
@@ -283,6 +366,12 @@
            ComActVO comActVO = userDao.selectCommunity(userCommunityId);
            if (comActVO != null) {
                loginUserInfoVO.setCommunityName(comActVO.getName());
                loginUserInfoVO.setComActVO(comActVO);
                SysAppConfig sysAppConfig=sysAppConfigDao.selectOne(new QueryWrapper<SysAppConfig>().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode()));
                if(sysAppConfig!=null){
                    loginUserInfoVO.setAppId(sysAppConfig.getAppId());
                    loginUserInfoVO.setAppSecret(sysAppConfig.getSecret());
                }
            }
        }
        if (!ObjectUtils.isEmpty(phone)) {
@@ -293,12 +382,23 @@
                int state = comMngVolunteerMngVO.getState().intValue();
                loginUserInfoVO.setVolunteerStatus(state);
            }
            //是否四长四员
            Integer countFourMember=comActFourMemberDao.selectCount(new QueryWrapper<ComActFourMember>().lambda().eq(ComActFourMember::getIdCard,sysUserDO.getIdCard()));
            if(countFourMember>0){
                loginUserInfoVO.setIsFourMember(1);
            }
            //是否是社区物业人员
            int countPropertyWorker = userDao.countPropertyWorker(Long.parseLong(userId), userCommunityId);
            if (countPropertyWorker > 0) {
                loginUserInfoVO.setIsPropertyWorker(1);
            }
            // 是否是"管理员"或者 本社区 "社区团队"、"党委成员"
            Integer countTeam = userDao.selectCountTeam(phone, userCommunityId);
            Integer selectCountMemberRole = userDao.selectCountMemberRole(phone, userCommunityId);
            Integer isSysUser = userDao.selectCountSysUser(phone, userCommunityId);
            if (countTeam != null && countTeam > 0) {
                loginUserInfoVO.setIsmemberrole(1);
                loginUserInfoVO.setIsCommunityWorker(1);
            } else if (selectCountMemberRole != null && selectCountMemberRole > 0) {
                loginUserInfoVO.setIsmemberrole(1);
            } else if (isSysUser != null && isSysUser > 0) {
@@ -505,7 +605,8 @@
    @Override
    public R listTag() {
        List<String> list = new ArrayList<>();
        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper<>());
        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper<ComMngUserTagDO>()
                .eq(ComMngUserTagDO::getSysFlag,1));
        if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
            list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                .collect(Collectors.toList());
@@ -528,6 +629,7 @@
            if (ObjectUtils.isEmpty(sysUserDO)) {
                return R.fail("人员不存在");
            }
            BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
            List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO
                .selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
@@ -581,6 +683,9 @@
        if (!ObjectUtils.isEmpty(comActVO)) {
            loginUserInfoVO.setCommunityName(comActVO.getName());
        }
        //是否是社区物业人员
        int countPropertyWorker = userDao.countPropertyWorker(userId, loginUserInfoVO.getCommunityId());
        loginUserInfoVO.setIsPropertyWorker(countPropertyWorker > 0 ? 1 : 0);
        loginUserInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(loginUserInfoVO.getIdCard()));
        loginUserInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(loginUserInfoVO.getPhone()));
        return R.ok(loginUserInfoVO);
@@ -728,7 +833,7 @@
        sysUserDO.setIdCard(idCard);
        // 通过身份证号判断性别以及出生日期
        sysUserDO.setSex(IdCard.sex(idCard));
        sysUserDO.setBirthday(IdCard.birthDay(idCard));
        sysUserDO.setBirthday(IdcardUtil.getBirthDate(idCard));
        if (!StringUtils.isEmpty(loginUserInfoVO.getJob())) {
            sysUserDO.setJob(loginUserInfoVO.getJob());
        }
@@ -763,9 +868,10 @@
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    String accessToken = util.getAppAccessToken();
                    SysTemplateConfig sysTemplateConfig=sysTemplateConfigDao.selectOne(new QueryWrapper<SysTemplateConfig>().lambda().eq(SysTemplateConfig::getAreaCode, loginUserInfoVO.getComActVO()).eq(SysTemplateConfig::getType,5));
                    // 用户实名认证推送消息
                    WxUtil.sendSubscribeRZSH(user.getOpenid(), accessToken, "实名认证",
                        com.panzhihua.common.utlis.DateUtils.getCurrentDateStr(), "认证成功");
                        com.panzhihua.common.utlis.DateUtils.getCurrentDateStr(), "认证成功",sysTemplateConfig.getTemplateId());
                } catch (Exception e) {
                    log.error("推送用户订阅消息失败,失败原因:" + e.getMessage());
                }
@@ -998,6 +1104,8 @@
                throw new ServiceException("手机号已经存在");
            } else if (e.getMessage().contains("union_account_type")) {
                throw new ServiceException("账户已经存在");
            }else if(e.getMessage().contains("23000")){
                throw new ServiceException("手机号已存在");
            }
        }
@@ -1020,6 +1128,8 @@
                    throw new ServiceException("手机号已经存在");
                } else if (e.getMessage().contains("union_account_type")) {
                    throw new ServiceException("账户已经存在");
                }else if(e.getMessage().contains("23000")){
                    throw new ServiceException("手机号已存在");
                }
            }
@@ -1128,19 +1238,28 @@
        // 获取所有权限id
        List<SysMenuDO> menuDOList = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda()
            .eq(SysMenuDO::getCommunityId, 2l).orderByAsc(SysMenuDO::getOrderNum));
            .eq(SysMenuDO::getCommunityId, 2L).orderByAsc(SysMenuDO::getOrderNum));
        if (!menuDOList.isEmpty()) {
            menuIds = menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList());
            for (int i = 0; i < menuIds.size(); i++) {
                SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda()
                    .eq(SysRoleMenuDO::getMenuId, menuIds.get(i)).eq(SysRoleMenuDO::getRoleId, roleId));
                if (sysRoleMenuDO == null) {
                    sysRoleMenuDO = new SysRoleMenuDO();
                    sysRoleMenuDO.setMenuId(menuIds.get(i));
                    sysRoleMenuDO.setRoleId(roleId);
                    sysRoleMenuDAO.insert(sysRoleMenuDO);
                }
            List<SysRoleMenuDO> sysRoleMenuDOList = sysRoleMenuDAO.selectList(new QueryWrapper<SysRoleMenuDO>().lambda().eq(SysRoleMenuDO::getRoleId, roleId).in(SysRoleMenuDO::getMenuId, menuIds));
            if (!sysRoleMenuDOList.isEmpty()) {
                menuIds = menuIds.stream().filter(menuId -> !sysRoleMenuDOList.stream()
                        .anyMatch(sysRoleMenuDO -> sysRoleMenuDO.getMenuId().equals(menuId))).collect(Collectors.toList());
            }
            if (!menuIds.isEmpty()) {
                sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId);
            }
//            for (int i = 0; i < menuIds.size(); i++) {
//                SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda()
//                    .eq(SysRoleMenuDO::getMenuId, menuIds.get(i)).eq(SysRoleMenuDO::getRoleId, roleId));
//                if (sysRoleMenuDO == null) {
//                    sysRoleMenuDO = new SysRoleMenuDO();
//                    sysRoleMenuDO.setMenuId(menuIds.get(i));
//                    sysRoleMenuDO.setRoleId(roleId);
//                    sysRoleMenuDAO.insert(sysRoleMenuDO);
//                }
//            }
        }
        return R.ok();
    }
@@ -1596,9 +1715,9 @@
     * @return 展示数据
     */
    @Override
    public R dataKanban() {
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban();
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder();
    public R dataKanban(String areaCode) {
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(areaCode);
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(areaCode);
        List<String> communityUserX = new ArrayList<>();
        List<Integer> communityUserY = new ArrayList<>();
@@ -1994,7 +2113,7 @@
    @Override
    public R editSysUser(ShopStoreVO storeVO) {
        SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda()
            .eq(SysUserDO::getPhone, storeVO.getPhone()).eq(SysUserDO::getType, 5));
            .eq(SysUserDO::getPhone, storeVO.getStoreAccount()).eq(SysUserDO::getType, 5));
        if (sysUserDO1 == null) {
            return R.fail("未查询到后台管理用户!");
        }
@@ -2093,7 +2212,6 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addGridUser(EventGridMemberAddDTO eventGridMemberAddDTO) {
        SysRoleDO gridMemberDefaultRole = roleDAO.selectOne(
            new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, Constants.GRID_DEFAULT_ROLE_KEY));
        if (gridMemberDefaultRole == null) {
@@ -2493,4 +2611,200 @@
        }
        return R.fail();
    }
    @Override
    public R resetPasswordPatch(Long[] userId,String password) {
        if(userId!=null){
            for(Long user:userId){
                SysUserDO sysUserDO = new SysUserDO();
                sysUserDO.setUserId(user);
                String encode = new BCryptPasswordEncoder().encode(password);
                sysUserDO.setPassword(encode);
                userDao.updateById(sysUserDO);
            }
        }
        return R.ok();
    }
    /**
     * 便民服务新增商家账号
     * @param convenientMerchantDTO
     * @return 商家用户id
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addConvenientMerchantUser(ConvenientMerchantDTO convenientMerchantDTO) {
        SysUserDO sysUserDO;
        sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, convenientMerchantDTO.getAccount()));
        if (nonNull(sysUserDO)) {
            return R.fail("账户已经存在");
        }
        // sys_user 表
        sysUserDO = new SysUserDO();
        String encode = new BCryptPasswordEncoder().encode(convenientMerchantDTO.getPassword());
        BeanUtils.copyProperties(convenientMerchantDTO, sysUserDO);
        sysUserDO.setAccount(convenientMerchantDTO.getAccount());
        sysUserDO.setType(10);
        sysUserDO.setAreaId(null);
        sysUserDO.setStatus(1);
        sysUserDO.setPhone(null);
        sysUserDO.setName(convenientMerchantDTO.getContacts());
        sysUserDO.setPassword(encode);
        try {
            userDao.insert(sysUserDO);
            return R.ok(sysUserDO.getUserId());
        } catch (Exception e) {
            e.printStackTrace();
            log.error("新增后台用户报错【{}】", e.getMessage());
        }
        return R.fail("新增商户发生错误");
    }
    /**
     * 修改便民服务商家绑定账号
     * @param userId 用户id
     * @param account 修改账户
     * @return 修改结果
     */
    @Override
    public R putUserAccount(Long userId, String account) {
        SysUserDO sysUserDO = userDao.selectById(userId);
        if (isNull(sysUserDO)) {
            return R.fail("用户不存在");
        }
        sysUserDO.setAccount(account);
        userDao.updateById(sysUserDO);
        return R.ok();
    }
    // /**
    //  * 修改便民服务商家绑定账号
    //  * @param userId 用户id
    //  * @param account 修改账户
    //  * @return 修改结果
    //  */
    // @Override
    // public R putUserAccount(Long userId, String account) {
    //     SysUserDO sysUserDO = userDao.selectById(userId);
    //     if (isNull(sysUserDO)) {
    //         return R.fail("用户不存在");
    //     }
    //     String oldAccount = sysUserDO.getAccount();
    //     sysUserDO.setAccount(account);
    //     int result = userDao.updateById(sysUserDO);
    //     if (result > 0) {
    //         SysRoleDO sysRoleDO = roleDAO.selectOne(new QueryWrapper<SysRoleDO>()
    //                 .lambda().eq(SysRoleDO::getRoleKey, Constants.CONVENIENT_MERCHANT_ROLE_KEY + oldAccount));
    //         if (nonNull(sysRoleDO)) {
    //             sysRoleDO.setRoleKey(Constants.CONVENIENT_MERCHANT_ROLE_KEY + account);
    //             roleDAO.updateById(sysRoleDO);
    //         }
    //     }
    //     return R.ok();
    // }
    @Override
    public R disableOrEnableMerchantUsers(DisableOrEnableConvenientMerchantDTO disableOrEnableConvenientMerchantDTO) {
        userDao.disableOrEnableMerchantUsers(disableOrEnableConvenientMerchantDTO.getType(), disableOrEnableConvenientMerchantDTO.getUserIds());
        return R.ok();
    }
    /**
     * 根据openid维护社区团队里是否注册
     * @param openid    用户微信唯一标识
     */
    @Override
    public void judgeCommunityTeam(String openid){
        //查询用户信息
        SysUserDO userDO = this.userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid,openid));
        if(userDO != null && StringUtils.isNotEmpty(userDO.getPhone())){
            if(this.userDao.getCommunityTeamCount(userDO.getPhone()) > 0){
                this.userDao.judgeCommunityTeam(userDO.getPhone());
            }
        }
    }
    /**
     * 数据看板升级版
     *
     * @return 运营后台数据看板升级版
     */
    @Override
    public R dataKanBans(DataKanBansDto dataKanBansDto){
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(dataKanBansDto.getAreaCode());
        List<String> communityUserX = new ArrayList<>();
        List<Integer> communityUserY = new ArrayList<>();
        List<String> communityActiveUserX = new ArrayList<>();
        List<Integer> communityActiveUserY = new ArrayList<>();
        List<Integer> communityActiveUserZ = new ArrayList<>();
        List<DataKanbanDTO> dataKanbanDTOS = null;
        if(dataKanBansDto.getType() != null && dataKanBansDto.getType().equals(DataKanBansDto.type.by)){
            dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(dataKanBansDto.getAreaCode());
        }else{
            dataKanbanDTOS = userDao.selectCommunityUserOrder(dataKanBansDto.getAreaCode());
        }
        if (!ObjectUtils.isEmpty(dataKanbanDTOS)) {
            dataKanbanDTOS.forEach(dataKanbanDTO -> {
                communityUserX.add(dataKanbanDTO.getName());
                communityUserY.add(dataKanbanDTO.getNum());
            });
        }
        // 获取最近二十天数据
        List<Date> serverndays = com.panzhihua.common.utlis.DateUtils.getOldDays();
        serverndays.forEach(date -> {
            // 查询社区活动数量
            DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAreaCode(),date);
            communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd"));
            communityActiveUserY.add(dataKanbanDTO.getNum());
            communityActiveUserZ.add(dataKanbanDTO.getDayNum());
        });
        indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX);
        indexDataKanbanVO.setCommunityAddUserY(communityActiveUserY);
        indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserZ);
        indexDataKanbanVO.setCommunityUserX(communityUserX);
        indexDataKanbanVO.setCommunityUserY(communityUserY);
        return R.ok(indexDataKanbanVO);
    }
    /**
     * 运营后台-用户数据统计汇总
     * @return  用户数据统计汇总
     */
    @Override
    public R communityStatistics(String areaCode){
        //返回结果数据
        IndexUserStatisticsVo userStatisticsVo = new IndexUserStatisticsVo();
        //查询所有街道
        List<IndexUserStreetVo> streetList = userDao.getUserStreetList(areaCode);
        streetList.forEach(street -> {
            List<IndexUserCommunityVo> communityList = userDao.getUserCommunityList(street.getStreetId());
            street.setCommunityList(communityList);
        });
        userStatisticsVo.setStreetList(streetList);
        return R.ok(userStatisticsVo);
    }
    @Override
    public R communityStatisticsExport(String areaCode){
        return R.ok(userDao.getUserCommunityExcelExport(areaCode));
    }
    /**
     * 通过UnionId获取用户信息
     * @param unionId
     * @return
     */
    @Override
    public R getUserInfoByUnionId(String unionId) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getUnionid, unionId));
        if (isNull(sysUserDO)) {
            return R.fail("用户不存在");
        }
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
        return R.ok(loginUserInfoVO);
    }
}