进销存系统_用户信息更新&密码修改

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权限框架&登录&用户密码加密&退出

进销存系统_SpringSecurity权限框架&登录&用户密码加密&退出

进销存系统_项目环境搭建&代码生成&登录接口

进销存系统_项目环境搭建&代码生成&登录接口

进销存系统_用户角色分配(12)

进销存系统_系统版本控制添加&提交至码云