yanghui
2022-10-14 4040856595952ea0b8f8b764ba2770d5c244c891
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -1,54 +1,40 @@
package com.panzhihua.service_user.service.impl;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
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.community.convenient.ConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.community.convenient.DisableOrEnableConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO;
import com.panzhihua.common.model.dtos.community.microCommercialStreet.McsMerchantDTO;
import com.panzhihua.common.model.dtos.grid.*;
import com.panzhihua.common.model.dtos.partybuilding.ComPbCheckUserDTO;
import com.panzhihua.common.model.dtos.user.*;
import com.panzhihua.common.model.vos.*;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.community.ComAreaTownCommunityVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidCheckRecordVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO;
import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO;
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.sanshuo.ComSanshuoExpertVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.entity.SysAppConfig;
import com.panzhihua.service_user.entity.SysTemplateConfig;
import com.panzhihua.service_user.model.dos.*;
import com.panzhihua.service_user.model.dtos.DataKanbanDTO;
import com.panzhihua.service_user.service.EventGridMemberBuildingRelationService;
import com.panzhihua.service_user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.BeanUtils;
@@ -59,16 +45,67 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.community.convenient.ConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.community.convenient.DisableOrEnableConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.community.microCommercialStreet.McsMerchantDTO;
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.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.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 static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import cn.hutool.core.util.IdcardUtil;
import lombok.extern.slf4j.Slf4j;
// import com.panzhihua.common.service.grid.GridService;
@@ -157,9 +194,12 @@
    /**
     * 小程序微信用户信息更新
     *
     * @param openid     小程序唯一ID
     * @param sessionKey 会话密钥
     * @param unionid    用户在开放平台的唯一标识符
     * @param openid
     *            小程序唯一ID
     * @param sessionKey
     *            会话密钥
     * @param unionid
     *            用户在开放平台的唯一标识符
     * @return token
     */
    @Override
@@ -201,10 +241,14 @@
    /**
     * 维护小程序用户基本信息 头像 昵称 性别
     *
     * @param userId    数据库用户ID
     * @param nickName  昵称
     * @param gender    性别
     * @param avatarUrl 头像
     * @param userId
     *            数据库用户ID
     * @param nickName
     *            昵称
     * @param gender
     *            性别
     * @param avatarUrl
     *            头像
     * @return 维护结果
     */
    @Override
@@ -225,8 +269,10 @@
    /**
     * 维护微信用户手机号
     *
     * @param userId          数据库ID
     * @param purePhoneNumber 没有区号的手机号
     * @param userId
     *            数据库ID
     * @param purePhoneNumber
     *            没有区号的手机号
     * @return 维护结果
     */
    @Override
@@ -250,17 +296,26 @@
    /**
     * 认证中心获取平台用户信息
     *
     * @param name 登录账户
     * @param type 用户类型 用户类型 1 小程序 2 运营平台 3 社区平台
     * @param name
     *            登录账户
     * @param type
     *            用户类型 用户类型 1 小程序 2 运营平台 3 社区平台
     * @return 用户基本信息、角色
     */
    @Override
    public R<LoginUserInfoVO> getUserInfo(String name, int type, String appId) {
        //是否为三说会堂行业分中心或专家后台账号
        SysUserDO sysUserDO = null;
        Boolean isIndustryOrExpertAccount=(userDao.isIndustryCenterAccount(name)>0 || userDao.isExpertAccount(name)>0);
        if (1 == type) {
            sysUserDO = userDao.selectOne(
                    new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name));
        } else {
        }else if(isIndustryOrExpertAccount) {
            //三说会堂行业分中心或专家后台账号登陆
            sysUserDO = userDao.selectOne(
                    new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, name).eq(SysUserDO::getAppId, appId));
        }
        else {
            LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type);
            if (type == 11) {
                //只允许通过account登录
@@ -312,7 +367,8 @@
    /**
     * 三端获取用户信息
     *
     * @param userId 用户ID
     * @param userId
     *            用户ID
     * @return 用户基本信息、角色
     */
    @Override
@@ -383,7 +439,8 @@
            if (nonNull(acidMember)) {
                if (acidMember.getRelationName().equals("panzhihua") || acidMember.getRelationName().equals("西区") || acidMember.getRelationName().equals("东区") || acidMember.getRelationName().equals("仁和区") || acidMember.getRelationName().equals("米易县") || acidMember.getRelationName().equals("盐边县")) {
                    loginUserInfoVO.setIsAcidMember(1);
                } else {
                }
                else {
                    loginUserInfoVO.setIsAcidMember(2);
                }
                loginUserInfoVO.setRelationName(acidMember.getRelationName());
@@ -395,7 +452,9 @@
            Long checkUnitId = userDao.selectCheckUnitId(phone);
            if (checkUnitId != null) {
                loginUserInfoVO.setCheckUnitId(checkUnitId);
            } else {
            }
            else {
                loginUserInfoVO.setIsCheckUnitAdmin(0);
            }
            //是否网格员
@@ -421,13 +480,43 @@
            }
        }
        loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard() != null);
        //是否社区或街道后台
        int countSocialOrg=userDao.countSocialOrg(sysUserDO.getUserId());
        if(countSocialOrg>0){
            loginUserInfoVO.setUserType(3);
        }
        else {
            if(loginUserInfoVO.getStreetId()!=null){
                loginUserInfoVO.setUserType(1);
                loginUserInfoVO.setLevel(3);
            }
            else {
                loginUserInfoVO.setUserType(2);
                loginUserInfoVO.setLevel(4);
            }
        }
        if (sysUserDO.getType().equals(11)){
            loginUserInfoVO.setLevel(5);
        }else if (sysUserDO.getType().equals(12)){
            loginUserInfoVO.setLevel(2);
        }else if (isNull(loginUserInfoVO.getLevel())){
            loginUserInfoVO.setLevel(1);
        }
        //是否为三说会堂专家
        ComSanshuoExpertVO expertVO=userDao.isExpert(loginUserInfoVO.getPhone());
        if (nonNull(expertVO)){
            loginUserInfoVO.setType(13);
        }
        return R.ok(loginUserInfoVO);
    }
    /**
     * 修改用户登录密码
     *
     * @param changePasswordVO 新密码
     * @param changePasswordVO
     *            新密码
     * @return 修改结果
     */
    @Override
