一、完善登录功能

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 {@Resourceprivate IUserService userService;@RequestMapping("login")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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 {@Overridepublic 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;}@Overridepublic 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),"用户密码更新失败!");}
}

三、测试


进销存系统_用户信息更新密码修改(3)相关推荐

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

    一.用户角色分配 1.1.用户角色分配界面原型 添加用户记录 更新用户记录 1.2.用户角色分配实现流程 添加用户-角色分配 更新用户-角色分配 代码 RoleServiceImpl.java @Ov ...

  2. 进销存系统_系统介绍核心模块划分功能流程介绍(1)

    一.学习目标 二.进销存系统简介 进销存系统是为了对企业生产经营中进货.出货.批发销售.付款等全程进行(从接获订单合同开始.进入物料采购.入库.领用到产品完工入库.交货.回收货款.支付原材料款等)跟踪 ...

  3. 进销存系统_项目环境搭建代码生成登录接口(2)

    一.环境搭建 1.1.项目使用Maven 多模块进行构建 1.2.添加静态资源 二.用户模块设计 2.1.E-R图 2.1.SQL脚本 /*Navicat Premium Data TransferS ...

  4. java 进销存系统_基于SSM框架搭建的java web商家进销存网站系统

    项目描述 根据当前的服装库存管理体制,一般系统,总是根据所掌握的商品类别,相应分成几个库存管理员进行商品的计划.订货.核对入库:根据销售的需要来发送物品(出库).并定期进行库存盘点.作台账:根据服装管 ...

  5. java图书进存销系统_【有源码】图书进销存系统

    本文介绍如何开发一个CS结构的图书进存销系统,该系统的主要有出版社管理.书本管理.书的入库管理.销售管理等功能,通过这些简单的功能,可以让我们了解如何利用JDBC进行数据库操作.如何使用Java的反射 ...

  6. php收银系统如何连接pos机,如何实现POS机与进销存系统相连接_店铺ERP_企业服务汇...

    编者按:在零售行业内进销存软件的应用尤为广泛,POS机作为零售行业常用的收款方式,许多企业在问如何让POS机与已有的零售进销存系统相关联?能否在POS收款完成后将销售单与库存进行同步从而实现对零售进销 ...

  7. 佳顺通用进销存系统去广告_母婴收银系统应该如何选择?

    母婴收银系统应该如何选择?这样类似的问题在各大提问平台上浏览量竟达到数万次.而市面上琳琅满目的收银软件遍布,尤其在搜索引擎里一搜相关问题,不是营销号的匿名回答就是漫天的广告砸来,那么母婴收银系统应该如 ...

  8. 医疗:ERP进销存系统(8)

    进销存系统是为了对企业生产经营中进货.出货.批发销售.付款等进行全程进行(从接获订单合同开始,进入物料采购.入库.领用到产品完工入库.交货.回收货款.支付原材料款等)跟踪(每一步都提供详尽准确的数据) ...

  9. 手机进销存系统/供应链管理系统

    花了将近两个月的时间学习了一个企业级进销存项目,已经结束了两周多,现在终于有时间来对这个项目的学习做个总结了! 一.首先介绍下这个项目 (注:本人目前大三,专业为信息管理,与编程沾边不多.而我对编程很 ...

最新文章

  1. 弹性盒子内容体居右对其_CSS怎么实现弹性盒中的元素居中对齐
  2. pycharm matplotlib 图片显示
  3. 每个大数据工程师都应该知道的OLAP 核心知识点
  4. springboot 事务_Spring Boot中的事务是如何实现的?懂吗?
  5. python中冒号报错_python中一些常见的错误_后端开发
  6. layui框架的优缺点
  7. 局域网虚拟服务器的工作模式,三种虚拟局域网实现方式有哪些差异?实现虚拟局域网的工具推荐...
  8. Hadoop面试题总结
  9. Python实现批量采集美女shipin<无水印>
  10. 【QT】将指定ip添加到凭据管理器
  11. ATF:Gicv源码文件系列-gicv2.h
  12. 计算机人才供需状况和就业形势分析,计算机科学与技术就业形势分析
  13. 1166: 6102玛雅历法
  14. 史上最牛实习生爆料:我在赶集网的两个月
  15. Ubuntu16.04安装联想LJ2600D打印机驱动程序
  16. 高性价比成磷酸铁锂杀手锏
  17. 2023CUPT第十四题 射流的折射 思路与解法
  18. python ai自动剪辑视频_你知道吗?Python也可以剪辑视频!
  19. Kali Linux渗透测试实战 第一章
  20. 关于微信公众号回复消息乱码的问题

热门文章

  1. 多效蒸发课程设计php程序
  2. draw.io绘图工具
  3. 六自由度方程组 matlab,采用Matlab的六自由度机器人三维运动学仿真_李庆.pdf
  4. 巧妙解决-数学家年龄问题
  5. 如何写出优秀的单元测试
  6. 【观察】 2016年度中国企业级市场十大新闻
  7. 计算机专业中专自我鉴定范文,中专计算机专业毕业自我鉴定
  8. C/C++模拟按键按下弹起
  9. 北朝皇帝简介-20170610
  10. UVA 1471 Defense Lines 单调队列优化