张天森
2022-09-29 4c80d2017a3b88b9ad55f28c3b87fd96eb67bcb2
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -4,23 +4,32 @@
import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
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.Random;
import java.util.Set;
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 javax.validation.constraints.NotBlank;
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.NumberUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO;
import com.panzhihua.common.model.dtos.partybuilding.ComPbCheckUserDTO;
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.user.*;
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;
@@ -75,28 +84,6 @@
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.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.SmsUtil;
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;
@@ -109,7 +96,6 @@
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;
@@ -171,6 +157,18 @@
    private SysAppConfigDao sysAppConfigDao;
    @Resource
    private SysTemplateConfigDao sysTemplateConfigDao;
    @Resource
    private ObjectMapper objectMapper;
    private static final Integer ALLCOUNTY=1;
    private static final Integer ALLSTREET=2;
    private static final Integer ALLCOMMUNITY=3;
    private static final Integer BYSTREET=4;
    private static final Integer BYAREA=5;
    private static final String OTHERUSER="其他用户";
    private static final String UPDATEACIDCHECKRECORD="修改排查数据";
    private static final String UPDATEACIDMEMBER="修改防疫工作人员信息";
    private static final String UPDATEACIDRECORD="修改防疫信息数据";
    // @Resource
    // private GridService gridService;
@@ -178,11 +176,11 @@
        // String encode = new BCryptPasswordEncoder().encode("lbsq123456");
        // System.out.println(encode);
        List<Date> dates = new ArrayList<>();
        List<String> dates = new ArrayList<>();
        Date date = new Date();
        for (int i = 6; i >= 0; i--) {
        for (int i = 19; i >= 0; i--) {
            Date date1 = DateUtils.addDays(date, -i);
            dates.add(date1);
            dates.add(DateFormatUtils.format(date1,"MM-dd" ));
        }
        System.out.println(dates);
@@ -203,7 +201,7 @@
     * @return token
     */
    @Override
    public R updateInsertUser(String openid, String sessionKey, String unionid) {
    public R updateInsertUser(String openid, String sessionKey, String unionid,String appId) {
        SysUserDO sysUserDO =
            userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid, openid));
        boolean empty = ObjectUtils.isEmpty(sysUserDO);
@@ -219,6 +217,7 @@
            sysUserDO1.setLastLoginTime(date);
            sysUserDO1.setPassword(encode);
            sysUserDO1.setType(1);
            sysUserDO1.setAppId(appId);
            num = userDao.insert(sysUserDO1);
        } else {
            String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD);
@@ -227,6 +226,7 @@
            sysUserDO.setPassword(encode);
            sysUserDO.setLastLoginTime(date);
            sysUserDO.setType(1);
            sysUserDO.setAppId(appId);
            num = userDao.updateById(sysUserDO);
        }
        if (num > 0) {
@@ -275,17 +275,20 @@
     */
    @Override
    public R updateUserWeiXinPhone(Long userId, String purePhoneNumber) {
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setPhone(purePhoneNumber);
        sysUserDO.setUserId(userId);
        userDao.updateMemberRole(purePhoneNumber, purePhoneNumber);
        userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber);
        int i = userDao.updateById(sysUserDO);
        if (i > 0) {
            return R.ok(purePhoneNumber);
        } else {
            return R.fail("维护微信手机号失败");
        SysUserDO sysUserDO=userDao.selectById(userId);
        if(sysUserDO!=null){
            userDao.updateMemberRole(purePhoneNumber, sysUserDO.getPhone());
            userDao.updateServiceTeam(purePhoneNumber, sysUserDO.getPhone());
            sysUserDO.setPhone(purePhoneNumber);
            sysUserDO.setUserId(userId);
            int i = userDao.updateById(sysUserDO);
            if (i > 0) {
                return R.ok(purePhoneNumber);
            } else {
                return R.fail("维护微信手机号失败");
            }
        }
        return R.ok(sysUserDO.getPhone());
    }
    /**
@@ -298,15 +301,20 @@
     * @return 用户基本信息、角色
     */
    @Override
    public R<LoginUserInfoVO> getUserInfo(String name, int type) {
    public R<LoginUserInfoVO> getUserInfo(String name, int type,String appId) {
        SysUserDO sysUserDO = null;
        if (1 == type) {
            sysUserDO = userDao.selectOne(
                new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name));
        } else {
            LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type);
            wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or()
                .eq(SysUserDO::getPhone, name));
            if (type == 11) {
                //只允许通过account登录
                wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).eq(SysUserDO::getAppId,appId));
            } else {
                wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAppId,appId).eq(SysUserDO::getAccount, name).or()
                        .eq(SysUserDO::getPhone, name));
            }
            sysUserDO = userDao.selectOne(wrapper);
        }
        boolean empty = ObjectUtils.isEmpty(sysUserDO);
@@ -326,11 +334,15 @@
            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());
                String areaName=userDao.selectAreaCodeByStreetId(comActVO.getStreetId());
                if(StringUtils.isNotEmpty(areaName)){
                    loginUserInfoVO.setAreaName(areaName);
                }
//                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());
@@ -371,6 +383,9 @@
        loginUserInfoVO.setIsFourMember(2);
        loginUserInfoVO.setIsCommunityWorker(2);
        loginUserInfoVO.setIsPropertyWorker(2);
        loginUserInfoVO.setIsSocialWorker(2);
        loginUserInfoVO.setIsFmsMember(2);
        loginUserInfoVO.setIsAcidMember(0);
        // 志愿者状态
        String phone = sysUserDO.getPhone();
        Long userCommunityId = sysUserDO.getCommunityId();
@@ -405,6 +420,39 @@
            if (countPropertyWorker > 0) {
                loginUserInfoVO.setIsPropertyWorker(1);
            }
            //是否微团队成员
            int countFmsMember = userDao.countFmsMember(phone, userCommunityId);
            if (countFmsMember > 0) {
                loginUserInfoVO.setIsFmsMember(1);
            }
            //是否是防疫工作人员
            ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(phone);
            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 {
                    loginUserInfoVO.setIsAcidMember(2);
                }
                loginUserInfoVO.setRelationName(acidMember.getRelationName());
            }
            Integer count=userDao.selectOrgAdmin(phone);
            if(count>0){
                loginUserInfoVO.setIsCheckUnitAdmin(1);
            }
            Long checkUnitId=userDao.selectCheckUnitId(phone);
            if(checkUnitId!=null){
                loginUserInfoVO.setCheckUnitId(checkUnitId);
            }
            else {
                loginUserInfoVO.setIsCheckUnitAdmin(0);
            }
            //是否网格员
            int easyPhotoMember = userDao.countEasyPhotoMember(phone, userCommunityId);
            if (easyPhotoMember > 0) {
                loginUserInfoVO.setIsEasyPhotoMember(1);
            }
            // 是否是"管理员"或者 本社区 "社区团队"、"党委成员"
            Integer countTeam = userDao.selectCountTeam(phone, userCommunityId);
            Integer selectCountMemberRole = userDao.selectCountMemberRole(phone, userCommunityId);