@@ -459,8 +548,10 @@
    /**
     * 某社区后台人员查询
     *
     * @param param       名字
     * @param communityId 社区id
     * @param param
     *            名字
     * @param communityId
     *            社区id
     * @return 人员集合
     */
    @Override
@@ -487,8 +578,10 @@
    /**
     * 微心愿搜索社区团队人员列表
     *
     * @param param       请求参数
     * @param communityId 社区id
     * @param param
     *            请求参数
     * @param communityId
     *            社区id
     * @return 社区团队人员列表
     */
    @Override
@@ -499,7 +592,8 @@
    /**
     * 分页查询人脸识别
     *
     * @param loginUserInfoVO 查询参数
     * @param loginUserInfoVO
     *            查询参数
     * @return 分页集合
     */
    @Override
@@ -522,7 +616,8 @@
    /**
     * 编辑人脸采集数据通过、驳回、删除
     *
     * @param loginUserInfoVO 操作信息
     * @param loginUserInfoVO
     *            操作信息
     * @return 操作结果
     */
    @Override
@@ -559,7 +654,8 @@
    /**
     * 分页查询人口管理
     *
     * @param userInfoVO 查询参数
     * @param userInfoVO
     *            查询参数
     * @return 分页数据
     */
    @Override
@@ -624,7 +720,8 @@
    /**
     * 人员详情 detailuser
     *
     * @param userId 用户id
     * @param userId
     *            用户id
     * @return 人员详情
     */
    @Override
@@ -655,7 +752,8 @@
            loginUserInfoVO.setComActVO(comActVO);
            loginUserInfoVO.setCommunityName(comActVO.getName());
            loginUserInfoVO.setAreaCode(comActVO.getAreaCode());
        } else {
        }
        else{
            loginUserInfoVO.setAreaCode("510423");
        }
        //是否是社区物业人员
