package com.panzhihua.service_user.service.impl;
|
|
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.UserConstants;
|
import com.panzhihua.common.exceptions.ServiceException;
|
import com.panzhihua.common.model.dtos.PageDTO;
|
import com.panzhihua.common.model.dtos.community.ExportUserDTO;
|
import com.panzhihua.common.model.dtos.community.NoticeReadDTO;
|
import com.panzhihua.common.model.dtos.user.EexcelUserDTO;
|
import com.panzhihua.common.model.dtos.user.PageFeedBackDTO;
|
import com.panzhihua.common.model.dtos.user.PageUserAppletsBackstageDTO;
|
import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO;
|
import com.panzhihua.common.model.vos.*;
|
import com.panzhihua.common.model.vos.community.ComActVO;
|
import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
|
import com.panzhihua.common.model.vos.partybuilding.ActivityManagerVO;
|
import com.panzhihua.common.model.vos.user.*;
|
import com.panzhihua.common.utlis.IdCard;
|
import com.panzhihua.common.utlis.RealNameUtil;
|
import com.panzhihua.common.utlis.SensitiveUtil;
|
import com.panzhihua.service_user.dao.*;
|
import com.panzhihua.service_user.model.dos.*;
|
import com.panzhihua.service_user.model.dtos.DataKanbanDTO;
|
import com.panzhihua.service_user.service.UserService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.time.DateFormatUtils;
|
import org.apache.commons.lang.time.DateUtils;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.ValueOperations;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.StringUtils;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @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 {
|
@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;
|
|
|
/**
|
* 小程序微信用户信息更新
|
*
|
* @param openid 小程序唯一ID
|
* @param sessionKey 会话密钥
|
* @param unionid 用户在开放平台的唯一标识符
|
* @return token
|
*/
|
@Override
|
public R updateInsertUser(String openid, String sessionKey, String unionid) {
|
SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().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);
|
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);
|
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 = new SysUserDO();
|
sysUserDO.setPhone(purePhoneNumber);
|
sysUserDO.setUserId(userId);
|
userDao.updateMemberRole(purePhoneNumber, purePhoneNumber);
|
userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber);
|
int i = userDao.updateById(sysUserDO);
|
if (i > 0) {
|
return R.ok();
|
} else {
|
return R.fail("维护微信手机号失败");
|
}
|
}
|
|
/**
|
* 认证中心获取平台用户信息
|
*
|
* @param name 登录账户
|
* @param type 用户类型 用户类型 1 小程序 2 运营平台 3 社区平台
|
* @return 用户基本信息、角色
|
*/
|
@Override
|
public R<LoginUserInfoVO> getUserInfo(String name, int type) {
|
SysUserDO sysUserDO = null;
|
if (1 == type) {
|
sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name));
|
} else {
|
LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type);
|
wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or().eq(SysUserDO::getPhone, name));
|
sysUserDO = userDao.selectOne(wrapper);
|
}
|
boolean empty = ObjectUtils.isEmpty(sysUserDO);
|
if (empty) {
|
return R.fail();
|
}
|
LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
|
loginUserInfoVO.setUserId(sysUserDO.getUserId());
|
loginUserInfoVO.setName(sysUserDO.getName());
|
loginUserInfoVO.setPassword(sysUserDO.getPassword());
|
loginUserInfoVO.setStatus(sysUserDO.getStatus());
|
loginUserInfoVO.setAccount(name);
|
loginUserInfoVO.setType(sysUserDO.getType());
|
List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId());
|
Set<String> set = new HashSet<>();
|
if (!ObjectUtils.isEmpty(roleDOList)) {
|
roleDOList.forEach(sysRoleDO -> {
|
set.add(sysRoleDO.getRoleKey());
|
});
|
}
|
return R.ok(loginUserInfoVO);
|
}
|
|
/**
|
* 三端获取用户信息
|
*
|
* @param userId 用户ID
|
* @return 用户基本信息、角色
|
*/
|
@Override
|
public R<LoginUserInfoVO> 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);
|
List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId());
|
Set<String> set = new HashSet<>();
|
if (!ObjectUtils.isEmpty(roleDOList)) {
|
roleDOList.forEach(sysRoleDO -> {
|
set.add(sysRoleDO.getRoleKey());
|
});
|
loginUserInfoVO.setRoles(set);
|
}
|
loginUserInfoVO.setIsmemberrole(2);
|
// 志愿者状态
|
String phone = sysUserDO.getPhone();
|
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 countTeam = userDao.selectCountTeam(phone);
|
Integer selectCountMemberRole = userDao.selectCountMemberRole(phone);
|
Integer isSysUser = userDao.selectCountSysUser(phone);
|
if (countTeam != null && countTeam > 0) {
|
loginUserInfoVO.setIsmemberrole(1);
|
} else if (selectCountMemberRole != null && selectCountMemberRole > 0) {
|
loginUserInfoVO.setIsmemberrole(1);
|
} else if (isSysUser != null && isSysUser > 0) {
|
loginUserInfoVO.setIsmemberrole(1);
|
}
|
}
|
return R.ok(loginUserInfoVO);
|
}
|
|
/**
|
* 修改用户登录密码
|
*
|
* @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<SysUserDO> queryWrapper = new LambdaQueryWrapper<>();
|
List<ActivityManagerVO> activityManagerVOS = new ArrayList<>();
|
queryWrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getCommunityId, communityId).eq(SysUserDO::getStatus, 1).eq(SysUserDO::getType, 3);
|
if (!ObjectUtils.isEmpty(param)) {
|
queryWrapper = queryWrapper.eq(SysUserDO::getName, param);
|
}
|
List<SysUserDO> sysUserDOS = userDao.selectList(queryWrapper);
|
if (!ObjectUtils.isEmpty(sysUserDOS)) {
|
sysUserDOS.forEach(sysUserDO -> {
|
ActivityManagerVO activityManagerVO = new ActivityManagerVO();
|
activityManagerVO.setManagerId(sysUserDO.getUserId());
|
activityManagerVO.setName(sysUserDO.getName());
|
activityManagerVOS.add(activityManagerVO);
|
});
|
}
|
return R.ok(activityManagerVOS);
|
}
|
|
/**
|
* 分页查询人脸识别
|
*
|
* @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<LoginUserInfoVO> 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 loginUserInfoVO 查询参数
|
* @return 分页数据
|
*/
|
@Override
|
public R pageUser(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<LoginUserInfoVO> iPage = userDao.pageUser(page, loginUserInfoVO);
|
iPage.getRecords().forEach(record -> {
|
record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone()));
|
record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard()));
|
});
|
return R.ok(iPage);
|
}
|
|
/**
|
* 查询所有人员标签
|
*
|
* @return 标签集合
|
*/
|
@Override
|
public R listTag() {
|
List<String> list = new ArrayList<>();
|
List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new LambdaQueryWrapper<>());
|
if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
|
list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
|
}
|
return R.ok(list);
|
}
|
|
/**
|
* 人员详情
|
*
|
* @param userId 用户id
|
* @return 人员详情
|
*/
|
@Override
|
public R detailUser(Long userId) {
|
LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO();
|
if (userId < 100000000l) {
|
SysUserDO sysUserDO = userDao.selectById(userId);
|
if (ObjectUtils.isEmpty(sysUserDO)) {
|
return R.fail("人员不存在");
|
}
|
BeanUtils.copyProperties(sysUserDO, loginUserInfoVO);
|
List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO.selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
|
if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
|
List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
|
comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
|
ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
|
BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO);
|
comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
|
});
|
loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
|
}
|
|
} else {
|
//导入社区人员
|
SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(userId - 100000000);
|
if (ObjectUtils.isEmpty(sysUserInputDO)) {
|
return R.fail("人员不存在");
|
}
|
String name1 = sysUserInputDO.getName();
|
BeanUtils.copyProperties(sysUserInputDO, loginUserInfoVO);
|
String doorNumber = sysUserInputDO.getDoorNumber();
|
Long areaId = sysUserInputDO.getAreaId();
|
List<SysUserInputDO> sysUserInputDOS = sysUserInputDAO.selectList(new QueryWrapper<SysUserInputDO>().lambda().eq(SysUserInputDO::getDoorNumber, doorNumber).eq(SysUserInputDO::getAreaId, areaId));
|
if (!ObjectUtils.isEmpty(sysUserInputDOS)) {
|
List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
|
sysUserInputDOS.forEach(sysUserInputDO1 -> {
|
String name = sysUserInputDO1.getName();
|
if (name1.equals(name)) {
|
return;
|
}
|
Integer isRent = sysUserInputDO1.getIsRent();
|
ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
|
comMngFamilyInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(sysUserInputDO1.getIdCard()));
|
comMngFamilyInfoVO.setName(name);
|
comMngFamilyInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(sysUserInputDO1.getPhone()));
|
if (isRent.intValue() == 0) {
|
comMngFamilyInfoVO.setRelationship("家人");
|
} else {
|
comMngFamilyInfoVO.setRelationship("合租");
|
}
|
comMngFamilyInfoVO.setAge(IdCard.IdNOToAge(sysUserInputDO1.getIdCard()));
|
comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
|
});
|
loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
|
}
|
|
}
|
ComActVO comActVO = userDao.selectCommunity(loginUserInfoVO.getCommunityId());
|
if (!ObjectUtils.isEmpty(comActVO)) {
|
loginUserInfoVO.setCommunityName(comActVO.getName());
|
}
|
loginUserInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(loginUserInfoVO.getIdCard()));
|
loginUserInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(loginUserInfoVO.getPhone()));
|
return R.ok(loginUserInfoVO);
|
}
|
|
/**
|
* 设置用户标签
|
*
|
* @param loginUserInfoVO 标签信息
|
* @return 设置结果
|
*/
|
@Override
|
public R putUserTag(LoginUserInfoVO loginUserInfoVO) {
|
SysUserDO sysUserDO = new SysUserDO();
|
sysUserDO.setUserId(loginUserInfoVO.getUserId());
|
sysUserDO.setTags(loginUserInfoVO.getTags());
|
int update = userDao.updateById(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<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone));
|
if (update > 0) {
|
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();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 用户实名认证
|
*
|
* @param loginUserInfoVO 认证数据
|
* @return 认证结果
|
*/
|
@Override
|
public R putUserAuthentication(LoginUserInfoVO loginUserInfoVO) {
|
//接入第三方实名认证
|
String idCard = loginUserInfoVO.getIdCard();
|
String name = loginUserInfoVO.getName();
|
boolean b = RealNameUtil.authentication(idCard, name);
|
if (!b) {
|
return R.fail("身份认证失败:公安系统认证错误");
|
}
|
SysUserDO sysUserDO = new SysUserDO();
|
sysUserDO.setName(name);
|
sysUserDO.setIdCard(idCard);
|
sysUserDO.setSex(loginUserInfoVO.getSex());
|
sysUserDO.setBirthday(loginUserInfoVO.getBirthday());
|
sysUserDO.setJob(loginUserInfoVO.getJob());
|
sysUserDO.setUserId(loginUserInfoVO.getUserId());
|
sysUserDO.setFaceUrl(loginUserInfoVO.getFaceUrl());
|
sysUserDO.setFaceState(null);
|
SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard));
|
if (!ObjectUtils.isEmpty(sysUserDO1)) {
|
return R.fail("身份证已经存在");
|
}
|
int update = userDao.updateById(sysUserDO);
|
if (update > 0) {
|
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<String, String> 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) {
|
List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
|
List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO.selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
|
if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
|
comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
|
ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
|
BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO);
|
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<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getIdCard, comMngFamilyInfoVO.getIdCard()).eq(ComMngFamilyInfoDO::getUserId, comMngFamilyInfoVO.getUserId()));
|
if (!ObjectUtils.isEmpty(comMngFamilyInfoDO1)) {
|
return R.fail("家庭成员已经存在");
|
}
|
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);
|
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) {
|
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("chaojiguanliyuan" + communityId);
|
}else{
|
sysRoleDO.setCommunityId(0L);
|
sysRoleDO.setRoleName(administratorsUserVO.getShopStoreName());
|
sysRoleDO.setRoleKey("shanghupingtai" + administratorsUserVO.getShopStorePhone());
|
}
|
sysRoleDO.setRoleSort(0);
|
sysRoleDO.setCreateBy(administratorsUserVO.getUserId());
|
int insert = roleDAO.insert(sysRoleDO);
|
if (insert > 0) {
|
SysRoleDO sysRoleDO1 = roleDAO.selectOne(new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, sysRoleDO.getRoleKey()));
|
roleId = sysRoleDO1.getRoleId();
|
//新角色设置所有权限
|
MenuRoleVO menuRoleVO = new MenuRoleVO();
|
menuRoleVO.setIsAll(1);
|
menuRoleVO.setCommunityId(communityId);
|
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);
|
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("账户已经存在");
|
}
|
|
}
|
if (insert > 0) {
|
SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, administratorsUserVO.getType()).eq(SysUserDO::getAccount, administratorsUserVO.getAccount()));
|
Long userId = sysUserDO1.getUserId();
|
SysUserRoleDO sysUserRoleDO = new SysUserRoleDO();
|
sysUserRoleDO.setUserId(userId);
|
sysUserRoleDO.setRoleId(roleDO.getRoleId());
|
int insert1 = sysUserRoleDAO.insert(sysUserRoleDO);
|
if (insert1 > 0) {
|
return R.ok();
|
}
|
}
|
return R.fail();
|
}
|
|
/**
|
* 设置角色的权限
|
*
|
* @param menuRoleVO 用户设置的权限id
|
* @return 设置结果
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
public R putMenuRole(MenuRoleVO menuRoleVO) {
|
List<Long> menuIds = new ArrayList<>();
|
Long roleId = menuRoleVO.getRoleId();
|
Integer isAll = menuRoleVO.getIsAll();
|
Long communityId = menuRoleVO.getCommunityId();
|
// if (isAll.intValue()==1) {
|
// List<SysMenuDO> sysMenuDOS = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, 2l).eq(SysMenuDO::getParentId,0).orderByAsc(SysMenuDO::getOrderNum));
|
// Long menuIdParent = sysMenuDOS.get(1).getMenuId();
|
// List<SysMenuDO> sysMenuDOSErJi = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getParentId, menuIdParent));
|
// if (!ObjectUtils.isEmpty(sysMenuDOS)) {
|
// sysMenuDOS.forEach(sysMenuDO -> {
|
// sysMenuDO.setCommunityId(communityId);
|
// sysMenuDO.setMenuId(null);
|
// sysMenuDAO.insert(sysMenuDO);
|
// });
|
//// 完成一级目录创建
|
// List<SysMenuDO> sysMenuDOS1 = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, communityId).orderByAsc(SysMenuDO::getOrderNum));
|
// sysMenuDOS1.forEach(sysMenuDO -> {
|
// Integer orderNum = sysMenuDO.getOrderNum();
|
// if (orderNum.intValue()>0) {
|
// sysMenuDOSErJi.forEach(sysMenuDO1 -> {
|
// sysMenuDO1.setParentId(sysMenuDO.getMenuId());
|
// sysMenuDO1.setCommunityId(communityId);
|
// sysMenuDO1.setMenuId(null);
|
// sysMenuDAO.insert(sysMenuDO1);
|
// });
|
// }
|
// });
|
// }
|
// }
|
|
// 菜单写死不重新生成菜单 todo 所有注释上面自动生成新菜单功能
|
|
// 获取所有权限id
|
List<SysMenuDO> menuDOList = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda().eq(SysMenuDO::getCommunityId, 2l).orderByAsc(SysMenuDO::getOrderNum));
|
menuIds = menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList());
|
for (int i = 0; i < menuIds.size(); i++) {
|
SysRoleMenuDO sysRoleMenuDO = new SysRoleMenuDO();
|
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<SysUserRoleDO>().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
|
@Transactional(rollbackFor = Exception.class)
|
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.intValue() != communityId.intValue()) {
|
return R.fail("用户不属于当前平台");
|
}
|
//删除用户
|
int delete = userDao.deleteById(userId);
|
//删除用户角色关系
|
if (delete > 0) {
|
int delete1 = sysUserRoleDAO.delete(new QueryWrapper<SysUserRoleDO>().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<AdministratorsUserVO> iPage = userDao.pageUserBackstage(page, administratorsUserVO);
|
return R.ok(iPage);
|
}
|
|
/**
|
* 保存操作日志
|
*
|
* @param operlog 日志内容
|
* @return 保存结果
|
*/
|
@Override
|
public R addOperLog(SysOperLogVO operlog) {
|
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);
|
IPage<SysOperLogVO> iPage = sysOperLogDAO.pageOperLog(page, sysOperLogVO);
|
return R.ok(iPage);
|
}
|
|
/**
|
* 用户协议
|
*
|
* @return 协议集合
|
*/
|
@Override
|
public R listAgreement() {
|
List<SysUserAgreementDO> sysUserAgreementDOS = sysUserAgreementDAO.selectList(new LambdaQueryWrapper<>());
|
if (ObjectUtils.isEmpty(sysUserAgreementDOS)) {
|
return R.fail();
|
}
|
List<SysUserAgreementVO> 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<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().lambda().eq(ComMngUserTagDO::getCommunityId, communityId));
|
if (ObjectUtils.isEmpty(comMngUserTagDOS)) {
|
return R.fail();
|
}
|
List<ComMngUserTagVO> 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<ComMngUserTagVO> comMngUserTagVOList = systemmanagementConfigVO.getComMngUserTagVOList();
|
if (!ObjectUtils.isEmpty(comMngUserTagVOList)) {
|
comMngUserTagDAO.delete(null);
|
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<SysUserVO> 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) {
|
SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO.selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type));
|
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<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0).eq(SysUserNoticeDO::getType, type));
|
} else {
|
integer = sysUserNoticeDAO.selectCount(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).eq(SysUserNoticeDO::getStatus, 0));
|
}
|
Page page = new Page<>();
|
Long pageNum = pageDTO.getPageNum();
|
Long pageSize = pageDTO.getPageSize();
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<SysUserNoticeVO> iPage = userDao.pageNotice(page, pageDTO);
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("page", iPage);
|
map.put("unreadNum", integer);
|
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<SysUserNoticeDO>().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<SysUserFeedbackVO> iPage = sysUserFeedbackDAO.pageFeedback(page, pageFeedBackDTO);
|
return R.ok(iPage);
|
}
|
|
/**
|
* 未读消息汇总
|
*
|
* @param userId 登录用户信息
|
* @return 未读汇总
|
*/
|
@Override
|
public R noticeUnreadNum(Long userId) {
|
NoticeUnReadVO noticeUnReadVO = sysUserNoticeDAO.noticeUnreadNum(userId);
|
List<SysUserNoticeVO> sysUserNoticeVOList = new ArrayList<>();
|
List<SysUserNoticeDO> sysUserNoticeDOS = sysUserNoticeDAO.selectList(new QueryWrapper<SysUserNoticeDO>().lambda().eq(SysUserNoticeDO::getUserId, userId).orderByDesc(SysUserNoticeDO::getCreateAt));
|
if (!ObjectUtils.isEmpty(sysUserNoticeDOS)) {
|
List<Integer> typeList = new ArrayList<>(4);
|
sysUserNoticeDOS.forEach(sysUserNoticeDO -> {
|
Integer type = sysUserNoticeDO.getType();
|
if (!typeList.contains(type)) {
|
SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
|
BeanUtils.copyProperties(sysUserNoticeDO, sysUserNoticeVO);
|
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() {
|
IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban();
|
List<DataKanbanDTO> dataKanbanDTOS = userDao.selectCommunityUserOrder();
|
|
List<String> communityUserX = new ArrayList<>();
|
List<Integer> communityUserY = new ArrayList<>();
|
List<String> communityActiveUserX = new ArrayList<>();
|
List<Integer> communityActiveUserY = new ArrayList<>();
|
if (!ObjectUtils.isEmpty(dataKanbanDTOS)) {
|
dataKanbanDTOS.forEach(dataKanbanDTO -> {
|
communityUserX.add(dataKanbanDTO.getName());
|
communityUserY.add(dataKanbanDTO.getNum());
|
});
|
}
|
// 获取最近七天数据
|
List<Date> serverndays = this.getServenDays();
|
serverndays.forEach(date -> {
|
// 查询社区活动数量
|
DataKanbanDTO dataKanbanDTO = userDao.selectCommunityActiveUserOrder(date);
|
communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd"));
|
communityActiveUserY.add(dataKanbanDTO.getNum());
|
});
|
indexDataKanbanVO.setCommunityActiveUserX(communityActiveUserX);
|
indexDataKanbanVO.setCommunityActiveUserY(communityActiveUserY);
|
indexDataKanbanVO.setCommunityUserX(communityUserX);
|
indexDataKanbanVO.setCommunityUserY(communityUserY);
|
return R.ok(indexDataKanbanVO);
|
}
|
|
/**
|
* 获取最近七天数据
|
*
|
* @return
|
*/
|
private List<Date> getServenDays() {
|
List<Date> dates = new ArrayList<>();
|
Date date = new Date();
|
for (int i = 6; i >= 0; i--) {
|
Date date1 = DateUtils.addDays(date, -i);
|
dates.add(date1);
|
}
|
return dates;
|
}
|
|
/**
|
* 社区管理后台数据看板
|
*
|
* @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 = new SysUserDO();
|
sysUserDO.setIsPartymember(1);
|
int update = userDao.update(sysUserDO, new UpdateWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, idCard));
|
if (update > 0) {
|
log.info("新增党员修改用户党员状态成功 身份证号【{}】", idCard);
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 获取各种协议
|
*
|
* @param type 1居民端app协议 2网格员端app协议 3商家端app协议 4隐私政策
|
* @return 协议内容
|
*/
|
@Override
|
public R agreement(Integer type) {
|
SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO.selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type));
|
if (ObjectUtils.isEmpty(sysUserAgreementDO)) {
|
return R.fail("协议不存在");
|
}
|
SysUserAgreementVO sysUserAgreementVO = new SysUserAgreementVO();
|
BeanUtils.copyProperties(sysUserAgreementDO, sysUserAgreementVO);
|
return R.ok(sysUserAgreementVO);
|
}
|
|
/**
|
* 维护用户最后登录时间
|
*
|
* @param userId 用户主键
|
* @return 维护结果
|
*/
|
@Override
|
public R putUserLastLoginTime(Long userId) {
|
SysUserDO sysUserDO = new SysUserDO();
|
sysUserDO.setUserId(userId);
|
sysUserDO.setLastLoginTime(new Date());
|
int update = userDao.updateById(sysUserDO);
|
if (update > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 删除意见反馈
|
*
|
* @param id 主键
|
* @return 删除结果
|
*/
|
@Override
|
public R deleteFeedback(Long id) {
|
int delete = sysUserFeedbackDAO.deleteById(id);
|
if (delete > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 校验小区是否存在
|
*
|
* @param areaName 小区名字
|
* @return 校验结果
|
*/
|
@Override
|
public R checkAereaName(String areaName) {
|
Integer num = userDao.selectCountArea(areaName);
|
if (num > 0) {
|
Integer integer = userDao.selectCountHouse(areaName);
|
if (integer > 0) {
|
return R.ok();
|
} else {
|
return R.fail("小区房屋信息未创建,请先在社区平台添加房屋信息");
|
}
|
} else {
|
return R.fail("小区不存在,请先在社区平台添加小区");
|
}
|
}
|
|
/**
|
* 社区人员详情包括导入人员
|
*
|
* @param userId 人员id
|
* @return CommunityUserInfoVO
|
*/
|
@Override
|
public CommunityUserInfoVO detailUserComunity(Long userId) {
|
CommunityUserInfoVO communityUserInfoVO = new CommunityUserInfoVO();
|
SysUserDO sysUserDO = userDao.selectById(userId);
|
if (!ObjectUtils.isEmpty(sysUserDO)) {
|
String idCard = sysUserDO.getIdCard();
|
if (!ObjectUtils.isEmpty(idCard)) {
|
communityUserInfoVO.setAge(IdCard.IdNOToAge(idCard));
|
communityUserInfoVO.setBirthday(IdCard.birthDay(idCard));
|
communityUserInfoVO.setIdCard(idCard);
|
}
|
communityUserInfoVO.setCreateAt(sysUserDO.getCreateAt());
|
communityUserInfoVO.setName(sysUserDO.getName());
|
String phone = sysUserDO.getPhone();
|
communityUserInfoVO.setPhone(phone);
|
communityUserInfoVO.setSex(sysUserDO.getSex());
|
communityUserInfoVO.setTags(sysUserDO.getTags());
|
communityUserInfoVO.setUserId(userId);
|
ComMngVolunteerMngVO comMngVolunteerMngVO = userDao.selectVolunteerMngByPhone(phone);
|
if (!ObjectUtils.isEmpty(comMngVolunteerMngVO)) {
|
communityUserInfoVO.setVolunteerCreateAt(comMngVolunteerMngVO.getCreateAt());
|
}
|
Integer isPartymember = sysUserDO.getIsPartymember();
|
if (isPartymember.intValue() == 1) {
|
communityUserInfoVO.setPoliticalOutlook(1);
|
} else {
|
communityUserInfoVO.setPoliticalOutlook(3);
|
}
|
communityUserInfoVO.setIsVolunteer(sysUserDO.getIsVolunteer());
|
List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO.selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId));
|
if (!ObjectUtils.isEmpty(comMngFamilyInfoDOS)) {
|
List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>();
|
comMngFamilyInfoDOS.forEach(comMngFamilyInfoDO -> {
|
ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO();
|
BeanUtils.copyProperties(comMngFamilyInfoDO, comMngFamilyInfoVO);
|
comMngFamilyInfoVOS.add(comMngFamilyInfoVO);
|
});
|
communityUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
|
}
|
}
|
return communityUserInfoVO;
|
}
|
|
/**
|
* 用户搜索了就下载搜索的用户否则下载所有用户
|
*
|
* @param exportUserDTO 用户搜索内容
|
* @return List<EexcelUserDTO> excel内容
|
*/
|
@Override
|
public R export(ExportUserDTO exportUserDTO) {
|
List<EexcelUserDTO> eexcelUserDTOS = userDao.selectExport(exportUserDTO);
|
return R.ok(eexcelUserDTOS);
|
}
|
|
@Override
|
public R getSysUserVOByPhone(String phone) {
|
SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone));
|
if (ObjectUtils.isEmpty(sysUserDO)) {
|
return R.fail("用户不存在");
|
}
|
SysUserVO sysUserVO = new SysUserVO();
|
BeanUtils.copyProperties(sysUserDO, sysUserVO);
|
return R.ok(sysUserVO);
|
}
|
|
public static void main(String[] args) {
|
// String encode = new BCryptPasswordEncoder().encode("lbsq123456");
|
// System.out.println(encode);
|
|
List<Date> dates = new ArrayList<>();
|
Date date = new Date();
|
for (int i = 6; i >= 0; i--) {
|
Date date1 = DateUtils.addDays(date, -i);
|
dates.add(date1);
|
}
|
System.out.println(dates);
|
|
// BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
|
// boolean matches = encoder.matches("admin1234567", encode);
|
// System.out.println(matches);
|
}
|
|
/**
|
* 查询当前社区所有标签以及预设标签
|
*
|
* @return 标签集合
|
*/
|
@Override
|
public R listTags(Long communityId) {
|
List<String> list = new ArrayList<>();
|
List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
|
if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
|
list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
|
}
|
return R.ok(list);
|
}
|
}
|