版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务2.实现用户管理模块任务描述本任务是基于前后端分离架构完成用户管理模块及相关功能。知识准备1.跨域介绍
跨域是指从一个域名的网页去请求另一个域名的资源。比如从页面去请求的资源。跨域的严格一点的定义是:只要协议、域名、端口有任何一个的不同,就被当作是跨域。2.前后端分离与跨域
前后端分离就是前端代码一个服务器,后端代码一个服务器,两个不同的服务之间需要互相请求对方的资源进行交互一般情况下是禁止的,就需要使用跨域来解决前后端分离的项目交互。3.跨域访问需要的技术:
由于浏览器一般不对script,img等进行跨域限制,所以我们有机会通过script的方式来实现跨域访问。
跨域访问需要用到两样技术,一个是JSON,一种基于文本的传输协议;另一种是JSONP跨域解决方案。任务实施步骤1:实现用户管理模块后台在“com.chinasofti.ordersys.api.admin”包中,新建AdminUserController类,用于实现用户管理模块接口。包含方法见表4-3。表4-3任务2AdminUserController类方法表方法名说明adminModify(UserInfoinfo)管理员修改用户信息的方法。deleteUser(IntegeruserId)删除用户。getUser(IntegeruserId)根据用户ID获取对应用户信息。getUserByPage(intpage)获取用户分页数据。modifyMyInfo(UserInfoinfo)修改个人信息。addUser(UserInfoinfo)新增用户。checkAddUser(StringuserAccount)检验用户是否存在。Ø代码如下:packagecom.chinasofti.ordersys.api.admin;
importmon.result.PageResults;importmon.result.Results;importcom.chinasofti.ordersys.model.UserInfo;importcom.chinasofti.ordersys.service.admin.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.security.access.prepost.PreAuthorize;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;
importjava.util.List;importjava.util.stream.Collectors;
@PreAuthorize("hasRole('1')")@RestController@RequestMapping("/admin/user")publicclassAdminUserController{ @AutowiredUserServiceservice;
publicUserServicegetService(){ returnservice; } publicvoidsetService(UserServiceservice){ this.service=service; } @RequestMapping("/adminmodifyuser") publicResults<UserInfo>adminModify(UserInfoinfo){ if(info.getUserPass().isEmpty()){ info.setUserPass("1"); }
//执行修改操作 service.adminModify(info); returnResults.success(info); }
@RequestMapping("/deleteuser") publicResults<UserInfo>deleteUser(IntegeruserId){ service.deleteUser(userId); returnResults.success(); } @GetMapping("/get") publicResults<UserInfo>getUser(IntegeruserId){ UserInfouser=service.getUserById(userId); user.setUserPass(""); returnResults.success(user); }
@RequestMapping("/getuserbypage") publicPageResults<UserInfo>getUserByPage(intpage){
//获取最大页码数 intmaxPage=service.getMaxPage(10);
//对当前的页码数进行纠错,如果小于1,则直接显示第一页的内容 page=page<1?1:page;
//对当前的页码数进行纠错,如果大于最大页码,则直接显示最后一页的内容 page=page>maxPage?maxPage:page;
//进行分页数据查询 List<UserInfo>list=service.getByPage(page,10);
//过滤掉密码信息 list=list.stream().map(item->{item.setUserPass("");returnitem;}).collect(Collectors.toList());
//尝试将结果结构化 returnPageResults.success(list,page,maxPage); }
@RequestMapping("/modifyuser") publicResults<UserInfo>modifyMyInfo(UserInfoinfo){ service.modify(info);
//修改信息后需要自动注销 returnResults.success(info); }
@RequestMapping("/adduser") publicResults<UserInfo>addUser(UserInfoinfo){
//添加用户 service.addUser(info);
//跳转到用户管理界面 returnResults.success(info); }
@RequestMapping("/checkuser")
//获取请求参数中的用户名信息 publicResults<UserInfo>checkAddUser(@RequestParam("name")StringuserAccount){
//查询对应用户名的用户信息 List<UserInfo>list=service.findUserByName(userAccount);
//如果数据库中无数据 if(list.isEmpty()){
//输出可以添加标识 returnResults.success();
//如果数据库中有数据 }else{
//输出不能添加标识 returnResults.failure(); } }}在“com.chinasofti.ordersys.service.admin”包中,新建UserService类,用于实现用户管理模块服务。包含方法见表4-4。表4-4任务2UserService类方法表方法名说明adminModify(UserInfoinfo)管理员修改用户信息的方法。deleteUser(IntegeruserId)删除用户。getUserById(IntegeruserId)根据用户ID获取对应用户信息。findUserByName(StringuserAccount)根据用户名获取对应用户信息。getByPage(intpage,intpageSize)获取用户分页数据。getMaxPage(intpageSize)获取用户信息的最大页数。modify(UserInfoinfo)修改个人信息。addUser(UserInfoinfo)新增用户。checkPass(UserInfoinfo)验证用户用户名密码是否正确的方法Ø代码如下:packagecom.chinasofti.ordersys.service.admin;
importcom.chinasofti.ordersys.mapper.UserInfoMapper;importcom.chinasofti.ordersys.model.UserInfo;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;importorg.springframework.stereotype.Service;
importjava.util.List;
@ServicepublicclassUserService{ @AutowiredUserInfoMappermapper;
publicUserInfoMappergetMapper(){ returnmapper; }
publicvoidsetMapper(UserInfoMappermapper){ this.mapper=mapper; } /** *分页获取用户数据的方法 * *@parampage *要获取数据的页号 *@parampageSize *每页显示的条目数 *@return当前页的用户数据列表 **/ publicList<UserInfo>getByPage(intpage,intpageSize){ //获取带有连接池的数据库模版操作工具对象 intfirst=(1)*pageSize; //返回结果 returnmapper.getUserByPage(first,pageSize); }
/** *获取用户信息的最大页数 * *@parampageSize *每页显示的条目数 *@return当前数据库中数据的最大页数 **/ publicintgetMaxPage(intpageSize){
//获取最大页数信息 Longrows=mapper.getMaxPage(); //返回最大页数 return(int)((rows.longValue()-1)/pageSize+1); } /** *添加用户的方法 * *@paraminfo *需要添加的用户信息 **/ publicvoidaddUser(UserInfoinfo){
//创建加密工具
info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //执行用户信息插入操作 mapper.addUser(info); }
/** *删除用户的方法 * *@paramuserId *待删除用户的Id **/ publicvoiddeleteUser(IntegeruserId){ //获取带有连接池的数据库模版操作工具对象 mapper.deleteUser(userId); } /** *修改用户自身信息的方法 * *@paraminfo *需要修改的用户信息,其中userId属性指明需要修改的用户ID,其他信息为目标值,本人修改信息只能修改密码和头像 **/ publicvoidmodify(UserInfoinfo){ //获取带有连接池的数据库模版操作工具对象 info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //修改本人信息 mapper.modify(info);
}
/** *管理员修改用户信息的方法 * *@paraminfo *需要修改的用户信息,其中userId属性指明需要修改的用户ID,其他信息为目标值 **/ publicvoidadminModify(UserInfoinfo){ info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //修改本人信息 mapper.adminModify(info);
} /** *根据ID获取用户详细信息的方法 * *@paramuserId *需要获取详细信息的用户ID *@return返回查询到的用户详细信息 **/ publicUserInfogetUserById(IntegeruserId){
returnmapper.getUserById(userId); }
publicList<UserInfo>findUserByName(StringuserAccount){ returnmapper.findUsersByName(userAccount); }
/** *验证用户用户名密码是否正确的方法 * *@paraminfo *用于判定用户名、密码的用户对象 *@return用户名、密码是否验证通过,true表示用户名密码正确、false表示用户名或密码错误 **/ publicbooleancheckPass(UserInfoinfo){
//根据给定的用户名查询用户信息 List<UserInfo>userList=mapper.checkPass(info); //判定查询结果集合 //如果没有查询到任何数据 if(userList.isEmpty()){ //返回验证失败 returnfalse; } //如果查询到一条记录则判定密码是否一致 //构建加密对象 BCryptPasswordEncoderencoder=newBCryptPasswordEncoder(); //判定用户给定的密码和数据库中的密码是否一致 //如果一致,则返回true //如果不一致 //返回用户名、密码不匹配 //其他情况下返回验证失败 returnencoder.matches(info.getUserPass(),userList.get(0).getUserPass()); }}在“com.chinasofti.ordersys.mapper”包中,新建UserInfoMapper类,用于实现用户管理模块映射类。包含方法见表4-5。表4-5任务2UserInfoMapper类方法表方法名说明getAllUser()管理员修改用户信息的方法。addUser(UserInfoinfo)新增用户。getUserByPage(intfirst,intmax)获取用户分页数据。getMaxPage()获取用户信息的最大页数。deleteUser(IntegeruserId)删除用户。modify(UserInfoinfo)修改个人信息。adminModify(UserInfoinfo)管理员修改用户信息的方法。getUserById(IntegeruserId)根据用户ID获取对应用户信息。findUserByName(StringuserAccount)根据用户名获取对应用户信息。checkPass(UserInfoinfo)验证用户用户名密码是否正确的方法Ø代码如下:packagecom.chinasofti.ordersys.mapper;
importcom.chinasofti.ordersys.model.UserInfo;importorg.apache.ibatis.annotations.*;
importjava.util.List;
@MapperpublicinterfaceUserInfoMapper{
@Select("selectuserId,userAccount,userPass,locked,roleId,roleName,faceimgfromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdorderbyuserId") publicList<UserInfo>getAllUser();
@Insert("insertintouserinfo(userAccount,userPass,role,faceImg)values(#{info.userAccount},#{info.userPass},#{info.roleId},#{info.faceimg})") @Options(useGeneratedKeys=true,keyProperty="info.userId") publicIntegeraddUser(@Param("info")UserInfouser);
@Select("selectuserId,userAccount,userPass,locked,roleId,roleName,faceimgfromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdorderbyuserIdlimit#{first},#{max}") publicList<UserInfo>getUserByPage(@Param("first")intfirst,@Param("max")intmax);
@Select("selectcount(*)fromuserinfo") publicLonggetMaxPage();
@Delete("deletefromuserinfowhereuserId=#{userId}") publicvoiddeleteUser(@Param("userId")IntegeruserId); @Update("updateuserinfosetuserPass=#{info.userPass},faceimg=#{info.faceimg}whereuserId=#{info.userId}") publicvoidmodify(@Param("info")UserInfoinfo);
@Update("updateuserinfosetuserPass=#{info.userPass},faceimg=#{info.faceimg},role=#{info.roleId}whereuserId=#{info.userId}") publicvoidadminModify(@Param("info")UserInfoinfo);
@Select("selectuserId,userAccount,userPass,locked,roleId,roleName,faceimgfromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdanduserId=#{userId}") publicUserInfogetUserById(@Param("userId")IntegeruserId);
@Select("selectuserId,userAccount,userPass,locked,roleId,roleNamefromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdanduserinfo.userId=#{info.userId}") publicList<UserInfo>checkPass(@Param
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版大型活动安保劳务派遣合同规范文本2篇
- 二零二五版独资公司股权互换与利润共享协议3篇
- 二零二五年度绿色生态店面翻新与能源管理系统承包合同4篇
- 二零二五年度新型绿色屋顶搭建承包工程合同4篇
- 2025年度残疾人福利补贴合同范本3篇
- 2025版美容院美容院美容服务标准化流程制定合同4篇
- 2025年度智能LED显示屏户外广告资源承包合作协议3篇
- 二零二五年酒店客房特色服务项目合作合同3篇
- 2025年度个人房屋抵押贷款合同终止条件通知协议4篇
- 2025年度家庭心理健康服务个人家政服务合同范本(心灵呵护)2篇
- 第22单元(二次函数)-单元测试卷(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 小王子-英文原版
- 新版中国食物成分表
- 2024年山东省青岛市中考生物试题(含答案)
- 河道综合治理工程技术投标文件
- 专题24 短文填空 选词填空 2024年中考英语真题分类汇编
- 再生障碍性贫血课件
- 产后抑郁症的护理查房
- 2024年江苏护理职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
评论
0/150
提交评论