@@ -670,7 +768,8 @@
        if (nonNull(acidMember)) {
            if (acidMember.getRelationName().equals("panzhihua") || acidMember.getRelationName().equals("西区") || acidMember.getRelationName().equals("东区") || acidMember.getRelationName().equals("仁和区") || acidMember.getRelationName().equals("米易县") || acidMember.getRelationName().equals("盐边县")) {
                loginUserInfoVO.setIsAcidMember(1);
            } else {
            }
            else {
                loginUserInfoVO.setIsAcidMember(2);
            }
            loginUserInfoVO.setRelationName(acidMember.getRelationName());
@@ -681,12 +780,23 @@
        int countSocialOrg = userDao.countSocialOrg(userId);
        if (countSocialOrg > 0) {
            loginUserInfoVO.setUserType(3);
        } else {
        }
        else {
            if (loginUserInfoVO.getStreetId() != null) {
                loginUserInfoVO.setUserType(1);
            } else {
                loginUserInfoVO.setUserType(2);
                loginUserInfoVO.setLevel(3);
            }
            else {
                loginUserInfoVO.setUserType(2);
                loginUserInfoVO.setLevel(4);
            }
        }
        if (sysUserDO.getType().equals(11)){
            loginUserInfoVO.setLevel(5);
        }else if (sysUserDO.getType().equals(12)){
            loginUserInfoVO.setLevel(2);
        }else if (isNull(loginUserInfoVO.getLevel())){
            loginUserInfoVO.setLevel(1);
        }
        loginUserInfoVO.setBackstageType(1);
        String[] account = {"dongqu", "xiqu", "yanbianxian", "miyixian", "renhequ", "fantaixinqu"};
@@ -705,7 +815,8 @@
    /**
     * 设置用户标签
     *
     * @param loginUserInfoVO 标签信息
     * @param loginUserInfoVO
     *            标签信息
     * @return 设置结果
     */
    @Override
@@ -725,7 +836,8 @@
    /**
     * 修改用户志愿者状态
     *
     * @param phone 志愿者手机号
     * @param phone
     *            志愿者手机号
     * @param type
     */
    @Override
@@ -762,7 +874,8 @@
    /**
     * 修改用户志愿者状态
     *
     * @param userId 志愿者用户ID
     * @param userId
     *            志愿者用户ID
     * @param type
     */
    @Override
@@ -794,7 +907,8 @@
    /**
     * 用户绑定社区、小区
     *
     * @param loginUserInfoVO 社区小区数据
     * @param loginUserInfoVO
     *            社区小区数据
     * @return 绑定结果
     */
    @Override
@@ -817,7 +931,8 @@
    /**
     * 用户实名认证
     *
     * @param loginUserInfoVO 认证数据
     * @param loginUserInfoVO
     *            认证数据
     * @return 认证结果
     */
    @Override
@@ -890,7 +1005,8 @@
    /**
     * 修改用户手机号
     *
     * @param userPhoneVO 手机号信息
     * @param userPhoneVO
     *            手机号信息
     * @return 修改结果
     */
    @Override
@@ -934,7 +1050,8 @@
    /**
     * 修改用户信息
     *
     * @param loginUserInfoVO 修改内容
     * @param loginUserInfoVO
     *            修改内容
     * @return 修改结果
     */
    @Override
@@ -987,7 +1104,8 @@
    /**
     * 家庭成员列表
     *
     * @param userId 登录用户
     * @param userId
     *            登录用户
     * @return 成员集合
     */
    @Override
@@ -1009,7 +1127,8 @@
    /**
     * 新增家庭成员
     *
     * @param comMngFamilyInfoVO 家庭成员基本信息
     * @param comMngFamilyInfoVO
     *            家庭成员基本信息
     * @return 增加结果
     */
    @Override
@@ -1033,7 +1152,8 @@
    /**
     * 编辑家庭成员
     *
     * @param comMngFamilyInfoVO 家庭成员信息
     * @param comMngFamilyInfoVO
     *            家庭成员信息
     * @return 编辑结果
     */
    @Override
@@ -1051,7 +1171,8 @@
    /**
     * 新增运营、社区后台账户
     *
     * @param administratorsUserVO 账户信息
     * @param administratorsUserVO
     *            账户信息
     * @return 新增结果
     */
    @Override
@@ -1122,16 +1243,19 @@
                    menu.add(235L);
                    menu.add(236L);
                    menu.add(237L);
                } else if (administratorsUserVO.getSocialType() == 2) {
                }
                else if(administratorsUserVO.getSocialType()==2){
                    menu.add(233L);
                    menu.add(234L);
                    menu.add(236L);
                    menu.add(237L);
                    menu.add(238L);
                } else if (administratorsUserVO.getSocialType() == 3) {
                }
                else if(administratorsUserVO.getSocialType()==3){
                    menu.add(233L);
                    menu.add(237L);
                } else {
                }
                else {
                    menuRoleVO.setIsAll(1);
                }
                menuRoleVO.setMenuIds(menu);
@@ -1193,13 +1317,15 @@
                menu.add(302L);
                menu.add(303L);
                menu.add(304L);
            } else if (administratorsUserVO.getSocialType() == 2) {
            }
            else if(administratorsUserVO.getSocialType()==2){
                sysRoleDO.setRoleKey("social_org" + administratorsUserVO.getStreetId());
                menu.add(300L);
                menu.add(301L);
                menu.add(302L);
                menu.add(303L);
            } else if (administratorsUserVO.getSocialType() == 3) {
            }
            else if(administratorsUserVO.getSocialType()==3){
                sysRoleDO.setRoleKey("social_org_member" + administratorsUserVO.getStreetId());
                menu.add(300L);
                menu.add(303L);
@@ -1262,7 +1388,8 @@
    /**
     * 设置角色的权限
     *
     * @param menuRoleVO 用户设置的权限id
     * @param menuRoleVO
     *            用户设置的权限id
     * @return 设置结果
     */
    @Transactional(rollbackFor = Exception.class)
@@ -1318,7 +1445,8 @@
            if (!menuIds.isEmpty()) {
                if (menuRoleVO.getMenuIds() == null) {
                    sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId);
                } else {
                }
                else {
                    sysRoleMenuDAO.batchInsertWithRoleId(menuRoleVO.getMenuIds(), roleId);
                }
            }
