From 60d68e10c679818c0c747372a6b24f83d34e14f7 Mon Sep 17 00:00:00 2001 From: 101captain <237651143@qq.com> Date: 星期三, 08 六月 2022 16:40:16 +0800 Subject: [PATCH] bug修改 --- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 1025 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 947 insertions(+), 78 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java index b9b8ca6..5794e7f 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java @@ -1,10 +1,26 @@ package com.panzhihua.service_user.service.impl; +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; +import static org.apache.commons.lang3.StringUtils.isNotBlank; + import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.annotation.Resource; +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; import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateUtils; import org.springframework.beans.BeanUtils; @@ -14,7 +30,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -24,26 +39,59 @@ import com.panzhihua.common.constants.Constants; import com.panzhihua.common.constants.UserConstants; import com.panzhihua.common.exceptions.ServiceException; +import com.panzhihua.common.model.dtos.DataKanBansDto; 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.grid.*; -import com.panzhihua.common.model.dtos.user.*; -import com.panzhihua.common.model.vos.*; +import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO; +import com.panzhihua.common.model.dtos.community.convenient.DisableOrEnableConvenientMerchantDTO; +import com.panzhihua.common.model.dtos.community.microCommercialStreet.McsMerchantDTO; +import com.panzhihua.common.model.dtos.grid.EventGridMemberAddDTO; +import com.panzhihua.common.model.dtos.grid.EventGridMemberEditAdminDTO; +import com.panzhihua.common.model.dtos.grid.EventGridMemberEditStatusDTO; +import com.panzhihua.common.model.dtos.grid.EventGridMemberPassResetDTO; +import com.panzhihua.common.model.dtos.grid.PageEventGridMemberRelationDTO; +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.SysUserEditTipsDTO; +import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO; +import com.panzhihua.common.model.vos.AppletUserInfoVO; +import com.panzhihua.common.model.vos.EditUserInfoPassAppDTO; +import com.panzhihua.common.model.vos.IndexDataKanbanVO; +import com.panzhihua.common.model.vos.IndexDataVO; +import com.panzhihua.common.model.vos.LoginUserInfoVO; +import com.panzhihua.common.model.vos.R; +import com.panzhihua.common.model.vos.SystemmanagementConfigVO; import com.panzhihua.common.model.vos.community.ComActVO; import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO; +import com.panzhihua.common.model.vos.community.IndexUserCommunityVo; +import com.panzhihua.common.model.vos.community.IndexUserStatisticsVo; +import com.panzhihua.common.model.vos.community.IndexUserStreetVo; import com.panzhihua.common.model.vos.grid.GridMemberVO; 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.*; -import com.panzhihua.common.utlis.*; -import com.panzhihua.service_user.dao.*; -import com.panzhihua.service_user.model.dos.*; +import com.panzhihua.service_user.model.dos.ComActFourMember; +import com.panzhihua.service_user.model.dos.ComMngFamilyInfoDO; +import com.panzhihua.service_user.model.dos.ComMngUserTagDO; +import com.panzhihua.service_user.model.dos.EventGridMemberBuildingRelationDO; +import com.panzhihua.service_user.model.dos.LcCompareCodeMemberDO; +import com.panzhihua.service_user.model.dos.SysMenuDO; +import com.panzhihua.service_user.model.dos.SysOperLogDO; +import com.panzhihua.service_user.model.dos.SysRoleDO; +import com.panzhihua.service_user.model.dos.SysRoleMenuDO; +import com.panzhihua.service_user.model.dos.SysUserAgreementDO; +import com.panzhihua.service_user.model.dos.SysUserDO; +import com.panzhihua.service_user.model.dos.SysUserFeedbackDO; +import com.panzhihua.service_user.model.dos.SysUserInputDO; +import com.panzhihua.service_user.model.dos.SysUserNoticeDO; +import com.panzhihua.service_user.model.dos.SysUserRoleDO; import com.panzhihua.service_user.model.dtos.DataKanbanDTO; import com.panzhihua.service_user.service.EventGridMemberBuildingRelationService; import com.panzhihua.service_user.service.UserService; +import cn.hutool.core.util.IdcardUtil; import lombok.extern.slf4j.Slf4j; // import com.panzhihua.common.service.grid.GridService; @@ -57,6 +105,9 @@ @Slf4j @Service public class UserServiceImpl implements UserService { + + private static final String DEFAULT_IMAGE_URL = "https://www.psciio.com//idcard/91313573d071436ab1f934231b31c6e5.jpg"; + @Resource private UserDao userDao; @Resource @@ -89,6 +140,12 @@ private EventGridMemberBuildingRelationMapper eventGridMemberBuildingRelationMapper; @Resource private LcCompareMemberCodeMapper lcCompareMemberCodeMapper; + @Resource + private ComActFourMemberDao comActFourMemberDao; + @Resource + private SysAppConfigDao sysAppConfigDao; + @Resource + private SysTemplateConfigDao sysTemplateConfigDao; // @Resource // private GridService gridService; @@ -223,8 +280,13 @@ new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name)); } else { LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type); - wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or() - .eq(SysUserDO::getPhone, name)); + if (type == 11) { + //只允许通过account登录 + wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name)); + } else { + wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or() + .eq(SysUserDO::getPhone, name)); + } sysUserDO = userDao.selectOne(wrapper); } boolean empty = ObjectUtils.isEmpty(sysUserDO); @@ -239,6 +301,22 @@ loginUserInfoVO.setAccount(name); loginUserInfoVO.setType(sysUserDO.getType()); loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard() != null);// 暂时 身份证判断实名制 + if(sysUserDO.getCommunityId()!=null){ + ComActVO comActVO = userDao.selectCommunity(sysUserDO.getCommunityId()); + 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()); + loginUserInfoVO.setAppSecret(sysAppConfig.getSecret()); + } + } + } List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId()); Set<String> set = new HashSet<>(); if (!ObjectUtils.isEmpty(roleDOList)) { @@ -274,6 +352,12 @@ loginUserInfoVO.setRoles(set); } loginUserInfoVO.setIsmemberrole(2); + loginUserInfoVO.setIsFourMember(2); + loginUserInfoVO.setIsCommunityWorker(2); + loginUserInfoVO.setIsPropertyWorker(2); + loginUserInfoVO.setIsSocialWorker(2); + loginUserInfoVO.setIsFmsMember(2); + loginUserInfoVO.setIsAcidMember(0); // 志愿者状态 String phone = sysUserDO.getPhone(); Long userCommunityId = sysUserDO.getCommunityId(); @@ -281,6 +365,13 @@ ComActVO comActVO = userDao.selectCommunity(userCommunityId); if (comActVO != null) { loginUserInfoVO.setCommunityName(comActVO.getName()); + loginUserInfoVO.setComActVO(comActVO); + loginUserInfoVO.setAreaCode(comActVO.getAreaCode()); + SysAppConfig sysAppConfig=sysAppConfigDao.selectOne(new QueryWrapper<SysAppConfig>().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode())); + if(sysAppConfig!=null){ + loginUserInfoVO.setAppId(sysAppConfig.getAppId()); + loginUserInfoVO.setAppSecret(sysAppConfig.getSecret()); + } } } if (!ObjectUtils.isEmpty(phone)) { @@ -291,16 +382,52 @@ int state = comMngVolunteerMngVO.getState().intValue(); loginUserInfoVO.setVolunteerStatus(state); } + //是否四长四员 + Integer countFourMember=comActFourMemberDao.selectCount(new QueryWrapper<ComActFourMember>().lambda().eq(ComActFourMember::getIdCard,sysUserDO.getIdCard())); + if(countFourMember>0){ + loginUserInfoVO.setIsFourMember(1); + } + //是否是社区物业人员 + int countPropertyWorker = userDao.countPropertyWorker(Long.parseLong(userId), userCommunityId); + if (countPropertyWorker > 0) { + loginUserInfoVO.setIsPropertyWorker(1); + } + //是否微团队成员 + int countFmsMember = userDao.countFmsMember(phone, userCommunityId); + if (countFmsMember > 0) { + loginUserInfoVO.setIsFmsMember(1); + } + //是否是防疫工作人员 + ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(phone); + if (nonNull(acidMember)) { + if(acidMember.getRelationName().equals("panzhihua")||acidMember.getRelationName().equals("西区")||acidMember.getRelationName().equals("东区")||acidMember.getRelationName().equals("仁和区")||acidMember.getRelationName().equals("米易县")||acidMember.getRelationName().equals("盐边县")){ + loginUserInfoVO.setIsAcidMember(1); + } + else { + loginUserInfoVO.setIsAcidMember(2); + } + loginUserInfoVO.setRelationName(acidMember.getRelationName()); + } + //是否网格员 + int easyPhotoMember = userDao.countEasyPhotoMember(phone, userCommunityId); + if (easyPhotoMember > 0) { + loginUserInfoVO.setIsEasyPhotoMember(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); + loginUserInfoVO.setIsCommunityWorker(1); } else if (selectCountMemberRole != null && selectCountMemberRole > 0) { loginUserInfoVO.setIsmemberrole(1); } else if (isSysUser != null && isSysUser > 0) { loginUserInfoVO.setIsmemberrole(1); + } + Integer countSocialWorker = userDao.countSocialWorker(phone,userCommunityId); + if(countSocialWorker>0){ + loginUserInfoVO.setIsSocialWorker(1); } } loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard() != null); @@ -461,18 +588,35 @@ // record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone())); record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard())); - StringBuilder sb = new StringBuilder(); - if (record.getIsPartymember().equals(1)) { - sb.append("党员,"); - } - if (record.getIsVolunteer().equals(1)) { - sb.append("志愿者,"); - } - String tag = sb.toString(); - if (tag.length() > 0) { - record.setTags(tag.substring(0, tag.length() - 1)); - } else { - record.setTags("无"); + if (StringUtils.isNotEmpty(record.getTags())) { + StringBuffer sb = new StringBuffer(); + sb.append(record.getTags() + ","); + if (record.getIsPartymember().equals(1)) { + if (!sb.toString().contains("党员")){ + sb.append("党员,"); + } + } + if (record.getIsVolunteer().equals(1)) { + if (!sb.toString().contains("志愿者")) { + sb.append("志愿者,"); + } + } + String tags = sb.toString(); + record.setTags(tags.substring(0, tags.length() - 1)); + }else { + StringBuffer sb = new StringBuffer(); + if (record.getIsPartymember().equals(1)) { + sb.append("党员,"); + } + if (record.getIsVolunteer().equals(1)) { + sb.append("志愿者,"); + } + String tags = sb.toString(); + if (tags.length() > 0) { + record.setTags(tags.substring(0, tags.length() - 1)); + } else { + record.setTags("无"); + } } }); return R.ok(iPage); @@ -486,7 +630,8 @@ @Override public R listTag() { List<String> list = new ArrayList<>(); - List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper<>()); + List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper<ComMngUserTagDO>() + .eq(ComMngUserTagDO::getSysFlag,1)); if (!ObjectUtils.isEmpty(comMngUserTagDOS)) { list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()) .collect(Collectors.toList()); @@ -502,13 +647,14 @@ * @return 人员详情 */ @Override - public R detailUser(Long userId) { + public R<LoginUserInfoVO> detailUser(Long userId) { LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO(); if (userId < 100000000l) { SysUserDO sysUserDO = userDao.selectById(userId); if (ObjectUtils.isEmpty(sysUserDO)) { return R.fail("人员不存在"); } + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO .selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId)); @@ -560,10 +706,50 @@ } 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()); + } + else{ + loginUserInfoVO.setAreaCode("510423"); + } + //是否是社区物业人员 + int countPropertyWorker = userDao.countPropertyWorker(userId, loginUserInfoVO.getCommunityId()); + loginUserInfoVO.setIsPropertyWorker(countPropertyWorker > 0 ? 1 : 0); + //是否微团队成员 + int countFmsMember = userDao.countFmsMember(loginUserInfoVO.getPhone(), loginUserInfoVO.getCommunityId()); + loginUserInfoVO.setIsFmsMember(countFmsMember > 0 ? 1 : 0); + //是否是防疫工作人员 + loginUserInfoVO.setIsAcidMember(0); + ComActAcidMemberVO acidMember = userDao.selectAcidMemberByPhone(loginUserInfoVO.getPhone()); + if (nonNull(acidMember)) { + if(acidMember.getRelationName().equals("panzhihua")||acidMember.getRelationName().equals("西区")||acidMember.getRelationName().equals("东区")||acidMember.getRelationName().equals("仁和区")||acidMember.getRelationName().equals("米易县")||acidMember.getRelationName().equals("盐边县")){ + loginUserInfoVO.setIsAcidMember(1); + } + else { + loginUserInfoVO.setIsAcidMember(2); + } + loginUserInfoVO.setRelationName(acidMember.getRelationName()); } loginUserInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(loginUserInfoVO.getIdCard())); loginUserInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(loginUserInfoVO.getPhone())); + //判断账号类型 + int countSocialOrg=userDao.countSocialOrg(userId); + if(countSocialOrg>0){ + loginUserInfoVO.setUserType(3); + } + else { + if(loginUserInfoVO.getStreetId()!=null){ + loginUserInfoVO.setUserType(1); + } + else { + loginUserInfoVO.setUserType(2); + } + } return R.ok(loginUserInfoVO); } @@ -578,7 +764,9 @@ public R putUserTag(LoginUserInfoVO loginUserInfoVO) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(loginUserInfoVO.getUserId()); - sysUserDO.setTags(loginUserInfoVO.getTags()); + if (StringUtils.isNotEmpty(loginUserInfoVO.getTags()) && !"无".equals(loginUserInfoVO.getTags())) { + sysUserDO.setTags(loginUserInfoVO.getTags()); + } int update = userDao.putUserTag(sysUserDO); if (update > 0) { return R.ok(); @@ -707,7 +895,7 @@ sysUserDO.setIdCard(idCard); // 通过身份证号判断性别以及出生日期 sysUserDO.setSex(IdCard.sex(idCard)); - sysUserDO.setBirthday(IdCard.birthDay(idCard)); + sysUserDO.setBirthday(IdcardUtil.getBirthDate(idCard)); if (!StringUtils.isEmpty(loginUserInfoVO.getJob())) { sysUserDO.setJob(loginUserInfoVO.getJob()); } @@ -718,7 +906,7 @@ } sysUserDO.setFaceState(null); SysUserDO sysUserDO1 = - userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard)); + userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard).eq(SysUserDO::getCommunityId,loginUserInfoVO.getCommunityId())); if (!ObjectUtils.isEmpty(sysUserDO1)) { return R.fail("身份证已经存在"); } @@ -741,10 +929,11 @@ // 实名认证成功推送订阅消息给用户 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, "实名认证", - com.panzhihua.common.utlis.DateUtils.getCurrentDateStr(), "认证成功"); + com.panzhihua.common.utlis.DateUtils.getCurrentDateStr(), "认证成功",sysTemplateConfig.getTemplateId()); } catch (Exception e) { log.error("推送用户订阅消息失败,失败原因:" + e.getMessage()); } @@ -930,6 +1119,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) { @@ -960,6 +1164,46 @@ this.putMenuRole(menuRoleVO); } } + if(roleId.intValue()==777777777){ + SysRoleDO sysRoleDO = new SysRoleDO(); + sysRoleDO.setRoleName("超级管理员"); + sysRoleDO.setRoleKey(Constants.STREET_ROLE_KEY + administratorsUserVO.getStreetId()); + sysRoleDO.setRoleSort(0); + sysRoleDO.setCreateBy(administratorsUserVO.getUserId()); + int insert = roleDAO.insert(sysRoleDO); + if (insert > 0) { + SysRoleDO sysRoleDO1 = roleDAO.selectOne( + new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey())); + roleId = sysRoleDO1.getRoleId(); + // 新街道管理员角色设置固定三社权限 + MenuRoleVO menuRoleVO = new MenuRoleVO(); + List<Long> menu=new ArrayList<>(); + if(administratorsUserVO.getSocialType()==1){ + menu.add(233L); + menu.add(234L); + menu.add(235L); + menu.add(236L); + menu.add(237L); + } + else if(administratorsUserVO.getSocialType()==2){ + menu.add(233L); + menu.add(234L); + menu.add(236L); + menu.add(237L); + menu.add(238L); + } + else if(administratorsUserVO.getSocialType()==3){ + menu.add(233L); + menu.add(237L); + } + else { + menuRoleVO.setIsAll(1); + } + menuRoleVO.setMenuIds(menu); + menuRoleVO.setRoleId(roleId); + this.putMenuRole(menuRoleVO); + } + } SysRoleDO roleDO = roleDAO.selectById(roleId); if (ObjectUtils.isEmpty(roleDO)) { return R.fail("角色不存在"); @@ -977,31 +1221,10 @@ 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.getType() == 3) {// 添加的用户是社区账号时 - // 添加网格综合治理管理后台用户 - SysUserDO sysUserDOWangGe = new SysUserDO(); - BeanUtils.copyProperties(sysUserDO, sysUserDOWangGe); - sysUserDOWangGe.setUserId(null); - sysUserDOWangGe.setType(7);// 网格综治后台 - try { - int addWange = userDao.insert(sysUserDOWangGe); - if (addWange != 1) { - throw new ServiceException("新增网格综合治理管理后台用户失败"); - } - } catch (Exception e) { - e.printStackTrace(); - log.error("网格综合治理管理后台用户报错【{}】", e.getMessage()); - if (e.getMessage().contains("union_phone_type")) { - throw new ServiceException("手机号已经存在"); - } else if (e.getMessage().contains("union_account_type")) { - throw new ServiceException("账户已经存在"); - } - - } } if (insert > 0) { SysUserDO sysUserDO1 = userDao @@ -1013,7 +1236,90 @@ sysUserRoleDO.setRoleId(roleDO.getRoleId()); int insert1 = sysUserRoleDAO.insert(sysUserRoleDO); if (insert1 > 0) { - return R.ok(); + return R.ok(userId); + } + } + return R.fail(); + } + + @Override + public R addUserBackstageProperty(AdministratorsUserVO administratorsUserVO) { + SysUserDO sysUserDO = new SysUserDO(); + Long roleId = administratorsUserVO.getRoleId(); + if(roleId.intValue()==777777777){ + SysRoleDO sysRoleDO = new SysRoleDO(); + sysRoleDO.setRoleName("三社超级管理员"); + List<Long> menu=new ArrayList<>(); + if(administratorsUserVO.getSocialType()==1){ + sysRoleDO.setRoleKey(Constants.STREET_ROLE_KEY + administratorsUserVO.getStreetId()); + menu.add(300L); + menu.add(301L); + menu.add(302L); + menu.add(303L); + menu.add(304L); + } + else if(administratorsUserVO.getSocialType()==2){ + sysRoleDO.setRoleKey("social_org" + administratorsUserVO.getStreetId()); + menu.add(300L); + menu.add(301L); + menu.add(302L); + menu.add(303L); + } + else if(administratorsUserVO.getSocialType()==3){ + sysRoleDO.setRoleKey("social_org_member" + administratorsUserVO.getStreetId()); + menu.add(300L); + menu.add(303L); + } + + sysRoleDO.setRoleSort(0); + sysRoleDO.setCreateBy(administratorsUserVO.getUserId()); + SysRoleDO sysRoleDO1 = roleDAO.selectOne( + new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey())); + if(sysRoleDO1!=null){ + sysRoleDO=sysRoleDO1; + roleId = sysRoleDO.getRoleId(); + }else{ + roleDAO.insert(sysRoleDO); + // 新街道管理员角色设置固定三社权限 + MenuRoleVO menuRoleVO = new MenuRoleVO(); + menuRoleVO.setMenuIds(menu); + menuRoleVO.setRoleId(sysRoleDO.getRoleId()); + this.putMenuRole(menuRoleVO); + } + } + SysRoleDO roleDO = roleDAO.selectById(roleId); + if (ObjectUtils.isEmpty(roleDO)) { + return R.fail("角色不存在"); + } + String encode = new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword()); + administratorsUserVO.setPassword(encode); + BeanUtils.copyProperties(administratorsUserVO, sysUserDO); + int insert = 0; + try { + insert = userDao.insert(sysUserDO); + } 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 + .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, administratorsUserVO.getType()) + .eq(SysUserDO::getAccount, administratorsUserVO.getAccount())); + Long userId = sysUserDO1.getUserId(); + SysUserRoleDO sysUserRoleDO = new SysUserRoleDO(); + sysUserRoleDO.setUserId(userId); + sysUserRoleDO.setRoleId(roleDO.getRoleId()); + int insert1 = sysUserRoleDAO.insert(sysUserRoleDO); + if (insert1 > 0) { + return R.ok(userId); } } return R.fail(); @@ -1067,19 +1373,33 @@ // 获取所有权限id List<SysMenuDO> menuDOList = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda() - .eq(SysMenuDO::getCommunityId, 2l).orderByAsc(SysMenuDO::getOrderNum)); + .eq(SysMenuDO::getCommunityId, 2L).eq(SysMenuDO::getVisible,0).orderByAsc(SysMenuDO::getOrderNum)); if (!menuDOList.isEmpty()) { menuIds = menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList()); - for (int i = 0; i < menuIds.size(); i++) { - SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda() - .eq(SysRoleMenuDO::getMenuId, menuIds.get(i)).eq(SysRoleMenuDO::getRoleId, roleId)); - if (sysRoleMenuDO == null) { - sysRoleMenuDO = new SysRoleMenuDO(); - sysRoleMenuDO.setMenuId(menuIds.get(i)); - sysRoleMenuDO.setRoleId(roleId); - sysRoleMenuDAO.insert(sysRoleMenuDO); + + List<SysRoleMenuDO> sysRoleMenuDOList = sysRoleMenuDAO.selectList(new QueryWrapper<SysRoleMenuDO>().lambda().eq(SysRoleMenuDO::getRoleId, roleId).in(SysRoleMenuDO::getMenuId, menuIds)); + if (!sysRoleMenuDOList.isEmpty()) { + menuIds = menuIds.stream().filter(menuId -> !sysRoleMenuDOList.stream() + .anyMatch(sysRoleMenuDO -> sysRoleMenuDO.getMenuId().equals(menuId))).collect(Collectors.toList()); + } + if (!menuIds.isEmpty()) { + if(menuRoleVO.getMenuIds()==null){ + sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId); + } + else { + sysRoleMenuDAO.batchInsertWithRoleId(menuRoleVO.getMenuIds(), roleId); } } +// for (int i = 0; i < menuIds.size(); i++) { +// SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda() +// .eq(SysRoleMenuDO::getMenuId, menuIds.get(i)).eq(SysRoleMenuDO::getRoleId, roleId)); +// if (sysRoleMenuDO == null) { +// sysRoleMenuDO = new SysRoleMenuDO(); +// sysRoleMenuDO.setMenuId(menuIds.get(i)); +// sysRoleMenuDO.setRoleId(roleId); +// sysRoleMenuDAO.insert(sysRoleMenuDO); +// } +// } } return R.ok(); } @@ -1141,7 +1461,6 @@ * @return 删除结果 */ @Override - @Transactional(rollbackFor = Exception.class) public R deleteUserBackstage(AdministratorsUserVO administratorsUserVO) { Long userId = administratorsUserVO.getUserId(); SysUserDO sysUserDO = userDao.selectById(userId); @@ -1150,7 +1469,7 @@ } Long communityId = sysUserDO.getCommunityId(); Long communityId1 = administratorsUserVO.getCommunityId(); - if (communityId1.intValue() != communityId.intValue()) { + if (communityId1!=null&&communityId1.intValue() != communityId.intValue()) { return R.fail("用户不属于当前平台"); } // 删除用户 @@ -1535,9 +1854,9 @@ * @return 展示数据 */ @Override - public R dataKanban() { - IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(); - List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(); + public R dataKanban(String areaCode) { + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(areaCode); + List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder(new Page(1L, 9999L), areaCode).getRecords(); List<String> communityUserX = new ArrayList<>(); List<Integer> communityUserY = new ArrayList<>(); @@ -1645,6 +1964,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(); } @@ -1933,7 +2276,7 @@ @Override public R editSysUser(ShopStoreVO storeVO) { SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda() - .eq(SysUserDO::getPhone, storeVO.getPhone()).eq(SysUserDO::getType, 5)); + .eq(SysUserDO::getPhone, storeVO.getStoreAccount()).eq(SysUserDO::getType, 5)); if (sysUserDO1 == null) { return R.fail("未查询到后台管理用户!"); } @@ -1992,7 +2335,7 @@ /** * 修改app用户密码 - * + * * @param userInfoAppDTO * 请求参数 * @return 修改结果 @@ -2024,7 +2367,7 @@ /** * 添加网格员 - * + * * @param eventGridMemberAddDTO * 请求参数 * @return 结果 @@ -2032,7 +2375,6 @@ @Override @Transactional(rollbackFor = Exception.class) public R addGridUser(EventGridMemberAddDTO eventGridMemberAddDTO) { - SysRoleDO gridMemberDefaultRole = roleDAO.selectOne( new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, Constants.GRID_DEFAULT_ROLE_KEY)); if (gridMemberDefaultRole == null) { @@ -2142,7 +2484,7 @@ /** * 网格员管理 - * + * * @param memberRelationDTO * 请求参数 * @return 网格员列表 @@ -2179,7 +2521,7 @@ /** * 修改网格员信息 - * + * * @param gridMemberDTO * 请求参数 * @return 修改结果 @@ -2275,7 +2617,7 @@ /** * 重置网格员密码 - * + * * @param gridMemberDTO * 请求参数 * @return 重置结果 @@ -2293,7 +2635,7 @@ /** * 批量删除网格员 - * + * * @param Ids * 网格员id集合 * @return 删除结果 @@ -2332,7 +2674,7 @@ /** * 查询社区的收益说明 - * + * * @param communityId * 社区id * @return 收益说明 @@ -2379,7 +2721,7 @@ /** * 根据用户id查询用户openid - * + * * @param userId * 用户id * @return openid @@ -2395,7 +2737,7 @@ /** * 查询社区后台工作人员列表 - * + * * @param communityId * 社区id * @return 社区后台工作人员列表 @@ -2404,4 +2746,531 @@ public R getUserListByCommunityId(Long communityId) { return R.ok(this.userDao.getUserListByCommunityId(communityId)); } + + /** + * 检查当前用户是否是社区工作人员 + * @param phone + * @param communityId + * @return + */ + @Override + public R checkCurrentUserIsTeam(String phone, Long communityId) { + int result = this.userDao.selectCountTeam(phone, communityId); + if (result > 0) { + return R.ok(true); + } + return R.ok(false); + } + + @Override + public R resetPassword(Long userId) { + SysUserDO sysUserDO = new SysUserDO(); + sysUserDO.setUserId(userId); + String encode = new BCryptPasswordEncoder().encode("admin123456"); + sysUserDO.setPassword(encode); + int update = userDao.updateById(sysUserDO); + if (update > 0) { + return R.ok(); + } + return R.fail(); + } + + @Override + public R resetPasswordPatch(Long[] userId,String password) { + if(userId!=null){ + for(Long user:userId){ + SysUserDO sysUserDO = new SysUserDO(); + sysUserDO.setUserId(user); + String encode = new BCryptPasswordEncoder().encode(password); + sysUserDO.setPassword(encode); + userDao.updateById(sysUserDO); + } + } + return R.ok(); + } + + /** + * 便民服务新增商家账号 + * @param convenientMerchantDTO + * @return 商家用户id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R addConvenientMerchantUser(ConvenientMerchantDTO convenientMerchantDTO) { + SysUserDO sysUserDO; + sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, convenientMerchantDTO.getAccount())); + if (nonNull(sysUserDO)) { + return R.fail("账户已经存在"); + } + // sys_user 表 + sysUserDO = new SysUserDO(); + String encode = new BCryptPasswordEncoder().encode(convenientMerchantDTO.getPassword()); + BeanUtils.copyProperties(convenientMerchantDTO, sysUserDO); + sysUserDO.setAccount(convenientMerchantDTO.getAccount()); + sysUserDO.setType(10); + sysUserDO.setAreaId(null); + sysUserDO.setStatus(1); + sysUserDO.setPhone(null); + sysUserDO.setName(convenientMerchantDTO.getContacts()); + sysUserDO.setPassword(encode); + try { + userDao.insert(sysUserDO); + return R.ok(sysUserDO.getUserId()); + } catch (Exception e) { + e.printStackTrace(); + log.error("新增后台用户报错【{}】", e.getMessage()); + } + return R.fail("新增商户发生错误"); + } + + /** + * 修改便民服务商家绑定账号 + * @param userId 用户id + * @param account 修改账户 + * @return 修改结果 + */ + @Override + public R putUserAccount(Long userId, String account) { + SysUserDO sysUserDO = userDao.selectById(userId); + if (isNull(sysUserDO)) { + return R.fail("用户不存在"); + } + sysUserDO.setAccount(account); + userDao.updateById(sysUserDO); + return R.ok(); + } + + // /** + // * 修改便民服务商家绑定账号 + // * @param userId 用户id + // * @param account 修改账户 + // * @return 修改结果 + // */ + // @Override + // public R putUserAccount(Long userId, String account) { + // SysUserDO sysUserDO = userDao.selectById(userId); + // if (isNull(sysUserDO)) { + // return R.fail("用户不存在"); + // } + // String oldAccount = sysUserDO.getAccount(); + // sysUserDO.setAccount(account); + // int result = userDao.updateById(sysUserDO); + // if (result > 0) { + // SysRoleDO sysRoleDO = roleDAO.selectOne(new QueryWrapper<SysRoleDO>() + // .lambda().eq(SysRoleDO::getRoleKey, Constants.CONVENIENT_MERCHANT_ROLE_KEY + oldAccount)); + // if (nonNull(sysRoleDO)) { + // sysRoleDO.setRoleKey(Constants.CONVENIENT_MERCHANT_ROLE_KEY + account); + // roleDAO.updateById(sysRoleDO); + // } + // } + // return R.ok(); + // } + + @Override + public R disableOrEnableMerchantUsers(DisableOrEnableConvenientMerchantDTO disableOrEnableConvenientMerchantDTO) { + userDao.disableOrEnableMerchantUsers(disableOrEnableConvenientMerchantDTO.getType(), disableOrEnableConvenientMerchantDTO.getUserIds()); + return R.ok(); + } + + /** + * 根据openid维护社区团队里是否注册 + * @param openid 用户微信唯一标识 + */ + @Override + public void judgeCommunityTeam(String openid){ + //查询用户信息 + SysUserDO userDO = this.userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid,openid)); + if(userDO != null && StringUtils.isNotEmpty(userDO.getPhone())){ + if(this.userDao.getCommunityTeamCount(userDO.getPhone()) > 0){ + this.userDao.judgeCommunityTeam(userDO.getPhone()); + } + } + } + + /** + * 数据看板升级版 + * + * @return 运营后台数据看板升级版 + */ + @Override + public R dataKanBans(DataKanBansDto dataKanBansDto){ + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(dataKanBansDto.getAreaCode()); + List<String> communityUserX = new ArrayList<>(); + List<Integer> communityUserY = new ArrayList<>(); + + List<String> communityActiveUserX = new ArrayList<>(); + List<Integer> communityActiveUserY = new ArrayList<>(); + 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(page, dataKanBansDto.getAreaCode()).getRecords(); + }else{ + dataKanbanDTOS = userDao.selectCommunityUserOrder(page, dataKanBansDto.getAreaCode()).getRecords(); + } + if (!ObjectUtils.isEmpty(dataKanbanDTOS)) { + dataKanbanDTOS.forEach(dataKanbanDTO -> { + communityUserX.add(dataKanbanDTO.getName()); + communityUserY.add(dataKanbanDTO.getNum()); + }); + } + + // 获取最近二十天数据 + List<Date> serverndays = com.panzhihua.common.utlis.DateUtils.getOldDays(); + serverndays.forEach(date -> { + // 查询社区活动数量 + DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAreaCode(),date); + communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd")); + communityActiveUserY.add(dataKanbanDTO.getNum()); + communityActiveUserZ.add(dataKanbanDTO.getDayNum()); + }); + indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX); + indexDataKanbanVO.setCommunityAddUserY(communityActiveUserY); + indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserZ); + indexDataKanbanVO.setCommunityUserX(communityUserX); + indexDataKanbanVO.setCommunityUserY(communityUserY); + return R.ok(indexDataKanbanVO); + } + + /** + * 运营后台-用户数据统计汇总 + * @return 用户数据统计汇总 + */ + @Override + public R communityStatistics(String areaCode){ + //返回结果数据 + IndexUserStatisticsVo userStatisticsVo = new IndexUserStatisticsVo(); + //查询所有街道 + List<IndexUserStreetVo> streetList = userDao.getUserStreetList(areaCode); + streetList.forEach(street -> { + List<IndexUserCommunityVo> communityList = userDao.getUserCommunityList(street.getStreetId()); + street.setCommunityList(communityList); + }); + userStatisticsVo.setStreetList(streetList); + return R.ok(userStatisticsVo); + } + + @Override + public R communityStatisticsExport(String areaCode){ + return R.ok(userDao.getUserCommunityExcelExport(areaCode)); + } + + /** + * 通过UnionId获取用户信息 + * @param unionId + * @return + */ + @Override + public R getUserInfoByUnionId(String unionId) { + SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getUnionid, unionId)); + if (isNull(sysUserDO)) { + return R.fail("用户不存在"); + } + LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + return R.ok(loginUserInfoVO); + } + + @Override + public R updateStreetId(AdministratorsUserVO administratorsUserVO) { + SysUserDO sysUserDO=new SysUserDO(); + BeanUtils.copyProperties(administratorsUserVO,sysUserDO); + userDao.updateById(sysUserDO); + return R.ok(); + } + + /** + * 删除用户信息缓存 + * @param phone + */ + @Override + public R deleteUserCashByPhone(String phone) { + SysUserDO sysUserDO = this.userDao.selectOne(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1)); + if (nonNull(sysUserDO)) { + String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId(); + stringRedisTemplate.delete(userKey); + } + return R.ok(); + } + + /** + * 微商业街新增商家账号 + * @param mcsMerchantDTO + * @return 商家用户id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R addMcsMerchantUser(McsMerchantDTO mcsMerchantDTO) { + SysUserDO sysUserDO; + sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda() + .eq(SysUserDO::getPhone, mcsMerchantDTO.getPhone()).eq(SysUserDO::getType, 11)); + String encode = new BCryptPasswordEncoder().encode(mcsMerchantDTO.getPassword()); + if (nonNull(sysUserDO)) { + sysUserDO.setAccount(mcsMerchantDTO.getAccount()); + sysUserDO.setStatus(mcsMerchantDTO.getAccountStatus()); + sysUserDO.setPhone(mcsMerchantDTO.getPhone()); + sysUserDO.setPassword(encode); + sysUserDO.setPlaintextPassword(mcsMerchantDTO.getPassword()); + sysUserDO.setImageUrl(mcsMerchantDTO.getLogo()); + sysUserDO.setName(mcsMerchantDTO.getName()); + userDao.updateById(sysUserDO); + McsLoginUserInfoVO loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + return R.ok(loginUserInfoVO); + } + // sys_user 表 + sysUserDO = new SysUserDO(); + BeanUtils.copyProperties(mcsMerchantDTO, sysUserDO); + sysUserDO.setAccount(mcsMerchantDTO.getAccount()); + sysUserDO.setType(11); + sysUserDO.setAreaId(null); + sysUserDO.setStatus(mcsMerchantDTO.getAccountStatus()); + sysUserDO.setPhone(mcsMerchantDTO.getPhone()); + sysUserDO.setPassword(encode); + sysUserDO.setPlaintextPassword(mcsMerchantDTO.getPassword()); + sysUserDO.setImageUrl(mcsMerchantDTO.getLogo()); + try { + userDao.insert(sysUserDO); + McsLoginUserInfoVO loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + return R.ok(loginUserInfoVO); + } catch (Exception e) { + e.printStackTrace(); + log.error("修改数字商业街商家用户报错【{}】", e.getMessage()); + if (e.getMessage().contains("union_account_type") || e.getMessage().contains("23000")) { + return R.fail("账户已经存在"); + } else { + return R.fail("账户或手机号已存在,请重新填写尝试"); + } + } + } + + /** + * 微商业街修改商家账号 + * @param mcsMerchantDTO + * @return + */ + @Override + public R putMcsMerchantUser(McsMerchantDTO mcsMerchantDTO) { + SysUserDO sysUserDO = userDao.selectById(mcsMerchantDTO.getUserId()); + if (isNull(sysUserDO)) { + return R.fail("用户不存在"); + } + String account = mcsMerchantDTO.getAccount(); + String phone = mcsMerchantDTO.getPhone(); + Integer accountStatus = mcsMerchantDTO.getAccountStatus(); + String name = mcsMerchantDTO.getName(); + if (isNotBlank(account)) { + sysUserDO.setAccount(account); + } + if (isNotBlank(phone)) { + sysUserDO.setPhone(phone); + } + if (nonNull(accountStatus)) { + sysUserDO.setStatus(accountStatus); + } + if (isNotBlank(name)) { + sysUserDO.setName(name); + } + try { + userDao.updateById(sysUserDO); + } catch (Exception e) { + e.printStackTrace(); + log.error("修改数字商业街商家用户报错【{}】", e.getMessage()); + if (e.getMessage().contains("union_phone_type")) { + return R.fail("手机号已存在"); + } else if (e.getMessage().contains("union_account_type")) { + return R.fail("账户已经存在"); + }else if(e.getMessage().contains("23000")){ + return R.fail("手机号已存在"); + } else { + return R.fail("账户或手机号已存在,请重新填写尝试"); + } + } + return R.ok(); + } + + /** + * 检查用户是否有效 + * @param userId + * @param type + * @return + */ + @Override + public Boolean checkUserIsValid(Long userId, Integer type) { + SysUserDO sysUserDO = userDao.selectById(userId); + if (isNull(sysUserDO) || sysUserDO.getStatus() != 1 || !sysUserDO.getType().equals(type)) { + return false; + } + return true; + } + + /** + * 根据手机号、用户类型查询用户 + * @param phone + * @param type + * @return + */ + @Override + public R getSysUserByPhone(String phone, Integer type) { + SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, type)); + McsLoginUserInfoVO loginUserInfoVO = null; + if (nonNull(sysUserDO)) { + loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + } + return R.ok(loginUserInfoVO); + } + + /** + * 发送验证码 + * @param phone 手机号 + * @param clientIP 用户ip + * @param prefixKey redis Key 前缀 + * @param limit 获取次数限制 + * @param timeout 超次数获取时间等待 + * @return + */ + @Override + public R sendMessageCode(String phone, String clientIP, String prefixKey, Integer limit, Integer timeout) { + ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); + if (isNotBlank(clientIP)) { + String redisKey = String.join("::", prefixKey, clientIP); + Long increment = opsForValue.increment(redisKey, 1); + if (increment > limit) { + return R.fail(String.format("请求过于频繁,请%d分钟后再次尝试!", timeout/60)); + } + stringRedisTemplate.expire(redisKey, timeout, TimeUnit.SECONDS); + } + Random r = new Random(); + StringBuilder rs = new StringBuilder(); + for (int i = 0; i < 5; i++) { + rs.append(r.nextInt(10)); + } + String code = rs.toString(); + int result = SmsUtil.sendCode(phone, code); + if (result == 1) { + String codeKey = String.join("::", phone, code); + opsForValue.set(codeKey, code, timeout, TimeUnit.SECONDS); + return R.ok(); + } + return R.fail(); + } + + /** + * 根据openId获取微商业街用户 + * @param openid + * @return + */ + @Override + public R getMcsUserByOpenId(String openid) { + SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid, openid).eq(SysUserDO::getType, 11)); + McsLoginUserInfoVO loginUserInfoVO = null; + if (nonNull(sysUserDO) && isNotBlank(sysUserDO.getOpenid())) { + loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + } + return R.ok(loginUserInfoVO); + } + + /** + * 商业街用户微信授权-绑定手机号 + * @param bindUserPhoneDTO + * @return + */ + @Override + public R bindOrAddMcsUser(BindUserPhoneDTO bindUserPhoneDTO) { + String phone = bindUserPhoneDTO.getPhone(); + String openId = bindUserPhoneDTO.getOpenId(); + String redisKey = String.join("::", phone, bindUserPhoneDTO.getCode()); + Boolean hasKey = stringRedisTemplate.hasKey(redisKey); + if (hasKey) { + //通过验证 + SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 11)); + if (nonNull(sysUserDO)) { + //已有用户 + sysUserDO.setOpenid(openId); + int result = userDao.updateById(sysUserDO); + if (result > 0) { + McsLoginUserInfoVO loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + stringRedisTemplate.delete(redisKey); + return R.ok(loginUserInfoVO); + } + return R.fail("绑定失败,请重试"); + } else { + //自动创建用户 + McsMerchantDTO mcsMerchantDTO = new McsMerchantDTO(); + mcsMerchantDTO.setAccount(phone); + mcsMerchantDTO.setPassword("88888888"); + mcsMerchantDTO.setAccountStatus(1); + mcsMerchantDTO.setPhone(phone); + mcsMerchantDTO.setName("用户" + retrieveRandomCode(5)); + mcsMerchantDTO.setImageUrl(DEFAULT_IMAGE_URL); + mcsMerchantDTO.setOpenId(openId); + R addUserResult = addMcsMerchantUser(mcsMerchantDTO); + if (R.isOk(addUserResult)) { + McsLoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(addUserResult.getData()), McsLoginUserInfoVO.class); + loginUserInfoVO.setPlaintextPassword("88888888"); + stringRedisTemplate.delete(redisKey); + return R.ok(loginUserInfoVO); + } + return addUserResult; + } + } else { + return R.fail("验证码错误"); + } + } + + private String retrieveRandomCode(int length) { + Random r = new Random(); + StringBuilder rs = new StringBuilder(); + for (int i = 0; i < length; i++) { + rs.append(r.nextInt(10)); + } + return rs.toString(); + } + + @Override + public R updateUserPartyStatus(Long userId) { + SysUserDO sysUserDO = userDao.selectById(userId); + if (sysUserDO != null) { + sysUserDO.setIsPartymember(1); + int updated = userDao.updateById(sysUserDO); + if (updated > 0) { + // 删除用户信息缓存 + String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId(); + stringRedisTemplate.delete(userKey); + } + } + return R.ok(); + } + + @Override + public R uuLogin(UuLoginVO uuLoginVO) { + uuLoginVO.setAppid("10000"); + String timeStamp=PayUtil.create_timestamp(); + uuLoginVO.setTimestamp(timeStamp); + try { + uuLoginVO.setSign(PayUtil.MD5(uuLoginVO.getAppid()+"e10adc3949ba59abbe56e057f20f883e"+timeStamp).toLowerCase(Locale.ROOT)); + } catch (Exception e) { + e.printStackTrace(); + } + Map<String, String> headerMap=new HashMap<>(); + headerMap.put("appid","10000"); + String resultJson=HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province="+uuLoginVO.getProvince()+"&city="+uuLoginVO.getCity()+"&area="+uuLoginVO.getArea()+"&appid=10000×tamp="+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("信息错误"); + } } -- Gitblit v1.7.1