CeDo
2021-05-19 0d248bc79c25c38dbdbda49dbcb5a6595cbca379
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -5,20 +5,20 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.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.dtos.user.*;
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.shop.ShopStoreVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.service.partybuilding.PartyBuildingService;
import com.panzhihua.common.utlis.IdCard;
import com.panzhihua.common.utlis.RealNameUtil;
import com.panzhihua.common.utlis.SensitiveUtil;
@@ -158,7 +158,7 @@
        sysUserDO.setPhone(purePhoneNumber);
        sysUserDO.setUserId(userId);
        userDao.updateMemberRole(purePhoneNumber, purePhoneNumber);
        userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber);
        userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber);
        int i = userDao.updateById(sysUserDO);
        if (i > 0) {
            return R.ok();
@@ -181,22 +181,23 @@
            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));
            wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or().eq(SysUserDO::getPhone, name));
            sysUserDO = userDao.selectOne(wrapper);
        }
        boolean empty = ObjectUtils.isEmpty(sysUserDO);
        if (empty) {
            return R.fail();
        }
        LoginUserInfoVO loginUserInfoVO=new LoginUserInfoVO();
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        loginUserInfoVO.setUserId(sysUserDO.getUserId());
        loginUserInfoVO.setName(sysUserDO.getName());
        loginUserInfoVO.setPassword(sysUserDO.getPassword());
        loginUserInfoVO.setStatus(sysUserDO.getStatus());
        loginUserInfoVO.setAccount(name);
        loginUserInfoVO.setType(sysUserDO.getType());
        List<SysRoleDO> roleDOList=roleDAO.selectByUserId(sysUserDO.getUserId());
        Set<String> set=new HashSet<>();
        loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard()!=null);//暂时 身份证判断实名制
        List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId());
        Set<String> set = new HashSet<>();
        if (!ObjectUtils.isEmpty(roleDOList)) {
            roleDOList.forEach(sysRoleDO -> {
                set.add(sysRoleDO.getRoleKey());
@@ -218,10 +219,10 @@
        if (empty) {
            return R.fail();
        }
        LoginUserInfoVO loginUserInfoVO=new LoginUserInfoVO();
        BeanUtils.copyProperties(sysUserDO,loginUserInfoVO);
        List<SysRoleDO> roleDOList=roleDAO.selectByUserId(sysUserDO.getUserId());
        Set<String> set=new HashSet<>();
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
        List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId());
        Set<String> set = new HashSet<>();
        if (!ObjectUtils.isEmpty(roleDOList)) {
            roleDOList.forEach(sysRoleDO -> {
                set.add(sysRoleDO.getRoleKey());
@@ -231,22 +232,28 @@
        loginUserInfoVO.setIsmemberrole(2);
//        志愿者状态
        String phone = sysUserDO.getPhone();
        Long userCommunityId = sysUserDO.getCommunityId();
        if (!ObjectUtils.isEmpty(phone)) {
            ComMngVolunteerMngVO comMngVolunteerMngVO= userDao.selectVolunteerMngByPhone(phone);
            ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone);
            if (ObjectUtils.isEmpty(comMngVolunteerMngVO)) {
                loginUserInfoVO.setVolunteerStatus(0);
            }else{
            } else {
                int state = comMngVolunteerMngVO.getState().intValue();
                loginUserInfoVO.setVolunteerStatus(state);
            }
            Integer countTeam = userDao.selectCountTeam(phone);
            Integer selectCountMemberRole = userDao.selectCountMemberRole(phone);
            if(countTeam!=null&&countTeam>0) {
               loginUserInfoVO.setIsmemberrole(1);
            }else if(selectCountMemberRole!=null&&selectCountMemberRole>0) {
               loginUserInfoVO.setIsmemberrole(1);
            //是否是"管理员"或者 本社区 "社区团队"、"党委成员"
            Integer countTeam = userDao.selectCountTeam(phone, userCommunityId);
            Integer selectCountMemberRole = userDao.selectCountMemberRole(phone, userCommunityId);
            Integer isSysUser = userDao.selectCountSysUser(phone, userCommunityId);
            if (countTeam != null && countTeam > 0) {
                loginUserInfoVO.setIsmemberrole(1);
            } else if (selectCountMemberRole != null && selectCountMemberRole > 0) {
                loginUserInfoVO.setIsmemberrole(1);
            } else if (isSysUser != null && isSysUser > 0) {
                loginUserInfoVO.setIsmemberrole(1);
            }
        }
        loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard()!=null);
        return R.ok(loginUserInfoVO);
    }
@@ -267,16 +274,16 @@
            return R.fail("新密码与原密码不能相同");
        }
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        if( !encoder.matches(oldPassword,dataPassowrd)){
        if (!encoder.matches(oldPassword, dataPassowrd)) {
            return R.fail("原密码错误");
        }
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setUserId(userId);
        String encode = new BCryptPasswordEncoder().encode(newPassword);
        sysUserDO.setPassword(encode);
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
@@ -291,16 +298,16 @@
     */
    @Override
    public R listActivityManager(String param, Long communityId) {
        LambdaQueryWrapper<SysUserDO> queryWrapper=new LambdaQueryWrapper<>();
        List<ActivityManagerVO> activityManagerVOS=new ArrayList<>();
        queryWrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getCommunityId, communityId).eq(SysUserDO::getStatus, 1).eq(SysUserDO::getType,3);
        LambdaQueryWrapper<SysUserDO> queryWrapper = new LambdaQueryWrapper<>();
        List<ActivityManagerVO> activityManagerVOS = new ArrayList<>();
        queryWrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getCommunityId, communityId).eq(SysUserDO::getStatus, 1).eq(SysUserDO::getType, 3);
        if (!ObjectUtils.isEmpty(param)) {
            queryWrapper = queryWrapper.eq(SysUserDO::getName, param);
        }
        List<SysUserDO> sysUserDOS = userDao.selectList(queryWrapper);
        if (!ObjectUtils.isEmpty(sysUserDOS)) {
            sysUserDOS.forEach(sysUserDO -> {
                ActivityManagerVO activityManagerVO=new ActivityManagerVO();
                ActivityManagerVO activityManagerVO = new ActivityManagerVO();
                activityManagerVO.setManagerId(sysUserDO.getUserId());
                activityManagerVO.setName(sysUserDO.getName());
                activityManagerVOS.add(activityManagerVO);
@@ -320,10 +327,10 @@
        Page page = new Page<>();
        Long pageNum = loginUserInfoVO.getPageNum();
        Long pageSize = loginUserInfoVO.getPageSize();
        if (null==pageNum||0==pageNum) {
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null==pageSize||0==pageSize) {
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
@@ -342,9 +349,9 @@
    public R putUserFace(LoginUserInfoVO loginUserInfoVO) {
        int operationType = loginUserInfoVO.getOperationType().intValue();
        Long userId = loginUserInfoVO.getUserId();
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setUserId(userId);
        switch (operationType){
        switch (operationType) {
            case 1:
                sysUserDO.setFaceState(1);
                break;
@@ -356,14 +363,14 @@
            default:
                break;
        }
        int num=0;
        if (operationType==3) {
        int num = 0;
        if (operationType == 3) {
//            num=userDao.deleteById(userId);
            num=userDao.updateFaceState(userId);
            num = userDao.updateFaceState(userId);
        } else {
            num=userDao.updateById(sysUserDO);
            num = userDao.updateById(sysUserDO);
        }
        if (num>0) {
        if (num > 0) {
            return R.ok();
        }
        return R.fail();
@@ -380,16 +387,16 @@
        Page page = new Page<>();
        Long pageNum = loginUserInfoVO.getPageNum();
        Long pageSize = loginUserInfoVO.getPageSize();
        if (null==pageNum||0==pageNum) {
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null==pageSize||0==pageSize) {
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<LoginUserInfoVO> iPage = userDao.pageUser(page, loginUserInfoVO);
        iPage.getRecords().forEach(record->{
        iPage.getRecords().forEach(record -> {
            record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone()));
            record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard()));
        });
@@ -403,66 +410,66 @@
     */
    @Override
    public R listTag() {
        List<String> list=new ArrayList<>();
        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(null);
        List<String> list = new ArrayList<>();
        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper<>());
        if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
            list=comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
            list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
        }
        return R.ok(list);
    }
    /**
     * 人员详情
     *
     *detailuser
     * @param userId 用户id
     * @return 人员详情
     */
    @Override
    public R detailUser(Long userId) {
        LoginUserInfoVO loginUserInfoVO=new LoginUserInfoVO();
        if(userId<100000000l){
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        if (userId < 100000000l) {
            SysUserDO sysUserDO = userDao.selectById(userId);
            if (ObjectUtils.isEmpty(sysUserDO)) {
                return R.fail("人员不存在");
            }
            BeanUtils.copyProperties(sysUserDO,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<>();
                List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
                comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
                    ComMngFamilyInfoVO comMngFamilyInfoVO=new ComMngFamilyInfoVO();
                    BeanUtils.copyProperties(comMngFamilyInfoDO,comMngFamilyInfoVO);
                    ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
                    BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO);
                    comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
                });
                loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
            }
        }else{
        } else {
            //导入社区人员
            SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(userId - 100000000);
            if (ObjectUtils.isEmpty(sysUserInputDO)) {
                return R.fail("人员不存在");
            }
            String name1 = sysUserInputDO.getName();
            BeanUtils.copyProperties(sysUserInputDO,loginUserInfoVO);
            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<>();
                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 comMngFamilyInfoVO = new ComMngFamilyInfoVO();
                    comMngFamilyInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(sysUserInputDO1.getIdCard()));
                    comMngFamilyInfoVO.setName(name);
                    comMngFamilyInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(sysUserInputDO1.getPhone()));
                    if (isRent.intValue()==0) {
                    if (isRent.intValue() == 0) {
                        comMngFamilyInfoVO.setRelationship("家人");
                    }else{
                    } else {
                        comMngFamilyInfoVO.setRelationship("合租");
                    }
                    comMngFamilyInfoVO.setAge(IdCard.IdNOToAge(sysUserInputDO1.getIdCard()));
@@ -472,7 +479,7 @@
            }
        }
        ComActVO comActVO=userDao.selectCommunity(loginUserInfoVO.getCommunityId());
        ComActVO comActVO = userDao.selectCommunity(loginUserInfoVO.getCommunityId());
        if (!ObjectUtils.isEmpty(comActVO)) {
            loginUserInfoVO.setCommunityName(comActVO.getName());
        }
@@ -489,11 +496,11 @@
     */
    @Override
    public R putUserTag(LoginUserInfoVO loginUserInfoVO) {
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setUserId(loginUserInfoVO.getUserId());
        sysUserDO.setTags(loginUserInfoVO.getTags());
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
@@ -507,11 +514,63 @@
     */
    @Override
    public R putUserIsVolunteer(String phone, int type) {
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setIsVolunteer(type);
        //????根据手机号匹配
        int update = userDao.update(sysUserDO, new UpdateWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone));
        if (update>0) {
        if (update > 0) {
            ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone);
            if(comMngVolunteerMngVO!=null&&comMngVolunteerMngVO.getSubmitUserId()!=null) {
                Long userId = comMngVolunteerMngVO.getSubmitUserId();
                //删除用户信息缓存
                String userKey = UserConstants.LOGIN_USER_INFO + userId;
                stringRedisTemplate.delete(userKey);
            }else{
                List<SysUserDO> userDOList =  userDao.selectList(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getPhone, phone));
                if(userDOList!=null && userDOList.size()>0){
                    userDOList.forEach(usrDo ->{
                        Long userId = usrDo.getUserId();
                        //删除用户信息缓存
                        String userKey = UserConstants.LOGIN_USER_INFO + userId;
                        stringRedisTemplate.delete(userKey);
                    });
                }
            }
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 修改用户志愿者状态
     *
     * @param userId 志愿者用户ID
     * @param type
     */
    @Override
    public R putUserIsVolunteerById(Long userId, int type) {
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setIsVolunteer(type);
        sysUserDO.setUserId(userId);
        SysUserDO userInDB = userDao.selectById(userId);
        if (userInDB != null) {
            boolean isVol = userInDB.getIsVolunteer() == 1;
            if (isVol) {
                return R.fail("用户已是志愿者");
            }
            if (userInDB.getType() != 1) {
                return R.fail("用户不是小程序用户");
            }
            int update = userDao.updateById(sysUserDO);
            if (update > 0) {
                //删除用户信息缓存
                String userKey = UserConstants.LOGIN_USER_INFO + userId;
                stringRedisTemplate.delete(userKey);
                return R.ok();
            }
        }
        return R.fail();
    }
@@ -524,12 +583,12 @@
     */
    @Override
    public R putUserCommunityArea(LoginUserInfoVO loginUserInfoVO) {
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setCommunityId(loginUserInfoVO.getCommunityId());
        sysUserDO.setAreaId(loginUserInfoVO.getAreaId());
//        sysUserDO.setAreaId(loginUserInfoVO.getAreaId());
        sysUserDO.setUserId(loginUserInfoVO.getUserId());
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            //删除用户信息缓存
            String userKey = UserConstants.LOGIN_USER_INFO + loginUserInfoVO.getUserId();
            stringRedisTemplate.delete(userKey);
@@ -549,15 +608,21 @@
        //接入第三方实名认证
        String idCard = loginUserInfoVO.getIdCard();
        String name = loginUserInfoVO.getName();
        boolean b = RealNameUtil.authentication(idCard, name);
        if (!b) {
            return R.fail("身份认证失败:公安系统认证错误");
        log.info("用户实名认证发送请求,姓名:" + name + "身份证号码:" + idCard);
        try {
            boolean b = RealNameUtil.authentication(idCard, name);
            if (!b) {
                return R.fail("身份认证失败:请填写真实信息");
            }
        }catch (ServiceException serviceException){
            return R.fail(serviceException.getMessage());
        }
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setName(name);
        sysUserDO.setIdCard(idCard);
        sysUserDO.setSex(loginUserInfoVO.getSex());
        sysUserDO.setBirthday(loginUserInfoVO.getBirthday());
        //通过身份证号判断性别以及出生日期
        sysUserDO.setSex(IdCard.sex(idCard));
        sysUserDO.setBirthday(IdCard.birthDay(idCard));
        sysUserDO.setJob(loginUserInfoVO.getJob());
        sysUserDO.setUserId(loginUserInfoVO.getUserId());
        sysUserDO.setFaceUrl(loginUserInfoVO.getFaceUrl());
@@ -567,7 +632,18 @@
            return R.fail("身份证已经存在");
        }
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            //清空缓存
            String userKey = UserConstants.LOGIN_USER_INFO + loginUserInfoVO.getUserId();
            stringRedisTemplate.delete(userKey);
            //实名认证成功查询是否有已审核的党员信息,有则更新党员信息绑定党员的userId
            Long memberId = userDao.getPartyBuildingByIdCard(idCard);
            if(memberId != null){
                sysUserDO.setIsPartymember(1);
                userDao.updateById(sysUserDO);
                //修改审核绑定的userId
                userDao.updateComPbMemberUserId(idCard,sysUserDO.getUserId());
            }
            return R.ok();
        }
        return R.fail();
@@ -594,24 +670,24 @@
        }
        SysUserDO sysUserDO1 = userDao.selectById(userPhoneVO.getUserId());
        String phone = sysUserDO1.getPhone();
        if (!StringUtils.isEmpty(phone)&& !phone.equals(oldPhone)) {
        if (!StringUtils.isEmpty(phone) && !phone.equals(oldPhone)) {
            return R.fail("旧手机号错误");
        }
        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        String code = valueOperations.get(key);
        if (!code.equals(smsCode)) {
            if(!smsCode.equals("777333")){
            if (!smsCode.equals("777333")) {
                return R.fail("验证码错误");
            }
        }
        SysUserDO sysUserDO=new SysUserDO();
        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) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
@@ -626,45 +702,45 @@
    @Override
    public R putUser(LoginUserInfoVO loginUserInfoVO) {
        Integer faceState = loginUserInfoVO.getFaceState();
        if (null==faceState||0==faceState) {
        if (null == faceState || 0 == faceState) {
            loginUserInfoVO.setFaceState(null);
        }
        Integer isPartymember = loginUserInfoVO.getIsPartymember();
        if (null==isPartymember||0==isPartymember) {
        if (null == isPartymember || 0 == isPartymember) {
            loginUserInfoVO.setIsPartymember(null);
        }
        Integer isVolunteer = loginUserInfoVO.getIsVolunteer();
        if (null==isVolunteer||0==isVolunteer) {
        if (null == isVolunteer || 0 == isVolunteer) {
            loginUserInfoVO.setIsVolunteer(null);
        }
        Integer operationType = loginUserInfoVO.getOperationType();
        if (null==operationType||0==operationType) {
        if (null == operationType || 0 == operationType) {
            loginUserInfoVO.setOperationType(null);
        }
        Integer sex = loginUserInfoVO.getSex();
        if (null==sex||0==sex) {
        if (null == sex || 0 == sex) {
            loginUserInfoVO.setSex(null);
        }
        Integer status = loginUserInfoVO.getStatus();
        if (null==status||0==status) {
        if (null == status || 0 == status) {
            loginUserInfoVO.setStatus(null);
        }
        Integer type = loginUserInfoVO.getType();
        if (null==type||0==type) {
        if (null == type || 0 == type) {
            loginUserInfoVO.setType(null);
        }
        Long communityId = loginUserInfoVO.getCommunityId();
        if (null==communityId||0==communityId) {
        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);
        SysUserDO sysUserDO = new SysUserDO();
        BeanUtils.copyProperties(loginUserInfoVO, sysUserDO);
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
@@ -677,13 +753,14 @@
     * @return 成员集合
     */
    @Override
    public R listFamily(Long userId) {
        List<ComMngFamilyInfoVO>comMngFamilyInfoVOS=new ArrayList<>();
        List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO.selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
        if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
            comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
                ComMngFamilyInfoVO comMngFamilyInfoVO=new ComMngFamilyInfoVO();
                BeanUtils.copyProperties(comMngFamilyInfoDO,comMngFamilyInfoVO);
    public R listFamily(Long userId,Long pageNum, Long pageSize) {
        List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
        LambdaQueryWrapper<ComMngFamilyInfoDO> query = new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId);
        IPage<ComMngFamilyInfoDO> pageData = comMngFamilyInfoDAO.selectPage(new Page<>(pageNum,pageSize), query);
        if (!ObjectUtils.isEmpty(pageData.getRecords())) {
            pageData.getRecords().forEach(comMngFamilyInfoDO -> {
                ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
                BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO);
                comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
            });
        }
@@ -698,14 +775,15 @@
     */
    @Override
    public R addFamily(ComMngFamilyInfoVO comMngFamilyInfoVO) {
        ComMngFamilyInfoDO comMngFamilyInfoDO=new ComMngFamilyInfoDO();
        BeanUtils.copyProperties(comMngFamilyInfoVO,comMngFamilyInfoDO);
        ComMngFamilyInfoDO comMngFamilyInfoDO = new ComMngFamilyInfoDO();
        BeanUtils.copyProperties(comMngFamilyInfoVO, comMngFamilyInfoDO);
        ComMngFamilyInfoDO comMngFamilyInfoDO1 = comMngFamilyInfoDAO.selectOne(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getIdCard, comMngFamilyInfoVO.getIdCard()).eq(ComMngFamilyInfoDO::getUserId, comMngFamilyInfoVO.getUserId()));
        if (!ObjectUtils.isEmpty(comMngFamilyInfoDO1)) {
            return R.fail("家庭成员已经存在");
        }
        comMngFamilyInfoDO.setAge(IdCard.IdNOToAge(comMngFamilyInfoVO.getIdCard()));
        int insert = comMngFamilyInfoDAO.insert(comMngFamilyInfoDO);
        if (insert>0) {
        if (insert > 0) {
            return R.ok();
        }
        return R.fail();
@@ -719,10 +797,11 @@
     */
    @Override
    public R putFamily(ComMngFamilyInfoVO comMngFamilyInfoVO) {
        ComMngFamilyInfoDO comMngFamilyInfoDO=new ComMngFamilyInfoDO();
        BeanUtils.copyProperties(comMngFamilyInfoVO,comMngFamilyInfoDO);
        ComMngFamilyInfoDO comMngFamilyInfoDO = new ComMngFamilyInfoDO();
        BeanUtils.copyProperties(comMngFamilyInfoVO, comMngFamilyInfoDO);
        comMngFamilyInfoDO.setAge(IdCard.IdNOToAge(comMngFamilyInfoVO.getIdCard()));
        int update = comMngFamilyInfoDAO.updateById(comMngFamilyInfoDO);
        if (update>0) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
@@ -737,23 +816,29 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addUserBackstage(AdministratorsUserVO administratorsUserVO) {
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        Long roleId = administratorsUserVO.getRoleId();
        Long communityId = administratorsUserVO.getCommunityId();
        if (roleId.intValue()==999999999) {
        if (roleId.intValue() == 999999999 || roleId.intValue() == 888888888) {
            Long communityId = administratorsUserVO.getCommunityId();
            //新增社区高级管理员角色
            SysRoleDO sysRoleDO=new SysRoleDO();
            sysRoleDO.setCommunityId(communityId);
            sysRoleDO.setRoleName("超级管理员");
            sysRoleDO.setRoleKey("chaojiguanliyuan"+communityId);
            SysRoleDO sysRoleDO = new SysRoleDO();
            if (roleId.intValue() == 999999999) {
                sysRoleDO.setCommunityId(communityId);
                sysRoleDO.setRoleName("超级管理员");
                sysRoleDO.setRoleKey(Constants.ADMIN_SHOP_ROLE_KEY + communityId);
            } else {
                sysRoleDO.setCommunityId(0L);
                sysRoleDO.setRoleName(administratorsUserVO.getShopStoreName());
                sysRoleDO.setRoleKey(Constants.SHOP_ROLE_KEY + administratorsUserVO.getShopStorePhone());
            }
            sysRoleDO.setRoleSort(0);
            sysRoleDO.setCreateBy(administratorsUserVO.getUserId());
            int insert = roleDAO.insert(sysRoleDO);
            if (insert>0) {
            if (insert > 0) {
                SysRoleDO sysRoleDO1 = roleDAO.selectOne(new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey()));
                roleId=sysRoleDO1.getRoleId();
                roleId = sysRoleDO1.getRoleId();
                //新角色设置所有权限
                MenuRoleVO menuRoleVO=new MenuRoleVO();
                MenuRoleVO menuRoleVO = new MenuRoleVO();
                menuRoleVO.setIsAll(1);
                menuRoleVO.setCommunityId(communityId);
                menuRoleVO.setRoleId(roleId);
@@ -766,28 +851,28 @@
        }
        String encode = new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword());
        administratorsUserVO.setPassword(encode);
        BeanUtils.copyProperties(administratorsUserVO,sysUserDO);
        BeanUtils.copyProperties(administratorsUserVO, sysUserDO);
        int insert = 0;
        try {
            insert = userDao.insert(sysUserDO);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("新增后台用户报错【{}】",e.getMessage());
            log.error("新增后台用户报错【{}】", e.getMessage());
            if (e.getMessage().contains("union_phone_type")) {
                throw new ServiceException("手机号已经存在");
            }else if(e.getMessage().contains("union_account_type")){
            } else if (e.getMessage().contains("union_account_type")) {
                throw new ServiceException("账户已经存在");
            }
        }
        if (insert>0) {
        if (insert > 0) {
            SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, administratorsUserVO.getType()).eq(SysUserDO::getAccount, administratorsUserVO.getAccount()));
            Long userId = sysUserDO1.getUserId();
            SysUserRoleDO sysUserRoleDO=new SysUserRoleDO();
            SysUserRoleDO sysUserRoleDO = new SysUserRoleDO();
            sysUserRoleDO.setUserId(userId);
            sysUserRoleDO.setRoleId(roleDO.getRoleId());
            int insert1 = sysUserRoleDAO.insert(sysUserRoleDO);
            if (insert1>0) {
            if (insert1 > 0) {
                return R.ok();
            }
        }
@@ -802,7 +887,7 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public R putMenuRole(MenuRoleVO menuRoleVO) {
        List<Long>menuIds=new ArrayList<>();
        List<Long> menuIds = new ArrayList<>();
        Long roleId = menuRoleVO.getRoleId();
        Integer isAll = menuRoleVO.getIsAll();
        Long communityId = menuRoleVO.getCommunityId();
@@ -836,9 +921,9 @@
//        获取所有权限id
        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();
        menuIds = menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList());
        for (int i = 0; i < menuIds.size(); i++) {
            SysRoleMenuDO sysRoleMenuDO = new SysRoleMenuDO();
            sysRoleMenuDO.setMenuId(menuIds.get(i));
            sysRoleMenuDO.setRoleId(roleId);
            sysRoleMenuDAO.insert(sysRoleMenuDO);
@@ -855,11 +940,11 @@
     */
    @Override
    public R putUserBackstage(AdministratorsUserVO administratorsUserVO) {
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        Long roleId = administratorsUserVO.getRoleId();
        SysRoleDO roleDO=null;
        if (null!=roleId&&0!=roleId) {
             roleDO = roleDAO.selectById(roleId);
        SysRoleDO roleDO = null;
        if (null != roleId && 0 != roleId) {
            roleDO = roleDAO.selectById(roleId);
            if (ObjectUtils.isEmpty(roleDO)) {
                return R.fail("角色不存在");
            }
@@ -869,24 +954,24 @@
            String encode = new BCryptPasswordEncoder().encode(password);
            administratorsUserVO.setPassword(encode);
        }
        BeanUtils.copyProperties(administratorsUserVO,sysUserDO);
        int update=0;
        BeanUtils.copyProperties(administratorsUserVO, sysUserDO);
        int update = 0;
        try {
             update = userDao.updateById(sysUserDO);
            update = userDao.updateById(sysUserDO);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("编辑后台用户出错【{}】",e.getMessage());
            log.error("编辑后台用户出错【{}】", e.getMessage());
            if (e.getMessage().contains("union_phone_type")) {
                return R.fail("此手机号已被占用,请更换其他手机号码");
            }
        }
        if (update>0&&null!=roleDO) {
            SysUserRoleDO sysUserRoleDO=new SysUserRoleDO();
        if (update > 0 && null != roleDO) {
            SysUserRoleDO sysUserRoleDO = new SysUserRoleDO();
            sysUserRoleDO.setRoleId(roleDO.getRoleId());
            int update1 = sysUserRoleDAO.update(sysUserRoleDO,new UpdateWrapper<SysUserRoleDO>().lambda().eq(SysUserRoleDO::getUserId,administratorsUserVO.getUserId()));
            if (update1>0) {
            int update1 = sysUserRoleDAO.update(sysUserRoleDO, new UpdateWrapper<SysUserRoleDO>().lambda().eq(SysUserRoleDO::getUserId, administratorsUserVO.getUserId()));
            if (update1 > 0) {
                return R.ok();
            }else{
            } else {
                sysUserRoleDO.setUserId(administratorsUserVO.getUserId());
                sysUserRoleDAO.insert(sysUserRoleDO);
            }
@@ -910,15 +995,15 @@
        }
        Long communityId = sysUserDO.getCommunityId();
        Long communityId1 = administratorsUserVO.getCommunityId();
        if (communityId1.intValue()!=communityId.intValue()) {
        if (communityId1.intValue() != communityId.intValue()) {
            return R.fail("用户不属于当前平台");
        }
        //删除用户
        int delete = userDao.deleteById(userId);
        //删除用户角色关系
        if (delete>0) {
        if (delete > 0) {
            int delete1 = sysUserRoleDAO.delete(new QueryWrapper<SysUserRoleDO>().lambda().eq(SysUserRoleDO::getUserId, userId));
            if (delete1==0) {
            if (delete1 == 0) {
                return R.fail("用户没有角色关系");
            }
        }
@@ -936,10 +1021,10 @@
        Page page = new Page<>();
        Long pageNum = administratorsUserVO.getPageNum();
        Long pageSize = administratorsUserVO.getPageSize();
        if (null==pageNum||pageNum==0) {
        if (null == pageNum || pageNum == 0) {
            pageNum = 1l;
        }
        if (null==pageSize||pageSize==0) {
        if (null == pageSize || pageSize == 0) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
@@ -956,13 +1041,13 @@
     */
    @Override
    public R addOperLog(SysOperLogVO operlog) {
        SysOperLogDO sysOperLogDO=new SysOperLogDO();
        BeanUtils.copyProperties(operlog,sysOperLogDO);
        SysOperLogDO sysOperLogDO = new SysOperLogDO();
        BeanUtils.copyProperties(operlog, sysOperLogDO);
        int insert = sysOperLogDAO.insert(sysOperLogDO);
        if (insert>0) {
        if (insert > 0) {
            return R.ok();
        }
       return R.fail();
        return R.fail();
    }
    /**
@@ -976,10 +1061,10 @@
        Page page = new Page<>();
        Long pageNum = sysOperLogVO.getPageNum();
        Long pageSize = sysOperLogVO.getPageSize();
        if (null==pageNum||pageNum==0) {
        if (null == pageNum || pageNum == 0) {
            pageNum = 1l;
        }
        if (null==pageSize||pageSize==0) {
        if (null == pageSize || pageSize == 0) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
@@ -995,14 +1080,14 @@
     */
    @Override
    public R listAgreement() {
        List<SysUserAgreementDO> sysUserAgreementDOS = sysUserAgreementDAO.selectList(null);
        List<SysUserAgreementDO> sysUserAgreementDOS = sysUserAgreementDAO.selectList(new LambdaQueryWrapper<>());
        if (ObjectUtils.isEmpty(sysUserAgreementDOS)) {
            return R.fail();
        }
        List<SysUserAgreementVO> sysUserAgreementVOS=new ArrayList<>();
        List<SysUserAgreementVO> sysUserAgreementVOS = new ArrayList<>();
        sysUserAgreementDOS.forEach(sysUserAgreementDO -> {
            SysUserAgreementVO sysUserAgreementVO=new SysUserAgreementVO();
            BeanUtils.copyProperties(sysUserAgreementDO,sysUserAgreementVO);
            SysUserAgreementVO sysUserAgreementVO = new SysUserAgreementVO();
            BeanUtils.copyProperties(sysUserAgreementDO, sysUserAgreementVO);
            sysUserAgreementVOS.add(sysUserAgreementVO);
        });
        return R.ok(sysUserAgreementVOS);
@@ -1016,10 +1101,10 @@
     */
    @Override
    public R putAgreement(SysUserAgreementVO sysUserAgreementVO) {
        SysUserAgreementDO sysUserAgreementDO=new SysUserAgreementDO();
        BeanUtils.copyProperties(sysUserAgreementVO,sysUserAgreementDO);
        SysUserAgreementDO sysUserAgreementDO = new SysUserAgreementDO();
        BeanUtils.copyProperties(sysUserAgreementVO, sysUserAgreementDO);
        int update = sysUserAgreementDAO.updateById(sysUserAgreementDO);
        if (update==0) {
        if (update == 0) {
            return R.fail("协议不存在");
        }
        return R.ok();
@@ -1037,10 +1122,10 @@
        if (ObjectUtils.isEmpty(comMngUserTagDOS)) {
            return R.fail();
        }
        List<ComMngUserTagVO> comMngUserTagVOList=new ArrayList<>();
        List<ComMngUserTagVO> comMngUserTagVOList = new ArrayList<>();
        comMngUserTagDOS.forEach(comMngUserTagDO -> {
            ComMngUserTagVO comMngUserTagVO=new ComMngUserTagVO();
            BeanUtils.copyProperties(comMngUserTagDO,comMngUserTagVO);
            ComMngUserTagVO comMngUserTagVO = new ComMngUserTagVO();
            BeanUtils.copyProperties(comMngUserTagDO, comMngUserTagVO);
            comMngUserTagVOList.add(comMngUserTagVO);
        });
        return R.ok(comMngUserTagVOList);
@@ -1060,13 +1145,13 @@
        if (!ObjectUtils.isEmpty(comMngUserTagVOList)) {
            comMngUserTagDAO.delete(null);
            comMngUserTagVOList.forEach(comMngUserTagVO -> {
                ComMngUserTagDO comMngUserTagDO=new ComMngUserTagDO();
                ComMngUserTagDO comMngUserTagDO = new ComMngUserTagDO();
                comMngUserTagDO.setCommunityId(communityId);
                comMngUserTagDO.setTagName(comMngUserTagVO.getTagName());
                comMngUserTagDAO.insert(comMngUserTagDO);
            });
            return R.ok();
        }else {
        } else {
            return R.fail("用户标签不能为空");
        }
@@ -1099,11 +1184,11 @@
    public R putUserAppletsBackstage(PageUserAppletsBackstageDTO pageUserAppletsBackstageDTO) {
        Long userId = pageUserAppletsBackstageDTO.getUserId();
        Integer status = pageUserAppletsBackstageDTO.getStatus();
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setUserId(userId);
        sysUserDO.setStatus(status);
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail("用户不存在");
@@ -1117,8 +1202,8 @@
     */
    @Override
    public R deleteUserTest(Long userId) {
        int num=userDao.deleteUserTest(userId);
        if (num>0) {
        int num = userDao.deleteUserTest(userId);
        if (num > 0) {
            return R.ok();
        }
        return R.fail("清除失败");
@@ -1144,11 +1229,11 @@
     */
    @Override
    public R addFeedback(SysUserFeedbackDTO sysUserFeedbackDTO) {
        SysUserFeedbackDO sysUserFeedbackDO=new SysUserFeedbackDO();
        BeanUtils.copyProperties(sysUserFeedbackDTO,sysUserFeedbackDO);
        SysUserFeedbackDO sysUserFeedbackDO = new SysUserFeedbackDO();
        BeanUtils.copyProperties(sysUserFeedbackDTO, sysUserFeedbackDO);
        sysUserFeedbackDO.setPhotoPath(sysUserFeedbackDTO.getPhotoPah());
        int insert = sysUserFeedbackDAO.insert(sysUserFeedbackDO);
        if (insert>0) {
        if (insert > 0) {
            return R.ok();
        }
        return R.fail();
@@ -1162,13 +1247,13 @@
     */
    @Override
    public R pageNotice(PageDTO pageDTO) {
        Long userId=pageDTO.getUserId();
        Long userId = pageDTO.getUserId();
        Integer type = pageDTO.getType();
        int integer =0;
        if (null!=type&&type.intValue()>0) {
            integer=sysUserNoticeDAO.selectCount(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0).eq(SysUserNoticeDO::getType,type));
        }else{
            integer=sysUserNoticeDAO.selectCount(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0));
        int integer = 0;
        if (null != type && type.intValue() > 0) {
            integer = sysUserNoticeDAO.selectCount(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0).eq(SysUserNoticeDO::getType, type));
        } else {
            integer = sysUserNoticeDAO.selectCount(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0));
        }
        Page page = new Page<>();
        Long pageNum = pageDTO.getPageNum();
@@ -1176,9 +1261,9 @@
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<SysUserNoticeVO> iPage = userDao.pageNotice(page, pageDTO);
        Map<String,Object> map=new HashMap<>(2);
        map.put("page",iPage);
        map.put("unreadNum",integer);
        Map<String, Object> map = new HashMap<>(2);
        map.put("page", iPage);
        map.put("unreadNum", integer);
        return R.ok(map);
    }
@@ -1192,20 +1277,20 @@
    public R putNotice(NoticeReadDTO noticeReadDTO) {
        Integer all = noticeReadDTO.getAll();
        Long userId = noticeReadDTO.getUserId();
        int num=0;
        SysUserNoticeDO sysUserNoticeDO=new SysUserNoticeDO();
        if (null!=all&&1==all.intValue()) {
        int num = 0;
        SysUserNoticeDO sysUserNoticeDO = new SysUserNoticeDO();
        if (null != all && 1 == all.intValue()) {
            sysUserNoticeDO.setStatus(1);
            num=sysUserNoticeDAO.update(sysUserNoticeDO,new UpdateWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId,userId).eq(SysUserNoticeDO::getStatus,0));
        }else{
            num = sysUserNoticeDAO.update(sysUserNoticeDO, new UpdateWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0));
        } else {
            sysUserNoticeDO.setId(noticeReadDTO.getId());
            sysUserNoticeDO.setStatus(1);
            num=sysUserNoticeDAO.updateById(sysUserNoticeDO);
            num = sysUserNoticeDAO.updateById(sysUserNoticeDO);
        }
        if (num>0) {
        if (num > 0) {
            return R.ok();
        }
       return R.fail("通知不存在");
        return R.fail("通知不存在");
    }
    /**
@@ -1233,16 +1318,16 @@
     */
    @Override
    public R noticeUnreadNum(Long userId) {
        NoticeUnReadVO noticeUnReadVO=sysUserNoticeDAO.noticeUnreadNum(userId);
        List<SysUserNoticeVO> sysUserNoticeVOList=new ArrayList<>();
        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));
        if (!ObjectUtils.isEmpty(sysUserNoticeDOS)) {
            List<Integer> typeList=new ArrayList<>(4);
            List<Integer> typeList = new ArrayList<>(4);
            sysUserNoticeDOS.forEach(sysUserNoticeDO -> {
                Integer type = sysUserNoticeDO.getType();
                if (!typeList.contains(type)) {
                    SysUserNoticeVO sysUserNoticeVO=new SysUserNoticeVO();
                    BeanUtils.copyProperties(sysUserNoticeDO,sysUserNoticeVO);
                    SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
                    BeanUtils.copyProperties(sysUserNoticeDO, sysUserNoticeVO);
                    sysUserNoticeVOList.add(sysUserNoticeVO);
                    typeList.add(type);
                }
@@ -1260,7 +1345,7 @@
     */
    @Override
    public R detailFeedback(Long id) {
        SysUserFeedbackVO sysUserFeedbackVO=sysUserFeedbackDAO.detailFeedback(id);
        SysUserFeedbackVO sysUserFeedbackVO = sysUserFeedbackDAO.detailFeedback(id);
        return R.ok(sysUserFeedbackVO);
    }
@@ -1271,13 +1356,13 @@
     */
    @Override
    public R dataKanban() {
        IndexDataKanbanVO indexDataKanbanVO=userDao.selectIndexDataKanban();
        List<DataKanbanDTO> dataKanbanDTOS=userDao.selectCommunityUserOrder();
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban();
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder();
        List<String> communityUserX=new ArrayList<>();
        List<Integer> communityUserY=new ArrayList<>();
        List<String> communityActiveUserX=new ArrayList<>();
        List<Integer> communityActiveUserY=new ArrayList<>();
        List<String> communityUserX = new ArrayList<>();
        List<Integer> communityUserY = new ArrayList<>();
        List<String> communityActiveUserX = new ArrayList<>();
        List<Integer> communityActiveUserY = new ArrayList<>();
        if (!ObjectUtils.isEmpty(dataKanbanDTOS)) {
            dataKanbanDTOS.forEach(dataKanbanDTO -> {
                communityUserX.add(dataKanbanDTO.getName());
@@ -1285,11 +1370,11 @@
            });
        }
//        获取最近七天数据
        List<Date> serverndays=this.getServenDays();
        List<Date> serverndays = this.getServenDays();
        serverndays.forEach(date -> {
            //        查询社区活动数量
            DataKanbanDTO dataKanbanDTO=userDao.selectCommunityActiveUserOrder(date);
            communityActiveUserX.add(DateFormatUtils.format(date,"MM-dd"));
            DataKanbanDTO dataKanbanDTO = userDao.selectCommunityActiveUserOrder(date);
            communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd"));
            communityActiveUserY.add(dataKanbanDTO.getNum());
        });
        indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX);
@@ -1301,13 +1386,14 @@
    /**
     * 获取最近七天数据
     *
     * @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);
        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;
@@ -1321,7 +1407,8 @@
     */
    @Override
    public R indexDataCommunityBackstage(Long communityId) {
        IndexDataVO indexDataVO=userDao.indexDataCommunityBackstage(communityId);
        IndexDataVO indexDataVO = userDao.indexDataCommunityBackstage(communityId);
        //查询后台党员数量
        return R.ok(indexDataVO);
    }
@@ -1332,9 +1419,9 @@
     */
    @Override
    public R timedTaskContinuousLandingDays() {
        int num=userDao.timedTaskContinuousLandingDays();
        if (num>0) {
            log.info("定时任务维护用户持续登录时间,维护用户数量【{}】",num);
        int num = userDao.timedTaskContinuousLandingDays();
        if (num > 0) {
            log.info("定时任务维护用户持续登录时间,维护用户数量【{}】", num);
        }
        return R.ok();
    }
@@ -1347,10 +1434,10 @@
     */
    @Override
    public R addNotice(SysUserNoticeVO sysUserNoticeVO) {
        SysUserNoticeDO sysUserNoticeDO=new SysUserNoticeDO();
        BeanUtils.copyProperties(sysUserNoticeVO,sysUserNoticeDO);
        SysUserNoticeDO sysUserNoticeDO = new SysUserNoticeDO();
        BeanUtils.copyProperties(sysUserNoticeVO, sysUserNoticeDO);
        int insert = sysUserNoticeDAO.insert(sysUserNoticeDO);
        if (insert>0) {
        if (insert > 0) {
            return R.ok();
        }
        return R.fail();
@@ -1364,15 +1451,42 @@
     */
    @Override
    public R updateUserIsPartymember(String idCard) {
        SysUserDO sysUserDO=new SysUserDO();
        sysUserDO.setIsPartymember(1);
        int update = userDao.update(sysUserDO, new UpdateWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard));
        if (update>0) {
            log.info("新增党员修改用户党员状态成功 身份证号【{}】",idCard);
            return R.ok();
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard,idCard).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("新增党员修改用户党员状态成功 身份证号【{}】", idCard);
        }
        return R.fail();
        return R.ok();
    }
    /**
     * 修改用户的党员状态
     *
     * @param idCard 身份证号
     * @return 修改结果
     */
    @Override
    public R updateUserNotPartymember(String idCard) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard,idCard).eq(SysUserDO::getType,1));
        if(sysUserDO != null){
            sysUserDO.setIsPartymember(0);
            int updated = userDao.updateById(sysUserDO);
            if(updated>0) {
                //删除用户信息缓存
                String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId();
                stringRedisTemplate.delete(userKey);
            }
            log.info("新增党员修改用户为非党员状态成功 身份证号【{}】", idCard);
        }
        return R.ok();
    }
    /**
     * 获取各种协议
@@ -1386,8 +1500,8 @@
        if (ObjectUtils.isEmpty(sysUserAgreementDO)) {
            return R.fail("协议不存在");
        }
        SysUserAgreementVO sysUserAgreementVO=new SysUserAgreementVO();
        BeanUtils.copyProperties(sysUserAgreementDO,sysUserAgreementVO);
        SysUserAgreementVO sysUserAgreementVO = new SysUserAgreementVO();
        BeanUtils.copyProperties(sysUserAgreementDO, sysUserAgreementVO);
        return R.ok(sysUserAgreementVO);
    }
@@ -1399,11 +1513,11 @@
     */
    @Override
    public R putUserLastLoginTime(Long userId) {
        SysUserDO sysUserDO=new SysUserDO();
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setUserId(userId);
        sysUserDO.setLastLoginTime(new Date());
        int update = userDao.updateById(sysUserDO);
        if (update>0) {
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
@@ -1418,7 +1532,7 @@
    @Override
    public R deleteFeedback(Long id) {
        int delete = sysUserFeedbackDAO.deleteById(id);
        if (delete>0) {
        if (delete > 0) {
            return R.ok();
        }
        return R.fail();
@@ -1432,15 +1546,15 @@
     */
    @Override
    public R checkAereaName(String areaName) {
        Integer num=userDao.selectCountArea(areaName);
        if (num>0) {
        Integer num = userDao.selectCountArea(areaName);
        if (num > 0) {
            Integer integer = userDao.selectCountHouse(areaName);
            if (integer>0) {
            if (integer > 0) {
                return R.ok();
            }else{
            } else {
                return R.fail("小区房屋信息未创建,请先在社区平台添加房屋信息");
            }
        }else{
        } else {
            return R.fail("小区不存在,请先在社区平台添加小区");
        }
    }
@@ -1453,16 +1567,19 @@
     */
    @Override
    public CommunityUserInfoVO detailUserComunity(Long userId) {
        CommunityUserInfoVO communityUserInfoVO=new CommunityUserInfoVO();
        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.setBirthday(sysUserDO.getBirthday());
                communityUserInfoVO.setIdCard(idCard);
            }
            communityUserInfoVO.setCreateAt(sysUserDO.getCreateAt());
            communityUserInfoVO.setCardPhotoBack(sysUserDO.getCardPhotoBack());
            communityUserInfoVO.setCardPhotoFront(sysUserDO.getCardPhotoFront());
            communityUserInfoVO.setFamilyBook(sysUserDO.getFamilyBook());
            communityUserInfoVO.setName(sysUserDO.getName());
            String phone = sysUserDO.getPhone();
            communityUserInfoVO.setPhone(phone);
@@ -1474,18 +1591,18 @@
                communityUserInfoVO.setVolunteerCreateAt(comMngVolunteerMngVO.getCreateAt());
            }
            Integer isPartymember = sysUserDO.getIsPartymember();
            if (isPartymember.intValue()==1) {
            if (isPartymember.intValue() == 1) {
                communityUserInfoVO.setPoliticalOutlook(1);
            }else{
            } 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<>();
                List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
                comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
                    ComMngFamilyInfoVO comMngFamilyInfoVO=new ComMngFamilyInfoVO();
                    BeanUtils.copyProperties(comMngFamilyInfoDO,comMngFamilyInfoVO);
                    ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
                    BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO);
                    comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
                });
                communityUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
@@ -1502,18 +1619,18 @@
     */
    @Override
    public R export(ExportUserDTO exportUserDTO) {
        List<EexcelUserDTO> eexcelUserDTOS=userDao.selectExport(exportUserDTO);
        List<EexcelUserDTO> eexcelUserDTOS = userDao.selectExport(exportUserDTO);
        return R.ok(eexcelUserDTOS);
    }
    @Override
    public R getSysUserVOByPhone(String phone) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,phone));
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone));
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("用户不存在");
        }
        SysUserVO sysUserVO = new SysUserVO();
        BeanUtils.copyProperties(sysUserDO,sysUserVO);
        BeanUtils.copyProperties(sysUserDO, sysUserVO);
        return R.ok(sysUserVO);
    }
@@ -1521,10 +1638,10 @@
//        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);
        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);
@@ -1541,11 +1658,148 @@
     */
    @Override
    public R listTags(Long communityId) {
        List<String> list=new ArrayList<>();
        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag",1).or().eq("community_id",communityId));
        List<String> list = new ArrayList<>();
        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
        if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
            list=comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
            list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
        }
        return R.ok(list);
    }
    @Override
    public R getSysUserVOByAccount(String account, Integer type) {
        LambdaQueryWrapper<SysUserDO> query = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, account);
        query.eq(SysUserDO::getType, type);
        SysUserDO sysUserDO = userDao.selectOne(query);
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("用户不存在");
        }
        SysUserVO sysUserVO = new SysUserVO();
        BeanUtils.copyProperties(sysUserDO, sysUserVO);
        return R.ok(sysUserVO);
    }
    /**
     * 新增SysUser
     *
     * @param storeVO 请求参数
     * @return 新增结果
     */
    @Override
    public R addSysUser(ShopStoreVO storeVO) {
        SysUserDO sysUserDO = new SysUserDO();
        Long communityId = 0L;
        //新增社区高级管理员角色
        SysRoleDO sysRoleDO = new SysRoleDO();
        sysRoleDO.setCommunityId(0L);
        sysRoleDO.setRoleName(storeVO.getName());
        sysRoleDO.setRoleKey(Constants.SHOP_ROLE_KEY + storeVO.getStoreAccount());
        sysRoleDO.setRoleSort(0);
        sysRoleDO.setCreateBy(storeVO.getLoginUserId());
        int insert = roleDAO.insert(sysRoleDO);
        if (insert < 0) {
            return R.fail();
        }
        //新角色设置所有权限
        MenuRoleVO menuRoleVO = new MenuRoleVO();
        menuRoleVO.setIsAll(1);
        menuRoleVO.setCommunityId(communityId);
        menuRoleVO.setRoleId(sysRoleDO.getRoleId());
        this.putMenuRole(menuRoleVO);
        //sys_user 表
        String encode = new BCryptPasswordEncoder().encode(storeVO.getStorePassword());
        BeanUtils.copyProperties(storeVO, sysUserDO);
        sysUserDO.setAccount(storeVO.getStoreAccount());
        sysUserDO.setType(5);
        sysUserDO.setAreaId(null);
        sysUserDO.setStatus(1);
        sysUserDO.setPhone(storeVO.getPhone());
        sysUserDO.setName(storeVO.getContacts());
        sysUserDO.setPassword(encode);
        try {
            insert = userDao.insert(sysUserDO);
            //把SysUserId赋值给店铺
            if (sysUserDO.getUserId() != null) {
                userDao.updateStoreByPhone(storeVO.getPhone(), sysUserDO.getUserId());
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("新增后台用户报错【{}】", e.getMessage());
            if (e.getMessage().contains("union_phone_type")) {
                userDao.deleteStoreByPhoneAndStatus(storeVO.getPhone());
                roleDAO.deleteByRoleKey(Constants.SHOP_ROLE_KEY + storeVO.getStoreAccount());
                return R.fail("手机号已经存在");
            } else if (e.getMessage().contains("union_account_type")) {
                return R.fail("账户已经存在");
            }
        }
        return R.ok();
    }
    /**
     * 修改SysUser用户信息
     *
     * @param storeVO 请求参数
     * @return 修改结果
     */
    @Override
    public R editSysUser(ShopStoreVO storeVO) {
        SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, storeVO.getPhone())
                .eq(SysUserDO::getType, 5));
        if (sysUserDO1 == null) {
            return R.fail("未查询到后台管理用户!");
        }
        String encode = new BCryptPasswordEncoder().encode(storeVO.getStorePassword());
        sysUserDO1.setPassword(encode);
        if (userDao.updateById(sysUserDO1) > 0) {
            return R.ok();
        }
        return R.fail("密码修改失败");
    }
    /**
     * 修改用户小程序首页活动提示
     *
     * @param userEditTipsDTO 请求参数
     * @return 修改结果
     */
    public R editUserTips(SysUserEditTipsDTO userEditTipsDTO) {
        //查询用户信息
        SysUserDO userDO = userDao.selectById(userEditTipsDTO.getUserId());
        if (userDO == null) {
            return R.fail("未查询到用户信息");
        }
        //修改用户信息
        userDO.setIsTips(userEditTipsDTO.getIsTips());
        userDao.updateById(userDO);
        if (userDao.updateById(userDO) > 0) {
            return R.ok();
        } else {
            return R.fail();
        }
    }
    @Override
    public R getUserArchives(Long userId) {
        //查询用户信息
        SysUserDO userDO = userDao.selectById(userId);
        if (userDO == null) {
            return R.fail("未查询到用户信息");
        }
        UserArchivesVO userArchivesVO = new UserArchivesVO();
        BeanUtils.copyProperties(userDO, userArchivesVO);
        userArchivesVO.setUserId(userDO.getUserId());
        return R.ok(userArchivesVO);
    }
    @Override
    public R updateUserArchives(UpdateUserArchivesVO userArchivesVO) {
        if(userArchivesVO.getUserId()==null){
            return R.fail("未查询到用户信息");
        }
        userDao.updateUserArchives(userArchivesVO);
        return R.ok();
    }
}