@@ -417,8 +465,34 @@
            } else if (isSysUser != null && isSysUser > 0) {
                loginUserInfoVO.setIsmemberrole(1);
            }
            Integer countSocialWorker = userDao.countSocialWorker(phone,userCommunityId);
            if(countSocialWorker>0){
                loginUserInfoVO.setIsSocialWorker(1);
            }
        }
        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);
        }
        return R.ok(loginUserInfoVO);
    }
@@ -637,12 +711,10 @@
    @Override
    public R<LoginUserInfoVO> detailUser(Long userId) {
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        if (userId < 100000000l) {
            SysUserDO sysUserDO = userDao.selectById(userId);
            if (ObjectUtils.isEmpty(sysUserDO)) {
                return R.fail("人员不存在");
            }
            BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
            List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO
                .selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
@@ -655,45 +727,13 @@
                });
                loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
            }
        } else {
            // 导入社区人员
            SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(userId - 100000000);
            if (ObjectUtils.isEmpty(sysUserInputDO)) {
                return R.fail("人员不存在");
            }
            String name1 = sysUserInputDO.getName();
            BeanUtils.copyProperties(sysUserInputDO, loginUserInfoVO);
            String doorNumber = sysUserInputDO.getDoorNumber();
            Long areaId = sysUserInputDO.getAreaId();
            List<SysUserInputDO> sysUserInputDOS = sysUserInputDAO.selectList(new QueryWrapper<SysUserInputDO>()
                .lambda().eq(SysUserInputDO::getDoorNumber, doorNumber).eq(SysUserInputDO::getAreaId, areaId));
            if (!ObjectUtils.isEmpty(sysUserInputDOS)) {
                List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
                sysUserInputDOS.forEach(sysUserInputDO1 -> {
                    String name = sysUserInputDO1.getName();
                    if (name1.equals(name)) {
                        return;
                    }
                    Integer isRent = sysUserInputDO1.getIsRent();
                    ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
                    comMngFamilyInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(sysUserInputDO1.getIdCard()));
                    comMngFamilyInfoVO.setName(name);
                    comMngFamilyInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(sysUserInputDO1.getPhone()));
                    if (isRent.intValue() == 0) {
                        comMngFamilyInfoVO.setRelationship("家人");
                    } else {
                        comMngFamilyInfoVO.setRelationship("合租");
                    }
                    comMngFamilyInfoVO.setAge(IdCard.IdNOToAge(sysUserInputDO1.getIdCard()));
                    comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
                });
                loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
            }
        }
        ComActVO comActVO = userDao.selectCommunity(loginUserInfoVO.getCommunityId());
        if (!ObjectUtils.isEmpty(comActVO)) {
            String areaName=userDao.selectAreaCodeByStreetId(comActVO.getStreetId());
            if(StringUtils.isNotEmpty(areaName)){
                loginUserInfoVO.setAreaName(areaName);
            }
            loginUserInfoVO.setComActVO(comActVO);
            loginUserInfoVO.setCommunityName(comActVO.getName());
            loginUserInfoVO.setAreaCode(comActVO.getAreaCode());
        }
@@ -703,8 +743,56 @@
        //是否是社区物业人员
        int countPropertyWorker = userDao.countPropertyWorker(userId, loginUserInfoVO.getCommunityId());
        loginUserInfoVO.setIsPropertyWorker(countPropertyWorker > 0 ? 1 : 0);
        //是否微团队成员
        int countFmsMember = userDao.countFmsMember(loginUserInfoVO.getPhone(), loginUserInfoVO.getCommunityId());
        loginUserInfoVO.setIsFmsMember(countFmsMember > 0 ? 1 : 0);
        //是否是防疫工作人员
        loginUserInfoVO.setIsAcidMember(0);
        ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(loginUserInfoVO.getPhone());
        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 {
                loginUserInfoVO.setIsAcidMember(2);
            }
            loginUserInfoVO.setRelationName(acidMember.getRelationName());
        }
        loginUserInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(loginUserInfoVO.getIdCard()));
        loginUserInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(loginUserInfoVO.getPhone()));
        //判断账号类型
        int countSocialOrg=userDao.countSocialOrg(userId);
        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);
        }
        loginUserInfoVO.setBackstageType(1);
        String[] account={"dongqu","xiqu","yanbian","miyi","renhe","fantaixinqu"};
        if("zuzhibu".equals(sysUserDO.getAccount())){
            loginUserInfoVO.setBackstageType(2);
        }
        if(ArrayUtil.contains(account,sysUserDO.getAccount())){
            loginUserInfoVO.setBackstageType(3);
        }
        if(sysUserDO.getBindingCheckUnitId()!=null){
            loginUserInfoVO.setBackstageType(4);
        }
        return R.ok(loginUserInfoVO);
    }
