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.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.annotation.Resource; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO; import com.panzhihua.common.model.dtos.partybuilding.ComPbCheckUserDTO; import com.panzhihua.common.model.vos.community.ComAreaTownCommunityVO; import com.panzhihua.common.model.vos.community.acid.ComActAcidCheckRecordVO; import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO; import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO; import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO; import com.panzhihua.common.model.vos.sanshuo.ComSanshuoExpertVO; import com.panzhihua.common.model.vos.shop.ComShopUserAddressVO; import com.panzhihua.common.model.vos.user.*; import com.panzhihua.common.service.community.CommunityService; 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; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.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.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.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.SysUserNoticeDO; import com.panzhihua.service_user.model.dos.SysUserRoleDO; import com.panzhihua.service_user.model.dtos.DataKanbanDTO; import com.panzhihua.service_user.model.dtos.UsersStatisticsDTO; 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; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 用户 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-11-24 09:13 **/ @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 private RoleDAO roleDAO; @Resource private ComMngUserTagDAO comMngUserTagDAO; @Resource private ComMngFamilyInfoDAO comMngFamilyInfoDAO; @Resource private StringRedisTemplate stringRedisTemplate; @Resource private SysUserRoleDAO sysUserRoleDAO; @Resource private SysOperLogDAO sysOperLogDAO; @Resource private SysUserAgreementDAO sysUserAgreementDAO; @Resource private SysUserFeedbackDAO sysUserFeedbackDAO; @Resource private SysUserNoticeDAO sysUserNoticeDAO; @Resource private SysRoleMenuDAO sysRoleMenuDAO; @Resource private SysMenuDAO sysMenuDAO; @Resource private SysUserInputDAO sysUserInputDAO; @Resource private EventGridMemberBuildingRelationService buildingRelationService; @Resource private EventGridMemberBuildingRelationMapper eventGridMemberBuildingRelationMapper; @Resource private LcCompareMemberCodeMapper lcCompareMemberCodeMapper; @Resource private ComActFourMemberDao comActFourMemberDao; @Resource private SysAppConfigDao sysAppConfigDao; @Resource private SysTemplateConfigDao sysTemplateConfigDao; @Resource private ObjectMapper objectMapper; private static final Integer ALLCOUNTY=1; private static final Integer ALLSTREET=2; private static final Integer ALLCOMMUNITY=3; private static final Integer BYSTREET=4; private static final Integer BYAREA=5; private static final String OTHERUSER="其他用户"; private static final String UPDATEACIDCHECKRECORD="修改排查数据"; private static final String UPDATEACIDMEMBER="修改防疫工作人员信息"; private static final String UPDATEACIDRECORD="修改防疫信息数据"; // @Resource // private GridService gridService; public static void main(String[] args) { // String encode = new BCryptPasswordEncoder().encode("lbsq123456"); // System.out.println(encode); // List dates = new ArrayList<>(); // Date date = new Date(); // for (int i = 19; i >= 0; i--) { // Date date1 = DateUtils.addDays(date, -i); // dates.add(DateFormatUtils.format(date1, "MM-dd")); // } // System.out.println(dates); Date date = new Date(); Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY); System.out.println(offset); // BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); // boolean matches = encoder.matches("admin1234567", encode); // System.out.println(matches); } /** * 小程序微信用户信息更新 * * @param openid 小程序唯一ID * @param sessionKey 会话密钥 * @param unionid 用户在开放平台的唯一标识符 * @return token */ @Override public R updateInsertUser(String openid, String sessionKey, String unionid, String appId) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getOpenid, openid)); boolean empty = ObjectUtils.isEmpty(sysUserDO); int num = 0; Date date = new Date(); if (empty) { SysUserDO sysUserDO1 = new SysUserDO(); String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD); sysUserDO1.setOpenid(openid); sysUserDO1.setUnionid(unionid); sysUserDO1.setSessionKey(sessionKey); sysUserDO1.setCreateAt(date); sysUserDO1.setLastLoginTime(date); sysUserDO1.setPassword(encode); sysUserDO1.setType(1); sysUserDO1.setAppId(appId); //设置默认头像地址 sysUserDO1.setImageUrl("https://www.psciio.com//idcard/f15c91f940624ed59537ecced1059f18.jpg"); //设置默认用户名 sysUserDO1.setNickName("用户" + RandomUtil.randomString(8)); num = userDao.insert(sysUserDO1); } else { String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD); sysUserDO.setUnionid(unionid); sysUserDO.setSessionKey(sessionKey); sysUserDO.setPassword(encode); sysUserDO.setLastLoginTime(date); sysUserDO.setType(1); sysUserDO.setAppId(appId); num = userDao.updateById(sysUserDO); } if (num > 0) { return R.ok(); } else { return R.fail("登录失败"); } } /** * 维护小程序用户基本信息 头像 昵称 性别 * * @param userId 数据库用户ID * @param nickName 昵称 * @param gender 性别 * @param avatarUrl 头像 * @return 维护结果 */ @Override public R updateUserWeiXinInfo(Long userId, String nickName, int gender, String avatarUrl) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setSex(gender); sysUserDO.setNickName(nickName); sysUserDO.setImageUrl(avatarUrl); sysUserDO.setUserId(userId); int i = userDao.updateById(sysUserDO); if (i > 0) { return R.ok(); } else { return R.fail("维护微信基本信息失败"); } } /** * 维护微信用户手机号 * * @param userId 数据库ID * @param purePhoneNumber 没有区号的手机号 * @return 维护结果 */ @Override public R updateUserWeiXinPhone(Long userId, String purePhoneNumber) { 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()); } /** * 认证中心获取平台用户信息 * * @param name 登录账户 * @param type 用户类型 用户类型 1 小程序 2 运营平台 3 社区平台 * @return 用户基本信息、角色 */ @Override public R getUserInfo(String name, int type,String appId) { //是否为三说会堂行业分中心或专家后台账号 SysUserDO sysUserDO = null; Boolean isIndustryOrExpertAccount=(userDao.isIndustryCenterAccount(name)>0 || userDao.isExpertAccount(name)>0); if (1 == type) { sysUserDO = userDao.selectOne( new QueryWrapper().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name).eq(SysUserDO::getAppId, appId)); }else if(isIndustryOrExpertAccount) { //三说会堂行业分中心或专家后台账号登陆 sysUserDO = userDao.selectOne( new QueryWrapper().lambda().eq(SysUserDO::getAccount, name).eq(SysUserDO::getAppId, appId)); } else { LambdaQueryWrapper wrapper = new QueryWrapper().lambda().eq(SysUserDO::getType, type); if (type == 11) { //只允许通过account登录 wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).eq(SysUserDO::getAppId,appId)); } else { wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAppId,appId).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(); //获取后台商家user SysUserDO sysUser = userDao.selectOne( new QueryWrapper().lambda().eq(SysUserDO::getType, 5).eq(SysUserDO::getPhone, sysUserDO.getPhone()).eq(SysUserDO::getAppId, appId)); //判断是否是商家账号 if (nonNull(sysUser)){ loginUserInfoVO.setBackstageUserId(sysUser.getUserId()); loginUserInfoVO.setBackstageType(5); } if (nonNull(sysUserDO.getStreetId())){ loginUserInfoVO.setStreetId(sysUserDO.getStreetId()); } loginUserInfoVO.setLoveIntegral(sysUserDO.getLoveIntegral()); loginUserInfoVO.setUserId(sysUserDO.getUserId()); loginUserInfoVO.setName(sysUserDO.getName()); loginUserInfoVO.setPassword(sysUserDO.getPassword()); loginUserInfoVO.setStatus(sysUserDO.getStatus()); 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().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode())); // if(sysAppConfig!=null){ // loginUserInfoVO.setAppId(sysAppConfig.getAppId()); // loginUserInfoVO.setAppSecret(sysAppConfig.getSecret()); // } } } List roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId()); Set set = new HashSet<>(); if (!ObjectUtils.isEmpty(roleDOList)) { roleDOList.forEach(sysRoleDO -> { set.add(sysRoleDO.getRoleKey()); }); } //是否为人大代表 if (StringUtils.isNotEmpty(sysUserDO.getPhone()) && StringUtils.isNotEmpty(sysUserDO.getName())){ int i = userDao.isDpcMember(sysUserDO.getPhone(), sysUserDO.getName()); if (i>0){ loginUserInfoVO.setIsDpcMember(1); } } //是否为物业公司账号 if (nonNull(sysUserDO.getPhone())){ Long propertyAccount = userDao.isPropertyAccount(sysUserDO.getPhone()); if (nonNull(propertyAccount)){ loginUserInfoVO.setPropertyId(propertyAccount); } } return R.ok(loginUserInfoVO); } /** * 三端获取用户信息 * * @param userId 用户ID * @return 用户基本信息、角色 */ @Override public R getUserInfo(String userId) { SysUserDO sysUserDO = userDao.selectById(userId); boolean empty = ObjectUtils.isEmpty(sysUserDO); if (empty) { return R.fail(); } LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO(); BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); loginUserInfoVO.setLoveIntegral(sysUserDO.getLoveIntegral()); List roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId()); Set set = new HashSet<>(); if (!ObjectUtils.isEmpty(roleDOList)) { roleDOList.forEach(sysRoleDO -> { set.add(sysRoleDO.getRoleKey()); }); 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(); if (userCommunityId != null) { 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().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode())); if(sysAppConfig!=null){ loginUserInfoVO.setAppId(sysAppConfig.getAppId()); loginUserInfoVO.setAppSecret(sysAppConfig.getSecret()); } } } if (!ObjectUtils.isEmpty(phone)) { ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone); if (ObjectUtils.isEmpty(comMngVolunteerMngVO)) { loginUserInfoVO.setVolunteerStatus(0); } else { int state = comMngVolunteerMngVO.getState().intValue(); loginUserInfoVO.setVolunteerStatus(state); } //是否四长四员 Integer countFourMember=comActFourMemberDao.selectCount(new QueryWrapper().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()); } Integer count=userDao.selectOrgAdmin(phone); if(count>0){ loginUserInfoVO.setIsCheckUnitAdmin(1); } else { loginUserInfoVO.setIsCheckUnitAdmin(0); } Long checkUnitId=userDao.selectCheckUnitId(phone); Long AdminUnitId=userDao.selectOrgAdminId(phone); if(checkUnitId!=null){ loginUserInfoVO.setCheckUnitId(checkUnitId); } if (AdminUnitId!=null){ loginUserInfoVO.setBindingCheckUnitId(AdminUnitId); } //是否网格员 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); //是否社区或街道后台 int countSocialOrg=userDao.countSocialOrg(sysUserDO.getUserId()); if(countSocialOrg>0){ loginUserInfoVO.setUserType(3); } if (nonNull(sysUserDO.getAccount())){ if (isStreetAccount(sysUserDO.getAccount())){ //街道账号 loginUserInfoVO.setLevel(3); } if (sysUserDO.getAccount().equals("admin")){ loginUserInfoVO.setLevel(1); } } if (loginUserInfoVO.getType().equals(3)){ loginUserInfoVO.setLevel(4); } if (sysUserDO.getType().equals(11)){ //专家 loginUserInfoVO.setLevel(5); }else if (sysUserDO.getType().equals(12)){ //行业分中心 loginUserInfoVO.setLevel(2); } //是否为三说会堂专家 ComSanshuoExpertVO expertVO=userDao.isExpert(loginUserInfoVO.getPhone()); if (nonNull(expertVO)){ loginUserInfoVO.setType(13); } //是否为人大代表 if (StringUtils.isNotEmpty(phone) && StringUtils.isNotEmpty(sysUserDO.getName())){ int i = userDao.isDpcMember(phone, sysUserDO.getName()); if (i>0){ loginUserInfoVO.setIsDpcMember(1); } } //获取后台商家user SysUserDO sysUser = userDao.selectOne( new QueryWrapper().lambda().eq(SysUserDO::getType, 5).eq(SysUserDO::getPhone, sysUserDO.getPhone()).eq(SysUserDO::getAppId, "wx118de8a734d269f0")); //判断是否是商家账号 if (nonNull(sysUser)){ loginUserInfoVO.setBackstageUserId(sysUser.getUserId()); loginUserInfoVO.setBackstageType(5); Long storeId = userDao.selectStoreIdIdByUserId(sysUser.getUserId()); loginUserInfoVO.setStoreIdId(storeId); } //是否为物业公司账号 if (nonNull(sysUserDO.getPhone())){ Long propertyAccount = userDao.isPropertyAccount(sysUserDO.getPhone()); if (nonNull(propertyAccount)){ loginUserInfoVO.setPropertyId(propertyAccount); } } //获取自提点账号 if (StrUtil.isNotBlank(sysUserDO.getPhone())){ if(userDao.checkPoint(sysUserDO.getPhone()) > 0){ loginUserInfoVO.setIsPoint(true); }else { loginUserInfoVO.setIsPoint(false); } } //默认地址 ComShopUserAddressVO comShopUserAddressVO = userDao.selectDefaultAddressVO(userId); if (nonNull(comShopUserAddressVO)){ loginUserInfoVO.setComShopUserAddressVO(comShopUserAddressVO); } return R.ok(loginUserInfoVO); } /** * 是否为综治后台街道账号 * */ public Boolean isStreetAccount(String name){ Boolean flag=false; String[] account={"glpz","qxpjd","tjdjd","dbdjd","yqjd","bcg","hmkjd","dhjd","jsgyy","dzhljd"}; if (nonNull(name)){ if (ArrayUtil.contains(account,name)){ flag=true; } } return flag; } /** * 修改用户登录密码 * * @param changePasswordVO * 新密码 * @return 修改结果 */ @Override public R changePassword(ChangePasswordVO changePasswordVO) { Long userId = changePasswordVO.getUserId(); SysUserDO sysUserDO1 = userDao.selectById(userId); String dataPassowrd = sysUserDO1.getPassword(); String oldPassword = changePasswordVO.getOldPassword(); String newPassword = changePasswordVO.getNewPassword(); if (oldPassword.equals(newPassword)) { return R.fail("新密码与原密码不能相同"); } BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); if (!encoder.matches(oldPassword, dataPassowrd)) { return R.fail("原密码错误"); } SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(userId); String encode = new BCryptPasswordEncoder().encode(newPassword); sysUserDO.setPassword(encode); int update = userDao.updateById(sysUserDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 某社区后台人员查询 * * @param param * 名字 * @param communityId * 社区id * @return 人员集合 */ @Override public R listActivityManager(String param, Long communityId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); List activityManagerVOS = new ArrayList<>(); queryWrapper = new QueryWrapper().lambda().eq(SysUserDO::getCommunityId, communityId) .eq(SysUserDO::getStatus, 1).eq(SysUserDO::getType, 3); if (!ObjectUtils.isEmpty(param)) { queryWrapper = queryWrapper.eq(SysUserDO::getName, param); } List sysUserDOS = userDao.selectList(queryWrapper); if (!ObjectUtils.isEmpty(sysUserDOS)) { sysUserDOS.forEach(sysUserDO -> { ActivityManagerVO activityManagerVO = new ActivityManagerVO(); activityManagerVO.setManagerId(sysUserDO.getUserId()); activityManagerVO.setName(sysUserDO.getName()); activityManagerVOS.add(activityManagerVO); }); } return R.ok(activityManagerVOS); } /** * 微心愿搜索社区团队人员列表 * * @param param * 请求参数 * @param communityId * 社区id * @return 社区团队人员列表 */ @Override public R listActivityManager2(String param, Long communityId) { return R.ok(userDao.getServiceTeamList(param, communityId)); } /** * 分页查询人脸识别 * * @param loginUserInfoVO * 查询参数 * @return 分页集合 */ @Override public R pageUserFace(LoginUserInfoVO loginUserInfoVO) { Page page = new Page<>(); Long pageNum = loginUserInfoVO.getPageNum(); Long pageSize = loginUserInfoVO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = userDao.pageUserFace(page, loginUserInfoVO); return R.ok(iPage); } /** * 编辑人脸采集数据通过、驳回、删除 * * @param loginUserInfoVO 操作信息 * @return 操作结果 */ @Override public R putUserFace(LoginUserInfoVO loginUserInfoVO) { int operationType = loginUserInfoVO.getOperationType().intValue(); Long userId = loginUserInfoVO.getUserId(); SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(userId); switch (operationType) { case 1: sysUserDO.setFaceState(1); break; case 2: sysUserDO.setFaceState(2); break; case 3: break; default: break; } int num = 0; if (operationType == 3) { // num=userDao.deleteById(userId); num = userDao.updateFaceState(userId); } else { num = userDao.updateById(sysUserDO); } if (num > 0) { return R.ok(); } return R.fail(); } /** * 分页查询人口管理 * * @param userInfoVO 查询参数 * @return 分页数据 */ @Override public R pageUser(AppletUserInfoVO userInfoVO) { IPage iPage = userDao.pageUser(new Page<>(userInfoVO.getPageNum(), userInfoVO.getPageSize()), userInfoVO); iPage.getRecords().forEach(record -> { // record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone())); record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard())); 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); } /** * 查询所有人员标签 * * @return 标签集合 */ @Override public R listTag() { List list = new ArrayList<>(); List comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper() .eq(ComMngUserTagDO::getSysFlag, 1)); if (!ObjectUtils.isEmpty(comMngUserTagDOS)) { 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(); SysUserDO sysUserDO = userDao.selectById(userId); if (ObjectUtils.isEmpty(sysUserDO)) { return R.fail("人员不存在"); } BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); List comMngFamilyInfoDOS = comMngFamilyInfoDAO .selectList(new QueryWrapper().lambda().eq(ComMngFamilyInfoDO::getUserId, userId)); if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) { List comMngFamilyInfoVOS = new ArrayList<>(); comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> { ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO(); BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO); comMngFamilyInfoVOS.add(comMngFamilyInfoVO); }); loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS); } 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(sysUserDO.getPhone())){ Long propertyAccount = userDao.isPropertyAccount(sysUserDO.getPhone()); if (nonNull(propertyAccount)){ loginUserInfoVO.setPropertyId(propertyAccount); } } if (nonNull(acidMember)) { if (acidMember.getRelationName().equals("panzhihua") || acidMember.getRelationName().equals("西区") || acidMember.getRelationName().equals("东区") || acidMember.getRelationName().equals("仁和区") || acidMember.getRelationName().equals("米易县") || acidMember.getRelationName().equals("盐边县")) { loginUserInfoVO.setIsAcidMember(1); } 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); loginUserInfoVO.setLevel(4); } } if (sysUserDO.getType().equals(11)){ loginUserInfoVO.setLevel(5); }else if (sysUserDO.getType().equals(12)){ loginUserInfoVO.setLevel(2); }else if (isNull(loginUserInfoVO.getLevel())){ loginUserInfoVO.setLevel(1); } loginUserInfoVO.setBackstageType(1); String[] account = {"dongqu", "xiqu", "yanbianxian", "miyixian", "renhequ", "fantaixinqu"}; if ("zuzhibu".equals(sysUserDO.getAccount())) { loginUserInfoVO.setBackstageType(2); } if (ArrayUtil.contains(account, sysUserDO.getAccount())) { loginUserInfoVO.setBackstageType(3); } if (sysUserDO.getBindingCheckUnitId() != null) { loginUserInfoVO.setBackstageType(4); } //判断是否是商家账号 Long storeId = userDao.selectStoreIdIdByUserId(sysUserDO.getUserId()); if (null != storeId){ loginUserInfoVO.setBackstageUserId(sysUserDO.getUserId()); loginUserInfoVO.setBackstageType(5); loginUserInfoVO.setStoreIdId(storeId); } SysUserRoleDO sysUserRoleDO=sysUserRoleDAO.selectOne(new QueryWrapper() .lambda().eq(SysUserRoleDO::getUserId,sysUserDO.getUserId())); if(sysUserRoleDO!=null && sysUserRoleDO.getRoleId()!=null ) { loginUserInfoVO.setRoleId(sysUserRoleDO.getRoleId()+""); } return R.ok(loginUserInfoVO); } /** * 设置用户标签 * * @param loginUserInfoVO 标签信息 * @return 设置结果 */ @Override public R putUserTag(LoginUserInfoVO loginUserInfoVO) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(loginUserInfoVO.getUserId()); if (StringUtils.isNotEmpty(loginUserInfoVO.getTags()) && !"无".equals(loginUserInfoVO.getTags())) { sysUserDO.setTags(loginUserInfoVO.getTags()); } int update = userDao.putUserTag(sysUserDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 修改用户志愿者状态 * * @param phone 志愿者手机号 * @param type */ @Override public R putUserIsVolunteer(String phone, int type) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setIsVolunteer(type); // ????根据手机号匹配 int update = userDao.update(sysUserDO, new UpdateWrapper().lambda().eq(SysUserDO::getPhone, phone)); 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 userDOList = userDao.selectList(new LambdaQueryWrapper().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(); } /** * 用户绑定社区、小区 * * @param loginUserInfoVO 社区小区数据 * @return 绑定结果 */ @Override public R putUserCommunityArea(LoginUserInfoVO loginUserInfoVO) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setCommunityId(loginUserInfoVO.getCommunityId()); // sysUserDO.setAreaId(loginUserInfoVO.getAreaId()); sysUserDO.setUserId(loginUserInfoVO.getUserId()); int update = userDao.updateById(sysUserDO); if (update > 0) { // 删除用户信息缓存 String userKey = UserConstants.LOGIN_USER_INFO + loginUserInfoVO.getUserId(); stringRedisTemplate.delete(userKey); return R.ok(sysUserDO); } return R.fail(); } /** * 用户实名认证 * * @param loginUserInfoVO 认证数据 * @return 认证结果 */ @Override public R putUserAuthentication(LoginUserInfoVO loginUserInfoVO) { // 接入第三方实名认证 String idCard = loginUserInfoVO.getIdCard(); String name = loginUserInfoVO.getName(); 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.setName(name); sysUserDO.setIdCard(idCard); // 通过身份证号判断性别以及出生日期 sysUserDO.setSex(IdCard.sex(idCard)); sysUserDO.setBirthday(IdcardUtil.getBirthDate(idCard)); if (!StringUtils.isEmpty(loginUserInfoVO.getJob())) { sysUserDO.setJob(loginUserInfoVO.getJob()); } sysUserDO.setUserId(loginUserInfoVO.getUserId()); sysUserDO.setFaceUrl(loginUserInfoVO.getFaceUrl()); if (!StringUtils.isEmpty(loginUserInfoVO.getPhone())) { sysUserDO.setPhone(loginUserInfoVO.getPhone()); } sysUserDO.setFaceState(null); SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getIdCard, idCard).eq(SysUserDO::getCommunityId, loginUserInfoVO.getCommunityId())); if (!ObjectUtils.isEmpty(sysUserDO1)) { return R.fail("身份证已经存在"); } int update = userDao.updateById(sysUserDO); 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()); } /*SysUserDO user = userDao.selectById(loginUserInfoVO.getUserId()); if (user != null) { // 实名认证成功推送订阅消息给用户 try { WxXCXTempSend util = new WxXCXTempSend(); String accessToken = util.getAccessToken(); SysTemplateConfig sysTemplateConfig = sysTemplateConfigDao.selectOne(new QueryWrapper().lambda().eq(SysTemplateConfig::getAreaCode, loginUserInfoVO.getComActVO()).eq(SysTemplateConfig::getType, 5)); // 用户实名认证推送消息 WxUtil.sendSubscribeRZSH(user.getOpenid(), accessToken, "实名认证", com.panzhihua.common.utlis.DateUtils.getCurrentDateStr(), "认证成功", sysTemplateConfig.getTemplateId()); } catch (Exception e) { log.error("推送用户订阅消息失败,失败原因:" + e.getMessage()); } }*/ return R.ok(); } return R.fail(); } /** * 修改用户手机号 * * @param userPhoneVO 手机号信息 * @return 修改结果 */ @Override public R putUserphone(UserPhoneVO userPhoneVO) { String oldPhone = userPhoneVO.getOldPhone(); String newPhone = userPhoneVO.getNewPhone(); String smsCode = userPhoneVO.getSmsCode(); if (oldPhone.equals(newPhone)) { return R.fail("新旧手机号不能重复"); } String key = UserConstants.PHONE_PUT + newPhone; Boolean hasKey = stringRedisTemplate.hasKey(key); if (!hasKey) { return R.fail("重新发送验证码"); } SysUserDO sysUserDO1 = userDao.selectById(userPhoneVO.getUserId()); String phone = sysUserDO1.getPhone(); if (!StringUtils.isEmpty(phone) && !phone.equals(oldPhone)) { return R.fail("旧手机号错误"); } ValueOperations valueOperations = stringRedisTemplate.opsForValue(); String code = valueOperations.get(key); if (!code.equals(smsCode)) { if (!smsCode.equals("777333")) { return R.fail("验证码错误"); } } SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(userPhoneVO.getUserId()); sysUserDO.setPhone(newPhone); userDao.updateMemberRole(newPhone, oldPhone); userDao.updateServiceTeam(newPhone, oldPhone); int update = userDao.updateById(sysUserDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 修改用户信息 * * @param loginUserInfoVO 修改内容 * @return 修改结果 */ @Override public R putUser(LoginUserInfoVO loginUserInfoVO) { Integer faceState = loginUserInfoVO.getFaceState(); if (null == faceState || 0 == faceState) { loginUserInfoVO.setFaceState(null); } Integer isPartymember = loginUserInfoVO.getIsPartymember(); if (null == isPartymember || 0 == isPartymember) { loginUserInfoVO.setIsPartymember(null); } Integer isVolunteer = loginUserInfoVO.getIsVolunteer(); if (null == isVolunteer || 0 == isVolunteer) { loginUserInfoVO.setIsVolunteer(null); } Integer operationType = loginUserInfoVO.getOperationType(); if (null == operationType || 0 == operationType) { loginUserInfoVO.setOperationType(null); } Integer sex = loginUserInfoVO.getSex(); if (null == sex || 0 == sex) { loginUserInfoVO.setSex(null); } Integer status = loginUserInfoVO.getStatus(); if (null == status || 0 == status) { loginUserInfoVO.setStatus(null); } Integer type = loginUserInfoVO.getType(); if (null == type || 0 == type) { loginUserInfoVO.setType(null); } Long communityId = loginUserInfoVO.getCommunityId(); if (null == communityId || 0 == communityId) { loginUserInfoVO.setCommunityId(null); } String faceUrl = loginUserInfoVO.getFaceUrl(); if (!ObjectUtils.isEmpty(faceUrl)) { loginUserInfoVO.setFaceState(0); } SysUserDO sysUserDO = new SysUserDO(); BeanUtils.copyProperties(loginUserInfoVO, sysUserDO); int update = userDao.updateById(sysUserDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 家庭成员列表 * * @param userId 登录用户 * @return 成员集合 */ @Override public R listFamily(Long userId, Long pageNum, Long pageSize) { List comMngFamilyInfoVOS = new ArrayList<>(); LambdaQueryWrapper query = new QueryWrapper().lambda() .eq(ComMngFamilyInfoDO::getUserId, userId).orderByDesc(ComMngFamilyInfoDO::getCreateAt); IPage 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); }); } return R.ok(comMngFamilyInfoVOS); } /** * 新增家庭成员 * * @param comMngFamilyInfoVO 家庭成员基本信息 * @return 增加结果 */ @Override public R addFamily(ComMngFamilyInfoVO comMngFamilyInfoVO) { ComMngFamilyInfoDO comMngFamilyInfoDO = new ComMngFamilyInfoDO(); BeanUtils.copyProperties(comMngFamilyInfoVO, comMngFamilyInfoDO); ComMngFamilyInfoDO comMngFamilyInfoDO1 = comMngFamilyInfoDAO.selectOne(new QueryWrapper() .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) { return R.ok(); } return R.fail(); } /** * 编辑家庭成员 * * @param comMngFamilyInfoVO 家庭成员信息 * @return 编辑结果 */ @Override public R putFamily(ComMngFamilyInfoVO comMngFamilyInfoVO) { ComMngFamilyInfoDO comMngFamilyInfoDO = new ComMngFamilyInfoDO(); BeanUtils.copyProperties(comMngFamilyInfoVO, comMngFamilyInfoDO); comMngFamilyInfoDO.setAge(IdCard.IdNOToAge(comMngFamilyInfoVO.getIdCard())); int update = comMngFamilyInfoDAO.updateById(comMngFamilyInfoDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 新增运营、社区后台账户 * * @param administratorsUserVO 账户信息 * @return 新增结果 */ @Override @Transactional(rollbackFor = Exception.class) public R addUserBackstage(AdministratorsUserVO administratorsUserVO) { List list=userDao.selectList(new QueryWrapper().lambda(). eq(SysUserDO::getAppId,administratorsUserVO.getAppid()). eq(SysUserDO::getAccount,administratorsUserVO.getAccount())); if(list!=null && list.size()>0) { return R.fail("账户已存在!"); } ComActVO comActVO = userDao.selectCommunity(administratorsUserVO.getCommunityId()); if (nonNull(comActVO)) { List 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) { Long communityId = administratorsUserVO.getCommunityId(); // 新增社区高级管理员角色 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()); sysRoleDO.setRoleId(Snowflake.getId()); SysRoleDO sysRoleDOSelext = roleDAO.selectOne( new QueryWrapper().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey())); if(sysRoleDOSelext==null) { int insert = roleDAO.insert(sysRoleDO); if (insert > 0) { SysRoleDO sysRoleDO1 = roleDAO.selectOne( new QueryWrapper().lambda().eq(SysRoleDO::getRoleId, sysRoleDO.getRoleId())); roleId = sysRoleDO1.getRoleId(); // 新角色设置所有权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); menuRoleVO.setIsAll(1); menuRoleVO.setCommunityId(communityId); menuRoleVO.setRoleId(roleId); this.putMenuRole(menuRoleVO); } } else { roleId = sysRoleDOSelext.getRoleId(); // 新角色设置所有权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); menuRoleVO.setIsAll(1); menuRoleVO.setCommunityId(communityId); menuRoleVO.setRoleId(roleId); 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()); sysRoleDO.setRoleId(Snowflake.getId()); SysRoleDO sysRoleDOSelext = roleDAO.selectOne( new QueryWrapper().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey())); if(sysRoleDOSelext==null) { int insert = roleDAO.insert(sysRoleDO); if (insert > 0) { SysRoleDO sysRoleDO1 = roleDAO.selectOne( new QueryWrapper().lambda().eq(SysRoleDO::getRoleId, sysRoleDO.getRoleId())); roleId = sysRoleDO1.getRoleId(); // 新街道管理员角色设置固定三社权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); List 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); } } else { roleId = sysRoleDOSelext.getRoleId(); // 新街道管理员角色设置固定三社权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); List 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("角色不存在"); } String encode = new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword()); administratorsUserVO.setPassword(encode); BeanUtils.copyProperties(administratorsUserVO, sysUserDO); sysUserDO.setAppId(administratorsUserVO.getAppid()); 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().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(); } @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 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()); List sysRoleDO1 = roleDAO.selectList( new QueryWrapper().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey())); if (sysRoleDO1 != null && sysRoleDO1.size()>0 ) { sysRoleDO = sysRoleDO1.get(0); roleId = sysRoleDO.getRoleId(); } else { roleDAO.insert(sysRoleDO); // 新街道管理员角色设置固定三社权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); menuRoleVO.setMenuIds(menu); menuRoleVO.setRoleId(sysRoleDO.getRoleId()); this.putMenuRole(menuRoleVO); } } log.info("======================type"+administratorsUserVO.getType()); log.info("=======================roleId"+roleId); 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); if (nonNull(administratorsUserVO.getAppid())){ sysUserDO.setAppId(administratorsUserVO.getAppid()); } 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().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(); } /** * 设置角色的权限 * * @param menuRoleVO 用户设置的权限id * @return 设置结果 */ @Transactional(rollbackFor = Exception.class) public R putMenuRole(MenuRoleVO menuRoleVO) { List menuIds = new ArrayList<>(); Long roleId = menuRoleVO.getRoleId(); Integer isAll = menuRoleVO.getIsAll(); Long communityId = menuRoleVO.getCommunityId(); // if (isAll.intValue()==1) { // List sysMenuDOS = sysMenuDAO.selectList(new // QueryWrapper().lambda().eq(SysMenuDO::getCommunityId, // 2l).eq(SysMenuDO::getParentId,0).orderByAsc(SysMenuDO::getOrderNum)); // Long menuIdParent = sysMenuDOS.get(1).getMenuId(); // List sysMenuDOSErJi = sysMenuDAO.selectList(new // QueryWrapper().lambda().eq(SysMenuDO::getParentId, menuIdParent)); // if (!ObjectUtils.isEmpty(sysMenuDOS)) { // sysMenuDOS.forEach(sysMenuDO -> { // sysMenuDO.setCommunityId(communityId); // sysMenuDO.setMenuId(null); // sysMenuDAO.insert(sysMenuDO); // }); //// 完成一级目录创建 // List sysMenuDOS1 = sysMenuDAO.selectList(new // QueryWrapper().lambda().eq(SysMenuDO::getCommunityId, // communityId).orderByAsc(SysMenuDO::getOrderNum)); // sysMenuDOS1.forEach(sysMenuDO -> { // Integer orderNum = sysMenuDO.getOrderNum(); // if (orderNum.intValue()>0) { // sysMenuDOSErJi.forEach(sysMenuDO1 -> { // sysMenuDO1.setParentId(sysMenuDO.getMenuId()); // sysMenuDO1.setCommunityId(communityId); // sysMenuDO1.setMenuId(null); // sysMenuDAO.insert(sysMenuDO1); // }); // } // }); // } // } // 菜单写死不重新生成菜单 todo 所有注释上面自动生成新菜单功能 // 获取所有权限id List menuDOList = sysMenuDAO.selectList(new QueryWrapper().lambda() .eq(SysMenuDO::getCommunityId, 2L).eq(SysMenuDO::getVisible, 0).orderByAsc(SysMenuDO::getOrderNum)); if (!menuDOList.isEmpty()) { menuIds = menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList()); List sysRoleMenuDOList = sysRoleMenuDAO.selectList(new QueryWrapper().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().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(); } /** * 编辑运营、社区后台账户 * * @param administratorsUserVO 编辑账户内容 * @return 编辑结果 */ @Override public R putUserBackstage(AdministratorsUserVO administratorsUserVO) { SysUserDO sysUserDO = new SysUserDO(); Long roleId = administratorsUserVO.getRoleId(); SysRoleDO roleDO = null; if (null != roleId && 0 != roleId) { roleDO = roleDAO.selectById(roleId); if (ObjectUtils.isEmpty(roleDO)) { return R.fail("角色不存在"); } } String password = administratorsUserVO.getPassword(); if (!ObjectUtils.isEmpty(password)) { String encode = new BCryptPasswordEncoder().encode(password); administratorsUserVO.setPassword(encode); } BeanUtils.copyProperties(administratorsUserVO, sysUserDO); int update = 0; try { update = userDao.updateById(sysUserDO); } catch (Exception e) { e.printStackTrace(); log.error("编辑后台用户出错【{}】", e.getMessage()); if (e.getMessage().contains("union_phone_type")) { return R.fail("此手机号已被占用,请更换其他手机号码"); } } if (update > 0 && null != roleDO) { SysUserRoleDO sysUserRoleDO = new SysUserRoleDO(); sysUserRoleDO.setRoleId(roleDO.getRoleId()); int update1 = sysUserRoleDAO.update(sysUserRoleDO, new UpdateWrapper().lambda() .eq(SysUserRoleDO::getUserId, administratorsUserVO.getUserId())); if (update1 > 0) { return R.ok(); } else { sysUserRoleDO.setUserId(administratorsUserVO.getUserId()); sysUserRoleDAO.insert(sysUserRoleDO); } } return R.ok(); } /** * 删除后台用户 * * @param administratorsUserVO 用户主键 * @return 删除结果 */ @Override public R deleteUserBackstage(AdministratorsUserVO administratorsUserVO) { Long userId = administratorsUserVO.getUserId(); SysUserDO sysUserDO = userDao.selectById(userId); if (ObjectUtils.isEmpty(sysUserDO)) { return R.fail("用户不存在"); } Long communityId = sysUserDO.getCommunityId(); Long communityId1 = administratorsUserVO.getCommunityId(); if (communityId1 != null && communityId1.intValue() != communityId.intValue()) { return R.fail("用户不属于当前平台"); } // 删除用户 int delete = userDao.deleteById(userId); // 删除用户角色关系 if (delete > 0) { int delete1 = sysUserRoleDAO.delete(new QueryWrapper().lambda().eq(SysUserRoleDO::getUserId, userId)); if (delete1 == 0) { return R.fail("用户没有角色关系"); } } return R.ok(); } /** * 分页查询后台用户 * * @param administratorsUserVO 查询参数 * @return 后台用户 */ @Override public R pageUserBackstage(AdministratorsUserVO administratorsUserVO) { Page page = new Page<>(); Long pageNum = administratorsUserVO.getPageNum(); Long pageSize = administratorsUserVO.getPageSize(); if (null == pageNum || pageNum == 0) { pageNum = 1l; } if (null == pageSize || pageSize == 0) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = userDao.pageUserBackstage(page, administratorsUserVO); return R.ok(iPage); } /** * 保存操作日志 * * @param operlog 日志内容 * @return 保存结果 */ @Override public R addOperLog(SysOperLogVO operlog) { //判断是否需要保存修改前的数据 final Boolean flag = (operlog.getTitle().equals(UPDATEACIDCHECKRECORD) || operlog.getTitle().equals(UPDATEACIDMEMBER) || operlog.getTitle().equals(UPDATEACIDRECORD)); if (flag) { //保存数据 try { operlog.setBeforeUpdateData(saveBeforeUpdateData(operlog)); } catch (JsonProcessingException e) { e.printStackTrace(); } } SysOperLogDO sysOperLogDO = new SysOperLogDO(); BeanUtils.copyProperties(operlog, sysOperLogDO); int insert = sysOperLogDAO.insert(sysOperLogDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 分页展示操作日志 * * @param sysOperLogVO 分页参数 * @return 分页集合 */ @Override public R pageOperLog(SysOperLogVO sysOperLogVO) { Page page = new Page<>(); Long pageNum = sysOperLogVO.getPageNum(); Long pageSize = sysOperLogVO.getPageSize(); if (null == pageNum || pageNum == 0) { pageNum = 1l; } if (null == pageSize || pageSize == 0) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); //因操作日志数据量太大,如果没有时间查询条件,默认查询最近十五天的数据 if (StrUtil.isEmpty(sysOperLogVO.getStartTime()) && StrUtil.isEmpty(sysOperLogVO.getEndTime())){ sysOperLogVO.setStartTime(com.panzhihua.common.utlis.DateUtils.getBeforeDay(15)); sysOperLogVO.setEndTime(com.panzhihua.common.utlis.DateUtils.getCurrentDateymd()); } IPage iPage = sysOperLogDAO.pageOperLog(page, sysOperLogVO); return R.ok(iPage); } /** * 用户协议 * * @return 协议集合 */ @Override public R listAgreement(Long communityId) { List sysUserAgreementDOS = sysUserAgreementDAO.selectList( new LambdaQueryWrapper().eq(SysUserAgreementDO::getCommunityId, communityId)); if (ObjectUtils.isEmpty(sysUserAgreementDOS)) { return R.fail(); } List sysUserAgreementVOS = new ArrayList<>(); sysUserAgreementDOS.forEach(sysUserAgreementDO -> { SysUserAgreementVO sysUserAgreementVO = new SysUserAgreementVO(); BeanUtils.copyProperties(sysUserAgreementDO, sysUserAgreementVO); sysUserAgreementVOS.add(sysUserAgreementVO); }); return R.ok(sysUserAgreementVOS); } /** * 编辑用户协议 * * @param sysUserAgreementVO 编辑内容 * @return 编辑结果 */ @Override public R putAgreement(SysUserAgreementVO sysUserAgreementVO) { SysUserAgreementDO sysUserAgreementDO = new SysUserAgreementDO(); BeanUtils.copyProperties(sysUserAgreementVO, sysUserAgreementDO); int update = sysUserAgreementDAO.updateById(sysUserAgreementDO); if (update == 0) { return R.fail("协议不存在"); } return R.ok(); } /** * 用户标签 * * @param communityId 社区id * @return 标签集合 */ @Override public R listComMngUserTag(Long communityId) { List comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper().or() .lambda().eq(ComMngUserTagDO::getSysFlag, 1).or().eq(ComMngUserTagDO::getCommunityId, communityId)); if (ObjectUtils.isEmpty(comMngUserTagDOS)) { return R.fail(); } List comMngUserTagVOList = new ArrayList<>(); comMngUserTagDOS.forEach(comMngUserTagDO -> { ComMngUserTagVO comMngUserTagVO = new ComMngUserTagVO(); BeanUtils.copyProperties(comMngUserTagDO, comMngUserTagVO); comMngUserTagVOList.add(comMngUserTagVO); }); return R.ok(comMngUserTagVOList); } /** * 新增删除用户标签 * * @param systemmanagementConfigVO 操作内容 * @return 操作结果 */ @Override @Transactional(rollbackFor = Exception.class) public R putComMngUserTag(SystemmanagementConfigVO systemmanagementConfigVO) { Long communityId = systemmanagementConfigVO.getCommunityId(); List comMngUserTagVOList = systemmanagementConfigVO.getComMngUserTagVOList(); if (!ObjectUtils.isEmpty(comMngUserTagVOList)) { comMngUserTagDAO.delete(new QueryWrapper().lambda().eq(ComMngUserTagDO::getCommunityId, communityId)); comMngUserTagVOList.forEach(comMngUserTagVO -> { ComMngUserTagDO comMngUserTagDO = new ComMngUserTagDO(); comMngUserTagDO.setCommunityId(communityId); comMngUserTagDO.setTagName(comMngUserTagVO.getTagName()); comMngUserTagDAO.insert(comMngUserTagDO); }); return R.ok(); } else { return R.fail("用户标签不能为空"); } } /** * 分页查询小程序用户 * * @param pageUserAppletsBackstageDTO 查询参数 * @return 分页集合 */ @Override public R pageUserAppletsBackstage(PageUserAppletsBackstageDTO pageUserAppletsBackstageDTO) { Page page = new Page<>(); Long pageNum = pageUserAppletsBackstageDTO.getPageNum(); Long pageSize = pageUserAppletsBackstageDTO.getPageSize(); page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = userDao.pageUserAppletsBackstage(page, pageUserAppletsBackstageDTO); return R.ok(iPage); } /** * 编辑用户状态 * * @param pageUserAppletsBackstageDTO 启用或者禁用 1 启用 2 禁用 * @return 编辑结果 */ @Override public R putUserAppletsBackstage(PageUserAppletsBackstageDTO pageUserAppletsBackstageDTO) { Long userId = pageUserAppletsBackstageDTO.getUserId(); Integer status = pageUserAppletsBackstageDTO.getStatus(); SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(userId); sysUserDO.setStatus(status); int update = userDao.updateById(sysUserDO); if (update > 0) { return R.ok(); } return R.fail("用户不存在"); } /** * 调试接口--清除昵称、社区、小区 * * @param userId 登录用户id * @return 清除结果 */ @Override public R deleteUserTest(Long userId) { int num = userDao.deleteUserTest(userId); if (num > 0) { return R.ok(); } return R.fail("清除失败"); } /** * 用户协议和隐私政策 * * @param type 所属app 1居民端app 2网格员端app 3商家端app * @return 协议内容 */ @Override public R userAgreement(int type, String appId) { SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO .selectOne(new QueryWrapper().lambda().eq(SysUserAgreementDO::getType, type).eq(SysUserAgreementDO::getAppId, appId)); return R.ok(sysUserAgreementDO); } /** * 意见反馈 * * @param sysUserFeedbackDTO 反馈内容 * @return 反馈结果 */ @Override public R addFeedback(SysUserFeedbackDTO sysUserFeedbackDTO) { SysUserFeedbackDO sysUserFeedbackDO = new SysUserFeedbackDO(); BeanUtils.copyProperties(sysUserFeedbackDTO, sysUserFeedbackDO); sysUserFeedbackDO.setPhotoPath(sysUserFeedbackDTO.getPhotoPah()); int insert = sysUserFeedbackDAO.insert(sysUserFeedbackDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 分页通知列表 * * @param pageDTO 分页参数 * @return 分页结果 */ @Override public R pageNotice(PageDTO pageDTO) { Long userId = pageDTO.getUserId(); Integer type = pageDTO.getType(); int integer = 0; if (null != type && type.intValue() > 0) { integer = sysUserNoticeDAO .selectCount(new QueryWrapper().lambda().eq(SysUserNoticeDO::getUserId, userId) .eq(SysUserNoticeDO::getStatus, 0).eq(SysUserNoticeDO::getType, type)); } else { integer = sysUserNoticeDAO.selectCount(new QueryWrapper().lambda() .eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0)); } Page page = new Page<>(); Long pageNum = pageDTO.getPageNum(); Long pageSize = pageDTO.getPageSize(); page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = userDao.pageNotice(page, pageDTO); Map map = new HashMap<>(2); map.put("page", iPage); map.put("unreadNum", integer); return R.ok(map); } /** * 通知已读 * * @param noticeReadDTO 通知已读 * @return 修改状态 */ @Override 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()) { sysUserNoticeDO.setStatus(1); num = sysUserNoticeDAO.update(sysUserNoticeDO, new UpdateWrapper().lambda() .eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0)); } else { sysUserNoticeDO.setId(noticeReadDTO.getId()); sysUserNoticeDO.setStatus(1); num = sysUserNoticeDAO.updateById(sysUserNoticeDO); } if (num > 0) { return R.ok(); } return R.fail("通知不存在"); } /** * 分页查询用户意见反馈 * * @param pageFeedBackDTO 分页查询参数 * @return 意见集合 */ @Override public R pageFeedback(PageFeedBackDTO pageFeedBackDTO) { Page page = new Page<>(); Long pageNum = pageFeedBackDTO.getPageNum(); Long pageSize = pageFeedBackDTO.getPageSize(); page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = sysUserFeedbackDAO.pageFeedback(page, pageFeedBackDTO); return R.ok(iPage); } /** * 未读消息汇总 * * @param userId 登录用户信息 * @return 未读汇总 */ @Override public R noticeUnreadNum(Long userId) { NoticeUnReadVO noticeUnReadVO = sysUserNoticeDAO.noticeUnreadNum(userId); List sysUserNoticeVOList = new ArrayList<>(); List sysUserNoticeDOS = sysUserNoticeDAO.selectList(new QueryWrapper() .lambda().eq(SysUserNoticeDO::getUserId, userId).orderByDesc(SysUserNoticeDO::getCreateAt)); if (!ObjectUtils.isEmpty(sysUserNoticeDOS)) { List typeList = new ArrayList<>(4); sysUserNoticeDOS.forEach(sysUserNoticeDO -> { Integer type = sysUserNoticeDO.getType(); if (!typeList.contains(type)) { SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO(); BeanUtils.copyProperties(sysUserNoticeDO, sysUserNoticeVO); sysUserNoticeVOList.add(sysUserNoticeVO); typeList.add(type); } }); } noticeUnReadVO.setSysUserNoticeVOList(sysUserNoticeVOList); return R.ok(noticeUnReadVO); } /** * 反馈意见详情 * * @param id 反馈主键 * @return 反馈详情 */ @Override public R detailFeedback(Long id) { SysUserFeedbackVO sysUserFeedbackVO = sysUserFeedbackDAO.detailFeedback(id); return R.ok(sysUserFeedbackVO); } /** * 运营小程序后台数据看板 * * @return 展示数据 */ @Override public R dataKanban(String areaCode) { IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(areaCode); List dataKanbanDTOS = userDao.selectCommunityUserOrder(new Page(1L, 9999L), areaCode).getRecords(); List communityUserX = new ArrayList<>(); List communityUserY = new ArrayList<>(); List communityActiveUserX = new ArrayList<>(); List communityActiveUserY = new ArrayList<>(); if (!ObjectUtils.isEmpty(dataKanbanDTOS)) { dataKanbanDTOS.forEach(dataKanbanDTO -> { communityUserX.add(dataKanbanDTO.getName()); communityUserY.add(dataKanbanDTO.getNum()); }); } // 获取最近七天数据 List serverndays = this.getServenDays(); serverndays.forEach(date -> { // 查询社区活动数量 DataKanbanDTO dataKanbanDTO = userDao.selectCommunityActiveUserOrder(date); communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd")); communityActiveUserY.add(dataKanbanDTO.getNum()); }); indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX); indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserY); indexDataKanbanVO.setCommunityUserX(communityUserX); indexDataKanbanVO.setCommunityUserY(communityUserY); return R.ok(indexDataKanbanVO); } /** * 获取最近七天数据 * * @return */ private List getServenDays() { List 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; } /** * 社区管理后台数据看板 * * @param communityId 社区id * @return 看板用户数据 */ @Override public R indexDataCommunityBackstage(Long communityId) { IndexDataVO indexDataVO = userDao.indexDataCommunityBackstage(communityId); // 查询后台党员数量 return R.ok(indexDataVO); } /** * 定时任务维护用户持续登录时间 * * @return 维护结果 */ @Override public R timedTaskContinuousLandingDays() { int num = userDao.timedTaskContinuousLandingDays(); if (num > 0) { log.info("定时任务维护用户持续登录时间,维护用户数量【{}】", num); } return R.ok(); } /** * 新增用户通知 * * @param sysUserNoticeVO 通知内容 * @return 新增结果 */ @Override public R addNotice(SysUserNoticeVO sysUserNoticeVO) { SysUserNoticeDO sysUserNoticeDO = new SysUserNoticeDO(); BeanUtils.copyProperties(sysUserNoticeVO, sysUserNoticeDO); int insert = sysUserNoticeDAO.insert(sysUserNoticeDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 修改用户的党员状态 * * @param idCard 身份证号 * @return 修改结果 */ @Override public R updateUserIsPartymember(String idCard) { SysUserDO sysUserDO = userDao.selectOne( new QueryWrapper().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.ok(); } /** * 修改用户的党员状态 * * @param phone 身份证号 * @return 修改结果 */ @Override public R updateUserIsPartymemberByPhone(String phone) { SysUserDO sysUserDO = userDao.selectOne( new QueryWrapper().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(); } /** * 修改用户的党员状态 * * @param idCard 身份证号 * @return 修改结果 */ @Override public R updateUserNotPartymember(String idCard) { SysUserDO sysUserDO = userDao.selectOne( new QueryWrapper().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(); } /** * 获取各种协议 * * @param type 1居民端app协议 2网格员端app协议 3商家端app协议 4隐私政策 * @return 协议内容 */ @Override public R agreement(Integer type, String appId) { SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO .selectOne(new QueryWrapper().lambda().eq(SysUserAgreementDO::getType, type).eq(SysUserAgreementDO::getAppId, appId)); if (ObjectUtils.isEmpty(sysUserAgreementDO)) { return R.fail("协议不存在"); } SysUserAgreementVO sysUserAgreementVO = new SysUserAgreementVO(); BeanUtils.copyProperties(sysUserAgreementDO, sysUserAgreementVO); return R.ok(sysUserAgreementVO); } /** * 维护用户最后登录时间 * * @param userId 用户主键 * @return 维护结果 */ @Override public R putUserLastLoginTime(Long userId) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(userId); sysUserDO.setLastLoginTime(new Date()); int update = userDao.updateById(sysUserDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 删除意见反馈 * * @param id 主键 * @return 删除结果 */ @Override public R deleteFeedback(Long id) { int delete = sysUserFeedbackDAO.deleteById(id); if (delete > 0) { return R.ok(); } return R.fail(); } /** * 校验小区是否存在 * * @param areaName 小区名字 * @return 校验结果 */ @Override public R checkAereaName(String areaName) { Integer num = userDao.selectCountArea(areaName); if (num > 0) { Integer integer = userDao.selectCountHouse(areaName); if (integer > 0) { return R.ok(); } else { return R.fail("小区房屋信息未创建,请先在社区平台添加房屋信息"); } } else { return R.fail("小区不存在,请先在社区平台添加小区"); } } /** * 社区人员详情包括导入人员 * * @param userId 人员id * @return CommunityUserInfoVO */ @Override public CommunityUserInfoVO detailUserComunity(Long userId) { CommunityUserInfoVO communityUserInfoVO = null; SysUserDO sysUserDO = userDao.selectById(userId); if (!ObjectUtils.isEmpty(sysUserDO)) { communityUserInfoVO = new CommunityUserInfoVO(); String idCard = sysUserDO.getIdCard(); if (!ObjectUtils.isEmpty(idCard)) { communityUserInfoVO.setAge(IdCard.IdNOToAge(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); communityUserInfoVO.setSex(sysUserDO.getSex()); communityUserInfoVO.setTags(sysUserDO.getTags()); communityUserInfoVO.setUserId(userId); ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone); if (!ObjectUtils.isEmpty(comMngVolunteerMngVO)) { communityUserInfoVO.setVolunteerCreateAt(comMngVolunteerMngVO.getCreateAt()); } Integer isPartymember = sysUserDO.getIsPartymember(); if (isPartymember.intValue() == 1) { communityUserInfoVO.setPoliticalOutlook(1); } else { communityUserInfoVO.setPoliticalOutlook(3); } communityUserInfoVO.setIsVolunteer(sysUserDO.getIsVolunteer()); List comMngFamilyInfoDOS = comMngFamilyInfoDAO .selectList(new QueryWrapper().lambda().eq(ComMngFamilyInfoDO::getUserId, userId)); if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) { List comMngFamilyInfoVOS = new ArrayList<>(); comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> { ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO(); BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO); comMngFamilyInfoVOS.add(comMngFamilyInfoVO); }); communityUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS); } } return communityUserInfoVO; } /** * 用户搜索了就下载搜索的用户否则下载所有用户 * * @param exportUserDTO 用户搜索内容 * @return List excel内容 */ @Override public R export(ExportUserDTO exportUserDTO) { List eexcelUserDTOS = userDao.selectExport(exportUserDTO); return R.ok(eexcelUserDTOS); } @Override public R getSysUserVOByPhone(String phone) { SysUserDO sysUserDO = userDao .selectOne(new QueryWrapper().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1).orderByDesc(SysUserDO::getCreateAt).last("limit 1")); if (ObjectUtils.isEmpty(sysUserDO)) { return R.fail("账号或密码错误"); } SysUserVO sysUserVO = new SysUserVO(); BeanUtils.copyProperties(sysUserDO, sysUserVO); return R.ok(sysUserVO); } /** * 查询当前社区所有标签以及预设标签 * * @return 标签集合 */ @Override public R listTags() { List list = new ArrayList<>(); List comMngUserTagDOS = comMngUserTagDAO .selectList(null); if (!ObjectUtils.isEmpty(comMngUserTagDOS)) { for (ComMngUserTagDO comMngUserTagDO : comMngUserTagDOS) { if (!list.contains(comMngUserTagDO.getTagName())) { list.add(comMngUserTagDO.getTagName()); } } // list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()) // .collect(Collectors.toList()); } return R.ok(list); } @Override public R getSysUserVOByAccount(String account, Integer type) { LambdaQueryWrapper query = new QueryWrapper().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); sysUserDO.setAppId("wx0cef797390444b75"); try { insert = userDao.insert(sysUserDO); SysUserRoleDO sysUserRoleDO = new SysUserRoleDO(); sysUserRoleDO.setUserId(sysUserDO.getUserId()); sysUserRoleDO.setRoleId(sysRoleDO.getRoleId()); sysUserRoleDAO.insert(sysUserRoleDO); // 把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().lambda() .eq(SysUserDO::getPhone, storeVO.getStoreAccount()).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(); } /** * 修改app用户密码 * * @param userInfoAppDTO 请求参数 * @return 修改结果 */ @Override public R updateUserPassByApp(EditUserInfoPassAppDTO userInfoAppDTO) { if (userInfoAppDTO.getOldPassword().equals(userInfoAppDTO.getNewPassword())) { return R.fail("新密码不可与原密码相同"); } // 查询用户信息 SysUserDO userDO = userDao.selectById(userInfoAppDTO.getUserId()); if (userDO == null) { return R.fail("未查询到用户信息"); } BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); if (!passwordEncoder.matches(userInfoAppDTO.getOldPassword(), userDO.getPassword())) { return R.fail("原密码错误"); } if (!userInfoAppDTO.getNewPassword().equals(userInfoAppDTO.getConfirmPassword())) { return R.fail("两次输入的新密码不一致"); } userDO.setPassword(passwordEncoder.encode(userInfoAppDTO.getNewPassword())); if (userDao.updateById(userDO) > 0) { return R.ok(); } else { return R.fail(); } } /** * 添加网格员 * * @param eventGridMemberAddDTO 请求参数 * @return 结果 */ @Override @Transactional(rollbackFor = Exception.class) public R addGridUser(EventGridMemberAddDTO eventGridMemberAddDTO) { SysRoleDO gridMemberDefaultRole = roleDAO.selectOne( new QueryWrapper().lambda().eq(SysRoleDO::getRoleKey, Constants.GRID_DEFAULT_ROLE_KEY)); if (gridMemberDefaultRole == null) { // 添加默认网格员角色 gridMemberDefaultRole = new SysRoleDO(); gridMemberDefaultRole.setCommunityId(0L); gridMemberDefaultRole.setRoleName("网格员默认角色"); gridMemberDefaultRole.setRoleKey(Constants.GRID_DEFAULT_ROLE_KEY); gridMemberDefaultRole.setRoleSort(0); gridMemberDefaultRole.setCreateBy(eventGridMemberAddDTO.getUserId()); int insert = roleDAO.insert(gridMemberDefaultRole); if (insert != 1) { throw new ServiceException("网格员默认角色添加失败"); } } Long roleId = gridMemberDefaultRole.getRoleId(); // 新角色设置所有权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); menuRoleVO.setIsAll(1); menuRoleVO.setCommunityId(eventGridMemberAddDTO.getCommunityId()); menuRoleVO.setRoleId(roleId); this.putMenuRole(menuRoleVO); // 参数校验 SysUserDO oldUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getType, 6) .eq(SysUserDO::getNickName, eventGridMemberAddDTO.getNickName())); if (oldUserDO != null) { return R.fail("昵称已使用"); } SysUserDO sysUserDO = new SysUserDO(); String encode = new BCryptPasswordEncoder().encode(eventGridMemberAddDTO.getPassword()); eventGridMemberAddDTO.setPassword(encode); BeanUtils.copyProperties(eventGridMemberAddDTO, sysUserDO); if (!StringUtils.isEmpty(sysUserDO.getNickName())) { sysUserDO.setName(sysUserDO.getNickName()); } sysUserDO.setType(6); if (StringUtils.isEmpty(eventGridMemberAddDTO.getImageUrl())) { sysUserDO.setImageUrl(Constants.ZONG_ZHI_GRID_MEMBER_IMAGE_URL); } int insert = 0; try { insert = userDao.insert(sysUserDO); SysUserRoleDO sysUserRoleDO = new SysUserRoleDO(); sysUserRoleDO.setUserId(sysUserDO.getUserId()); sysUserRoleDO.setRoleId(roleId); sysUserRoleDAO.insert(sysUserRoleDO); // 关联市平台网格员 if (eventGridMemberAddDTO.getLcMemberId() != null) { LcCompareCodeMemberDO compareCodeMemberDO = lcCompareMemberCodeMapper.selectOne(new QueryWrapper().lambda() .eq(LcCompareCodeMemberDO::getLcGridMemberId, eventGridMemberAddDTO.getLcMemberId())); if (compareCodeMemberDO != null) { compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString()); compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName()); compareCodeMemberDO.setUpdateAt(new Date()); lcCompareMemberCodeMapper.updateById(compareCodeMemberDO); } else { compareCodeMemberDO = new LcCompareCodeMemberDO(); compareCodeMemberDO.setId(Snowflake.getId()); compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString()); compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName()); compareCodeMemberDO.setLcGridMemberId(eventGridMemberAddDTO.getLcMemberId()); compareCodeMemberDO.setLcBindUserId(eventGridMemberAddDTO.getLcBindUserId()); compareCodeMemberDO.setLcGridMemberName(eventGridMemberAddDTO.getLcMemberName()); compareCodeMemberDO.setCreateAt(new Date()); lcCompareMemberCodeMapper.insert(compareCodeMemberDO); } } // 网格员关联楼栋 if (eventGridMemberAddDTO.getBuildingIds() != null && !eventGridMemberAddDTO.getBuildingIds().isEmpty()) { List buildingRelationList = new ArrayList<>(); eventGridMemberAddDTO.getBuildingIds().forEach(buildingId -> { Map resultMap = this.userDao.getBuilding(buildingId); if (resultMap != null) { EventGridMemberBuildingRelationDO buildingRelationDO = new EventGridMemberBuildingRelationDO(); buildingRelationDO.setBuildingId(buildingId); buildingRelationDO.setGridMemberId(sysUserDO.getUserId()); buildingRelationDO.setVillageId(Long.parseLong(resultMap.get("village_id").toString())); buildingRelationDO.setCommunityId(Long.parseLong(resultMap.get("act_id").toString())); buildingRelationDO.setCreateAt(new Date()); buildingRelationList.add(buildingRelationDO); } }); if (!buildingRelationList.isEmpty()) { buildingRelationService.saveBatch(buildingRelationList); } } } 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("账户已经存在"); } } if (insert > 0) { return R.ok(); } else { return R.fail("添加失败"); } } /** * 网格员管理 * * @param memberRelationDTO 请求参数 * @return 网格员列表 */ @Override public R getGridMemberList(PageEventGridMemberRelationDTO memberRelationDTO) { IPage gridMemberPage = userDao.getGridMemberList( new Page(memberRelationDTO.getPageNum(), memberRelationDTO.getPageSize()), memberRelationDTO); if (!gridMemberPage.getRecords().isEmpty()) { gridMemberPage.getRecords().forEach(gridMember -> { // 查询网格员关联市平台网格员id Map lcMemberMap = this.userDao.getLcMemberId(gridMember.getUserId()); if (lcMemberMap != null) { gridMember.setLcMemberId(lcMemberMap.get("lc_grid_member_id")); gridMember.setLcMemberName(lcMemberMap.get("lc_grid_member_name")); gridMember.setLcBindUserId(lcMemberMap.get("lc_bind_user_id")); } // 查询网格员关联楼栋信息 List memberBuildingList = eventGridMemberBuildingRelationMapper.getGridMemberBuildingRelation(gridMember.getUserId()); if (!memberBuildingList.isEmpty()) { memberBuildingList.forEach(memberBuilding -> { if (!memberBuilding.getBuildingName().contains("栋")) { memberBuilding.setBuildingName(memberBuilding.getBuildingName() + "栋"); } }); gridMember.setMemberBuildingList(memberBuildingList); } }); } return R.ok(gridMemberPage); } /** * 修改网格员信息 * * @param gridMemberDTO 请求参数 * @return 修改结果 */ @Override @Transactional(rollbackFor = Exception.class) public R editGridUser(EventGridMemberEditAdminDTO gridMemberDTO) { if (gridMemberDTO.getGridMemberId() == null) { return R.fail("参数错误"); } SysUserDO sysUserDO = userDao.selectById(gridMemberDTO.getGridMemberId()); if (sysUserDO == null) { return R.fail("参数错误"); } gridMemberDTO.setUserId(gridMemberDTO.getGridMemberId()); // 参数校验 SysUserDO oldUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getType, 6) .eq(SysUserDO::getNickName, gridMemberDTO.getNickName())); if (oldUserDO != null && !oldUserDO.getUserId().equals(gridMemberDTO.getGridMemberId())) { return R.fail("昵称已使用"); } BeanUtils.copyProperties(gridMemberDTO, sysUserDO); int insert = 0; try { insert = userDao.updateById(sysUserDO); // 清除原本关联网格员信息 this.userDao.delLcMember(sysUserDO.getUserId()); // 关联市平台网格员 if (gridMemberDTO.getLcMemberId() != null) { // 关联现有的网格员信息 LcCompareCodeMemberDO compareCodeMemberDO = lcCompareMemberCodeMapper.selectOne(new QueryWrapper().lambda() .eq(LcCompareCodeMemberDO::getLcGridMemberId, gridMemberDTO.getLcMemberId())); if (compareCodeMemberDO != null) { compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString()); compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName()); compareCodeMemberDO.setUpdateAt(new Date()); lcCompareMemberCodeMapper.updateById(compareCodeMemberDO); } else { compareCodeMemberDO = new LcCompareCodeMemberDO(); compareCodeMemberDO.setId(Snowflake.getId()); compareCodeMemberDO.setLocalGridMemberId(sysUserDO.getUserId().toString()); compareCodeMemberDO.setGridMemberName(sysUserDO.getNickName()); compareCodeMemberDO.setLcGridMemberId(gridMemberDTO.getLcMemberId()); compareCodeMemberDO.setLcBindUserId(gridMemberDTO.getLcBindUserId()); compareCodeMemberDO.setLcGridMemberName(gridMemberDTO.getLcMemberName()); compareCodeMemberDO.setCreateAt(new Date()); lcCompareMemberCodeMapper.insert(compareCodeMemberDO); } } // 清除原网格员与楼栋关联关系 this.userDao.delGridMemberRelation(sysUserDO.getUserId()); // 新增网格员关联楼栋 if (gridMemberDTO.getBuildingIds() != null && !gridMemberDTO.getBuildingIds().isEmpty()) { List buildingRelationList = new ArrayList<>(); gridMemberDTO.getBuildingIds().forEach(buildingId -> { Map resultMap = this.userDao.getBuilding(buildingId); if (resultMap != null) { EventGridMemberBuildingRelationDO buildingRelationDO = new EventGridMemberBuildingRelationDO(); buildingRelationDO.setBuildingId(buildingId); buildingRelationDO.setGridMemberId(sysUserDO.getUserId()); buildingRelationDO.setVillageId(Long.parseLong(resultMap.get("village_id").toString())); buildingRelationDO.setCommunityId(Long.parseLong(resultMap.get("act_id").toString())); buildingRelationDO.setCreateAt(new Date()); buildingRelationList.add(buildingRelationDO); } }); if (!buildingRelationList.isEmpty()) { buildingRelationService.saveBatch(buildingRelationList); } } } 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("账户已经存在"); } } if (insert > 0) { return R.ok(); } return R.fail("修改失败"); } /** * 重置网格员密码 * * @param gridMemberDTO 请求参数 * @return 重置结果 */ @Override public R passResetUser(EventGridMemberPassResetDTO gridMemberDTO) { if (gridMemberDTO.getIds().isEmpty() || StringUtils.isEmpty(gridMemberDTO.getPassword())) { return R.fail("参数错误"); } String encode = new BCryptPasswordEncoder().encode(gridMemberDTO.getPassword()); gridMemberDTO.setPassword(encode); userDao.passResetUser(gridMemberDTO); return R.ok(); } /** * 批量删除网格员 * * @param Ids 网格员id集合 * @return 删除结果 */ @Override public R deleteMembers(List Ids) { if (Ids.isEmpty()) { return R.fail("参数有误"); } if (userDao.deleteBatchIds(Ids) > 0) { return R.ok(); } return R.fail("删除失败"); } @Override public R gridMemberEditStatus(EventGridMemberEditStatusDTO gridMemberEditDTO) { if (gridMemberEditDTO.getIds().isEmpty()) { return R.fail("参数有误"); } userDao.gridMemberEditStatus(gridMemberEditDTO); return R.ok(); } @Override public R noTips(Long userId) { SysUserDO userDO = this.userDao.selectById(userId); if (userDO != null) { userDO.setBigAgeTips(2); if (this.userDao.updateById(userDO) > 0) { return R.ok(); } } return R.fail(); } /** * 查询社区的收益说明 * * @param communityId 社区id * @return 收益说明 */ @Override public R listAgreements(Long communityId) { List sysUserAgreementDOS = sysUserAgreementDAO.selectList(new LambdaQueryWrapper() .eq(SysUserAgreementDO::getCommunityId, communityId).eq(SysUserAgreementDO::getType, 5)); if (sysUserAgreementDOS.isEmpty()) { SysUserAgreementDO agreementDO = new SysUserAgreementDO(); agreementDO.setCommunityId(communityId); agreementDO.setName("收益说明"); agreementDO.setType(5); agreementDO.setCreateAt(new Date()); agreementDO.setContent(Constants.PROFIT_EXPLAIN); sysUserAgreementDAO.insert(agreementDO); sysUserAgreementDOS.add(agreementDO); } List sysUserAgreementVOS = new ArrayList<>(); sysUserAgreementDOS.forEach(sysUserAgreementDO -> { SysUserAgreementVO sysUserAgreementVO = new SysUserAgreementVO(); BeanUtils.copyProperties(sysUserAgreementDO, sysUserAgreementVO); sysUserAgreementVOS.add(sysUserAgreementVO); }); return R.ok(sysUserAgreementVOS); } @Override public R getGridIsOk(Long userId) { Integer count = this.userDao.getGridIsOk(userId); if (count > 0) { return R.ok(count); } else { return R.fail(); } } @Override public R getGridsMemberList(Long communityId) { return R.ok(this.userDao.getGridsMemberList(communityId)); } /** * 根据用户id查询用户openid * * @param userId 用户id * @return openid */ @Override public R getUserOpenId(Long userId) { SysUserDO userDO = this.userDao.selectById(userId); if (userDO != null) { return R.ok(userDO.getOpenid()); } return R.fail(); } /** * 查询社区后台工作人员列表 * * @param communityId 社区id * @return 社区后台工作人员列表 */ @Override 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().lambda().eq(SysUserDO::getAccount, convenientMerchantDTO.getAccount()) .eq(SysUserDO::getPhone,convenientMerchantDTO.getMobilePhone()).eq(SysUserDO::getAppId,"wx118de8a734d269f0")); 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(5); sysUserDO.setAreaId(null); sysUserDO.setStatus(1); sysUserDO.setPhone(convenientMerchantDTO.getMobilePhone()); sysUserDO.setName(convenientMerchantDTO.getContacts()); sysUserDO.setPassword(encode); sysUserDO.setAppId("wx118de8a734d269f0"); 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() // .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().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.getAppId()); List communityUserX = new ArrayList<>(); List communityUserY = new ArrayList<>(); List communityActiveUserX = new ArrayList<>(); List communityActiveUserY = new ArrayList<>(); List communityActiveUserZ = new ArrayList<>(); List 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.getAppId()).getRecords(); } else { dataKanbanDTOS = userDao.selectCommunityUserOrder(page, dataKanBansDto.getAppId()).getRecords(); } if (!ObjectUtils.isEmpty(dataKanbanDTOS)) { dataKanbanDTOS.forEach(dataKanbanDTO -> { communityUserX.add(dataKanbanDTO.getName()); communityUserY.add(dataKanbanDTO.getNum()); }); } // 获取最近二十天数据 List activeDate = getTwentyDays(); String twentyDay = com.panzhihua.common.utlis.DateUtils.getTwentyDay(); //获取最近活跃人数 List actives = userDao.selectActive(twentyDay, dataKanBansDto.getAppId()); //获取最近注册人数 List dailyAdds = userDao.selectDailyAdd(twentyDay, dataKanBansDto.getAppId()); Map activeMap = actives.stream().collect(Collectors.toMap(UsersStatisticsDTO::getSpecificDate, UsersStatisticsDTO::getTotal)); Map dailyAddMap = dailyAdds.stream().collect(Collectors.toMap(UsersStatisticsDTO::getSpecificDate, UsersStatisticsDTO::getTotal)); for (Date date : activeDate) { String dateStr = DateUtil.format(date, "yyyy-MM-dd"); communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd")); communityActiveUserY.add(dailyAddMap.containsKey(dateStr) ? Integer.parseInt(dailyAddMap.get(dateStr)) : 0); communityActiveUserZ.add(activeMap.containsKey(dateStr) ? Integer.parseInt(activeMap.get(dateStr)) : 0); } indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX); indexDataKanbanVO.setCommunityAddUserY(communityActiveUserY); indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserZ); indexDataKanbanVO.setCommunityUserX(communityUserX); indexDataKanbanVO.setCommunityUserY(communityUserY); return R.ok(indexDataKanbanVO); } /** * 运营后台-用户数据统计汇总 * * @return 用户数据统计汇总 */ @Override public R communityStatistics(String areaCode) { //返回结果数据 IndexUserStatisticsVo userStatisticsVo = new IndexUserStatisticsVo(); //查询所有街道 List streetList = userDao.getUserStreetList(areaCode); streetList.forEach(street -> { List 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().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().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().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().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 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().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().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) { List sysUserDOs = userDao.selectByUserId(userId); for (SysUserDO sysUserDO : sysUserDOs) { if (sysUserDO != null) { sysUserDO.setIsPartymember(1); int updated = userDao.updateById(sysUserDO); if (updated > 0) { // 删除用户信息缓存 String userKey = UserConstants.LOGIN_USER_INFO + sysUserDO.getUserId(); stringRedisTemplate.delete(userKey); } } } return R.ok(); } @Override public R uuLogin(UuLoginVO uuLoginVO) { String appId = ""; String secret = ""; if ("wx118de8a734d269f0".equals(uuLoginVO.getAppid())) { appId = "10000"; secret = "e10adc3949ba59abbe56e057f20f883e"; } else if ("wx98d62711dfbd8425".equals(uuLoginVO.getAppid())) { appId = "10001"; secret = "d89f3a35931c386956c1a402a8e09941"; } else { return R.fail("appid未传"); } uuLoginVO.setAppid(appId); String timeStamp = PayUtil.create_timestamp(); uuLoginVO.setTimestamp(timeStamp); try { uuLoginVO.setSign(PayUtil.MD5(uuLoginVO.getAppid() + secret + timeStamp).toLowerCase(Locale.ROOT)); } catch (Exception e) { e.printStackTrace(); } Map headerMap = new HashMap<>(); headerMap.put("appid", appId); String str="https://uu-api.imashuo.com/member/wx/get-access?"+ "appid=" + appId + "×tamp=" + uuLoginVO.getTimestamp() + "&sign=" + uuLoginVO.getSign() + "&mobile=" + uuLoginVO.getMobile(); if(!StringUtils.isEmpty(uuLoginVO.getProvince())) { str=str+"&province=" + uuLoginVO.getProvince(); } if(!StringUtils.isEmpty(uuLoginVO.getCity())) { str=str+"&city=" + uuLoginVO.getCity(); } if(!StringUtils.isEmpty(uuLoginVO.getArea())) { str=str+"&area=" + uuLoginVO.getArea(); } if(!StringUtils.isEmpty(uuLoginVO.getCouponId())) { str=str+"&couponId=" + uuLoginVO.getCouponId(); } // String resultJson = HttpClientUtil.get("https://uu-api.imashuo.com/member/wx/get-acces.s?province=" + uuLoginVO.getProvince() + "&city=" + uuLoginVO.getCity() + "&area=" + uuLoginVO.getArea() + "&appid=" + appId + "×tamp=" + uuLoginVO.getTimestamp() + "&sign=" + uuLoginVO.getSign() + "&mobile=" + uuLoginVO.getMobile() + "&couponId=" + uuLoginVO.getCouponId(), headerMap, null); String resultJson = null; try { resultJson = HttpClientUtil.getUU(str,headerMap,null); } catch (Exception e) { e.printStackTrace(); } JSONObject result = JSON.parseObject(resultJson); if (result.get("status").equals(1)) { return R.ok(result.get("data")); } return R.fail(resultJson,"信息错误"); } @Override public R checkExport(String account, String password, String oldPassword) { if (new BCryptPasswordEncoder().matches(password, oldPassword)) { return R.ok(); } return R.fail(); } @Override public R newIndexData(Integer type, Long streetId, Long areaCode, String appId) { IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId); IndexDataAnalysisVO vo = new IndexDataAnalysisVO(); if (ObjectUtils.isEmpty(type)) { //不传默认为所有区县 type = ALLCOUNTY; } if (type.equals(ALLCOUNTY) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)) { BeanUtils.copyProperties(indexDataKanbanVO, vo); } else { IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId, areaCode, null); BeanUtils.copyProperties(indexDataVO, vo); } // List userProportionsTotal = userDao.userAnalysis(type, null, streetId,areaCode); // Integer streetUser = userDao.streetUserCount(streetId,areaCode); // for (UserProportion userProportion : userProportionsTotal) { // if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ // if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ // //计算占比 // //userProportion.setAreaCode(null); // if (type.equals(BYSTREET)){ // userProportion.setRate(getRate(streetUser,userProportion.getUser())); // } // userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); // } // } // } // List userProportionsMonth = userDao.userAnalysis(type, DateUtil.beginOfMonth(new Date()).toString(), streetId,areaCode); // for (UserProportion userProportion : userProportionsMonth) { // if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ // if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ // //计算占比 // //userProportion.setAreaCode(null); // if (type.equals(BYSTREET)){ // userProportion.setRate(getRate(streetUser,userProportion.getUser())); // } // userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); // } // } // } // vo.setUserProportionTotal(userProportionsTotal); // vo.setUserProportionMonth(userProportionsMonth); // List realUsersTotal = userDao.realUserCount(type, null, streetId,areaCode); // List realUsersMonth = userDao.realUserCount(type, DateUtil.beginOfMonth(new Date()).toString(), streetId,areaCode); // vo.setRealUsersTotal(realUsersTotal); // vo.setRealUsersMonth(realUsersMonth); // vo.setRealUser(getStreetRealUser(realUsersTotal)); // vo.setRealUserRate(getRate(vo.getAllUser(),vo.getRealUser())); // List twentyDays = getTwentyDays(); // List monthTwentyDays = getMonthTwentyDays(); // vo.setUserActivityXAll(getMAndD(getTwentyDays())); // vo.setUserActivityXMonth(getMAndD(getMonthTwentyDays())); // List addUserYAll=new ArrayList<>(); // List addUserYMonth=new ArrayList<>(); // List activeUserYAll=new ArrayList<>(); // List activeUserYMonth=new ArrayList<>(); // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); // //获取用户行为Y轴 // for (Date date : twentyDays) { // //查询当天的新增和日活 // Map map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode); // addUserYAll.add(map.get("addUser").toString()); // activeUserYAll.add(map.get("activeUser").toString()); // } // for (Date date : monthTwentyDays) { // Map map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode); // addUserYMonth.add(map.get("addUser").toString()); // activeUserYMonth.add(map.get("activeUser").toString()); // } // vo.setAddUserYAll(addUserYAll); // vo.setAddUserYWeek(addUserYMonth); // vo.setActiveUserYAll(activeUserYAll); // vo.setActiveUserYMonth(activeUserYMonth); // if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){ // //获取其他用户 // vo.setOtherUser(indexDataKanbanVO.getAllUser()-countUser(vo.getUserProportionTotal())); // vo.setOtherUserRate(getRate(indexDataKanbanVO.getAllUser(),vo.getOtherUser())); // } return R.ok(vo); } @Override public R userRate(Integer type, Long streetId, Long areaCode, Integer range, String appId) { IndexDataAnalysisVO analysisVO = new IndexDataAnalysisVO(); if (type.equals(BYSTREET) || type.equals(BYAREA)) { //街道,区县筛选 IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId, areaCode, null); BeanUtils.copyProperties(indexDataVO, analysisVO); } else { //总量数据 IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId); BeanUtils.copyProperties(indexDataKanbanVO, analysisVO); } String date = ""; if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { if (range.equals(1)) { DateTime dateTime = DateUtil.beginOfMonth(new Date()); date = DateUtil.parse(dateTime.toString(), "yyyy-MM-dd HH:mm:ss").toString(); } } List userProportions = userDao.userAnalysis(type, date, streetId, areaCode, appId); List userRateAnalysisVOList = new ArrayList<>(); Boolean monthRange = false; if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { if (range.equals(1)) { monthRange = true; } } if (userProportions.size() > 0) { for (UserProportion userProportion : userProportions) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)) { UserRateAnalysisVO vo = new UserRateAnalysisVO(); if (monthRange) { if (userProportion.getCommunityId().equals("11")) { continue; } //获取本月的用户总数作为计算占比的用户总数 //IndexDataKanbanVO data = userDao.dataKanBanStreet(streetId, areaCode, date); Integer monthUsers = userDao.getMonthUsers(streetId, areaCode, date, appId); vo.setRate(getRate(monthUsers, userProportion.getUser())); } else { vo.setRate(getRate(analysisVO.getAllUser(), userProportion.getUser())); } vo.setName(typeToName(type, userProportion)); vo.setCount(userProportion.getUser()); userRateAnalysisVOList.add(vo); } } } if (ObjectUtils.isEmpty(range)) { //查看累计数据时才计算其他用户的比例 || type.equals(BYSTREET) || type.equals(BYAREA)) final Boolean flag = (type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY)); if (flag) { UserRateAnalysisVO vo = new UserRateAnalysisVO(); vo.setName(OTHERUSER); vo.setCount(analysisVO.getAllUser() - countUser(userRateAnalysisVOList)); vo.setRate(getRate(analysisVO.getAllUser(), vo.getCount())); userRateAnalysisVOList.add(vo); } } //计算其他用户占比 UserRateVO userRate = new UserRateVO(); userRate.setUserList(userRateAnalysisVOList); return R.ok(userRate); } @Override public R realUser(Integer type, Long streetId, Long areaCode, Integer range, String appId) { IndexDataAnalysisVO analysisVO = new IndexDataAnalysisVO(); if (type.equals(BYSTREET) || type.equals(BYAREA)) { //街道,区县筛选 IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId, areaCode, null); BeanUtils.copyProperties(indexDataVO, analysisVO); } else { //总量数据 IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId); BeanUtils.copyProperties(indexDataKanbanVO, analysisVO); } String date = ""; if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { if (range.equals(1)) { DateTime dateTime = DateUtil.beginOfMonth(new Date()); date = DateUtil.parse(dateTime.toString(), "yyyy-MM-dd HH:mm:ss").toString(); } } RealUserVO realUserVO = new RealUserVO(); List realUsers = userDao.realUserCount(type, date, streetId, areaCode, appId); List realUserList = new ArrayList<>(); realUserVO.setRealUserCount(getStreetRealUser(realUsers)); Integer rate = getRate(analysisVO.getAllUser(), realUserVO.getRealUserCount()); if (null == rate) { realUserVO.setRealUserRate(0.0); } else { realUserVO.setRealUserRate(rate.doubleValue()); } for (RealUser realUser : realUsers) { if (!(type.equals(ALLCOUNTY))) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)) { if (realUser.getCommunityId().equals("11")) { continue; } } } RealUserAnalysisVO vo = new RealUserAnalysisVO(); vo.setCount(realUser.getCount()); vo.setName(typeToNameRealUser(type, realUser)); realUserList.add(vo); } realUserVO.setRealUserList(realUserList); //使用索引迭代避免从列表移除数据后出现空指针异常 if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY)) { for (int i = 0; i < realUserList.size(); i++) { RealUserAnalysisVO realUserAnalysisVO = realUserList.get(i); if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUserAnalysisVO)) { if (StringUtils.isNotEmpty(realUserAnalysisVO.getName())) { if (realUserAnalysisVO.getName().equals("请选择社区")) { realUserList.remove(i); } } } } } else { //只保留十条 if (realUserList.size() >= 11) { realUserList.remove(10); } } return R.ok(realUserVO); } // @Override // public R userActivity(Integer type, Long streetId, Long areaCode, Integer range, String appId) { // UserActivityAnalysisVO vo = new UserActivityAnalysisVO(); // List activeX = getTwentyDays(); // List activeY = new ArrayList<>(); // List adY = new ArrayList<>(); // if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { // if (range.equals(1)) { // //本月数据 // activeX = getMonthTwentyDays(); // } // } // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // for (Date date : activeX) { // Map map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId, areaCode, appId); // adY.add(map.get("addUser").toString()); // activeY.add(map.get("activeUser").toString()); // } // vo.setUserX(getMAndD(activeX)); // vo.setAddUserY(adY); // vo.setActiveUserY(activeY); // return R.ok(vo); // } @Override public R userActivity(Integer type, Long streetId, Long areaCode, Integer range, String appId) { UserActivityAnalysisVO vo = new UserActivityAnalysisVO(); String activeX = com.panzhihua.common.utlis.DateUtils.getTwentyDay(); List activeDate = getTwentyDays(); List activeY = new ArrayList<>(); List adY = new ArrayList<>(); if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { if (range.equals(1)) { //本月数据 activeX = com.panzhihua.common.utlis.DateUtils.getMonthTwentyDay(); activeDate = getMonthTwentyDays(); } } //获取最近活跃人数 List actives = userDao.getActive(activeX, streetId, areaCode, appId); //获取最近注册人数 List dailyAdds = userDao.getDailyAdd(activeX, streetId, areaCode, appId); Map activeMap = actives.stream().collect(Collectors.toMap(UsersStatisticsDTO::getSpecificDate, UsersStatisticsDTO::getTotal)); Map dailyAddMap = dailyAdds.stream().collect(Collectors.toMap(UsersStatisticsDTO::getSpecificDate, UsersStatisticsDTO::getTotal)); for (Date date : activeDate) { String dateStr = DateUtil.format(date, "yyyy-MM-dd"); activeY.add(activeMap.containsKey(dateStr) ? activeMap.get(dateStr) : "0"); adY.add(dailyAddMap.containsKey(dateStr) ? dailyAddMap.get(dateStr) : "0"); } vo.setUserX(getMAndD(activeDate)); vo.setAddUserY(adY); vo.setActiveUserY(activeY); return R.ok(vo); } @Override public R uuPush(String washPhone, String phone, String washName, Integer orderStatus) { if (StringUtils.isNotEmpty(phone)) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getAppId, "wx118de8a734d269f0").orderByDesc(SysUserDO::getCreateAt).last("limit 1")); if (sysUserDO != null && StringUtils.isNotEmpty(sysUserDO.getOpenid())) { String status = ""; String accessToken = ""; WxXCXTempSend util = new WxXCXTempSend(); try { accessToken = util.getAccessToken("wx118de8a734d269f0"); } catch (Exception e) { e.printStackTrace(); } switch (orderStatus) { case 3: status = "已分配车美"; WxUtil.sendUuWash3(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "sU18zbyzxFldHAdOREaQCR5uq_uMvCKTmGtklO1xw-w"); break; case 4: status = "开始服务"; WxUtil.sendUuWash4(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw"); break; case 6: status = "订单完成"; WxUtil.sendUuWash6(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "k1aV97H3pDNNcNcDTeZBD9jQemNDADnRE801HhTXweI"); break; case 9: status = "订单取消"; WxUtil.sendUuWash(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "9_2FhQPDxZoUqmAuIZ1L1zjjYXokdNvu7A0gzKfvruI"); break; } } } return R.ok(); } @Override public R wsPush(String washPhone, String phone, String washName, Integer orderStatus) { if (StringUtils.isNotEmpty(phone)) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getAppId, "wx98d62711dfbd8425").orderByDesc(SysUserDO::getCreateAt).last("limit 1")); if (sysUserDO != null && StringUtils.isNotEmpty(sysUserDO.getOpenid())) { String status = ""; String accessToken = ""; WxXCXTempSend util = new WxXCXTempSend(); try { accessToken = util.getWsAccessToken(); } catch (Exception e) { e.printStackTrace(); } switch (orderStatus) { case 3: status = "已分配车美"; WxUtil.sendWsWash3(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "sNj6m-JBvW6rOokKGDX9X3-XH1AD0GY5_X0jA9JSLwc"); break; case 4: status = "开始服务"; WxUtil.sendWsWash4(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw"); break; case 6: status = "订单完成"; WxUtil.sendWsWash6(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "iPS8yrsGDqy76hiP8bIbxkosveoX1xTFhdusSiGp-XM"); break; case 9: status = "订单取消"; WxUtil.sendWsWash(sysUserDO.getOpenid(), accessToken, status, washName, washPhone, phone, "z_ysGXz9JWBc2rXuYZzVCXKJTyLf0w0WerrohuNoEng"); break; } } } return R.ok(); } @Override public R getAllCommunityList() { List areaList = areaCodeList(); List areaVOList = new ArrayList<>(); for (Integer code : areaList) { AreaVOStr areaVO = new AreaVOStr(); areaVO.setId(code+""); areaVO.setName(areaCodeToName(code.longValue())); List streetVOS = userDao.selectStreetByAreaCodeStr(code); Iterator iterator = streetVOS.listIterator(); while (iterator.hasNext()) { StreetVOStr vo = iterator.next(); List communityVOS = userDao.selectCommunityByStreetId(Long.parseLong(vo.getId()), 3); vo.setChildList(communityVOS); } areaVO.setChildList(streetVOS); areaVOList.add(areaVO); } return R.ok(areaVOList); } @Override public R getCommunityList(String name, Long id) { //区级账号名 String[] streetList = {"bingcaogangjiedao", "donghuajiedao", "nongnongpingjiedao", "dadukoujiedaojiedao", "guazipingjiedao", "yinjiangzhen", "qingxiangpingjiedao", "yuquanjiedao", "hemenkoujiedao", "dabaodingjiedao", "taojiadujiedao", "gelipinzhen", "dahezhonglujiedao", "jingjiangzhen", "renhezhen", "pingdizhen", "datianzhen", "tongdezhen", "futianzhen", "qianjinzhen", "panlianzhen", "binguzhen", "baimazhen", "salianzhen", "puweizhen", "deshizhen", "wanqiuyizuxiang", "caochangzhen", "xinshanlisuzuxiang", "tongzilinzhen", "yongxingzhen", "yumenzhen", "honggezhen", "hongguoyizuxiang"}; // List ids = userDao.selectIdsByAccount(streetList); //村或社区账号 Integer type = isVilliage(name); //是否为市级账号 Boolean cityAccount = isCityAccount(name); if (cityAccount) { List areaList = areaCodeList(); List areaVOList = new ArrayList<>(); for (Integer code : areaList) { AreaVOS areaVO = new AreaVOS(); areaVO.setId(code); areaVO.setName(areaCodeToName(code.longValue())); List streetVOS = userDao.selectStreetByAreaCode(code); Iterator iterator = streetVOS.listIterator(); while (iterator.hasNext()) { StreetVOS vo = iterator.next(); List communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type); vo.setChildList(communityVOS); if (type != 3) { if (communityVOS == null || communityVOS.size() == 0) { iterator.remove(); } } } areaVO.setChildList(streetVOS); areaVOList.add(areaVO); } return R.ok(areaVOList); } else { Boolean areaAccount = isAreaAccount(name); if (areaAccount) { Integer areaCode = accountToCode(name); List areaList = new ArrayList<>(); areaList.add(areaCode); List areaVOList = new ArrayList<>(); for (Integer code : areaList) { AreaVOS areaVO = new AreaVOS(); areaVO.setId(code); areaVO.setName(areaCodeToName(code.longValue())); List streetVOS = userDao.selectStreetByAreaCode(code); Iterator iterator = streetVOS.listIterator(); while (iterator.hasNext()) { StreetVOS vo = iterator.next(); List communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type); vo.setChildList(communityVOS); } areaVO.setChildList(streetVOS); areaVOList.add(areaVO); } return R.ok(areaVOList); } else { //非区县账号,只看街道下属社区 if (ArrayUtil.contains(streetList, name)) { List list = new ArrayList<>(); //只看当前街道下属社区 StreetVOS streetVOS = userDao.selectStreetByName(name); List communityVOS = userDao.selectCommunityByStreetName(name); if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(streetVOS)) { streetVOS.setChildList(communityVOS); } list.add(streetVOS); return R.ok(list); } } } return R.ok(null); } @Override public R resetPassword(Integer type, String account, String appId) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getAccount, account).eq(SysUserDO::getType, type).eq(SysUserDO::getAppId, appId)); if (sysUserDO != null) { sysUserDO.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR."); userDao.updateById(sysUserDO); } return R.ok(); } @Override public R tfLogin(UuLoginVO uuLoginVO) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getPhone, uuLoginVO.getMobile()).eq(SysUserDO::getType, 16)); if (sysUserDO == null) { sysUserDO = new SysUserDO(); sysUserDO.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR."); sysUserDO.setType(16); sysUserDO.setStatus(1); sysUserDO.setPhone(uuLoginVO.getMobile()); sysUserDO.setAccount(uuLoginVO.getMobile()); sysUserDO.setAppId("wx0cef797390444b75"); userDao.insert(sysUserDO); } return R.ok(); } @Override public R accept(Long userId) { SysUserDO sysUserDO = new SysUserDO(); sysUserDO.setUserId(userId); sysUserDO.setIsAccept(1); userDao.updateById(sysUserDO); return R.ok(); } @Override @Transactional public R addComPbCheckUser(ComPbCheckUserDTO comPbCheckUserDTO) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getAccount, comPbCheckUserDTO.getAccount()).eq(SysUserDO::getType, 3).eq(SysUserDO::getAppId, "wx118de8a734d269f0")); if (sysUserDO != null) { return R.fail("账户名已存在"); } SysUserDO sysUserDO1 = new SysUserDO(); sysUserDO1.setUserId(Snowflake.getId()); sysUserDO1.setAccount(comPbCheckUserDTO.getAccount()); sysUserDO1.setPassword(new BCryptPasswordEncoder().encode(comPbCheckUserDTO.getPassword())); sysUserDO1.setType(3); sysUserDO1.setAppId("wx118de8a734d269f0"); sysUserDO1.setCommunityId(0L); sysUserDO1.setBindingCheckUnitId(comPbCheckUserDTO.getCheckUnitId()); int restlt = userDao.insert(sysUserDO1); if (restlt > 0) { SysUserRoleDO sysUserRoleDO = new SysUserRoleDO(); sysUserRoleDO.setRoleId(123321L); sysUserRoleDO.setUserId(sysUserDO1.getUserId()); sysUserRoleDAO.insert(sysUserRoleDO); } return R.ok(); } /** * 三说会堂新增业务中心或专家账号 * */ @Override public R addExpertOrIndustryCenter(AdministratorsUserVO administratorsUserVO) { SysUserDO sysUserDO=new SysUserDO(); //是否存在相同账号 SysUserDO userDO = userDao.selectOne(new QueryWrapper().eq("account", administratorsUserVO.getAccount())); if (isNull(userDO)){ sysUserDO.setAppId("wx0cef797390444b75"); sysUserDO.setCreateAt(new Date()); sysUserDO.setUserId(administratorsUserVO.getUserId()); sysUserDO.setAccount(administratorsUserVO.getAccount()); sysUserDO.setPassword(new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword())); sysUserDO.setName(administratorsUserVO.getName()); if (nonNull(administratorsUserVO.getImageUrl())){ sysUserDO.setImageUrl(administratorsUserVO.getImageUrl()); } if (nonNull(administratorsUserVO.getType())){ sysUserDO.setType(administratorsUserVO.getType()); } if (nonNull(administratorsUserVO.getPhone())){ sysUserDO.setPhone(administratorsUserVO.getPhone()); } userDao.insert(sysUserDO); //分配权限 SysUserRoleDO sysUserRole=new SysUserRoleDO(); sysUserRole.setUserId(sysUserDO.getUserId()); if (sysUserDO.getType().equals(11)){ sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_EXPERT_ROLE)); //将专家小程序账号设置为专家权限 SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getType, 1).eq(SysUserDO::getPhone, administratorsUserVO.getPhone())); if (nonNull(sysUserDO1)){ sysUserDO1.setType(13); userDao.updateById(sysUserDO1); log.info("添加专家小程序账号权限"); } }else{ sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_INDUSTRY_CENTER_ROLE)); } //配置权限 sysUserRoleDAO.insert(sysUserRole); return R.ok(); } return R.fail("账户名已存在"); } /** * 三说会堂后台重置密码 * */ @Override public R resetPassExpertOrIndustryCenter(String account,String password) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().eq("account", account)); if (nonNull(sysUserDO)){ sysUserDO.setPassword(new BCryptPasswordEncoder().encode(password)); userDao.updateById(sysUserDO); return R.ok(); } return R.fail("修改失败"); } /** * 移除专家权限 * */ @Override public R removeExpertRole(String phone) { if (nonNull(phone)){ //是否有权限为专家的账号 SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getType, 11).eq(SysUserDO::getPhone, phone)); if (nonNull(sysUserDO)){ //删除后台账号 sysUserDO.setStatus(2); userDao.updateById(sysUserDO); log.info("禁用专家后台账号成功"); } //小程序账号移除专家权限 SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper().lambda().eq(SysUserDO::getType, 13).eq(SysUserDO::getPhone, phone)); if (nonNull(sysUserDO1)){ sysUserDO1.setType(1); userDao.updateById(sysUserDO1); log.info("移除专家权限成功"); } } return R.ok(); } @Override public R feedBackReply(SysUserFeedbackVO sysUserFeedbackVO) { if (isNull(sysUserFeedbackVO.getReply())){ return R.fail("回复内容不能为空"); } SysUserFeedbackDO sysUserFeedbackDO1 = sysUserFeedbackDAO.selectById(sysUserFeedbackVO.getId()); sysUserFeedbackDO1.setReply(sysUserFeedbackVO.getReply()); return R.ok(sysUserFeedbackDAO.reply(sysUserFeedbackDO1)); } @Override public R myFeedBack(Long id,Integer type,Long propertyId) { List sysUserFeedbackDOS = sysUserFeedbackDAO.selectList(new QueryWrapper().lambda().eq(SysUserFeedbackDO::getType, type).eq(SysUserFeedbackDO::getUserId, id).eq(SysUserFeedbackDO::getPropertyId,propertyId )); return R.ok(sysUserFeedbackDOS); } @Override public R propertyCheck(String phone) { Long propertyAccount = userDao.isPropertyAccount(phone); log.info("==============物业公司id"+propertyAccount); if (isNull(propertyAccount)){ return R.fail(); } return R.ok(propertyAccount); } @Override public R getAreaAndStreet() { List areaCodeList = areaCodeList(); List areaVOList = new ArrayList<>(); for (Integer code : areaCodeList) { AreaVO vo = new AreaVO(); vo.setId(code); vo.setName(areaCodeToName(code.longValue())); vo.setStreetList(userDao.selectStreetsByAreaCode(code)); areaVOList.add(vo); } return R.ok(areaVOList); } /** * 获取最近20天数据 * * @return */ private List getTwentyDays() { List dates = new ArrayList<>(); Date date = new Date(); for (int i = 19; i >= 0; i--) { Date date1 = DateUtils.addDays(date, -i); dates.add(date1); } return dates; } /** * 获取最近本月20天数据 * * @return */ private List getMonthTwentyDays() { List dates = new ArrayList<>(); Date date = new Date(); Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY); if (offset >= 20) { for (int i = 19; i >= 0; i--) { Date date1 = DateUtils.addDays(date, -i); dates.add(date1); } } else { //距离月初不足20天 for (int i = offset.intValue(); i >= 0; i--) { Date date1 = DateUtils.addDays(date, -i); dates.add(date1); } } return dates; } /** * 计算占比 */ private Integer getRate(Integer total, Integer count) { if (0 != total && null != total) { if (0 != count && null != count) { BigDecimal div = NumberUtil.div(count.toString(), total.toString(), 2); BigDecimal mul = NumberUtil.mul(div, 100); return mul.intValue(); } } return null; } /** * 计算街道实名用户总数 */ private Integer getStreetRealUser(List list) { Integer count = 0; if (list.size() > 0) { for (RealUser realUser : list) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser.getCount())) { count += realUser.getCount(); } } } } return count; } /** * 计算当前统计范围内的所有用户数 */ public Integer countUser(List list) { Integer count = 0; if (list.size() > 0) { for (UserRateAnalysisVO proportion : list) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion)) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion.getCount())) { count += proportion.getCount(); } } } } return count; } /** * 截取月,日 */ public List getMAndD(List list) { List dateList = new ArrayList<>(); if (list.size() > 0) { for (Date date : list) { dateList.add(DateFormatUtils.format(date, "MM-dd")); } } return dateList; } /** * areaCode转区县名 */ private String areaCodeToName(Long areaCode) { String code = areaCode.toString(); String name = "不正确的areaCode"; switch (code) { case "510423": name = "西区"; break; case "510402": name = "东区"; break; case "510411": name = "仁和区"; break; case "510421": name = "米易县"; break; case "510422": name = "盐边县"; break; case "510424": name = "钒钛新区"; break; } return name; } /** * 根据type选择要设置的名称 */ private String typeToName(Integer type, UserProportion proportion) { log.info("当前code" + proportion.getAreaCode()); String name = ""; if (type.equals(ALLCOUNTY)) { name = areaCodeToName(proportion.getAreaCode()); } else if (type.equals(ALLSTREET) || type.equals(BYAREA)) { name = proportion.getStreetName(); } else if (type.equals(ALLCOMMUNITY) || type.equals(BYSTREET)) { name = proportion.getCommunityName(); } return name; } /** * 根据type选择要设置的名称 */ private String typeToNameRealUser(Integer type, RealUser proportion) { String name = ""; if (type.equals(ALLCOUNTY)) { name = areaCodeToName(Long.parseLong(proportion.getAreaCode())); } else if (type.equals(ALLSTREET) || type.equals(BYAREA)) { name = proportion.getStreetName(); } else if (type.equals(ALLCOMMUNITY) || type.equals(BYSTREET)) { name = proportion.getCommunityName(); } return name; } /** * 生成区县code列表 */ private List areaCodeList() { List list = new ArrayList<>(); list.add(510402); list.add(510423); list.add(510411); list.add(510421); list.add(510422); list.add(510424); return list; } /** * 根据日志保存修改之前的信息 */ private String saveBeforeUpdateData(SysOperLogVO operlog) throws JsonProcessingException { if (operlog.getTitle().equals(UPDATEACIDCHECKRECORD)) { // ComActAcidCheckRecordVO comActAcidCheckRecordVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidCheckRecordVO.class); ComActAcidCheckRecordVO comActAcidCheckRecordVO1 = userDao.selectComActAcidCheckRecordById(comActAcidCheckRecordVO.getId()); return JSONObject.toJSONString(comActAcidCheckRecordVO1); } else if (operlog.getTitle().equals(UPDATEACIDRECORD)) { ComActAcidRecordVO comActAcidRecordVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidRecordVO.class); return JSONObject.toJSONString(userDao.selectComActAcidRecord(comActAcidRecordVO.getId())); } else if (operlog.getTitle().equals(UPDATEACIDMEMBER)) { ComActAcidMemberVO comActAcidMemberVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidMemberVO.class); return JSONObject.toJSONString(userDao.selectComActAcidMember(comActAcidMemberVO.getId())); } return null; } /** * 是否需要区分村落/社区 */ private Integer isVilliage(String name) { if ("fangyipingtai".equals(name)) { return 3; } else if ("pandashujuzhongxin".equals(name)) { return 1; } else if ("pannongyenongcunju".equals(name)) { return 2; } return 3; } /** * 是否为市级账号 */ private Boolean isCityAccount(String name) { if (("fangyipingtai").equals(name) || ("pandashujuzhongxin").equals(name) || ("pannongyenongcunju").equals(name)) { return true; } return false; } /** * 是否为区级账号 */ private Boolean isAreaAccount(String name) { Boolean flag = false; switch (name) { case "dongqu": case "xiqu": case "renhequ": case "miyixian": case "yanbianxian": flag = true; break; } return flag; } /** * account转区areaCode */ private Integer accountToCode(String code) { String name = "100000"; switch (code) { case "xiqu": name = "510423"; break; case "dongqu": name = "510402"; break; case "renhequ": name = "510411"; break; case "miyixian": name = "510421"; break; case "yanbianxian": name = "510422"; break; case "fantaixinqu": name = "510424"; break; } return Integer.parseInt(name); } }