进销存系统_用户信息更新&密码修改
Posted 上善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进销存系统_用户信息更新&密码修改相关的知识,希望对你有一定的参考价值。
一、完善登录功能
1.1、注释掉验证码相关代码
修改index.js,先注释掉验证码相关代码
修改main.tfl
二、用户信息更新&密码修改
2.1、存放静态资源
2.2、编写后台代码
MainController.java
package com.xbmu.admin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
/**
* <p>
* 主体前端控制器
* </>
*
* @author bitaotao
* @since 2021-09-11
*/
@Controller
public class MainController {
/**
* 系统登录页
* @return
*/
@RequestMapping("index")
public String index(){
return "index";
}
/**
* 系统主页面
* @return
*/
@RequestMapping("main")
public String main(){
return "main";
}
/**
* 系统欢迎页
* @return
*/
@RequestMapping("welcome")
public String welcome(){
// 默认 转发
return "welcome";
}
/**
* 用户退出
* @param session
* @return
*/
@RequestMapping("signout")
public String signout(HttpSession session){
session.removeAttribute("user");
// 重定向
return "redirect:index";
}
}
UserController.java
package com.xbmu.admin.controller;
import com.xbmu.admin.exceptions.ParamsException;
import com.xbmu.admin.model.RespBean;
import com.xbmu.admin.pojo.User;
import com.xbmu.admin.service.IUserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
/**
* <p>
* 用户表 前端控制器
* </p>
*
* @author bitaotao
* @since 2021-09-11
*/
@Controller
@RequestMapping("/user")
public class UserController {
@Resource
private IUserService userService;
@RequestMapping("login")
@ResponseBody
public RespBean login(String userName, String passWord, HttpSession session){
try {
User user = userService.login(userName, passWord);
session.setAttribute("user",user);
return RespBean.success("用户登录成功",user);
} catch (ParamsException e) {
e.printStackTrace();
return RespBean.error(e.getMsg());
} catch (Exception e) {
e.printStackTrace();
return RespBean.error("用户登录失败");
}
}
/**
* 用户信息设置页面
* @return
*/
@RequestMapping("setting")
public String setting(HttpSession session){
// 用户信息设置成功后,从新获取最新的用户信息放到session中。
User user = (User) session.getAttribute("user");
session.setAttribute("user",userService.getById(user.getId()));
return "user/setting";
}
/**
* 用户信息更新
* @param user
* @return
*/
@RequestMapping("updateUserInfo")
@ResponseBody
public RespBean updateUserInfo(User user){
try {
userService.updateUserInfo(user);
return RespBean.success("用户信息更新成功");
} catch (ParamsException e) {
e.printStackTrace();
return RespBean.error(e.getMsg());
} catch (Exception e) {
e.printStackTrace();
return RespBean.error("用户信息更新失败!");
}
}
/**
* 用户密码更新页
* @return
*/
@RequestMapping("toPasswordPage")
public String password(){
return "user/password";
}
/**
* 用户密码更新
* @param session session对象
* @param oldPassword 旧密码
* @param newPassword 新密码
* @param confirmPassword 确认密码
* @return
*/
@RequestMapping("updateUserPassword")
@ResponseBody
public RespBean updateUserPassword(HttpSession session,String oldPassword,String newPassword,String confirmPassword){
try {
User user = (User) session.getAttribute("user");
userService.updateUserPassword(user.getUserName(),oldPassword,newPassword,confirmPassword);
return RespBean.success("用户密码更新成功!");
} catch (ParamsException e) {
e.printStackTrace();
return RespBean.error(e.getMsg());
} catch (Exception e) {
e.printStackTrace();
return RespBean.error("用户密码更新失败!");
}
}
}
IUserService.java
package com.xbmu.admin.service;
import com.xbmu.admin.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户表 服务类
* </p>
*
* @author bitaotao
* @since 2021-09-11
*/
public interface IUserService extends IService<User> {
/**
* 用户登录方法
* @param userName 用户名
* @param passWord 密码
* @return
*/
User login(String userName, String passWord);
/**
* 根据用户名查询用户记录
* @param userName 用户名
* @return
*/
public User findUserByUserName(String userName);
/**
* 用户信息更新
* @param user 用户对象
*/
void updateUserInfo(User user);
/***
* 更新用户密码
* @param userName 用户名
* @param oldPassword 旧密码
* @param newPassword 新密码
* @param confirmPassword 确认密码
*/
void updateUserPassword(String userName, String oldPassword, String newPassword, String confirmPassword);
}
UserServiceImpl.java
package com.xbmu.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xbmu.admin.pojo.User;
import com.xbmu.admin.mapper.UserMapper;
import com.xbmu.admin.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xbmu.admin.util.AssertUtil;
import com.xbmu.admin.util.StringUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* <p>
* 用户表 服务实现类
* </p>
*
* @author bitaotao
* @since 2021-09-11
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
@Override
public User login(String userName, String passWord) {
AssertUtil.isTrue(StringUtil.isEmpty(userName),"用户名不能为空!");
AssertUtil.isTrue(StringUtil.isEmpty(passWord),"密码不能为空!");
User user = this.findUserByUserName(userName);
AssertUtil.isTrue(null == user,"该用户记录不存在或已注销!");
/**
* 后续引入SpringSecurity 使用框架处理密码
*/
AssertUtil.isTrue(!(user.getPassword().equals(passWord)),"密码错误!");
return user;
}
@Override
public User findUserByUserName(String userName) {
return this.baseMapper.selectOne(new QueryWrapper<User>().eq("is_del",0).eq("user_name",userName));
}
@Override
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void updateUserInfo(User user) {
/**
* 用户名:非空、唯一
*/
AssertUtil.isTrue(StringUtil.isEmpty(user.getUserName()),"用户名不能为空!");
User tempUser = this.findUserByUserName(user.getUserName());
AssertUtil.isTrue(null != tempUser && !(tempUser.getId().equals(user.getId())),"用户名已存在!");
AssertUtil.isTrue(!(this.updateById(user)),"用户信息更新失败!");
}
@Override
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void updateUserPassword(String userName, String oldPassword, String newPassword, String confirmPassword) {
/**
* 用户名非空 必须存在
* 原始密码 新密码 确认密码 均不能为空
* 原始密码必须正确
* 新密码 与 确认密码必须一致 并且不能与原始密码相同
*/
User user = this.findUserByUserName(userName);
AssertUtil.isTrue(null==user,"用户不存在或未登录!");
AssertUtil.isTrue(StringUtil.isEmpty(oldPassword),"请输入原始密码!");
AssertUtil.isTrue(StringUtil.isEmpty(newPassword),"请输入新密码!");
AssertUtil.isTrue(StringUtil.isEmpty(confirmPassword),"请输入确认密码!");
AssertUtil.isTrue(!(user.getPassword().equals(oldPassword)),"原始密码输入错误!");
AssertUtil.isTrue(!(newPassword.equals(confirmPassword)),"新密码输入不一致!");
AssertUtil.isTrue(newPassword.equals(oldPassword),"新密码与原始密码不能一致!");
user.setPassword(newPassword);
AssertUtil.isTrue(!this.updateById(user),"用户密码更新失败!");
}
}
三、测试
以上是关于进销存系统_用户信息更新&密码修改的主要内容,如果未能解决你的问题,请参考以下文章
进销存系统_SpringSecurity权限框架&登录&用户密码加密&退出