@@ -884,7 +972,7 @@
                // 实名认证成功推送订阅消息给用户
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    String accessToken = util.getAppAccessToken();
                    String accessToken = util.getAccessToken();
                    SysTemplateConfig sysTemplateConfig=sysTemplateConfigDao.selectOne(new QueryWrapper<SysTemplateConfig>().lambda().eq(SysTemplateConfig::getAreaCode, loginUserInfoVO.getComActVO()).eq(SysTemplateConfig::getType,5));
                    // 用户实名认证推送消息
                    WxUtil.sendSubscribeRZSH(user.getOpenid(), accessToken, "实名认证",
@@ -1074,6 +1162,21 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addUserBackstage(AdministratorsUserVO administratorsUserVO) {
        ComActVO comActVO = userDao.selectCommunity(administratorsUserVO.getCommunityId());
        if (nonNull(comActVO)) {
            List<ComAreaTownCommunityVO> areaTownList = userDao.selectAreaTownCommunity(comActVO.getName());
            if (!areaTownList.isEmpty()) {
                administratorsUserVO.setRelationName(comActVO.getName());
                String address = comActVO.getAddress();
                if (areaTownList.size() > 1 && isNotBlank(address)) {
                    ComAreaTownCommunityVO townCommunityVO = areaTownList.stream()
                            .filter(e -> address.contains(e.getArea()) && address.contains(e.getTown())).findFirst().orElse(null);
                    if (nonNull(townCommunityVO)) {
                        administratorsUserVO.setRelationName(String.join(",", townCommunityVO.getArea(), townCommunityVO.getTown(), townCommunityVO.getCommunity()));
                    }
                }
            }
        }
        SysUserDO sysUserDO = new SysUserDO();
        Long roleId = administratorsUserVO.getRoleId();
        if (roleId.intValue() == 999999999 || roleId.intValue() == 888888888) {
@@ -1104,6 +1207,46 @@
                this.putMenuRole(menuRoleVO);
            }
        }
        if(roleId.intValue()==777777777){
            SysRoleDO sysRoleDO = new SysRoleDO();
            sysRoleDO.setRoleName("超级管理员");
            sysRoleDO.setRoleKey(Constants.STREET_ROLE_KEY + administratorsUserVO.getStreetId());
            sysRoleDO.setRoleSort(0);
            sysRoleDO.setCreateBy(administratorsUserVO.getUserId());
            int insert = roleDAO.insert(sysRoleDO);
            if (insert > 0) {
                SysRoleDO sysRoleDO1 = roleDAO.selectOne(
                        new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey()));
                roleId = sysRoleDO1.getRoleId();
                // 新街道管理员角色设置固定三社权限
                MenuRoleVO menuRoleVO = new MenuRoleVO();
                List<Long> menu=new ArrayList<>();
                if(administratorsUserVO.getSocialType()==1){
                    menu.add(233L);
                    menu.add(234L);
                    menu.add(235L);
                    menu.add(236L);
                    menu.add(237L);
                }
                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){
                    menu.add(233L);
                    menu.add(237L);
                }
                else {
                    menuRoleVO.setIsAll(1);
                }
                menuRoleVO.setMenuIds(menu);
                menuRoleVO.setRoleId(roleId);
                this.putMenuRole(menuRoleVO);
            }
        }
        SysRoleDO roleDO = roleDAO.selectById(roleId);
        if (ObjectUtils.isEmpty(roleDO)) {
            return R.fail("角色不存在");
@@ -1111,6 +1254,7 @@
        String encode = new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword());
        administratorsUserVO.setPassword(encode);
        BeanUtils.copyProperties(administratorsUserVO, sysUserDO);
        sysUserDO.setAppId(administratorsUserVO.getAppid());
        int insert = 0;
        try {
            insert = userDao.insert(sysUserDO);
@@ -1125,31 +1269,6 @@
                throw new ServiceException("手机号已存在");
            }
        }
        if (insert > 0 && sysUserDO.getType() == 3) {// 添加的用户是社区账号时
            // 添加网格综合治理管理后台用户
            SysUserDO sysUserDOWangGe = new SysUserDO();
            BeanUtils.copyProperties(sysUserDO, sysUserDOWangGe);
            sysUserDOWangGe.setUserId(null);
            sysUserDOWangGe.setType(7);// 网格综治后台
            try {
                int addWange = userDao.insert(sysUserDOWangGe);
                if (addWange != 1) {
                    throw new ServiceException("新增网格综合治理管理后台用户失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
                log.error("网格综合治理管理后台用户报错【{}】", e.getMessage());
                if (e.getMessage().contains("union_phone_type")) {
                    throw new ServiceException("手机号已经存在");
                } else if (e.getMessage().contains("union_account_type")) {
                    throw new ServiceException("账户已经存在");
                }else if(e.getMessage().contains("23000")){
                    throw new ServiceException("手机号已存在");
                }
            }
        }
        if (insert > 0) {
            SysUserDO sysUserDO1 = userDao
@@ -1171,6 +1290,47 @@
    public R addUserBackstageProperty(AdministratorsUserVO administratorsUserVO) {
        SysUserDO sysUserDO = new SysUserDO();
        Long roleId = administratorsUserVO.getRoleId();
        if(roleId.intValue()==777777777){
            SysRoleDO sysRoleDO = new SysRoleDO();
            sysRoleDO.setRoleName("三社超级管理员");
            List<Long> menu=new ArrayList<>();
            if(administratorsUserVO.getSocialType()==1){
                sysRoleDO.setRoleKey(Constants.STREET_ROLE_KEY + administratorsUserVO.getStreetId());
                menu.add(300L);
                menu.add(301L);
                menu.add(302L);
                menu.add(303L);
                menu.add(304L);
            }
            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){
                sysRoleDO.setRoleKey("social_org_member" + administratorsUserVO.getStreetId());
                menu.add(300L);
                menu.add(303L);
            }
            sysRoleDO.setRoleSort(0);
            sysRoleDO.setCreateBy(administratorsUserVO.getUserId());
            SysRoleDO sysRoleDO1 = roleDAO.selectOne(
                    new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey()));
            if(sysRoleDO1!=null){
                sysRoleDO=sysRoleDO1;
                roleId = sysRoleDO.getRoleId();
            }else{
                roleDAO.insert(sysRoleDO);
                // 新街道管理员角色设置固定三社权限
                MenuRoleVO menuRoleVO = new MenuRoleVO();
                menuRoleVO.setMenuIds(menu);
                menuRoleVO.setRoleId(sysRoleDO.getRoleId());
                this.putMenuRole(menuRoleVO);
            }
        }
        SysRoleDO roleDO = roleDAO.selectById(roleId);
        if (ObjectUtils.isEmpty(roleDO)) {
            return R.fail("角色不存在");
@@ -1188,6 +1348,8 @@
                throw new ServiceException("手机号已经存在");
            } else if (e.getMessage().contains("union_account_type")) {
                throw new ServiceException("账户已经存在");
            }else if(e.getMessage().contains("23000")){
                throw new ServiceException("手机号已存在");
            }
        }
@@ -1265,7 +1427,12 @@
                        .anyMatch(sysRoleMenuDO -> sysRoleMenuDO.getMenuId().equals(menuId))).collect(Collectors.toList());
            }
            if (!menuIds.isEmpty()) {
                sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId);
                if(menuRoleVO.getMenuIds()==null){
                    sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId);
                }
                else {
                    sysRoleMenuDAO.batchInsertWithRoleId(menuRoleVO.getMenuIds(), roleId);
                }
            }