@@ -1339,7 +1467,8 @@
    /**
     * 编辑运营、社区后台账户
     *
     * @param administratorsUserVO 编辑账户内容
     * @param administratorsUserVO
     *            编辑账户内容
     * @return 编辑结果
     */
    @Override
@@ -1387,7 +1516,8 @@
    /**
     * 删除后台用户
     *
     * @param administratorsUserVO 用户主键
     * @param administratorsUserVO
     *            用户主键
     * @return 删除结果
     */
    @Override
@@ -1418,7 +1548,8 @@
    /**
     * 分页查询后台用户
     *
     * @param administratorsUserVO 查询参数
     * @param administratorsUserVO
     *            查询参数
     * @return 后台用户
     */
    @Override
@@ -1441,7 +1572,8 @@
    /**
     * 保存操作日志
     *
     * @param operlog 日志内容
     * @param operlog
     *            日志内容
     * @return 保存结果
     */
    @Override
@@ -1469,7 +1601,8 @@
    /**
     * 分页展示操作日志
     *
     * @param sysOperLogVO 分页参数
     * @param sysOperLogVO
     *            分页参数
     * @return 分页集合
     */
    @Override
@@ -1513,7 +1646,8 @@
    /**
     * 编辑用户协议
     *
     * @param sysUserAgreementVO 编辑内容
     * @param sysUserAgreementVO
     *            编辑内容
     * @return 编辑结果
     */
    @Override
@@ -1530,7 +1664,8 @@
    /**
     * 用户标签
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 标签集合
     */
    @Override
@@ -1552,7 +1687,8 @@
    /**
     * 新增删除用户标签
     *
     * @param systemmanagementConfigVO 操作内容
     * @param systemmanagementConfigVO
     *            操作内容
     * @return 操作结果
     */
    @Override
@@ -1578,7 +1714,8 @@
    /**
     * 分页查询小程序用户
     *
     * @param pageUserAppletsBackstageDTO 查询参数
     * @param pageUserAppletsBackstageDTO
     *            查询参数
     * @return 分页集合
     */
    @Override
@@ -1595,7 +1732,8 @@
    /**
     * 编辑用户状态
     *
     * @param pageUserAppletsBackstageDTO 启用或者禁用 1 启用 2 禁用
     * @param pageUserAppletsBackstageDTO
     *            启用或者禁用 1 启用 2 禁用
     * @return 编辑结果
     */
    @Override
@@ -1615,7 +1753,8 @@
    /**
     * 调试接口--清除昵称、社区、小区
     *
     * @param userId 登录用户id
     * @param userId
     *            登录用户id
     * @return 清除结果
     */
    @Override
@@ -1630,7 +1769,8 @@
    /**
     * 用户协议和隐私政策
     *
     * @param type 所属app 1居民端app 2网格员端app 3商家端app
     * @param type
     *            所属app 1居民端app 2网格员端app 3商家端app
     * @return 协议内容
     */
    @Override
@@ -1643,7 +1783,8 @@
    /**
     * 意见反馈
     *
     * @param sysUserFeedbackDTO 反馈内容
     * @param sysUserFeedbackDTO
     *            反馈内容
     * @return 反馈结果
     */
    @Override
@@ -1661,7 +1802,8 @@
    /**
     * 分页通知列表
     *
     * @param pageDTO 分页参数
     * @param pageDTO
     *            分页参数
     * @return 分页结果
     */
    @Override
@@ -1692,7 +1834,8 @@
    /**
     * 通知已读
     *
     * @param noticeReadDTO 通知已读
     * @param noticeReadDTO
     *            通知已读
     * @return 修改状态
     */
    @Override
@@ -1719,7 +1862,8 @@
    /**
     * 分页查询用户意见反馈
     *
     * @param pageFeedBackDTO 分页查询参数
     * @param pageFeedBackDTO
     *            分页查询参数
     * @return 意见集合
     */
    @Override
@@ -1736,7 +1880,8 @@
    /**
     * 未读消息汇总
     *
     * @param userId 登录用户信息
     * @param userId
     *            登录用户信息
     * @return 未读汇总
     */
    @Override
@@ -1764,7 +1909,8 @@
    /**
     * 反馈意见详情
     *
     * @param id 反馈主键
     * @param id
     *            反馈主键
     * @return 反馈详情
     */
    @Override
@@ -1826,7 +1972,8 @@
    /**
     * 社区管理后台数据看板
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 看板用户数据
     */
    @Override
@@ -1853,7 +2000,8 @@
    /**
     * 新增用户通知
     *
     * @param sysUserNoticeVO 通知内容
     * @param sysUserNoticeVO
     *            通知内容
     * @return 新增结果
     */
    @Override
@@ -1870,7 +2018,8 @@
    /**
     * 修改用户的党员状态
     *
     * @param idCard 身份证号
     * @param idCard
     *            身份证号
     * @return 修改结果
     */
    @Override
