101captain
2022-07-06 d6578ec702eb4fcff690d71ea3237a885f46b85c
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -4,23 +4,20 @@
import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO;
import com.panzhihua.common.model.vos.community.ComAreaTownCommunityVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO;
import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.entity.SysAppConfig;
import com.panzhihua.service_user.entity.SysTemplateConfig;
@@ -75,28 +72,6 @@
import com.panzhihua.common.model.vos.grid.admin.GridMemberBuildingVO;
import com.panzhihua.common.model.vos.partybuilding.ActivityManagerVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
import com.panzhihua.common.model.vos.user.ChangePasswordVO;
import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
import com.panzhihua.common.model.vos.user.ComMngUserTagVO;
import com.panzhihua.common.model.vos.user.CommunityUserInfoVO;
import com.panzhihua.common.model.vos.user.MenuRoleVO;
import com.panzhihua.common.model.vos.user.NoticeUnReadVO;
import com.panzhihua.common.model.vos.user.SysOperLogVO;
import com.panzhihua.common.model.vos.user.SysUserAgreementVO;
import com.panzhihua.common.model.vos.user.SysUserFeedbackVO;
import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.model.vos.user.UpdateUserArchivesVO;
import com.panzhihua.common.model.vos.user.UserArchivesVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import com.panzhihua.common.utlis.IdCard;
import com.panzhihua.common.utlis.SensitiveUtil;
import com.panzhihua.common.utlis.SmsUtil;
import com.panzhihua.common.utlis.Snowflake;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.service_user.model.dos.ComActFourMember;
import com.panzhihua.service_user.model.dos.ComMngFamilyInfoDO;
import com.panzhihua.service_user.model.dos.ComMngUserTagDO;
@@ -275,17 +250,20 @@
     */
    @Override
    public R updateUserWeiXinPhone(Long userId, String purePhoneNumber) {
        SysUserDO sysUserDO = new SysUserDO();
        sysUserDO.setPhone(purePhoneNumber);
        sysUserDO.setUserId(userId);
        userDao.updateMemberRole(purePhoneNumber, purePhoneNumber);
        userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber);
        int i = userDao.updateById(sysUserDO);
        if (i > 0) {
            return R.ok(purePhoneNumber);
        } else {
            return R.fail("维护微信手机号失败");
        SysUserDO sysUserDO=userDao.selectById(userId);
        if(sysUserDO!=null){
            userDao.updateMemberRole(purePhoneNumber, sysUserDO.getPhone());
            userDao.updateServiceTeam(purePhoneNumber, sysUserDO.getPhone());
            sysUserDO.setPhone(purePhoneNumber);
            sysUserDO.setUserId(userId);
            int i = userDao.updateById(sysUserDO);
            if (i > 0) {
                return R.ok(purePhoneNumber);
            } else {
                return R.fail("维护微信手机号失败");
            }
        }
        return R.ok(sysUserDO.getPhone());
    }
    /**
@@ -331,6 +309,10 @@
            loginUserInfoVO.setCommunityId(sysUserDO.getCommunityId());
            if(comActVO!=null){
                loginUserInfoVO.setComActVO(comActVO);
                String areaName=userDao.selectAreaCodeByStreetId(comActVO.getStreetId());
                if(StringUtils.isNotEmpty(areaName)){
                    loginUserInfoVO.setAreaName(areaName);
                }
                SysAppConfig sysAppConfig=sysAppConfigDao.selectOne(new QueryWrapper<SysAppConfig>().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode()));
                if(sysAppConfig!=null){
                    loginUserInfoVO.setAppId(sysAppConfig.getAppId());
@@ -378,6 +360,7 @@
        loginUserInfoVO.setIsPropertyWorker(2);
        loginUserInfoVO.setIsSocialWorker(2);
        loginUserInfoVO.setIsFmsMember(2);
        loginUserInfoVO.setIsAcidMember(0);
        // 志愿者状态
        String phone = sysUserDO.getPhone();
        Long userCommunityId = sysUserDO.getCommunityId();
@@ -416,6 +399,33 @@
            int countFmsMember = userDao.countFmsMember(phone, userCommunityId);
            if (countFmsMember > 0) {
                loginUserInfoVO.setIsFmsMember(1);
            }
            //是否是防疫工作人员
            ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(phone);
            if (nonNull(acidMember)) {
                if(acidMember.getRelationName().equals("panzhihua")||acidMember.getRelationName().equals("西区")||acidMember.getRelationName().equals("东区")||acidMember.getRelationName().equals("仁和区")||acidMember.getRelationName().equals("米易县")||acidMember.getRelationName().equals("盐边县")){
                    loginUserInfoVO.setIsAcidMember(1);
                }
                else {
                    loginUserInfoVO.setIsAcidMember(2);
                }
                loginUserInfoVO.setRelationName(acidMember.getRelationName());
            }
            Integer count=userDao.selectOrgAdmin(phone);
            if(count>0){
                loginUserInfoVO.setIsCheckUnitAdmin(1);
            }
            Long checkUnitId=userDao.selectCheckUnitId(phone);
            if(checkUnitId!=null){
                loginUserInfoVO.setCheckUnitId(checkUnitId);
            }
            else {
                loginUserInfoVO.setIsCheckUnitAdmin(0);
            }
            Long checkUnitId=userDao.selectCheckUnitId(phone);
            if(checkUnitId!=null){
                loginUserInfoVO.setCheckUnitId(checkUnitId);
            }
            //是否网格员
            int easyPhotoMember = userDao.countEasyPhotoMember(phone, userCommunityId);
@@ -715,6 +725,10 @@
        }
        ComActVO comActVO = userDao.selectCommunity(loginUserInfoVO.getCommunityId());
        if (!ObjectUtils.isEmpty(comActVO)) {
            String areaName=userDao.selectAreaCodeByStreetId(comActVO.getStreetId());
            if(StringUtils.isNotEmpty(areaName)){
                loginUserInfoVO.setAreaName(areaName);
            }
            loginUserInfoVO.setComActVO(comActVO);
            loginUserInfoVO.setCommunityName(comActVO.getName());
            loginUserInfoVO.setAreaCode(comActVO.getAreaCode());
@@ -728,6 +742,18 @@
        //是否微团队成员
        int countFmsMember = userDao.countFmsMember(loginUserInfoVO.getPhone(), loginUserInfoVO.getCommunityId());
        loginUserInfoVO.setIsFmsMember(countFmsMember > 0 ? 1 : 0);
        //是否是防疫工作人员
        loginUserInfoVO.setIsAcidMember(0);
        ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(loginUserInfoVO.getPhone());
        if (nonNull(acidMember)) {
            if(acidMember.getRelationName().equals("panzhihua")||acidMember.getRelationName().equals("西区")||acidMember.getRelationName().equals("东区")||acidMember.getRelationName().equals("仁和区")||acidMember.getRelationName().equals("米易县")||acidMember.getRelationName().equals("盐边县")){
                loginUserInfoVO.setIsAcidMember(1);
            }
            else {
                loginUserInfoVO.setIsAcidMember(2);
            }
            loginUserInfoVO.setRelationName(acidMember.getRelationName());
        }
        loginUserInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(loginUserInfoVO.getIdCard()));
        loginUserInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(loginUserInfoVO.getPhone()));
        //判断账号类型
@@ -922,7 +948,7 @@
                // 实名认证成功推送订阅消息给用户
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    String accessToken = util.getAppAccessToken();
                    String accessToken = util.getAccessToken();
                    SysTemplateConfig sysTemplateConfig=sysTemplateConfigDao.selectOne(new QueryWrapper<SysTemplateConfig>().lambda().eq(SysTemplateConfig::getAreaCode, loginUserInfoVO.getComActVO()).eq(SysTemplateConfig::getType,5));
                    // 用户实名认证推送消息
                    WxUtil.sendSubscribeRZSH(user.getOpenid(), accessToken, "实名认证",
@@ -1112,6 +1138,21 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addUserBackstage(AdministratorsUserVO administratorsUserVO) {
        ComActVO comActVO = userDao.selectCommunity(administratorsUserVO.getCommunityId());
        if (nonNull(comActVO)) {
            List<ComAreaTownCommunityVO> areaTownList = userDao.selectAreaTownCommunity(comActVO.getName());
            if (!areaTownList.isEmpty()) {
                administratorsUserVO.setRelationName(comActVO.getName());
                String address = comActVO.getAddress();
                if (areaTownList.size() > 1 && isNotBlank(address)) {
                    ComAreaTownCommunityVO townCommunityVO = areaTownList.stream()
                            .filter(e -> address.contains(e.getArea()) && address.contains(e.getTown())).findFirst().orElse(null);
                    if (nonNull(townCommunityVO)) {
                        administratorsUserVO.setRelationName(String.join(",", townCommunityVO.getArea(), townCommunityVO.getTown(), townCommunityVO.getCommunity()));
                    }
                }
            }
        }
        SysUserDO sysUserDO = new SysUserDO();
        Long roleId = administratorsUserVO.getRoleId();
        if (roleId.intValue() == 999999999 || roleId.intValue() == 888888888) {
@@ -1203,31 +1244,6 @@
                throw new ServiceException("手机号已存在");
            }
        }
        if (insert > 0 && sysUserDO.getType() == 3 &&sysUserDO.getStreetId()==null) {// 添加的用户是社区账号时
            // 添加网格综合治理管理后台用户
            SysUserDO sysUserDOWangGe = new SysUserDO();
            BeanUtils.copyProperties(sysUserDO, sysUserDOWangGe);
            sysUserDOWangGe.setUserId(null);
            sysUserDOWangGe.setType(7);// 网格综治后台
            try {
                int addWange = userDao.insert(sysUserDOWangGe);
                if (addWange != 1) {
                    throw new ServiceException("新增网格综合治理管理后台用户失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
                log.error("网格综合治理管理后台用户报错【{}】", e.getMessage());
                if (e.getMessage().contains("union_phone_type")) {
                    throw new ServiceException("手机号已经存在");
                } else if (e.getMessage().contains("union_account_type")) {
                    throw new ServiceException("账户已经存在");
                }else if(e.getMessage().contains("23000")){
                    throw new ServiceException("手机号已存在");
                }
            }
        }
        if (insert > 0) {
            SysUserDO sysUserDO1 = userDao
@@ -1464,7 +1480,6 @@
     * @return 删除结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteUserBackstage(AdministratorsUserVO administratorsUserVO) {
        Long userId = administratorsUserVO.getUserId();
        SysUserDO sysUserDO = userDao.selectById(userId);
@@ -1860,7 +1875,7 @@
    @Override
    public R dataKanban(String areaCode) {
        IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(areaCode);
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(areaCode);
        List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(new Page(1L, 9999L), areaCode).getRecords();
        List<String> communityUserX = new ArrayList<>();
        List<Integer> communityUserY = new ArrayList<>();
@@ -1968,6 +1983,30 @@
                stringRedisTemplate.delete(userKey);
            }
            log.info("新增党员修改用户党员状态成功 身份证号【{}】", idCard);
        }
        return R.ok();
    }
    /**
     * 修改用户的党员状态
     *
     * @param phone
     *            身份证号
     * @return 修改结果
     */
    @Override
    public R updateUserIsPartymemberByPhone(String phone) {
        SysUserDO sysUserDO = userDao.selectOne(
                new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
        if (sysUserDO != null) {
            sysUserDO.setIsPartymember(1);
            int updated = userDao.updateById(sysUserDO);
            if (updated > 0) {
                // 删除用户信息缓存
                String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId();
                stringRedisTemplate.delete(userKey);
            }
            log.info("新增党员修改用户党员状态成功 手机号【{}】", phone);
        }
        return R.ok();
    }
@@ -2142,9 +2181,9 @@
    @Override
    public R getSysUserVOByPhone(String phone) {
        SysUserDO sysUserDO = userDao
            .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1));
            .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1).orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("用户不存在");
            return R.fail("账号或密码错误");
        }
        SysUserVO sysUserVO = new SysUserVO();
        BeanUtils.copyProperties(sysUserDO, sysUserVO);