//            for (int i = 0; i < menuIds.size(); i++) {
//                SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda()
@@ -1338,7 +1505,6 @@
     * @return 删除结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteUserBackstage(AdministratorsUserVO administratorsUserVO) {
        Long userId = administratorsUserVO.getUserId();
        SysUserDO sysUserDO = userDao.selectById(userId);
@@ -1347,7 +1513,7 @@
        }
        Long communityId = sysUserDO.getCommunityId();
        Long communityId1 = administratorsUserVO.getCommunityId();
        if (communityId1.intValue() != communityId.intValue()) {
        if (communityId1!=null&&communityId1.intValue() != communityId.intValue()) {
            return R.fail("用户不属于当前平台");
        }
        // 删除用户
@@ -1396,6 +1562,17 @@
     */
    @Override
    public R addOperLog(SysOperLogVO operlog) {
        //判断是否需要保存修改前的数据
        final Boolean flag=(operlog.getTitle().equals(UPDATEACIDCHECKRECORD) || operlog.getTitle().equals(UPDATEACIDMEMBER)
                                                      || operlog.getTitle().equals(UPDATEACIDRECORD));
        if (flag){
            //保存数据
            try {
                operlog.setBeforeUpdateData(saveBeforeUpdateData(operlog));
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
        }
        SysOperLogDO sysOperLogDO = new SysOperLogDO();
        BeanUtils.copyProperties(operlog, sysOperLogDO);
        int insert = sysOperLogDAO.insert(sysOperLogDO);
@@ -1581,9 +1758,9 @@
     * @return 协议内容
     */
    @Override
    public R userAgreement(int type) {
    public R userAgreement(int type,String appId) {
        SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO
            .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type));
            .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type).eq(SysUserAgreementDO::getAppId,appId));
        return R.ok(sysUserAgreementDO);
    }
@@ -1734,7 +1911,7 @@
    @Override
    public R dataKanban(String areaCode) {
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(areaCode);
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(areaCode);
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(new Page(1L, 9999L), areaCode).getRecords();
        List<String> communityUserX = new ArrayList<>();
        List<Integer> communityUserY = new ArrayList<>();
@@ -1849,6 +2026,30 @@
    /**
     * 修改用户的党员状态
     *
     * @param phone
     *            身份证号
     * @return 修改结果
     */
    @Override
    public R updateUserIsPartymemberByPhone(String phone) {
        SysUserDO sysUserDO = userDao.selectOne(
                new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
        if (sysUserDO != null) {
            sysUserDO.setIsPartymember(1);
            int updated = userDao.updateById(sysUserDO);
            if (updated > 0) {
                // 删除用户信息缓存
                String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId();
                stringRedisTemplate.delete(userKey);
            }
            log.info("新增党员修改用户党员状态成功 手机号【{}】", phone);
        }
        return R.ok();
    }
    /**
     * 修改用户的党员状态
     *
     * @param idCard
     *            身份证号
     * @return 修改结果
@@ -1878,9 +2079,9 @@
     * @return 协议内容
     */
    @Override
    public R agreement(Integer type) {
    public R agreement(Integer type,String appId) {
        SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO
            .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type));
            .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type).eq(SysUserAgreementDO::getAppId,appId));
        if (ObjectUtils.isEmpty(sysUserAgreementDO)) {
            return R.fail("协议不存在");
        }
@@ -2016,9 +2217,9 @@
    @Override
    public R getSysUserVOByPhone(String phone) {
        SysUserDO sysUserDO = userDao
            .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
            .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1).orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("用户不存在");
            return R.fail("账号或密码错误");
        }
        SysUserVO sysUserVO = new SysUserVO();
        BeanUtils.copyProperties(sysUserDO, sysUserVO);
@@ -2053,7 +2254,7 @@
        query.eq(SysUserDO::getType, type);
        SysUserDO sysUserDO = userDao.selectOne(query);
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("用户不存在");
            return R.fail("账号或密码错误");
        }
        SysUserVO sysUserVO = new SysUserVO();
        BeanUtils.copyProperties(sysUserDO, sysUserVO);
