From a86ccbbceb51f9052e0dc12f18ff52980e387bea Mon Sep 17 00:00:00 2001 From: dougang <78125310@kidgrow.com> Date: Mon, 01 Jun 2020 10:44:59 +0800 Subject: [PATCH] fastjson升级最新版 --- kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 215 insertions(+), 7 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 d6614aa..d27fdad 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,19 +1,27 @@ 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; +import com.kidgrow.common.constant.SecurityConstants; import com.kidgrow.common.context.ClientContextHolder; 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.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 lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; @@ -27,8 +35,10 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; + /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -41,8 +51,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; @@ -54,11 +63,16 @@ @Autowired private ISysOrganizationService organizationService; - - + @Autowired + private ISysUserOrgService iSysUserOrgService; + @Autowired + private RedisUtils redisUtils; + @Autowired + private SmsChuangLanService smsChuangLanService; @Autowired private DistributedLock lock; + @Override public LoginAppUser findByUsername(String username) { @@ -110,6 +124,7 @@ /** * 根据用户名查询用户 + * * @param username * @return */ @@ -117,13 +132,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 */ @@ -137,6 +153,7 @@ /** * 根据openId查询用户 + * * @param openId * @return */ @@ -203,6 +220,9 @@ List<Long> userIds = list.stream().map(SysUser::getId).collect(Collectors.toList()); List<SysRole> sysRoles = roleUserService.findRolesByUserIds(userIds); + +// Map<String, Object> map = new HashMap<String, Object>(); +// List<SysOrganization> sysOrganizationList=organizationService.fin(); list.forEach(u -> u.setRoles(sysRoles.stream().filter(r -> !ObjectUtils.notEqual(u.getId(), r.getUserId())) .collect(Collectors.toList()))); } @@ -244,8 +264,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())) { @@ -279,4 +299,192 @@ } return sysUserExcels; } + + @Override + public ResultBody findAll(Map<String, Object> map) { + List<SysUser> sysUsers = baseMapper.selectByMap(map); + return ResultBody.ok().data(sysUsers).msg("操作成功"); + } + + /** + * 获取当前用的 组织下的所有人员 + * + * @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<SysUserOrg> list = iSysUserOrgService.list(queryWrapper); + 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); + 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); + } + } + } else { + return ResultBody.failed("暂无数据"); + } + return ResultBody.ok().data(sysUsers); + } + + @Override + public ResultBody findCountByMap(Map<String, Object> map) { + 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); +} } \ No newline at end of file -- Gitblit v1.8.0