From 9aa80dfc18e01ae2bd44b74d271b49dd365190d6 Mon Sep 17 00:00:00 2001 From: luliqiang <kidgrow> Date: Fri, 12 Jun 2020 15:38:24 +0800 Subject: [PATCH] FileCenter 优化上传文件 --- kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java | 334 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 302 insertions(+), 32 deletions(-) diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java index 2bdf1cd..1eefc21 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java @@ -1,6 +1,8 @@ package com.kidgrow.usercenter.service.impl; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.CommonConstant; @@ -9,14 +11,16 @@ import com.kidgrow.common.lock.DistributedLock; import com.kidgrow.common.model.*; import com.kidgrow.common.service.impl.SuperServiceImpl; +import com.kidgrow.common.utils.DateUtils; +import com.kidgrow.redis.util.RedisUtils; +import com.kidgrow.sms.feign.SmsChuangLanService; +import com.kidgrow.sms.model.ConstantSMS; +import com.kidgrow.usercenter.mapper.SysDoctorMapper; import com.kidgrow.usercenter.mapper.SysRoleMenuMapper; import com.kidgrow.usercenter.mapper.SysUserMapper; import com.kidgrow.usercenter.model.SysRoleUser; import com.kidgrow.usercenter.model.SysUserExcel; -import com.kidgrow.usercenter.service.ISysOrganizationService; -import com.kidgrow.usercenter.service.ISysRoleUserService; -import com.kidgrow.usercenter.service.ISysUserOrgService; -import com.kidgrow.usercenter.service.ISysUserService; +import com.kidgrow.usercenter.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.ObjectUtils; @@ -33,6 +37,7 @@ import java.util.*; import java.util.stream.Collectors; + /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> * @@ -44,8 +49,7 @@ @Slf4j @Service public class SysUserServiceImpl extends SuperServiceImpl<SysUserMapper, SysUser> implements ISysUserService { - private final static String LOCK_KEY_USERNAME = CommonConstant.LOCK_KEY_PREFIX+"username:"; - + private final static String LOCK_KEY_USERNAME = CommonConstant.LOCK_KEY_PREFIX + "username:"; @Autowired private PasswordEncoder passwordEncoder; @@ -59,11 +63,14 @@ private ISysOrganizationService organizationService; @Autowired private ISysUserOrgService iSysUserOrgService; - - - + @Autowired + private RedisUtils redisUtils; + @Autowired + private SmsChuangLanService smsChuangLanService; @Autowired private DistributedLock lock; + @Autowired + private SysDoctorMapper sysDoctorMapper; @Override public LoginAppUser findByUsername(String username) { @@ -83,10 +90,16 @@ return getLoginAppUser(sysUser); } + /** + * + * 获取登录用户的一系列信息 hrj 06-04修改 + * @param sysUser + * @return + */ @Override public LoginAppUser getLoginAppUser(SysUser sysUser) { + LoginAppUser loginAppUser = new LoginAppUser(); if (sysUser != null) { - LoginAppUser loginAppUser = new LoginAppUser(); BeanUtils.copyProperties(sysUser, loginAppUser); //获取用户所属组织机构列表 List<SysOrganization> sysOrganizations = organizationService.findListByUserId(sysUser.getId()); @@ -106,15 +119,23 @@ loginAppUser.setPermissions(permissions); } } - - return loginAppUser; + //是否医院管理员 + com.kidgrow.usercenter.model.SysDoctor sysDoctor=findDoctorByUserId(sysUser.getId()); + if (sysDoctor.getIsAdminUser() != null) { + sysUser.setHAdminUser(sysDoctor.getIsAdminUser()); + } + //医院信息 只有H端要返回的信息 + if (sysUser.getTenantId() == CommonConstant.H_TENANT) { + sysUser.setDoctorUserAllVO(baseMapper.findDoctorUserAllData(sysUser.getId())); + } } - return null; + return loginAppUser; } /** * 根据用户名查询用户 + * * @param username * @return */ @@ -122,13 +143,14 @@ public SysUser selectByUsername(String username) { String clientId = ClientContextHolder.getClient(); List<SysUser> users = baseMapper.selectList( - new QueryWrapper<SysUser>().eq("username", username).eq("tenant_id",clientId) + new QueryWrapper<SysUser>().eq("username", username).eq("tenant_id", clientId) ); return getUser(users); } /** * 根据手机号查询用户 + * * @param mobile * @return */ @@ -142,6 +164,7 @@ /** * 根据openId查询用户 + * * @param openId * @return */ @@ -182,21 +205,98 @@ @Transactional @Override - public ResultBody updatePassword(Long id, String oldPassword, String newPassword) { + public ResultBody updatePassword(Long id, String oldPassword, String newPassword,Boolean isdefault) { SysUser sysUser = baseMapper.selectById(id); if (StrUtil.isNotBlank(oldPassword)) { if (!passwordEncoder.matches(oldPassword, sysUser.getPassword())) { - return ResultBody.failed("旧密码错误"); + return ResultBody.failed("旧密码错误!"); } } if (StrUtil.isBlank(newPassword)) { - newPassword = CommonConstant.DEF_USER_PASSWORD; + newPassword =com.kidgrow.common.utils.RandomValueUtils.getRandom(6); } SysUser user = new SysUser(); user.setId(id); user.setPassword(passwordEncoder.encode(newPassword)); + if (isdefault) { + user.setDefaultAuth(true); + } baseMapper.updateById(user); - return ResultBody.ok().msg("修改成功"); + if (isdefault){ + return ResultBody.ok().msg("密码重置成功!").data(newPassword); + } + else{ + return ResultBody.ok().msg("密码修改成功!").data(true); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ResultBody updateUserTel(Map<String, Object> params) { + Long id = MapUtils.getLong(params, "id"); + String oldTel = MapUtils.getString(params, "oldTel"); + String newTel = MapUtils.getString(params, "newTel"); + String authCode = MapUtils.getString(params, "authCode"); + String userPassword = MapUtils.getString(params, "userPassword"); + + if (id > 0 && StringUtils.isNotBlank(oldTel)&& StringUtils.isNotBlank(newTel) && StringUtils.isNotBlank(authCode) && StringUtils.isNotBlank(userPassword)) { + //检查验证码 + Object hget = redisUtils.hget(ConstantSMS.PHONE_SMS, newTel); + if (hget != null) { + JSONObject redisJson = JSON.parseObject(JSON.toJSONString(hget)); + Object verificationCodeObject = redisJson.get("verificationCode"); + //核对验证码 + if (authCode.equals(verificationCodeObject)) { + //验证旧手机号和密码 + SysUser sysUser = baseMapper.selectById(id); + if (passwordEncoder.matches(userPassword, sysUser.getPassword()) && sysUser.getMobile().equals((oldTel))) { + Object date = redisJson.get("endTime"); + long time = DateUtils.parseDate(date.toString()).getTime(); + long timeNow = new Date().getTime(); + if (timeNow <= time) { + //查询手机号是否已经存在 + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("mobile", newTel); + List<SysUser> sysUsersList = baseMapper.selectByMap(selectMap); + if (sysUsersList.size() > 0) { + return ResultBody.failed("该手机号已经存在!"); + } else { + //验证通过,修改手机号 + SysUser user = new SysUser(); + user.setId(id); + user.setMobile(newTel); + //修改doctor表 + com.kidgrow.usercenter.model.SysDoctor sysDoctorModel= findDoctorByUserId(user.getId()); + com.kidgrow.usercenter.model.SysDoctor newsysDoctorModel= new com.kidgrow.usercenter.model.SysDoctor(); + if (sysDoctorModel!=null) { + //理论上只有一个,如果有多个 只取第一个 + newsysDoctorModel.setId(sysDoctorModel.getId()); + newsysDoctorModel.setDoctorTel(newTel); + sysDoctorMapper.updateById(newsysDoctorModel); + } + + if (baseMapper.updateById(user) > 0) { + return ResultBody.ok().msg("手机号修改成功!"); + } else { + return ResultBody.failed("手机号修改失败!"); + } + } + } else { + return ResultBody.failed("手机验证码已过期!"); + } + } else { + return ResultBody.failed("用户信息验证失败,请提供正确的手机号和密码!"); + } + } else { + return ResultBody.failed("手机验证码有误!"); + } + } else { + //redis获取失败 + return ResultBody.failed("请重新获取验证码!"); + } + } else { + return ResultBody.failed("必须参数有误!"); + } } @Override @@ -252,8 +352,8 @@ } String username = sysUser.getUsername(); boolean result = super.saveOrUpdateIdempotency(sysUser, lock - , LOCK_KEY_USERNAME+username, new QueryWrapper<SysUser>().eq("username", username) - , username+"已存在"); + , LOCK_KEY_USERNAME + username, new QueryWrapper<SysUser>().eq("username", username) + , username + "已存在"); // boolean result=true; //更新角色 if (result && StrUtil.isNotEmpty(sysUser.getRoleId())) { @@ -296,30 +396,31 @@ /** * 获取当前用的 组织下的所有人员 + * * @param request * @return */ @Override public ResultBody getThisUserOrganizationUser(HttpServletRequest request) { String id = request.getHeader(SecurityConstants.USER_ID_HEADER); - List<SysUser> sysUsers=new ArrayList<>(); - if(StringUtils.isNotBlank(id)){ - QueryWrapper<SysUserOrg> queryWrapper=new QueryWrapper(); - queryWrapper.eq("user_id",id); + List<SysUser> sysUsers = new ArrayList<>(); + if (StringUtils.isNotBlank(id)) { + QueryWrapper<SysUserOrg> queryWrapper = new QueryWrapper(); + queryWrapper.eq("user_id", id); List<SysUserOrg> list = iSysUserOrgService.list(queryWrapper); - if(list.size()>0){ + if (list.size() > 0) { List<Long> collect = list.stream().map(e -> e.getOrgId()).collect(Collectors.toList()); - if (collect.size()>0) { - queryWrapper=new QueryWrapper<>(); - queryWrapper.in("org_id",collect); + if (collect.size() > 0) { + queryWrapper = new QueryWrapper<>(); + queryWrapper.in("org_id", collect); List<SysUserOrg> sysUserOrgs = iSysUserOrgService.list(queryWrapper); List<Long> userIds = sysUserOrgs.stream().map(e -> e.getUserId()).collect(Collectors.toList()); - QueryWrapper<SysUser> sysUserQueryWrapper=new QueryWrapper(); - sysUserQueryWrapper.in("id",userIds.stream().distinct().collect(Collectors.toList())); - sysUsers= baseMapper.selectList(sysUserQueryWrapper); + QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper(); + sysUserQueryWrapper.in("id", userIds.stream().distinct().collect(Collectors.toList())); + sysUsers = baseMapper.selectList(sysUserQueryWrapper); } } - }else { + } else { return ResultBody.failed("暂无数据"); } return ResultBody.ok().data(sysUsers); @@ -330,4 +431,173 @@ Integer integer = baseMapper.selectCountByMap(map); return ResultBody.ok().data(integer); } + + /** + * 通过手机号 修改密码 + * @param map + * @return + */ + @Override + public ResultBody passwordByPhone(Map<String, Object> map) { + //手机号,type,验证码,新密码 + String phone = MapUtils.getString(map, "phone"); + if (phone == null || "".equals(phone.trim())) { + return ResultBody.failed("请输入手机号"); + } + String verificationCode = MapUtils.getString(map, "verificationCode"); + if (verificationCode == null || "".equals(verificationCode.trim())) { + return ResultBody.failed("请输入验证码"); + } + String newPass = MapUtils.getString(map, "newPass"); + if (newPass == null || "".equals(newPass.trim())) { + return ResultBody.failed("请输入正确的密码"); + } + Object hget = redisUtils.hget(ConstantSMS.PASSWORD_SMS, map.get("phone").toString()); + if (hget != null) { + JSONObject redisJson = JSON.parseObject(JSON.toJSONString(hget)); + Object verificationCodeObject = redisJson.get("verificationCode"); + if (verificationCode.equals(verificationCodeObject)) { + Object date = redisJson.get("endTime"); + long time = DateUtils.parseDate(date.toString()).getTime(); + Date dateNow = new Date(); + long timeNow = dateNow.getTime(); + if (timeNow <= time) { + //查询表 + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("mobile", phone); + List<SysUser> sysUsers = baseMapper.selectByMap(selectMap); + if (sysUsers.size() > 0) { + SysUser user = new SysUser(); + user.setId(sysUsers.get(0).getId()); + user.setPassword(passwordEncoder.encode(newPass)); + baseMapper.updateById(user); + //将Redis 清除 + redisUtils.hdel(ConstantSMS.PASSWORD_SMS, phone); + return ResultBody.ok(); + } else { + return ResultBody.failed("暂无该手机号信息"); + } + } else { + return ResultBody.failed("验证码超时"); + } + } else { + return ResultBody.failed("验证码错误"); + } + } else { + return ResultBody.failed("该手机号没有验证码"); + } + } + + /** + * 通过手机号 注册验证 + * @param map + * @return + */ + @Override + public ResultBody registerByPhone(Map<String, Object> map) { + //手机号,type,验证码,新密码 + String phone = MapUtils.getString(map, "phone"); + if (phone == null || "".equals(phone.trim())) { + return ResultBody.failed("请输入手机号"); + } + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("mobile", phone); + List<SysUser> sysUsers = baseMapper.selectByMap(selectMap); + if(sysUsers.size()>0){ + return ResultBody.failed("该手机号已经注册"); + } + Map<String, Object> mapDto=new HashMap(); + mapDto.put("phone",phone); + mapDto.put("type",ConstantSMS.REGISTER_SMS); + return smsChuangLanService.sendVerificationCode(mapDto); + } + + /** + * 通过手机号修改 手机号 + * @param map + * @return + */ + @Override + public ResultBody updatePhone(Map<String, Object> map,SysUser sysUser) { + String password = MapUtils.getString(map, "password"); + if (StringUtils.isBlank(password)) { + return ResultBody.failed("请输入密码"); + } + String phone = MapUtils.getString(map, "phone"); + if (StringUtils.isBlank(phone)) { + return ResultBody.failed("请输入新手机号"); + } + String verificationCode = MapUtils.getString(map, "verificationCode"); + if (StringUtils.isBlank(verificationCode)) { + return ResultBody.failed("请输入验证码"); + } + if (!passwordEncoder.matches(sysUser.getPassword(),password)) { + return ResultBody.failed("密码错误"); + } + Object hget = redisUtils.hget(ConstantSMS.PHONE_SMS, map.get("phone").toString()); + if (hget != null) { + JSONObject redisJson = JSON.parseObject(JSON.toJSONString(hget)); + Object verificationCodeObject = redisJson.get("verificationCode"); + if (verificationCode.equals(verificationCodeObject)) { + Object date = redisJson.get("endTime"); + long time = DateUtils.parseDate(date.toString()).getTime(); + Date dateNow = new Date(); + long timeNow = dateNow.getTime(); + if (timeNow <= time) { + //查询表 + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("mobile", phone); + List<SysUser> sysUsers = baseMapper.selectByMap(selectMap); + if (sysUsers.size() > 0) { + return ResultBody.failed("该手机号已经注册"); + } else { + SysUser user = new SysUser(); + user.setId(sysUser.getId()); + user.setMobile(phone); + baseMapper.updateById(user); + //将Redis 清除 + redisUtils.hdel(ConstantSMS.PHONE_SMS, phone); + return ResultBody.ok(); + } + } else { + return ResultBody.failed("验证码超时"); + } + } else { + return ResultBody.failed("验证码错误"); + } + } else { + return ResultBody.failed("该手机号没有验证码"); + } + } + + @Override + public ResultBody findAppointUsers(Integer type) { + List<SysUser> list = baseMapper.findAppointUsers(type); + return ResultBody.ok().data(list); +} + + /** + * 根据userid获取用户其它信息 + * @param userId + * @return + */ + @Override + public ResultBody findDoctorUserAllData(Long userId) { + if (userId>0) { + return ResultBody.ok().data(baseMapper.findDoctorUserAllData(userId)); + } + return ResultBody.ok().data(null); + } + + public com.kidgrow.usercenter.model.SysDoctor findDoctorByUserId(Long userId) { + Map<String, Object> doctorMap = new HashMap<>(); + doctorMap.put("user_id",userId); + doctorMap.put("enabled",1); + doctorMap.put("is_del",0); + List<com.kidgrow.usercenter.model.SysDoctor> sysDoctorList=sysDoctorMapper.selectByMap(doctorMap); + if (sysDoctorList.size()>0) { + return sysDoctorList.get(0); + } + return new com.kidgrow.usercenter.model.SysDoctor(); + } } \ No newline at end of file -- Gitblit v1.8.0