yanghui
2022-11-11 ad2201f809f45cbbe2e63a829e4c93a9c7b7f67c
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -18,6 +18,7 @@
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -223,6 +224,10 @@
            sysUserDO1.setPassword(encode);
            sysUserDO1.setType(1);
            sysUserDO1.setAppId(appId);
            //设置默认头像地址
            sysUserDO1.setImageUrl("https://www.psciio.com//idcard/f15c91f940624ed59537ecced1059f18.jpg");
            //设置默认用户名
            sysUserDO1.setNickName("用户" + RandomUtil.randomString(8));
            num = userDao.insert(sysUserDO1);
        } else {
            String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD);
@@ -304,7 +309,7 @@
        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));
                new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name).eq(SysUserDO::getAppId, appId));
        }else if(isIndustryOrExpertAccount) {
            //三说会堂行业分中心或专家后台账号登陆
            sysUserDO = userDao.selectOne(
@@ -326,6 +331,9 @@
            return R.fail();
        }
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        if (nonNull(sysUserDO.getStreetId())){
            loginUserInfoVO.setStreetId(sysUserDO.getStreetId());
        }
        loginUserInfoVO.setUserId(sysUserDO.getUserId());
        loginUserInfoVO.setName(sysUserDO.getName());
        loginUserInfoVO.setPassword(sysUserDO.getPassword());
@@ -355,6 +363,13 @@
            roleDOList.forEach(sysRoleDO -> {
                set.add(sysRoleDO.getRoleKey());
            });
        }
        //是否为人大代表
        if (StringUtils.isNotEmpty(sysUserDO.getPhone()) && StringUtils.isNotEmpty(sysUserDO.getName())){
            int i = userDao.isDpcMember(sysUserDO.getPhone(), sysUserDO.getName());
            if (i>0){
                loginUserInfoVO.setIsDpcMember(1);
            }
        }
        return R.ok(loginUserInfoVO);
    }
@@ -479,31 +494,53 @@
        if(countSocialOrg>0){
            loginUserInfoVO.setUserType(3);
        }
        else {
            if(loginUserInfoVO.getStreetId()!=null){
                loginUserInfoVO.setUserType(1);
        if (nonNull(sysUserDO.getAccount())){
            if (isStreetAccount(sysUserDO.getAccount())){
                //街道账号
                loginUserInfoVO.setLevel(3);
            }
            else {
                loginUserInfoVO.setUserType(2);
                loginUserInfoVO.setLevel(4);
            if (sysUserDO.getAccount().equals("admin")){
                loginUserInfoVO.setLevel(1);
            }
        }
        if (loginUserInfoVO.getType().equals(3)){
            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);
        }
        //是否为人大代表
        if (StringUtils.isNotEmpty(phone) && StringUtils.isNotEmpty(sysUserDO.getName())){
            int i = userDao.isDpcMember(phone, sysUserDO.getName());
            if (i>0){
                loginUserInfoVO.setIsDpcMember(1);
            }
        }
        return R.ok(loginUserInfoVO);
    }
    /**
     * 是否为综治后台街道账号
     * */
    public Boolean isStreetAccount(String name){
        Boolean flag=false;
        String[] account={"glpz","qxpjd","tjdjd","dbdjd","yqjd","bcg","hmkjd","dhjd","jsgyy","dzhljd"};
        if (nonNull(name)){
            if (ArrayUtil.contains(account,name)){
                flag=true;
            }
        }
        return flag;
    }
    /**
@@ -755,6 +792,13 @@
        //是否是防疫工作人员
        loginUserInfoVO.setIsAcidMember(0);
        ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(loginUserInfoVO.getPhone());
        //是否为普达物业公司后台账号
        if (nonNull(sysUserDO.getPhone())){
            Long propertyAccount = userDao.isPropertyAccount(sysUserDO.getPhone());
            if (nonNull(propertyAccount)){
                loginUserInfoVO.setPropertyId(propertyAccount);
            }
        }
        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);
@@ -964,7 +1008,7 @@
                userDao.updateComPbMemberUserId(idCard, sysUserDO.getUserId());
            }
            SysUserDO user = userDao.selectById(loginUserInfoVO.getUserId());
            /*SysUserDO user = userDao.selectById(loginUserInfoVO.getUserId());
            if (user != null) {
                // 实名认证成功推送订阅消息给用户
                try {
@@ -977,7 +1021,7 @@
                } catch (Exception e) {
                    log.error("推送用户订阅消息失败,失败原因:" + e.getMessage());
                }
            }
            }*/
            return R.ok();
        }
        return R.fail();