@@ -1893,7 +2042,8 @@
    /**
     * 修改用户的党员状态
     *
     * @param phone 身份证号
     * @param phone
     *            身份证号
     * @return 修改结果
     */
    @Override
@@ -1916,7 +2066,8 @@
    /**
     * 修改用户的党员状态
     *
     * @param idCard 身份证号
     * @param idCard
     *            身份证号
     * @return 修改结果
     */
    @Override
@@ -1939,7 +2090,8 @@
    /**
     * 获取各种协议
     *
     * @param type 1居民端app协议 2网格员端app协议 3商家端app协议 4隐私政策
     * @param type
     *            1居民端app协议 2网格员端app协议 3商家端app协议 4隐私政策
     * @return 协议内容
     */
    @Override
@@ -1957,7 +2109,8 @@
    /**
     * 维护用户最后登录时间
     *
     * @param userId 用户主键
     * @param userId
     *            用户主键
     * @return 维护结果
     */
    @Override
@@ -1975,7 +2128,8 @@
    /**
     * 删除意见反馈
     *
     * @param id 主键
     * @param id
     *            主键
     * @return 删除结果
     */
    @Override
@@ -1990,7 +2144,8 @@
    /**
     * 校验小区是否存在
     *
     * @param areaName 小区名字
     * @param areaName
     *            小区名字
     * @return 校验结果
     */
    @Override
@@ -2011,7 +2166,8 @@
    /**
     * 社区人员详情包括导入人员
     *
     * @param userId 人员id
     * @param userId
     *            人员id
     * @return CommunityUserInfoVO
     */
    @Override
@@ -2064,7 +2220,8 @@
    /**
     * 用户搜索了就下载搜索的用户否则下载所有用户
     *
     * @param exportUserDTO 用户搜索内容
     * @param exportUserDTO
     *            用户搜索内容
     * @return List<EexcelUserDTO> excel内容
     */
    @Override
@@ -2123,7 +2280,8 @@
    /**
     * 新增SysUser
     *
     * @param storeVO 请求参数
     * @param storeVO
     *            请求参数
     * @return 新增结果
     */
    @Override
