package com.wjxy.communityapp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wjxy.communityapp.dto.RetrievePwdDto;
import com.wjxy.communityapp.dto.UserDto;
import com.wjxy.communityapp.dto.UsersaltDto;
import com.wjxy.communityapp.dto.VercodeDto;
import com.wjxy.communityapp.entity.UserEntity;
import com.wjxy.communityapp.mapper.RoleMapper;
import com.wjxy.communityapp.mapper.UserMapper;
import com.wjxy.communityapp.mapper.UsersaltMapper;
import com.wjxy.communityapp.mapper.VercodeMapper;
import com.wjxy.communityapp.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wjxy.communityapp.utils.MD5Util;
import com.wjxy.communityapp.utils.Result;
import com.wjxy.communityapp.utils.sendSms;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
/**
* <p>
* 服务实现类
* </p>
*
* @author Fluency
* @since 2021-01-05
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private RoleMapper roleMapper;
@Autowired
private sendSms sendSms;
@Autowired
private VercodeMapper vercodeMapper;
@Autowired
private UsersaltMapper usersaltMapper;
/**
* 获取用户数据信息
* @param current
* @param limit
* @param keyword
* @return
*/
@Override
public IPage<UserDto> queryUserByParam(Integer current, Integer limit, String keyword) {
Page<UserDto> page = new Page<>(current, limit);
return userMapper.queryUserByParam(page, keyword);
}
@Override
public Result addUser(UserDto userDto) {
if (userDto == null){
return Result.fail("添加的用户为空,请重试");
}else {
if (userMapper.queryUserDtoByAccount(userDto.getAccount()) == null ){
//添加用户角色
userDto.setRoleId(roleMapper.findRoleIDByName(userDto.getRoleName()));
//密码加密
userDto.setPassword(MD5Util.setSalt(userDto.getAccount(),userDto.getPassword()));
userMapper.addUser(userDto);
return Result.ok("添加用户"+userDto.getUserName()+"成功!");
}else {
return Result.fail("添加的用户账号已存在,请更换用户账号");
}
}
}
@Override
public Result updateUser(UserDto userDto) {
if (userDto != null){
userMapper.updateUser(userDto);
return Result.ok("修改用户"+userDto.getUserName()+"成功!");
}else {
return Result.fail("修改用户信息失败!!!");
}
}
@Override
public Result deleteUser(Integer[] ids) {
if (ids.length > 0 ){
userMapper.deleteUser(ids);
return Result.ok();
}else {
return Result.fail("删除的用户不能为空");
}
}
@Override
public UserDto queryUserDtoByAccount(String loginAccount) {
return userMapper.queryUserDtoByAccount(loginAccount);
}
@Override
public String updateUserPwd(String account, String oldPwd, String newPwd) {
//判断旧密码是否和用户登录密码一致
String simpleHash = MD5Util.setSalt(account, oldPwd);
String pwd = userMapper.getPwdByAccount(account);
if (pwd.equals(simpleHash))
{
String pwdSalt = MD5Util.setSalt(account, newPwd);
return String.valueOf(userMapper.updateUserPwd(account, pwdSalt));
}else{
return "旧密码输入错误";
}
}
@Override
public Boolean updateUserInfo(UserDto userDto) {
return userMapper.updateUserInfo(userDto);
}
@Override
public Result sendSms(String account, String userPhone) {
//验证 用户名和手机号是否匹配
if (userMapper.queryUserByAccount(account).getUserPhone().equals(userPhone) ){
//生成验证码
/*GenerateWord generateWord = new GenerateWord();
verCode = generateWord.RandomNum();*/
String verCode = RandomStringUtils.randomNumeric(4);
HashMap<String, Object> map = new HashMap<>();
map.put("code",verCode);
System.out.println(verCode);
//将生产的验证码存放到数据库中
VercodeDto vercodeDto = new VercodeDto();
vercodeDto.setAccount(account);
vercodeDto.setVerCode(verCode);
vercodeMapper.insert(vercodeDto);
/*Boolean message = sendSms.sendMessage(userPhone,map);
if (message){
return Result.ok("发送验证码成功!");
}else {
return Result.fail("发送验证码失败");
}*/
return Result.ok("发送验证码成功!");
}else {
return Result.fail("用户名和手机号不匹配~请核对后重新输入");
}
}
//验证码是否无误
@Override
public Result checkVesCode(RetrievePwdDto retrievePwdDto) {
System.out.println(retrievePwdDto);
QueryWrapper<VercodeDto> wrapper = new QueryWrapper<>();
wrapper.eq("account",retrievePwdDto.getAccount());
try {
VercodeDto dto = vercodeMapper.selectOne(wrapper);
Date createTime = dto.getCreateTime();
Date date = new Date();
long time = date.getTime() - createTime.getTime();
// 验证码未被使用且没有超时(5分钟)
if (time > 300){
String verCode = dto.getVerCode();
if (retrievePwdDto.getVerCode().equals(verCode))
{
vercodeMapper.deleteById(dto.getVerId());
return Result.ok(retrievePwdDto.getAccount());
}else {
return Result.fail("验证码错误,请重新输入");
}
}else {
vercodeMapper.deleteById(dto.getVerId());
return Result.fail("验证码超时,请重新输入");
}
}catch (NullPointerException e){
return Result.fail("验证码错误,请重试");
}
}
//更新密码
@Override
public Result updateUserPwd(String account, String newPwd) {
String pwdSalt = MD5Util.setSalt(account, newPwd);
Boolean pwd = userMapper.updateUserPwd(account, pwdSalt);
if (pwd){
return Result.ok("找回密码成功,请使用新密码登录");
}else {
return Result.fail("找回密码失败,请重试");
}
}
//用户注册
@Override
public Result registerUser(UserDto userDto) {
//验证提交的用户注册验证码
QueryWrapper<UsersaltDto> wrapper = new QueryWrapper<>();
//验证注册码是否匹配
wrapper.eq("salt_text",userDto.getUserSalt());
UsersaltDto salt = usersaltMapper.selectOne(wrapper);
//注册码错误
if (salt == null){
return Result.fail("注册码不正确,请重试");
} else if (salt.getSaltStatus() == 1){
//注册码已被使用
return Result.fail("注册码已被使用,请重试");
}else if (!salt.getSaltRole().equals(userDto.getRoleId())){
//注册码与用户申请角色不匹配
return Result.fail("注册码与申请角色不匹配,请重试");
}
//实现用户注册
//密码加密
userDto.setPassword(MD5Util.setSalt(userDto.getAccount(),user
没有合适的资源?快使用搜索试试~ 我知道了~
基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).zip

共750个文件
gif:150个
xml:128个
java:97个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 197 浏览量
2023-06-06
21:07:37
上传
评论
收藏 5.63MB ZIP 举报
温馨提示
基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).zip 已经高分通过的期末大作业项目,也可作为课程设计,代码完整下载可用,下白也可实操。 基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).zip 已经高分通过的期末大作业项目,也可作为课程设计,代码完整下载可用,下白也可实操。基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).zip 已经高分通过的期末大作业项目,也可作为课程设计,代码完整下载可用,下白也可实操。基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).zip 已经高分通过的期末大作业项目,也可作为课程设计,代码完整下载可用,下白也可实操。基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).zip 已经高分通过的期末大作业项目,也可作为课程设计,代码完整下载可用,下白也可实操。基于springboot+vue的社区人员流动管理系统源码+数据库(95分以上大作业项目).
资源推荐
资源详情
资源评论































收起资源包目录





































































































共 750 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论


盈梓的博客
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 用户注册协议-服务协议-电子商务互联网.doc
- 信息化环境下信息技术教师的能力素养.doc
- 计算机维护与维修试题B及答案.docx
- 网络营销模拟卷.doc
- 市内电话业务计算机综合管理系统补充二.doc
- 数学建模十大算法总结.doc
- 机器人学第5章-机器人控制算法4.ppt
- 工程项目管理试卷A1.doc
- assembly_learning-汇编语言资源
- 网络安全课程设计.doc
- 基于51单片机的防盗报警系统的设计.doc
- 制定网络推广方案需要八个步骤上课讲义.pdf
- 基于51单片机的温湿度DHT11采集.docx
- 软件工程填空题汇总.doc
- 基于 Pytorch 与 torchtext 构建的自然语言处理深度学习框架
- grapilot-C语言资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
