From 37f55403e7573d8c15b6b0f957b7cb1baf6be4ea Mon Sep 17 00:00:00 2001 From: huanghongfa <18228131219@163.com> Date: 星期二, 29 十二月 2020 14:47:15 +0800 Subject: [PATCH] 攀枝花项目服务层异常捕获统一返回给视图层服务 --- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 347 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 332 insertions(+), 15 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java index c1abb3f..9d33355 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java @@ -5,27 +5,24 @@ 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.SecurityConstants; import com.panzhihua.common.constants.UserConstants; 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.partybuilding.ActivityManagerVO; -import com.panzhihua.common.model.vos.user.ChangePasswordVO; -import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO; -import com.panzhihua.common.model.vos.user.UserPhoneVO; -import com.panzhihua.service_user.dao.ComMngFamilyInfoDAO; -import com.panzhihua.service_user.dao.ComMngUserTagDAO; -import com.panzhihua.service_user.dao.RoleDAO; -import com.panzhihua.service_user.dao.UserDao; -import com.panzhihua.service_user.model.dos.ComMngFamilyInfoDO; -import com.panzhihua.service_user.model.dos.ComMngUserTagDO; -import com.panzhihua.service_user.model.dos.SysRoleDO; -import com.panzhihua.service_user.model.dos.SysUserDO; +import com.panzhihua.common.model.vos.partybuilding.PageActivityMembersVO; +import com.panzhihua.common.model.vos.user.*; +import com.panzhihua.service_user.dao.*; +import com.panzhihua.service_user.model.dos.*; import com.panzhihua.service_user.service.UserService; +import lombok.extern.slf4j.Slf4j; 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; @@ -39,6 +36,7 @@ * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-11-24 09:13 **/ +@Slf4j @Service public class UserServiceImpl implements UserService { @Resource @@ -51,6 +49,12 @@ private ComMngFamilyInfoDAO comMngFamilyInfoDAO; @Resource private StringRedisTemplate stringRedisTemplate; + @Resource + private SysUserRoleDAO sysUserRoleDAO; + @Resource + private SysOperLogDAO sysOperLogDAO; + @Resource + private SysUserAgreementDAO sysUserAgreementDAO; /** @@ -210,7 +214,18 @@ @Override public R changePassword(ChangePasswordVO changePasswordVO) { Long userId = changePasswordVO.getUserId(); + SysUserDO sysUserDO1 = userDao.selectById(userId); + String oldPassoword = sysUserDO1.getPassword(); String newPassword = changePasswordVO.getNewPassword(); + if (oldPassoword.equals(newPassword)) { + return R.fail("新老密码不能相同"); + } + oldPassoword = new BCryptPasswordEncoder().encode(oldPassoword); + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); + if( !encoder.matches(oldPassoword,newPassword)){ + return R.fail("老密码错误"); + + } SysUserDO sysUserDO=new SysUserDO(); sysUserDO.setUserId(userId); String encode = new BCryptPasswordEncoder().encode(newPassword); @@ -260,10 +275,10 @@ Page page = new Page<>(); Long pageNum = loginUserInfoVO.getPageNum(); Long pageSize = loginUserInfoVO.getPageSize(); - if (ObjectUtils.isEmpty(pageNum)||0==pageNum) { + if (null==pageNum||0==pageNum) { pageNum = 1l; } - if (ObjectUtils.isEmpty(pageSize)||0==pageSize) { + if (null==pageSize||0==pageSize) { pageSize = 10l; } page.setSize(pageSize); @@ -319,10 +334,10 @@ Page page = new Page<>(); Long pageNum = loginUserInfoVO.getPageNum(); Long pageSize = loginUserInfoVO.getPageSize(); - if (ObjectUtils.isEmpty(pageNum)||0==pageNum) { + if (null==pageNum||0==pageNum) { pageNum = 1l; } - if (ObjectUtils.isEmpty(pageSize)||0==pageSize) { + if (null==pageSize||0==pageSize) { pageSize = 10l; } page.setSize(pageSize); @@ -422,6 +437,9 @@ 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(); @@ -444,6 +462,10 @@ sysUserDO.setUserId(loginUserInfoVO.getUserId()); sysUserDO.setFaceUrl(loginUserInfoVO.getFaceUrl()); sysUserDO.setFaceState(0); + SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getIdCard, loginUserInfoVO.getIdCard())); + if (!ObjectUtils.isEmpty(sysUserDO1)) { + return R.fail("身份证已经存在"); + } int update = userDao.updateById(sysUserDO); if (update>0) { return R.ok(); @@ -498,6 +520,38 @@ */ @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); + } SysUserDO sysUserDO=new SysUserDO(); BeanUtils.copyProperties(loginUserInfoVO,sysUserDO); int update = userDao.updateById(sysUserDO); @@ -565,6 +619,269 @@ return R.fail(); } + /** + * 新增运营后台账户 + * + * @param administratorsUserVO 账户信息 + * @return 新增结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R addUserBackstage(AdministratorsUserVO administratorsUserVO) { + SysUserDO sysUserDO=new SysUserDO(); + SysRoleDO roleDO = roleDAO.selectById(administratorsUserVO.getRoleId()); + 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")) { + return R.fail("手机号已经存在"); + } + } + if (insert>0) { + SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, administratorsUserVO.getType()).eq(SysUserDO::getPhone, administratorsUserVO.getPhone())); + 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 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(); + } + } + 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(null); + 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("用户标签不能为空"); + } + + } + public static void main(String[] args) { String encode = new BCryptPasswordEncoder().encode("123456"); System.out.println(encode); -- Gitblit v1.7.1