@@ -1317,6 +1361,9 @@
                this.putMenuRole(menuRoleVO);
            }
        }
        if (administratorsUserVO.getType().equals(20)){
            roleId=1559112102373756548L;
        }
        SysRoleDO roleDO = roleDAO.selectById(roleId);
        if (ObjectUtils.isEmpty(roleDO)) {
            return R.fail("角色不存在");
@@ -1581,8 +1628,9 @@
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        //因操作日志数据量太大,如果没有时间查询条件,默认查询最近十五天的数据
        if (StrUtil.isEmpty(sysOperLogVO.getStartTime()) && StrUtil.isEmpty(sysOperLogVO.getEndTime())){
            sysOperLogVO.setStartTime(com.panzhihua.common.utlis.DateUtils.getBeforeDay(30));
            sysOperLogVO.setStartTime(com.panzhihua.common.utlis.DateUtils.getBeforeDay(15));
            sysOperLogVO.setEndTime(com.panzhihua.common.utlis.DateUtils.getCurrentDateymd());
        }
        IPage<SysOperLogVO> iPage = sysOperLogDAO.pageOperLog(page, sysOperLogVO);
@@ -2807,7 +2855,8 @@
    @Transactional(rollbackFor = Exception.class)
    public R addConvenientMerchantUser(ConvenientMerchantDTO convenientMerchantDTO) {
        SysUserDO sysUserDO;
        sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, convenientMerchantDTO.getAccount()));
        sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, convenientMerchantDTO.getAccount())
                .eq(SysUserDO::getPhone,convenientMerchantDTO.getMobilePhone()).eq(SysUserDO::getAppId,"wx118de8a734d269f0"));
        if (nonNull(sysUserDO)) {
            return R.fail("账户已经存在");
        }
@@ -2816,10 +2865,10 @@
        String encode = new BCryptPasswordEncoder().encode(convenientMerchantDTO.getPassword());
        BeanUtils.copyProperties(convenientMerchantDTO, sysUserDO);
        sysUserDO.setAccount(convenientMerchantDTO.getAccount());
        sysUserDO.setType(10);
        sysUserDO.setType(5);
        sysUserDO.setAreaId(null);
        sysUserDO.setStatus(1);
        sysUserDO.setPhone(null);
        sysUserDO.setPhone(convenientMerchantDTO.getMobilePhone());
        sysUserDO.setName(convenientMerchantDTO.getContacts());
        sysUserDO.setPassword(encode);
        try {
@@ -2935,14 +2984,24 @@
        }
        // 获取最近二十天数据
        List<Date> serverndays = com.panzhihua.common.utlis.DateUtils.getOldDays();
        serverndays.forEach(date -> {
            // 查询社区活动数量
            DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAppId(), date);
        List<Date> activeDate = getTwentyDays();
        String twentyDay = com.panzhihua.common.utlis.DateUtils.getTwentyDay();
        //获取最近活跃人数
        List<UsersStatisticsDTO> actives = userDao.selectActive(twentyDay, dataKanBansDto.getAppId());
        //获取最近注册人数
        List<UsersStatisticsDTO> dailyAdds = userDao.selectDailyAdd(twentyDay, dataKanBansDto.getAppId());
        Map<String, String> activeMap = actives.stream().collect(Collectors.toMap(UsersStatisticsDTO::getSpecificDate, UsersStatisticsDTO::getTotal));
        Map<String, String> dailyAddMap = dailyAdds.stream().collect(Collectors.toMap(UsersStatisticsDTO::getSpecificDate, UsersStatisticsDTO::getTotal));
        for (Date date : activeDate) {
            String dateStr = DateUtil.format(date, "yyyy-MM-dd");
            communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd"));
            communityActiveUserY.add(dataKanbanDTO.getNum());
            communityActiveUserZ.add(dataKanbanDTO.getDayNum());
        });
            communityActiveUserY.add(dailyAddMap.containsKey(dateStr) ? Integer.parseInt(dailyAddMap.get(dateStr)) : 0);
            communityActiveUserZ.add(activeMap.containsKey(dateStr) ? Integer.parseInt(activeMap.get(dateStr)) : 0);
        }
        indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX);
        indexDataKanbanVO.setCommunityAddUserY(communityActiveUserY);
        indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserZ);
