findyguo
2021-03-04 a875e977d88ce6918e29fa9ddefa040fa81aee32
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -8,20 +8,27 @@
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.exceptions.ServiceException;
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.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.SysUserFeedbackDTO;
import com.panzhihua.common.model.vos.*;
import com.panzhihua.common.model.vos.community.ComActVO;
import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
import com.panzhihua.common.model.vos.partybuilding.ActivityManagerVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.utlis.IdCard;
import com.panzhihua.common.utlis.RealNameUtil;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.model.dos.*;
import com.panzhihua.service_user.model.dtos.DataKanbanDTO;
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;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
@@ -68,6 +75,8 @@
    private SysRoleMenuDAO sysRoleMenuDAO;
    @Resource
    private SysMenuDAO sysMenuDAO;
    @Resource
    private SysUserInputDAO sysUserInputDAO;
    /**
@@ -147,6 +156,8 @@
        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();
@@ -329,7 +340,7 @@
                sysUserDO.setFaceState(1);
                break;
            case 2:
                sysUserDO.setFaceState(3);
                sysUserDO.setFaceState(2);
                break;
            case 3:
                break;
@@ -338,7 +349,8 @@
        }
        int num=0;
        if (operationType==3) {
            num=userDao.deleteById(userId);
//            num=userDao.deleteById(userId);
            num=userDao.updateFaceState(userId);
        } else {
            num=userDao.updateById(sysUserDO);
        }
@@ -394,21 +406,62 @@
     */
    @Override
    public R detailUser(Long userId) {
        SysUserDO sysUserDO = userDao.selectById(userId);
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("人员不存在");
        }
        LoginUserInfoVO loginUserInfoVO=new LoginUserInfoVO();
        BeanUtils.copyProperties(sysUserDO,loginUserInfoVO);
        List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO.selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
        if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
            List<ComMngFamilyInfoVO>comMngFamilyInfoVOS=new ArrayList<>();
            comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
                ComMngFamilyInfoVO comMngFamilyInfoVO=new ComMngFamilyInfoVO();
                BeanUtils.copyProperties(comMngFamilyInfoDO,comMngFamilyInfoVO);
                comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
            });
            loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
        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));
            if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
                List<ComMngFamilyInfoVO>comMngFamilyInfoVOS=new ArrayList<>();
                comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
                    ComMngFamilyInfoVO comMngFamilyInfoVO=new ComMngFamilyInfoVO();
                    BeanUtils.copyProperties(comMngFamilyInfoDO,comMngFamilyInfoVO);
                    comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
                });
                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(sysUserInputDO1.getIdCard());
                    comMngFamilyInfoVO.setName(name);
                    comMngFamilyInfoVO.setPhone(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)) {
            loginUserInfoVO.setCommunityName(comActVO.getName());
        }
        return R.ok(loginUserInfoVO);
    }
@@ -493,7 +546,7 @@
        sysUserDO.setJob(loginUserInfoVO.getJob());
        sysUserDO.setUserId(loginUserInfoVO.getUserId());
        sysUserDO.setFaceUrl(loginUserInfoVO.getFaceUrl());
        sysUserDO.setFaceState(0);
        sysUserDO.setFaceState(null);
        SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard));
        if (!ObjectUtils.isEmpty(sysUserDO1)) {
            return R.fail("身份证已经存在");
@@ -539,8 +592,11 @@
        SysUserDO sysUserDO=new SysUserDO();
        sysUserDO.setUserId(userPhoneVO.getUserId());
        sysUserDO.setPhone(newPhone);
        userDao.updateMemberRole(newPhone, oldPhone);
        userDao.updateServiceTeam(newPhone, oldPhone);
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
            return R.ok();
        }
        return R.fail();
@@ -585,6 +641,10 @@
        Long communityId = loginUserInfoVO.getCommunityId();
        if (null==communityId||0==communityId) {
            loginUserInfoVO.setCommunityId(null);
        }
        String faceUrl = loginUserInfoVO.getFaceUrl();
        if (!ObjectUtils.isEmpty(faceUrl)) {
            loginUserInfoVO.setFaceState(0);
        }
        SysUserDO sysUserDO=new SysUserDO();
        BeanUtils.copyProperties(loginUserInfoVO,sysUserDO);