@@ -2094,14 +2295,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());
@@ -2189,7 +2396,7 @@
    /**
     * 修改app用户密码
     *
     *
     * @param userInfoAppDTO
     *            请求参数
     * @return 修改结果
@@ -2221,7 +2428,7 @@
    /**
     * 添加网格员
     *
     *
     * @param eventGridMemberAddDTO
     *            请求参数
     * @return 结果
@@ -2338,7 +2545,7 @@
    /**
     * 网格员管理
     *
     *
     * @param memberRelationDTO
     *            请求参数
     * @return 网格员列表
@@ -2375,7 +2582,7 @@
    /**
     * 修改网格员信息
     *
     *
     * @param gridMemberDTO
     *            请求参数
     * @return 修改结果
@@ -2471,7 +2678,7 @@
    /**
     * 重置网格员密码
     *
     *
     * @param gridMemberDTO
     *            请求参数
     * @return 重置结果
@@ -2489,7 +2696,7 @@
    /**
     * 批量删除网格员
     *
     *
     * @param Ids
     *            网格员id集合
     * @return 删除结果
@@ -2528,7 +2735,7 @@
    /**
     * 查询社区的收益说明
     *
     *
     * @param communityId
     *            社区id
     * @return 收益说明
@@ -2575,7 +2782,7 @@
    /**
     * 根据用户id查询用户openid
     *
     *
     * @param userId
     *            用户id
     * @return openid
@@ -2591,7 +2798,7 @@
    /**
     * 查询社区后台工作人员列表
     *
     *
     * @param communityId
     *            社区id
     * @return 社区后台工作人员列表
@@ -2725,7 +2932,7 @@
        userDao.disableOrEnableMerchantUsers(disableOrEnableConvenientMerchantDTO.getType(), disableOrEnableConvenientMerchantDTO.getUserIds());
        return R.ok();
    }
    /**
     * 根据openid维护社区团队里是否注册
     * @param openid    用户微信唯一标识
@@ -2748,7 +2955,7 @@
     */
    @Override
    public R dataKanBans(DataKanBansDto dataKanBansDto){
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(dataKanBansDto.getAreaCode());
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(dataKanBansDto.getAppId());
        List<String> communityUserX = new ArrayList<>();
        List<Integer> communityUserY = new ArrayList<>();
@@ -2757,10 +2964,18 @@
        List<Integer> communityActiveUserZ = new ArrayList<>();
        List<DataKanbanDTO> dataKanbanDTOS = null;
        Page page = new Page<>();
        if (nonNull(dataKanBansDto.getPageNum()) && nonNull(dataKanBansDto.getPageSize())) {
            page.setCurrent(dataKanBansDto.getPageNum());
            page.setSize(dataKanBansDto.getPageSize());
        } else {
            page.setCurrent(1L);
            page.setSize(20L);
        }
        if(dataKanBansDto.getType() != null && dataKanBansDto.getType().equals(DataKanBansDto.type.by)){
            dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(dataKanBansDto.getAreaCode());
            dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(page, dataKanBansDto.getAppId()).getRecords();
        }else{
            dataKanbanDTOS = userDao.selectCommunityUserOrder(dataKanBansDto.getAreaCode());
            dataKanbanDTOS = userDao.selectCommunityUserOrder(page, dataKanBansDto.getAppId()).getRecords();
        }
        if (!ObjectUtils.isEmpty(dataKanbanDTOS)) {
            dataKanbanDTOS.forEach(dataKanbanDTO -> {
@@ -2773,7 +2988,7 @@
        List<Date> serverndays = com.panzhihua.common.utlis.DateUtils.getOldDays();
        serverndays.forEach(date -> {
            // 查询社区活动数量
            DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAreaCode(),date);
            DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAppId(),date);
            communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd"));
            communityActiveUserY.add(dataKanbanDTO.getNum());
            communityActiveUserZ.add(dataKanbanDTO.getDayNum());
@@ -2818,11 +3033,33 @@
    public R getUserInfoByUnionId(String unionId) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getUnionid, unionId));
        if (isNull(sysUserDO)) {
            return R.fail("用户不存在");
            return R.fail("账号或密码错误");
        }
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
        return R.ok(loginUserInfoVO);
    }
    @Override
    public R updateStreetId(AdministratorsUserVO administratorsUserVO) {
        SysUserDO sysUserDO=new SysUserDO();
        BeanUtils.copyProperties(administratorsUserVO,sysUserDO);
        userDao.updateById(sysUserDO);
        return R.ok();
    }
    /**
     * 删除用户信息缓存
     * @param phone
     */
    @Override
    public R deleteUserCashByPhone(String phone) {
        SysUserDO sysUserDO = this.userDao.selectOne(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
        if (nonNull(sysUserDO)) {
            String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId();
            stringRedisTemplate.delete(userKey);
        }
        return R.ok();
    }
    /**
@@ -3062,4 +3299,781 @@
        }
        return rs.toString();
    }
    @Override
    public R updateUserPartyStatus(Long userId) {
        SysUserDO sysUserDO = userDao.selectById(userId);
        if (sysUserDO != null) {
            sysUserDO.setIsPartymember(1);
            int updated = userDao.updateById(sysUserDO);
            if (updated > 0) {
                // 删除用户信息缓存
                String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId();
                stringRedisTemplate.delete(userKey);
            }
        }
        return R.ok();
    }
    @Override
    public R uuLogin(UuLoginVO uuLoginVO) {
        uuLoginVO.setAppid("10000");
        String timeStamp=PayUtil.create_timestamp();
        uuLoginVO.setTimestamp(timeStamp);
        try {
            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","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"));
        }
        return R.fail("信息错误");
    }
    @Override
    public R checkExport(String account, String password,String oldPassword) {
        if(new BCryptPasswordEncoder().matches(password, oldPassword)){
            return R.ok();
        }
        return R.fail();
    }
    @Override
    public R newIndexData(Integer type, Long streetId,Long areaCode,String appId) {
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId);
        IndexDataAnalysisVO vo=new IndexDataAnalysisVO();
        if (ObjectUtils.isEmpty(type)){
            //不传默认为所有区县
            type=ALLCOUNTY;
        }
        if (type.equals(ALLCOUNTY) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){
            BeanUtils.copyProperties(indexDataKanbanVO,vo);
        }else {
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null);
            BeanUtils.copyProperties(indexDataVO,vo);
        }
//            List<UserProportion> userProportionsTotal = userDao.userAnalysis(type, null, streetId,areaCode);
//            Integer streetUser = userDao.streetUserCount(streetId,areaCode);
//            for (UserProportion userProportion : userProportionsTotal) {
//                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){
//                    if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){
//                        //计算占比
//                        //userProportion.setAreaCode(null);
//                        if (type.equals(BYSTREET)){
//                            userProportion.setRate(getRate(streetUser,userProportion.getUser()));
//                        }
//                        userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser()));
//                    }
//                }
//            }
//            List<UserProportion> userProportionsMonth = userDao.userAnalysis(type, DateUtil.beginOfMonth(new Date()).toString(), streetId,areaCode);
//            for (UserProportion userProportion : userProportionsMonth) {
//                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){
//                    if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){
//                        //计算占比
//                        //userProportion.setAreaCode(null);
//                        if (type.equals(BYSTREET)){
//                            userProportion.setRate(getRate(streetUser,userProportion.getUser()));
//                        }
//                        userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser()));
//                    }
//                }
//            }
//            vo.setUserProportionTotal(userProportionsTotal);
//            vo.setUserProportionMonth(userProportionsMonth);
//            List<RealUser> realUsersTotal = userDao.realUserCount(type, null, streetId,areaCode);
//            List<RealUser> realUsersMonth = userDao.realUserCount(type, DateUtil.beginOfMonth(new Date()).toString(), streetId,areaCode);
//            vo.setRealUsersTotal(realUsersTotal);
//            vo.setRealUsersMonth(realUsersMonth);
//            vo.setRealUser(getStreetRealUser(realUsersTotal));
//            vo.setRealUserRate(getRate(vo.getAllUser(),vo.getRealUser()));
//            List<Date> twentyDays = getTwentyDays();
//            List<Date> monthTwentyDays = getMonthTwentyDays();
//            vo.setUserActivityXAll(getMAndD(getTwentyDays()));
//            vo.setUserActivityXMonth(getMAndD(getMonthTwentyDays()));
//            List<String> addUserYAll=new ArrayList<>();
//            List<String> addUserYMonth=new ArrayList<>();
//            List<String> activeUserYAll=new ArrayList<>();
//            List<String> activeUserYMonth=new ArrayList<>();
//            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//            //获取用户行为Y轴
//            for (Date date : twentyDays) {
//                //查询当天的新增和日活
//                Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode);
//                addUserYAll.add(map.get("addUser").toString());
//                activeUserYAll.add(map.get("activeUser").toString());
//            }
//            for (Date date : monthTwentyDays) {
//                Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode);
//                addUserYMonth.add(map.get("addUser").toString());
//                activeUserYMonth.add(map.get("activeUser").toString());
//            }
//            vo.setAddUserYAll(addUserYAll);
//            vo.setAddUserYWeek(addUserYMonth);
//            vo.setActiveUserYAll(activeUserYAll);
//            vo.setActiveUserYMonth(activeUserYMonth);
//            if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){
//                //获取其他用户
//                vo.setOtherUser(indexDataKanbanVO.getAllUser()-countUser(vo.getUserProportionTotal()));
//                vo.setOtherUserRate(getRate(indexDataKanbanVO.getAllUser(),vo.getOtherUser()));
//            }
        return R.ok(vo);
    }
    @Override
    public R userRate(Integer type, Long streetId, Long areaCode, Integer range,String appId) {
        IndexDataAnalysisVO analysisVO=new IndexDataAnalysisVO();
        if (type.equals(BYSTREET) || type.equals(BYAREA)){
            //街道,区县筛选
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null);
            BeanUtils.copyProperties(indexDataVO,analysisVO );
        }else {
            //总量数据
            IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId);
            BeanUtils.copyProperties(indexDataKanbanVO,analysisVO );
        }
        String date="";
        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){
            if (range.equals(1)){
                DateTime dateTime = DateUtil.beginOfMonth(new Date());
                date = DateUtil.parse(dateTime.toString(), "yyyy-MM-dd HH:mm:ss").toString();
            }
        }
        List<UserProportion> userProportions = userDao.userAnalysis(type, date, streetId,areaCode,appId);
        List<UserRateAnalysisVO> userRateAnalysisVOList=new ArrayList<>();
        Boolean monthRange=false;
        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){
            if (range.equals(1)){
                monthRange=true;
            }
        }
        if (userProportions.size()>0){
            for (UserProportion userProportion : userProportions) {
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){
                    UserRateAnalysisVO vo=new UserRateAnalysisVO();
                    if (monthRange){
                        if (userProportion.getCommunityId().equals("11")){
                            continue;
                        }
                        //获取本月的用户总数作为计算占比的用户总数
                        //IndexDataKanbanVO data = userDao.dataKanBanStreet(streetId, areaCode, date);
                        Integer monthUsers = userDao.getMonthUsers(streetId, areaCode, date,appId);
                        vo.setRate(getRate(monthUsers,userProportion.getUser()));
                    }else{
                        vo.setRate(getRate(analysisVO.getAllUser(),userProportion.getUser()));
                    }
                    vo.setName(typeToName(type,userProportion ));
                    vo.setCount(userProportion.getUser());
                    userRateAnalysisVOList.add(vo);
                }
            }
        }
        if (ObjectUtils.isEmpty(range)){
            //查看累计数据时才计算其他用户的比例 || type.equals(BYSTREET) || type.equals(BYAREA))
            final Boolean flag=(type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY));
            if (flag){
                UserRateAnalysisVO vo=new UserRateAnalysisVO();
                vo.setName(OTHERUSER);
                vo.setCount(analysisVO.getAllUser()-countUser(userRateAnalysisVOList));
                vo.setRate(getRate(analysisVO.getAllUser(), vo.getCount()));
                userRateAnalysisVOList.add(vo);
            }
        }
        //计算其他用户占比
        UserRateVO userRate=new UserRateVO();
        userRate.setUserList(userRateAnalysisVOList);
        return R.ok(userRate);
    }
    @Override
    public R realUser(Integer type, Long streetId, Long areaCode, Integer range,String appId) {
        IndexDataAnalysisVO analysisVO=new IndexDataAnalysisVO();
        if (type.equals(BYSTREET) || type.equals(BYAREA)){
            //街道,区县筛选
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null);
            BeanUtils.copyProperties(indexDataVO,analysisVO );
        }else {
            //总量数据
            IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId);
            BeanUtils.copyProperties(indexDataKanbanVO,analysisVO );
        }
        String date="";
        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){
            if (range.equals(1)){
                DateTime dateTime = DateUtil.beginOfMonth(new Date());
                date = DateUtil.parse(dateTime.toString(), "yyyy-MM-dd HH:mm:ss").toString();
            }
        }
        RealUserVO realUserVO=new RealUserVO();
        List<RealUser> realUsers = userDao.realUserCount(type, date, streetId, areaCode,appId);
        List<RealUserAnalysisVO> realUserList=new ArrayList<>();
        realUserVO.setRealUserCount(getStreetRealUser(realUsers));
        Integer rate = getRate(analysisVO.getAllUser(), realUserVO.getRealUserCount());
        if (null == rate){
            realUserVO.setRealUserRate(0.0);
        }else{
            realUserVO.setRealUserRate(rate.doubleValue());
        }
        for (RealUser realUser : realUsers) {
            if (!(type.equals(ALLCOUNTY))){
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)){
                    if (realUser.getCommunityId().equals("11")){
                        continue;
                    }
                }
            }
            RealUserAnalysisVO vo=new RealUserAnalysisVO();
            vo.setCount(realUser.getCount());
            vo.setName(typeToNameRealUser(type, realUser));
            realUserList.add(vo);
        }
        realUserVO.setRealUserList(realUserList);
        //使用索引迭代避免从列表移除数据后出现空指针异常
        if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY)){
            for (int i = 0; i < realUserList.size() ; i++) {
                RealUserAnalysisVO realUserAnalysisVO = realUserList.get(i);
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUserAnalysisVO)){
                    if (StringUtils.isNotEmpty(realUserAnalysisVO.getName())){
                        if (realUserAnalysisVO.getName().equals("请选择社区")){
                            realUserList.remove(i);
                        }
                    }
                }
            }
        }else {
            //只保留十条
            if (realUserList.size()>=11){
                realUserList.remove(10);
            }
        }
        return R.ok(realUserVO);
    }
    @Override
    public R userActivity(Integer type, Long streetId, Long areaCode, Integer range, String appId) {
        UserActivityAnalysisVO vo=new UserActivityAnalysisVO();
        List<Date> activeX=getTwentyDays();
        List<String> activeY=new ArrayList<>();
        List<String> adY=new ArrayList<>();
        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){
            if (range.equals(1)){
                //本月数据
                activeX = getMonthTwentyDays();
            }
        }
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        for (Date date : activeX) {
            Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode, appId);
            adY.add(map.get("addUser").toString());
            activeY.add(map.get("activeUser").toString());
        }
        vo.setUserX(getMAndD(activeX));
        vo.setAddUserY(adY);
        vo.setActiveUserY(activeY);
        return R.ok(vo);
    }
    @Override
    public R uuPush(String washPhone,String phone,String washName,Integer orderStatus) {
        if(StringUtils.isNotEmpty(phone)){
            SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,phone).eq(SysUserDO::getAppId,"wx118de8a734d269f0").orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
            if(sysUserDO!=null&&StringUtils.isNotEmpty(sysUserDO.getOpenid())){
                String status="";
                String accessToken="";
                WxXCXTempSend util = new WxXCXTempSend();
                try {
                    accessToken = util.getAccessToken();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                switch (orderStatus){
                    case 3 : status="已分配车美";
                        WxUtil.sendUuWash3(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"sU18zbyzxFldHAdOREaQCR5uq_uMvCKTmGtklO1xw-w");
                    break;
                    case 4 : status="车美已开始服务";
                        WxUtil.sendUuWash4(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                    break;
                    case 6 : status="订单确认完成";
                        WxUtil.sendUuWash6(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"k1aV97H3pDNNcNcDTeZBD9jQemNDADnRE801HhTXweI");
                    break;
                    case 9 : status="订单已取消";
                        WxUtil.sendUuWash(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"9_2FhQPDxZoUqmAuIZ1L1zjjYXokdNvu7A0gzKfvruI");
                    break;
                }
            }
        }
        return R.ok();
    }
    @Override
    public R getCommunityList(String name,Long id) {
        //区级账号名
        String[] streetList={"bingcaogangjiedao","donghuajiedao","nongnongpingjiedao","dadukoujiedaojiedao","guazipingjiedao",
        "yinjiangzhen","qingxiangpingjiedao","yuquanjiedao","hemenkoujiedao","dabaodingjiedao","taojiadujiedao","gelipinzhen","dahezhonglujiedao",
        "jingjiangzhen","renhezhen","pingdizhen","datianzhen","tongdezhen","futianzhen","qianjinzhen","panlianzhen","binguzhen","baimazhen",
        "salianzhen","puweizhen","deshizhen","wanqiuyizuxiang","caochangzhen","xinshanlisuzuxiang","tongzilinzhen","yongxingzhen","yumenzhen",
        "honggezhen","hongguoyizuxiang"};
        List<Integer> ids = userDao.selectIdsByAccount(streetList);
        //村或社区账号
        Integer type=isVilliage(name);
        //是否为市级账号
        Boolean cityAccount = isCityAccount(name);
        if (cityAccount){
            List<Integer> areaList=areaCodeList();
            List<AreaVOS> areaVOList=new ArrayList<>();
            for (Integer code : areaList) {
                AreaVOS areaVO=new AreaVOS();
                areaVO.setId(code);
                areaVO.setName(areaCodeToName(code.longValue()));
                List<StreetVOS> streetVOS = userDao.selectStreetByAreaCode(code);
                Iterator<StreetVOS> iterator = streetVOS.listIterator();
                while (iterator.hasNext()){
                    StreetVOS vo = iterator.next();
                    List<CommunityVO> communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type);
                    vo.setChildList(communityVOS);
                    if (type!=3){
                        if (communityVOS==null || communityVOS.size()==0){
                            iterator.remove();
                        }
                    }
                }
                areaVO.setChildList(streetVOS);
                areaVOList.add(areaVO);
            }
            return R.ok(areaVOList);
        }else{
            Boolean areaAccount = isAreaAccount(name);
            if (areaAccount){
                Integer areaCode = accountToCode(name);
                List<Integer> areaList=new ArrayList<>();
                areaList.add(areaCode);
                List<AreaVOS> areaVOList=new ArrayList<>();
                for (Integer code : areaList) {
                    AreaVOS areaVO=new AreaVOS();
                    areaVO.setId(code);
                    areaVO.setName(areaCodeToName(code.longValue()));
                    List<StreetVOS> streetVOS = userDao.selectStreetByAreaCode(code);
                    Iterator<StreetVOS> iterator = streetVOS.listIterator();
                    while (iterator.hasNext()){
                        StreetVOS vo = iterator.next();
                        List<CommunityVO> communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type);
                        vo.setChildList(communityVOS);
                    }
                    areaVO.setChildList(streetVOS);
                    areaVOList.add(areaVO);
                }
                return R.ok(areaVOList);
            }else{
                //非区县账号,只看街道下属社区
                if (ArrayUtil.contains(streetList, name)){
                    List<StreetVOS> list=new ArrayList<>();
                    //只看当前街道下属社区
                    StreetVOS streetVOS = userDao.selectStreetByName(name);
                    List<CommunityVO> communityVOS = userDao.selectCommunityByStreetName(name);
                    if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(streetVOS)) {
                        streetVOS.setChildList(communityVOS);
                    }
                    list.add(streetVOS);
                    return R.ok(list);
                }
            }
        }
        return R.ok(null);
    }
    @Override
    public R resetPassword(Integer type, String account,String appId) {
        SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount,account).eq(SysUserDO::getType,type).eq(SysUserDO::getAppId,appId));
        if(sysUserDO!=null){
            sysUserDO.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR.");
            userDao.updateById(sysUserDO);
        }
        return R.ok();
    }
    @Override
    public R tfLogin(UuLoginVO uuLoginVO) {
        SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,uuLoginVO.getMobile()).eq(SysUserDO::getType,16));
        if(sysUserDO==null){
            sysUserDO=new SysUserDO();
            sysUserDO.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR.");
            sysUserDO.setType(16);
            sysUserDO.setStatus(1);
            sysUserDO.setPhone(uuLoginVO.getMobile());
            sysUserDO.setAccount(uuLoginVO.getMobile());
            sysUserDO.setAppId("wx0cef797390444b75");
            userDao.insert(sysUserDO);
        }
        return R.ok();
    }
    @Override
    public R accept(Long userId) {
        SysUserDO sysUserDO=new SysUserDO();
        sysUserDO.setUserId(userId);
        sysUserDO.setIsAccept(1);
        userDao.updateById(sysUserDO);
        return R.ok();
    }
    @Override
    @Transactional
    public R addComPbCheckUser(ComPbCheckUserDTO comPbCheckUserDTO) {
        SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount,comPbCheckUserDTO.getAccount()).eq(SysUserDO::getType,3).eq(SysUserDO::getAppId,"wx118de8a734d269f0"));
        if(sysUserDO!=null){
            return R.fail("账户名已存在");
        }
        SysUserDO sysUserDO1=new SysUserDO();
        sysUserDO1.setUserId(Snowflake.getId());
        sysUserDO1.setAccount(comPbCheckUserDTO.getAccount());
        sysUserDO1.setPassword(new BCryptPasswordEncoder().encode(comPbCheckUserDTO.getPassword()));
        sysUserDO1.setType(3);
        sysUserDO1.setAppId("wx118de8a734d269f0");
        sysUserDO1.setCommunityId(0L);
        sysUserDO1.setBindingCheckUnitId(comPbCheckUserDTO.getCheckUnitId());
        int restlt=userDao.insert(sysUserDO1);
        if(restlt>0){
            SysUserRoleDO sysUserRoleDO=new SysUserRoleDO();
            sysUserRoleDO.setRoleId(123321L);
            sysUserRoleDO.setUserId(sysUserDO1.getUserId());
            sysUserRoleDAO.insert(sysUserRoleDO);
        }
        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.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());
            }
            userDao.insert(sysUserDO);
            //分配权限
            SysUserRoleDO sysUserRole=new SysUserRoleDO();
            sysUserRole.setUserId(sysUserDO.getUserId());
            if (sysUserDO.getType().equals(11)){
                sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_EXPERT_ROLE));
            }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 getAreaAndStreet() {
        List<Integer> areaCodeList=areaCodeList();
        List<AreaVO> areaVOList=new ArrayList<>();
        for (Integer code : areaCodeList) {
            AreaVO vo=new AreaVO();
            vo.setId(code);
            vo.setName(areaCodeToName(code.longValue()));
            vo.setStreetList(userDao.selectStreetsByAreaCode(code));
            areaVOList.add(vo);
        }
        return R.ok(areaVOList);
    }
    /**
     * 获取最近20天数据
     *
     * @return
     */
    private List<Date> getTwentyDays() {
        List<Date> dates = new ArrayList<>();
        Date date = new Date();
        for (int i = 19; i >= 0; i--) {
            Date date1 = DateUtils.addDays(date, -i);
            dates.add(date1);
        }
        return dates;
    }
    /**
     * 获取最近本月20天数据
     *
     * @return
     */
    private List<Date> getMonthTwentyDays() {
        List<Date> dates = new ArrayList<>();
        Date date = new Date();
        Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY);
        if (offset>=20){
            for (int i = 19; i >= 0; i--) {
                Date date1 = DateUtils.addDays(date, -i);
                dates.add(date1);
            }
        }else{
            //距离月初不足20天
            for (int i = offset.intValue(); i >= 0; i--) {
                Date date1 = DateUtils.addDays(date, -i);
                dates.add(date1);
            }
        }
        return dates;
    }
    /**
     * 计算占比
     * */
    private Integer getRate(Integer total,Integer count){
        if (0 != total && null != total){
            if (0 != count && null != count){
                BigDecimal div = NumberUtil.div(count.toString(), total.toString(),2);
                BigDecimal mul = NumberUtil.mul(div, 100);
                return mul.intValue();
            }
        }
        return null;
    }
    /**
     * 计算街道实名用户总数
     * */
    private Integer getStreetRealUser(List<RealUser> list){
        Integer count=0;
        if (list.size()>0){
            for (RealUser realUser : list) {
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)){
                    if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser.getCount())){
                        count+=realUser.getCount();
                    }
                }
            }
        }
        return count;
    }
    /**
     * 计算当前统计范围内的所有用户数
     * */
    public Integer countUser(List<UserRateAnalysisVO> list){
        Integer count=0;
        if (list.size()>0){
            for (UserRateAnalysisVO proportion : list) {
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion)){
                    if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion.getCount())){
                        count+=proportion.getCount();
                    }
                }
            }
        }
        return count;
    }
    /**
     * 截取月,日
     * */
    public List<String> getMAndD(List<Date> list){
        List<String> dateList=new ArrayList<>();
        if (list.size()>0){
            for (Date date : list) {
                dateList.add(DateFormatUtils.format(date,"MM-dd" ));
            }
        }
        return dateList;
    }
    /**
     * areaCode转区县名
     * */
    private  String areaCodeToName(Long areaCode){
        String code = areaCode.toString();
        String name="不正确的areaCode";
        switch (code){
            case "510423" :
                name= "西区";
                break;
            case "510402":
                name="东区";
                break;
            case "510411":
                name="仁和区";
                break;
            case "510421":
                name="米易县";
                break;
            case "510422":
                name="盐边县";
                break;
            case "510424":
                name="钒钛新区";
                break;
        }
        return name;
    }
    /**
     *根据type选择要设置的名称
     * */
    private String typeToName(Integer type,UserProportion proportion){
        log.info("当前code"+proportion.getAreaCode());
        String name="";
        if (type.equals(ALLCOUNTY)){
            name=areaCodeToName(proportion.getAreaCode());
        }else if(type.equals(ALLSTREET) || type.equals(BYAREA)){
            name=proportion.getStreetName();
        }else if (type.equals(ALLCOMMUNITY) || type.equals(BYSTREET)){
            name=proportion.getCommunityName();
        }
        return name;
    }
    /**
     *根据type选择要设置的名称
     * */
    private String typeToNameRealUser(Integer type,RealUser proportion){
        String name="";
        if (type.equals(ALLCOUNTY)){
            name=areaCodeToName(Long.parseLong(proportion.getAreaCode()));
        }else if(type.equals(ALLSTREET) || type.equals(BYAREA)){
            name=proportion.getStreetName();
        }else if (type.equals(ALLCOMMUNITY) || type.equals(BYSTREET)){
            name=proportion.getCommunityName();
        }
        return name;
    }
    /**
     * 生成区县code列表
     * */
    private List<Integer> areaCodeList(){
        List<Integer> list=new ArrayList<>();
        list.add(510402);
        list.add(510423);
        list.add(510411);
        list.add(510421);
        list.add(510422);
        list.add(510424);
        return list;
    }
    /**
     * 根据日志保存修改之前的信息
     * */
    private String saveBeforeUpdateData(SysOperLogVO operlog) throws JsonProcessingException {
        if (operlog.getTitle().equals(UPDATEACIDCHECKRECORD)){
            //
            ComActAcidCheckRecordVO comActAcidCheckRecordVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidCheckRecordVO.class);
            ComActAcidCheckRecordVO comActAcidCheckRecordVO1 = userDao.selectComActAcidCheckRecordById(comActAcidCheckRecordVO.getId());
            return JSONObject.toJSONString(comActAcidCheckRecordVO1);
        }else if (operlog.getTitle().equals(UPDATEACIDRECORD)){
            ComActAcidRecordVO comActAcidRecordVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidRecordVO.class);
            return JSONObject.toJSONString(userDao.selectComActAcidRecord(comActAcidRecordVO.getId()));
        }else if(operlog.getTitle().equals(UPDATEACIDMEMBER)){
            ComActAcidMemberVO comActAcidMemberVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidMemberVO.class);
            return JSONObject.toJSONString(userDao.selectComActAcidMember(comActAcidMemberVO.getId()));
        }
        return null;
    }
    /**
     * 是否需要区分村落/社区
     * */
    private Integer isVilliage(String name){
        if ("fangyipingtai".equals(name)){
            return 3;
        }else if ("pandashujuzhongxin".equals(name)){
            return 1;
        }else if ("pannongyenongcunju".equals(name)){
            return 2;
        }
        return 3;
    }
    /**
     * 是否为市级账号
     * */
    private Boolean isCityAccount(String name){
        if(("fangyipingtai").equals(name) || ("pandashujuzhongxin").equals(name) || ("pannongyenongcunju").equals(name)){
            return true;
        }
        return false;
    }
    /**
     * 是否为区级账号
     * */
    private Boolean isAreaAccount(String name){
        Boolean flag=false;
        switch (name){
            case "dongqu":
            case "xiqu":
            case "renhequ":
            case "miyixian":
            case "yanbianxian":
                flag=true;
                break;
        }
        return flag;
    }
    /**
     * account转区areaCode
     * */
    private  Integer accountToCode(String code){
        String name="100000";
        switch (code){
            case "xiqu" :
                name= "510423";
                break;
            case "dongqu":
                name="510402";
                break;
            case "renhequ":
                name="510411";
                break;
            case "miyixian":
                name="510421";
                break;
            case "yanbianxian":
                name="510422";
                break;
            case "fantaixinqu":
                name="510424";
                break;
        }
        return Integer.parseInt(name);
    }
}