@@ -2179,7 +2218,7 @@
        query.eq(SysUserDO::getType, type);
        SysUserDO sysUserDO = userDao.selectOne(query);
        if (ObjectUtils.isEmpty(sysUserDO)) {
            return R.fail("用户不存在");
            return R.fail("账号或密码错误");
        }
        SysUserVO sysUserVO = new SysUserVO();
        BeanUtils.copyProperties(sysUserDO, sysUserVO);
@@ -2883,10 +2922,18 @@
        List<Integer> communityActiveUserZ = new ArrayList<>();
        List<DataKanbanDTO> dataKanbanDTOS = null;
        Page page = new Page<>();
        if (nonNull(dataKanBansDto.getPageNum()) && nonNull(dataKanBansDto.getPageSize())) {
            page.setCurrent(dataKanBansDto.getPageNum());
            page.setSize(dataKanBansDto.getPageSize());
        } else {
            page.setCurrent(1L);
            page.setSize(20L);
        }
        if(dataKanBansDto.getType() != null && dataKanBansDto.getType().equals(DataKanBansDto.type.by)){
            dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(dataKanBansDto.getAreaCode());
            dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(page, dataKanBansDto.getAreaCode()).getRecords();
        }else{
            dataKanbanDTOS = userDao.selectCommunityUserOrder(dataKanBansDto.getAreaCode());
            dataKanbanDTOS = userDao.selectCommunityUserOrder(page, dataKanBansDto.getAreaCode()).getRecords();
        }
        if (!ObjectUtils.isEmpty(dataKanbanDTOS)) {
            dataKanbanDTOS.forEach(dataKanbanDTO -> {
@@ -2944,7 +2991,7 @@
    public R getUserInfoByUnionId(String unionId) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getUnionid, unionId));
        if (isNull(sysUserDO)) {
            return R.fail("用户不存在");
            return R.fail("账号或密码错误");
        }
        LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
        BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
@@ -3225,4 +3272,32 @@
        }
        return R.ok();
    }
    @Override
    public R uuLogin(UuLoginVO uuLoginVO) {
        uuLoginVO.setAppid("10000");
        String timeStamp=PayUtil.create_timestamp();
        uuLoginVO.setTimestamp(timeStamp);
        try {
            uuLoginVO.setSign(PayUtil.MD5(uuLoginVO.getAppid()+"e10adc3949ba59abbe56e057f20f883e"+timeStamp).toLowerCase(Locale.ROOT));
        } catch (Exception e) {
            e.printStackTrace();
        }
        Map<String, String> headerMap=new HashMap<>();
        headerMap.put("appid","10000");
        String resultJson=HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province="+uuLoginVO.getProvince()+"&city="+uuLoginVO.getCity()+"&area="+uuLoginVO.getArea()+"&appid=10000&timestamp="+uuLoginVO.getTimestamp()+"&sign="+uuLoginVO.getSign()+"&mobile="+uuLoginVO.getMobile(),headerMap,null);
        JSONObject result = JSON.parseObject(resultJson);
        if(result.get("status").equals(1)){
            return R.ok(result.get("data"));
        }
        return R.fail("信息错误");
    }
    @Override
    public R checkExport(String account, String password,String oldPassword) {
        if(new BCryptPasswordEncoder().matches(password, oldPassword)){
            return R.ok();
        }
        return R.fail();
    }
}