@@ -3262,16 +3321,19 @@
    @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);
        List<SysUserDO> sysUserDOs = userDao.selectByUserId(userId);
        for (SysUserDO sysUserDO : sysUserDOs) {
            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();
    }
@@ -3592,7 +3654,7 @@
                String accessToken = "";
                WxXCXTempSend util = new WxXCXTempSend();
                try {
                    accessToken = util.getAccessToken();
                    accessToken = util.getAccessToken("wx118de8a734d269f0");
                } catch (Exception e) {
                    e.printStackTrace();
                }
@@ -3602,15 +3664,15 @@
                        WxUtil.sendUuWash3(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "sU18zbyzxFldHAdOREaQCR5uq_uMvCKTmGtklO1xw-w");
                        break;
                    case 4:
                        status = "车美已开始服务";
                        status = "开始服务";
                        WxUtil.sendUuWash4(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                        break;
                    case 6:
                        status = "订单确认完成";
                        status = "订单完成";
                        WxUtil.sendUuWash6(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "k1aV97H3pDNNcNcDTeZBD9jQemNDADnRE801HhTXweI");
                        break;
                    case 9:
                        status = "订单已取消";
                        status = "订单取消";
                        WxUtil.sendUuWash(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "9_2FhQPDxZoUqmAuIZ1L1zjjYXokdNvu7A0gzKfvruI");
                        break;
                }
@@ -3638,15 +3700,15 @@
                        WxUtil.sendWsWash3(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "sNj6m-JBvW6rOokKGDX9X3-XH1AD0GY5_X0jA9JSLwc");
                        break;
                    case 4:
                        status = "车美已开始服务";
                        status = "开始服务";
                        WxUtil.sendWsWash4(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                        break;
                    case 6:
                        status = "订单确认完成";
                        status = "订单完成";
                        WxUtil.sendWsWash6(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "iPS8yrsGDqy76hiP8bIbxkosveoX1xTFhdusSiGp-XM");
                        break;
                    case 9:
                        status = "订单已取消";
                        status = "订单取消";
                        WxUtil.sendWsWash(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "z_ysGXz9JWBc2rXuYZzVCXKJTyLf0w0WerrohuNoEng");
                        break;
                }
@@ -3656,6 +3718,27 @@
    }
    @Override
    public R getAllCommunityList() {
        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(), 3);
                vo.setChildList(communityVOS);
            }
            areaVO.setChildList(streetVOS);
            areaVOList.add(areaVO);
        }
        return R.ok(areaVOList);
    }
    @Override
    public R getCommunityList(String name, Long id) {
        //区级账号名
        String[] streetList = {"bingcaogangjiedao", "donghuajiedao", "nongnongpingjiedao", "dadukoujiedaojiedao", "guazipingjiedao",
@@ -3663,7 +3746,7 @@
                "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);
//        List<Integer> ids = userDao.selectIdsByAccount(streetList);
        //村或社区账号
        Integer type = isVilliage(name);
        //是否为市级账号
@@ -3877,6 +3960,19 @@
        return R.ok();
    }
    @Override
    public R feedBackReply(SysUserFeedbackVO sysUserFeedbackVO) {
        SysUserFeedbackDO sysUserFeedbackDO=new SysUserFeedbackDO();
        BeanUtils.copyProperties(sysUserFeedbackVO, sysUserFeedbackDO);
        return R.ok(sysUserFeedbackDAO.updateById(sysUserFeedbackDO));
    }
    @Override
    public R myFeedBack(Long id,Integer type) {
        List<SysUserFeedbackDO> sysUserFeedbackDOS = sysUserFeedbackDAO.selectList(new QueryWrapper<SysUserFeedbackDO>().lambda().eq(SysUserFeedbackDO::getType, type).eq(SysUserFeedbackDO::getUserId, id));
        return R.ok(sysUserFeedbackDOS);
    }
    @Override
    public R getAreaAndStreet() {