@@ -731,33 +791,36 @@
        Long roleId = menuRoleVO.getRoleId();
        Integer isAll = menuRoleVO.getIsAll();
        Long communityId = menuRoleVO.getCommunityId();
        if (isAll.intValue()==1) {
            List<SysMenuDO> sysMenuDOS = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, 1l).eq(SysMenuDO::getParentId,0).orderByAsc(SysMenuDO::getOrderNum));
            Long menuIdParent = sysMenuDOS.get(1).getMenuId();
            List<SysMenuDO> sysMenuDOSErJi = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getParentId, menuIdParent));
            if (!ObjectUtils.isEmpty(sysMenuDOS)) {
                sysMenuDOS.forEach(sysMenuDO -> {
                    sysMenuDO.setCommunityId(communityId);
                    sysMenuDO.setMenuId(null);
                    sysMenuDAO.insert(sysMenuDO);
                });
//                完成一级目录创建
                List<SysMenuDO> sysMenuDOS1 = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, communityId).orderByAsc(SysMenuDO::getOrderNum));
                sysMenuDOS1.forEach(sysMenuDO -> {
                    Integer orderNum = sysMenuDO.getOrderNum();
                    if (orderNum.intValue()>0) {
                        sysMenuDOSErJi.forEach(sysMenuDO1 -> {
                            sysMenuDO1.setParentId(sysMenuDO.getMenuId());
                            sysMenuDO1.setCommunityId(communityId);
                            sysMenuDO1.setMenuId(null);
                            sysMenuDAO.insert(sysMenuDO1);
                        });
                    }
                });
            }
        }
//        if (isAll.intValue()==1) {
//            List<SysMenuDO> sysMenuDOS = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, 2l).eq(SysMenuDO::getParentId,0).orderByAsc(SysMenuDO::getOrderNum));
//            Long menuIdParent = sysMenuDOS.get(1).getMenuId();
//            List<SysMenuDO> sysMenuDOSErJi = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getParentId, menuIdParent));
//            if (!ObjectUtils.isEmpty(sysMenuDOS)) {
//                sysMenuDOS.forEach(sysMenuDO -> {
//                    sysMenuDO.setCommunityId(communityId);
//                    sysMenuDO.setMenuId(null);
//                    sysMenuDAO.insert(sysMenuDO);
//                });
////                完成一级目录创建
//                List<SysMenuDO> sysMenuDOS1 = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, communityId).orderByAsc(SysMenuDO::getOrderNum));
//                sysMenuDOS1.forEach(sysMenuDO -> {
//                    Integer orderNum = sysMenuDO.getOrderNum();
//                    if (orderNum.intValue()>0) {
//                        sysMenuDOSErJi.forEach(sysMenuDO1 -> {
//                            sysMenuDO1.setParentId(sysMenuDO.getMenuId());
//                            sysMenuDO1.setCommunityId(communityId);
//                            sysMenuDO1.setMenuId(null);
//                            sysMenuDAO.insert(sysMenuDO1);
//                        });
//                    }
//                });
//            }
//        }
//        菜单写死不重新生成菜单 todo 所有注释上面自动生成新菜单功能
//        获取所有权限id
        List<SysMenuDO> menuDOList = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, communityId).orderByAsc(SysMenuDO::getOrderNum));
        List<SysMenuDO> menuDOList = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, 2l).orderByAsc(SysMenuDO::getOrderNum));
        menuIds=menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList());
        for(int i=0;i<menuIds.size();i++){
            SysRoleMenuDO sysRoleMenuDO=new SysRoleMenuDO();
@@ -799,7 +862,7 @@
            e.printStackTrace();
            log.error("编辑后台用户出错【{}】",e.getMessage());
            if (e.getMessage().contains("union_phone_type")) {
                return R.fail("手机号已经存在");
                return R.fail("此手机号已被占用,请更换其他手机号码");
            }
        }
        if (update>0&&null!=roleDO) {
@@ -1068,6 +1131,7 @@
    public R addFeedback(SysUserFeedbackDTO sysUserFeedbackDTO) {
        SysUserFeedbackDO sysUserFeedbackDO=new SysUserFeedbackDO();
        BeanUtils.copyProperties(sysUserFeedbackDTO,sysUserFeedbackDO);
        sysUserFeedbackDO.setPhotoPath(sysUserFeedbackDTO.getPhotoPah());
        int insert = sysUserFeedbackDAO.insert(sysUserFeedbackDO);
        if (insert>0) {
            return R.ok();
@@ -1156,12 +1220,17 @@
    public R noticeUnreadNum(Long userId) {
        NoticeUnReadVO noticeUnReadVO=sysUserNoticeDAO.noticeUnreadNum(userId);
        List<SysUserNoticeVO> sysUserNoticeVOList=new ArrayList<>();
        List<SysUserNoticeDO> sysUserNoticeDOS = sysUserNoticeDAO.selectList(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).orderByDesc(SysUserNoticeDO::getCreateAt).groupBy(SysUserNoticeDO::getType));
        List<SysUserNoticeDO> sysUserNoticeDOS = sysUserNoticeDAO.selectList(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).orderByDesc(SysUserNoticeDO::getCreateAt));
        if (!ObjectUtils.isEmpty(sysUserNoticeDOS)) {
            List<Integer> typeList=new ArrayList<>(4);
            sysUserNoticeDOS.forEach(sysUserNoticeDO -> {
                SysUserNoticeVO sysUserNoticeVO=new SysUserNoticeVO();
                BeanUtils.copyProperties(sysUserNoticeDO,sysUserNoticeVO);
                sysUserNoticeVOList.add(sysUserNoticeVO);
                Integer type = sysUserNoticeDO.getType();
                if (!typeList.contains(type)) {
                    SysUserNoticeVO sysUserNoticeVO=new SysUserNoticeVO();
                    BeanUtils.copyProperties(sysUserNoticeDO,sysUserNoticeVO);
                    sysUserNoticeVOList.add(sysUserNoticeVO);
                    typeList.add(type);
                }
            });
        }
        noticeUnReadVO.setSysUserNoticeVOList(sysUserNoticeVOList);
@@ -1189,7 +1258,7 @@
    public R dataKanban() {
        IndexDataKanbanVO indexDataKanbanVO=userDao.selectIndexDataKanban();
        List<DataKanbanDTO> dataKanbanDTOS=userDao.selectCommunityUserOrder();
        List<DataKanbanDTO> dataKanbanDTOS1=userDao.selectCommunityActiveUserOrder();
        List<String> communityUserX=new ArrayList<>();
        List<Integer> communityUserY=new ArrayList<>();
        List<String> communityActiveUserX=new ArrayList<>();
@@ -1200,17 +1269,33 @@
                communityUserY.add(dataKanbanDTO.getNum());
            });
        }
        if (!ObjectUtils.isEmpty(dataKanbanDTOS1)) {
            dataKanbanDTOS1.forEach(dataKanbanDTO -> {
                communityActiveUserX.add(dataKanbanDTO.getName());
                communityActiveUserY.add(dataKanbanDTO.getNum());
            });
        }