@@ -2153,14 +2311,20 @@
        String encode = new BCryptPasswordEncoder().encode(storeVO.getStorePassword());
        BeanUtils.copyProperties(storeVO, sysUserDO);
        sysUserDO.setAccount(storeVO.getStoreAccount());
        sysUserDO.setType(5);
        sysUserDO.setType(20);
        sysUserDO.setCommunityId(communityId);
        sysUserDO.setAreaId(null);
        sysUserDO.setStatus(1);
        sysUserDO.setPhone(storeVO.getPhone());
        sysUserDO.setName(storeVO.getContacts());
        sysUserDO.setPassword(encode);
        sysUserDO.setAppId("wx0cef797390444b75");
        try {
            insert = userDao.insert(sysUserDO);
            SysUserRoleDO sysUserRoleDO = new SysUserRoleDO();
            sysUserRoleDO.setUserId(sysUserDO.getUserId());
            sysUserRoleDO.setRoleId(sysRoleDO.getRoleId());
            sysUserRoleDAO.insert(sysUserRoleDO);
            // 把SysUserId赋值给店铺
            if (sysUserDO.getUserId() != null) {
                userDao.updateStoreByPhone(storeVO.getPhone(), sysUserDO.getUserId());
@@ -2182,7 +2346,8 @@
    /**
     * 修改SysUser用户信息
     *
     * @param storeVO 请求参数
     * @param storeVO
     *            请求参数
     * @return 修改结果
     */
    @Override
@@ -2203,7 +2368,8 @@
    /**
     * 修改用户小程序首页活动提示
     *
     * @param userEditTipsDTO 请求参数
     * @param userEditTipsDTO
     *            请求参数
     * @return 修改结果
     */
    public R editUserTips(SysUserEditTipsDTO userEditTipsDTO) {
@@ -2247,7 +2413,8 @@
    /**
     * 修改app用户密码
     *
     * @param userInfoAppDTO 请求参数
     * @param userInfoAppDTO
     *            请求参数
     * @return 修改结果
     */
    @Override
@@ -2278,7 +2445,8 @@
    /**
     * 添加网格员
     *
     * @param eventGridMemberAddDTO 请求参数
     * @param eventGridMemberAddDTO
     *            请求参数
     * @return 结果
     */
    @Override
@@ -2394,7 +2562,8 @@
    /**
     * 网格员管理
     *
     * @param memberRelationDTO 请求参数
     * @param memberRelationDTO
     *            请求参数
     * @return 网格员列表
     */
    @Override
@@ -2430,7 +2599,8 @@
    /**
     * 修改网格员信息
     *
     * @param gridMemberDTO 请求参数
     * @param gridMemberDTO
     *            请求参数
     * @return 修改结果
     */
    @Override
@@ -2525,7 +2695,8 @@
    /**
     * 重置网格员密码
     *
     * @param gridMemberDTO 请求参数
     * @param gridMemberDTO
     *            请求参数
     * @return 重置结果
     */
    @Override
@@ -2542,7 +2713,8 @@
    /**
     * 批量删除网格员
     *
     * @param Ids 网格员id集合
     * @param Ids
     *            网格员id集合
     * @return 删除结果
     */
    @Override
@@ -2580,7 +2752,8 @@
    /**
     * 查询社区的收益说明
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 收益说明
     */
    @Override
@@ -2626,7 +2799,8 @@
    /**
     * 根据用户id查询用户openid
     *
     * @param userId 用户id
     * @param userId
     *            用户id
     * @return openid
     */
    @Override
@@ -2641,7 +2815,8 @@
    /**
     * 查询社区后台工作人员列表
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 社区后台工作人员列表
     */
    @Override
@@ -2651,7 +2826,6 @@
    /**
     * 检查当前用户是否是社区工作人员
     *
     * @param phone
     * @param communityId
     * @return
@@ -2694,7 +2868,6 @@
    /**
     * 便民服务新增商家账号
     *
     * @param convenientMerchantDTO
     * @return 商家用户id
     */
@@ -2729,7 +2902,6 @@
    /**
     * 修改便民服务商家绑定账号
     *
     * @param userId  用户id
     * @param account 修改账户
     * @return 修改结果
@@ -2779,7 +2951,6 @@
    /**
     * 根据openid维护社区团队里是否注册
     *
     * @param openid 用户微信唯一标识
     */
    @Override
@@ -2848,7 +3019,6 @@
    /**
     * 运营后台-用户数据统计汇总
     *
     * @return 用户数据统计汇总
     */
    @Override
@@ -2872,7 +3042,6 @@
    /**
     * 通过UnionId获取用户信息
     *
     * @param unionId
     * @return
     */
@@ -2897,7 +3066,6 @@
    /**
     * 删除用户信息缓存
     *
     * @param phone
     */
    @Override
@@ -2912,7 +3080,6 @@
    /**
     * 微商业街新增商家账号
     *
     * @param mcsMerchantDTO
     * @return 商家用户id
     */
@@ -2965,7 +3132,6 @@
    /**
     * 微商业街修改商家账号
     *
     * @param mcsMerchantDTO
     * @return
     */
@@ -3011,7 +3177,6 @@
    /**
     * 检查用户是否有效
     *
     * @param userId
     * @param type
     * @return
@@ -3027,7 +3192,6 @@
    /**
     * 根据手机号、用户类型查询用户
     *
     * @param phone
     * @param type
     * @return
@@ -3045,7 +3209,6 @@
    /**
     * 发送验证码
     *
     * @param phone     手机号
     * @param clientIP  用户ip
     * @param prefixKey redis Key 前缀
@@ -3081,7 +3244,6 @@
    /**
     * 根据openId获取微商业街用户
     *
     * @param openid
     * @return
     */
@@ -3098,7 +3260,6 @@
    /**
     * 商业街用户微信授权-绑定手机号
     *
     * @param bindUserPhoneDTO
     * @return
     */
@@ -3172,28 +3333,17 @@
    @Override
    public R uuLogin(UuLoginVO uuLoginVO) {
        String appId = "";
        String secret = "";
        if ("wx118de8a734d269f0".equals(uuLoginVO.getAppid())) {
            appId = "10000";
            secret = "e10adc3949ba59abbe56e057f20f883e";
        } else if ("wx98d62711dfbd8425".equals(uuLoginVO.getAppid())) {
            appId = "10001";
            secret = "d89f3a35931c386956c1a402a8e09941";
        }else {
            return R.fail("appid未传");
        }
        uuLoginVO.setAppid(appId);
        uuLoginVO.setAppid("10000");
        String timeStamp = PayUtil.create_timestamp();
        uuLoginVO.setTimestamp(timeStamp);
        try {
            uuLoginVO.setSign(PayUtil.MD5(uuLoginVO.getAppid() + secret + timeStamp).toLowerCase(Locale.ROOT));
            uuLoginVO.setSign(PayUtil.MD5(uuLoginVO.getAppid()+"e10adc3949ba59abbe56e057f20f883e"+timeStamp).toLowerCase(Locale.ROOT));
        } catch (Exception e) {
            e.printStackTrace();
        }
        Map<String, String> headerMap = new HashMap<>();
        headerMap.put("appid", appId);
        String resultJson = HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province=" + uuLoginVO.getProvince() + "&city=" + uuLoginVO.getCity() + "&area=" + uuLoginVO.getArea() + "&appid="+appId+"&timestamp=" + uuLoginVO.getTimestamp() + "&sign=" + uuLoginVO.getSign() + "&mobile=" + uuLoginVO.getMobile() + "&couponId=" + uuLoginVO.getCouponId(), headerMap, null);
        headerMap.put("appid","10000");
        String resultJson=HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province="+uuLoginVO.getProvince()+"&city="+uuLoginVO.getCity()+"&area="+uuLoginVO.getArea()+"&appid=10000&timestamp="+uuLoginVO.getTimestamp()+"&sign="+uuLoginVO.getSign()+"&mobile="+uuLoginVO.getMobile()+"&couponId="+uuLoginVO.getCouponId(),headerMap,null);
        JSONObject result = JSON.parseObject(resultJson);
        if (result.get("status").equals(1)) {
            return R.ok(result.get("data"));
@@ -3458,20 +3608,16 @@
                    e.printStackTrace();
                }
                switch (orderStatus) {
                    case 3:
                        status = "已分配车美";
                    case 3 : status="已分配车美";
                        WxUtil.sendUuWash3(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "sU18zbyzxFldHAdOREaQCR5uq_uMvCKTmGtklO1xw-w");
                        break;
                    case 4:
                        status = "车美已开始服务";
                    case 4 : status="车美已开始服务";
                        WxUtil.sendUuWash4(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                        break;
                    case 6:
                        status = "订单确认完成";
                    case 6 : status="订单确认完成";
                        WxUtil.sendUuWash6(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "k1aV97H3pDNNcNcDTeZBD9jQemNDADnRE801HhTXweI");
                        break;
                    case 9:
                        status = "订单已取消";
                    case 9 : status="订单已取消";
                        WxUtil.sendUuWash(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "9_2FhQPDxZoUqmAuIZ1L1zjjYXokdNvu7A0gzKfvruI");
                        break;
                }
@@ -3494,28 +3640,23 @@
                    e.printStackTrace();
                }
                switch (orderStatus) {
                    case 3:
                        status = "已分配车美";
                        WxUtil.sendWsWash3(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "sNj6m-JBvW6rOokKGDX9X3-XH1AD0GY5_X0jA9JSLwc");
                    case 3 : status="已分配车美";
                        WxUtil.sendUuWash3(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"sNj6m-JBvW6rOokKGDX9X3-XH1AD0GY5_X0jA9JSLwc");
                        break;
                    case 4:
                        status = "车美已开始服务";
                        WxUtil.sendWsWash4(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                    case 4 : status="车美已开始服务";
                        WxUtil.sendUuWash4(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                        break;
                    case 6:
                        status = "订单确认完成";
                        WxUtil.sendWsWash6(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "iPS8yrsGDqy76hiP8bIbxkosveoX1xTFhdusSiGp-XM");
                    case 6 : status="订单确认完成";
                        WxUtil.sendUuWash6(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"iPS8yrsGDqy76hiP8bIbxkosveoX1xTFhdusSiGp-XM");
                        break;
                    case 9:
                        status = "订单已取消";
                        WxUtil.sendWsWash(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "z_ysGXz9JWBc2rXuYZzVCXKJTyLf0w0WerrohuNoEng");
                    case 9 : status="订单已取消";
                        WxUtil.sendUuWash(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"z_ysGXz9JWBc2rXuYZzVCXKJTyLf0w0WerrohuNoEng");
                        break;
                }
            }
        }
        return R.ok();
    }
    @Override
    public R getCommunityList(String name, Long id) {
        //区级账号名
@@ -3652,6 +3793,92 @@
        return R.ok();
    }
    /**
     * 三说会堂新增业务中心或专家账号
     * */
    @Override
    public R addExpertOrIndustryCenter(AdministratorsUserVO administratorsUserVO) {
        SysUserDO sysUserDO=new SysUserDO();
        //是否存在相同账号
        SysUserDO userDO = userDao.selectOne(new QueryWrapper<SysUserDO>().eq("account", administratorsUserVO.getAccount()));
        if (isNull(userDO)){
            sysUserDO.setAppId("wx0cef797390444b75");
            sysUserDO.setCreateAt(new Date());
            sysUserDO.setUserId(administratorsUserVO.getUserId());
            sysUserDO.setAccount(administratorsUserVO.getAccount());
            sysUserDO.setPassword(new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword()));
            sysUserDO.setName(administratorsUserVO.getName());
            if (nonNull(administratorsUserVO.getImageUrl())){
                sysUserDO.setImageUrl(administratorsUserVO.getImageUrl());
            }
            if (nonNull(administratorsUserVO.getType())){
                sysUserDO.setType(administratorsUserVO.getType());
            }
            if (nonNull(administratorsUserVO.getPhone())){
                sysUserDO.setPhone(administratorsUserVO.getPhone());
            }
            userDao.insert(sysUserDO);
            //分配权限
            SysUserRoleDO sysUserRole=new SysUserRoleDO();
            sysUserRole.setUserId(sysUserDO.getUserId());
            if (sysUserDO.getType().equals(11)){
                sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_EXPERT_ROLE));
                //将专家小程序账号设置为专家权限
                SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, 1).eq(SysUserDO::getPhone, administratorsUserVO.getPhone()));
                if (nonNull(sysUserDO1)){
                    sysUserDO1.setType(13);
                    userDao.updateById(sysUserDO1);
                    log.info("添加专家小程序账号权限");
                }
            }else{
                sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_INDUSTRY_CENTER_ROLE));
            }
            //配置权限
            sysUserRoleDAO.insert(sysUserRole);
            return R.ok();
        }
        return R.fail("账户名已存在");
    }
    /**
     * 三说会堂后台重置密码
     * */
    @Override
    public R resetPassExpertOrIndustryCenter(String account,String password) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().eq("account", account));
        if (nonNull(sysUserDO)){
            sysUserDO.setPassword(new BCryptPasswordEncoder().encode(password));
            userDao.updateById(sysUserDO);
            return R.ok();
        }
        return R.fail("修改失败");
    }
    /**
     * 移除专家权限
     * */
    @Override
    public R removeExpertRole(String phone) {
        if (nonNull(phone)){
            //是否有权限为专家的账号
            SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, 11).eq(SysUserDO::getPhone, phone));
            if (nonNull(sysUserDO)){
                //删除后台账号
                sysUserDO.setStatus(2);
                userDao.updateById(sysUserDO);
                log.info("禁用专家后台账号成功");
            }
            //小程序账号移除专家权限
            SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, 13).eq(SysUserDO::getPhone, phone));
            if (nonNull(sysUserDO1)){
                sysUserDO1.setType(1);
                userDao.updateById(sysUserDO1);
                log.info("移除专家权限成功");
            }
        }
        return R.ok();
    }
    @Override
    public R getAreaAndStreet() {
@@ -3710,7 +3937,7 @@
    /**
     * 计算占比
     */
     * */
    private Integer getRate(Integer total, Integer count) {
        if (0 != total && null != total) {
            if (0 != count && null != count) {
@@ -3724,7 +3951,7 @@
    /**
     * 计算街道实名用户总数
     */
     * */
    private Integer getStreetRealUser(List<RealUser> list) {
        Integer count = 0;
        if (list.size() > 0) {
@@ -3742,7 +3969,7 @@
    /**
     * 计算当前统计范围内的所有用户数
     */
     * */
    public Integer countUser(List<UserRateAnalysisVO> list) {
        Integer count = 0;
        if (list.size() > 0) {
@@ -3759,7 +3986,7 @@
    /**
     * 截取月,日
     */
     * */
    public List<String> getMAndD(List<Date> list) {
        List<String> dateList = new ArrayList<>();
        if (list.size() > 0) {
@@ -3773,7 +4000,7 @@
    /**
     * areaCode转区县名
     */
     * */
    private String areaCodeToName(Long areaCode) {
        String code = areaCode.toString();
        String name = "不正确的areaCode";
@@ -3802,7 +4029,7 @@
    /**
     * 根据type选择要设置的名称
     */
     * */
    private String typeToName(Integer type, UserProportion proportion) {
        log.info("当前code" + proportion.getAreaCode());
        String name = "";
@@ -3818,7 +4045,7 @@
    /**
     * 根据type选择要设置的名称
     */
     * */
    private String typeToNameRealUser(Integer type, RealUser proportion) {
        String name = "";
        if (type.equals(ALLCOUNTY)) {
@@ -3833,7 +4060,7 @@
    /**
     * 生成区县code列表
     */
     * */
    private List<Integer> areaCodeList() {
        List<Integer> list = new ArrayList<>();
        list.add(510402);
@@ -3847,7 +4074,7 @@
    /**
     * 根据日志保存修改之前的信息
     */
     * */
    private String saveBeforeUpdateData(SysOperLogVO operlog) throws JsonProcessingException {
        if (operlog.getTitle().equals(UPDATEACIDCHECKRECORD)) {
            //
@@ -3866,7 +4093,7 @@
    /**
     * 是否需要区分村落/社区
     */
     * */
    private Integer isVilliage(String name) {
        if ("fangyipingtai".equals(name)) {
            return 3;
@@ -3880,7 +4107,7 @@
    /**
     * 是否为市级账号
     */
     * */
    private Boolean isCityAccount(String name) {
        if (("fangyipingtai").equals(name) || ("pandashujuzhongxin").equals(name) || ("pannongyenongcunju").equals(name)) {
            return true;
@@ -3890,7 +4117,7 @@
    /**
     * 是否为区级账号
     */
     * */
    private Boolean isAreaAccount(String name) {
        Boolean flag = false;
        switch (name) {
@@ -3907,7 +4134,7 @@
    /**
     * account转区areaCode
     */
     * */
    private Integer accountToCode(String code) {
        String name = "100000";
        switch (code) {