//        获取最近七天数据
        List<Date> serverndays=this.getServenDays();
        serverndays.forEach(date -> {
            //        查询社区活动数量
            DataKanbanDTO dataKanbanDTO=userDao.selectCommunityActiveUserOrder(date);
            communityActiveUserX.add(DateFormatUtils.format(date,"MM-dd"));
            communityActiveUserY.add(dataKanbanDTO.getNum());
        });
        indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX);
        indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserY);
        indexDataKanbanVO.setCommunityUserX(communityUserX);
        indexDataKanbanVO.setCommunityUserY(communityUserY);
        return R.ok(indexDataKanbanVO);
    }
    /**
     * 获取最近七天数据
     * @return
     */
    private List<Date> getServenDays() {
        List<Date>dates=new ArrayList<>();
        Date date=new Date();
        for(int i=6;i>=0;i--){
            Date date1= DateUtils.addDays(date,-i);
            dates.add(date1);
        }
        return dates;
    }
    /**
@@ -1274,14 +1359,152 @@
        return R.fail();
    }
    /**
     * 获取各种协议
     *
     * @param type 1居民端app协议 2网格员端app协议 3商家端app协议 4隐私政策
     * @return 协议内容
     */
    @Override
    public R agreement(Integer type) {
        SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO.selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type));
        if (ObjectUtils.isEmpty(sysUserAgreementDO)) {
            return R.fail("协议不存在");
        }
        SysUserAgreementVO sysUserAgreementVO=new SysUserAgreementVO();
        BeanUtils.copyProperties(sysUserAgreementDO,sysUserAgreementVO);
        return R.ok(sysUserAgreementVO);
    }
    /**
     * 维护用户最后登录时间
     *
     * @param userId 用户主键
     * @return 维护结果
     */
    @Override
    public R putUserLastLoginTime(Long userId) {
        SysUserDO sysUserDO=new SysUserDO();
        sysUserDO.setUserId(userId);
        sysUserDO.setLastLoginTime(new Date());
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 删除意见反馈
     *
     * @param id 主键
     * @return 删除结果
     */
    @Override
    public R deleteFeedback(Long id) {
        int delete = sysUserFeedbackDAO.deleteById(id);
        if (delete>0) {
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 校验小区是否存在
     *
     * @param areaName 小区名字
     * @return 校验结果
     */
    @Override
    public R checkAereaName(String areaName) {
        Integer num=userDao.selectCountArea(areaName);
        if (num>0) {
            Integer integer = userDao.selectCountHouse(areaName);
            if (integer>0) {
                return R.ok();
            }else{
                return R.fail("小区房屋信息未创建,请先在社区平台添加房屋信息");
            }
        }else{
            return R.fail("小区不存在,请先在社区平台添加小区");
        }
    }
    /**
     * 社区人员详情包括导入人员
     *
     * @param userId 人员id
     * @return CommunityUserInfoVO
     */
    @Override
    public CommunityUserInfoVO detailUserComunity(Long userId) {
        CommunityUserInfoVO communityUserInfoVO=new CommunityUserInfoVO();
        SysUserDO sysUserDO = userDao.selectById(userId);
        if (!ObjectUtils.isEmpty(sysUserDO)) {
            String idCard = sysUserDO.getIdCard();
            if (!ObjectUtils.isEmpty(idCard)) {
                communityUserInfoVO.setAge(IdCard.IdNOToAge(idCard));
                communityUserInfoVO.setBirthday(IdCard.birthDay(idCard));
                communityUserInfoVO.setIdCard(idCard);
            }
            communityUserInfoVO.setCreateAt(sysUserDO.getCreateAt());
            communityUserInfoVO.setName(sysUserDO.getName());
            String phone = sysUserDO.getPhone();
            communityUserInfoVO.setPhone(phone);
            communityUserInfoVO.setSex(sysUserDO.getSex());
            communityUserInfoVO.setTags(sysUserDO.getTags());
            communityUserInfoVO.setUserId(userId);
            ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone);
            if (!ObjectUtils.isEmpty(comMngVolunteerMngVO)) {
                communityUserInfoVO.setVolunteerCreateAt(comMngVolunteerMngVO.getCreateAt());
            }
            Integer isPartymember = sysUserDO.getIsPartymember();
            if (isPartymember.intValue()==1) {
                communityUserInfoVO.setPoliticalOutlook(1);
            }else{
                communityUserInfoVO.setPoliticalOutlook(3);
            }
            communityUserInfoVO.setIsVolunteer(sysUserDO.getIsVolunteer());
            List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO.selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
            if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
                List<ComMngFamilyInfoVO>comMngFamilyInfoVOS=new ArrayList<>();
                comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
                    ComMngFamilyInfoVO comMngFamilyInfoVO=new ComMngFamilyInfoVO();
                    BeanUtils.copyProperties(comMngFamilyInfoDO,comMngFamilyInfoVO);
                    comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
                });
                communityUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
            }
        }
        return communityUserInfoVO;
    }
    /**
     * 用户搜索了就下载搜索的用户否则下载所有用户
     *
     * @param exportUserDTO 用户搜索内容
     * @return List<EexcelUserDTO> excel内容
     */
    @Override
    public R export(ExportUserDTO exportUserDTO) {
        List<EexcelUserDTO> eexcelUserDTOS=userDao.selectExport(exportUserDTO);
        return R.ok(eexcelUserDTOS);
    }
    public static void main(String[] args) {
        String encode = new BCryptPasswordEncoder().encode("admin123456");
        System.out.println(encode);
//        String encode = new BCryptPasswordEncoder().encode("lbsq123456");
//        System.out.println(encode);
        List<Date>dates=new ArrayList<>();
        Date date=new Date();
        for(int i=6;i>=0;i--){
            Date date1= DateUtils.addDays(date,-i);
            dates.add(date1);
        }
        System.out.println(dates);
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        boolean matches = encoder.matches("admin1234567", encode);
        System.out.println(matches);
//        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
//        boolean matches = encoder.matches("admin1234567", encode);
//        System.out.println(matches);
    }
}