版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
任務(wù)2.實(shí)現(xiàn)用戶管理模塊任務(wù)描述本任務(wù)是基于前后端分離架構(gòu)完成用戶管理模塊及相關(guān)功能。知識準(zhǔn)備1.跨域介紹
跨域是指從一個(gè)域名的網(wǎng)頁去請求另一個(gè)域名的資源。比如從頁面去請求的資源。跨域的嚴(yán)格一點(diǎn)的定義是:只要協(xié)議、域名、端口有任何一個(gè)的不同,就被當(dāng)作是跨域。2.前后端分離與跨域
前后端分離就是前端代碼一個(gè)服務(wù)器,后端代碼一個(gè)服務(wù)器,兩個(gè)不同的服務(wù)之間需要互相請求對方的資源進(jìn)行交互一般情況下是禁止的,就需要使用跨域來解決前后端分離的項(xiàng)目交互。3.跨域訪問需要的技術(shù):
由于瀏覽器一般不對script,img等進(jìn)行跨域限制,所以我們有機(jī)會通過script的方式來實(shí)現(xiàn)跨域訪問。
跨域訪問需要用到兩樣技術(shù),一個(gè)是JSON,一種基于文本的傳輸協(xié)議;另一種是JSONP跨域解決方案。任務(wù)實(shí)施步驟1:實(shí)現(xiàn)用戶管理模塊后臺在“com.chinasofti.ordersys.api.admin”包中,新建AdminUserController類,用于實(shí)現(xiàn)用戶管理模塊接口。包含方法見表4-3。表4-3任務(wù)2AdminUserController類方法表方法名說明adminModify(UserInfoinfo)管理員修改用戶信息的方法。deleteUser(IntegeruserId)刪除用戶。getUser(IntegeruserId)根據(jù)用戶ID獲取對應(yīng)用戶信息。getUserByPage(intpage)獲取用戶分頁數(shù)據(jù)。modifyMyInfo(UserInfoinfo)修改個(gè)人信息。addUser(UserInfoinfo)新增用戶。checkAddUser(StringuserAccount)檢驗(yàn)用戶是否存在。?代碼如下: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"); }
//執(zhí)行修改操作 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){
//獲取最大頁碼數(shù) intmaxPage=service.getMaxPage(10);
//對當(dāng)前的頁碼數(shù)進(jìn)行糾錯(cuò),如果小于1,則直接顯示第一頁的內(nèi)容 page=page<1?1:page;
//對當(dāng)前的頁碼數(shù)進(jìn)行糾錯(cuò),如果大于最大頁碼,則直接顯示最后一頁的內(nèi)容 page=page>maxPage?maxPage:page;
//進(jìn)行分頁數(shù)據(jù)查詢 List<UserInfo>list=service.getByPage(page,10);
//過濾掉密碼信息 list=list.stream().map(item->{item.setUserPass("");returnitem;}).collect(Collectors.toList());
//嘗試將結(jié)果結(jié)構(gòu)化 returnPageResults.success(list,page,maxPage); }
@RequestMapping("/modifyuser") publicResults<UserInfo>modifyMyInfo(UserInfoinfo){ service.modify(info);
//修改信息后需要自動(dòng)注銷 returnResults.success(info); }
@RequestMapping("/adduser") publicResults<UserInfo>addUser(UserInfoinfo){
//添加用戶 service.addUser(info);
//跳轉(zhuǎn)到用戶管理界面 returnResults.success(info); }
@RequestMapping("/checkuser")
//獲取請求參數(shù)中的用戶名信息 publicResults<UserInfo>checkAddUser(@RequestParam("name")StringuserAccount){
//查詢對應(yīng)用戶名的用戶信息 List<UserInfo>list=service.findUserByName(userAccount);
//如果數(shù)據(jù)庫中無數(shù)據(jù) if(list.isEmpty()){
//輸出可以添加標(biāo)識 returnResults.success();
//如果數(shù)據(jù)庫中有數(shù)據(jù) }else{
//輸出不能添加標(biāo)識 returnResults.failure(); } }}在“com.chinasofti.ordersys.service.admin”包中,新建UserService類,用于實(shí)現(xiàn)用戶管理模塊服務(wù)。包含方法見表4-4。表4-4任務(wù)2UserService類方法表方法名說明adminModify(UserInfoinfo)管理員修改用戶信息的方法。deleteUser(IntegeruserId)刪除用戶。getUserById(IntegeruserId)根據(jù)用戶ID獲取對應(yīng)用戶信息。findUserByName(StringuserAccount)根據(jù)用戶名獲取對應(yīng)用戶信息。getByPage(intpage,intpageSize)獲取用戶分頁數(shù)據(jù)。getMaxPage(intpageSize)獲取用戶信息的最大頁數(shù)。modify(UserInfoinfo)修改個(gè)人信息。addUser(UserInfoinfo)新增用戶。checkPass(UserInfoinfo)驗(yàn)證用戶用戶名密碼是否正確的方法?代碼如下: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; } /** *分頁獲取用戶數(shù)據(jù)的方法 * *@parampage *要獲取數(shù)據(jù)的頁號 *@parampageSize *每頁顯示的條目數(shù) *@return當(dāng)前頁的用戶數(shù)據(jù)列表 **/ publicList<UserInfo>getByPage(intpage,intpageSize){ //獲取帶有連接池的數(shù)據(jù)庫模版操作工具對象 intfirst=(1)*pageSize; //返回結(jié)果 returnmapper.getUserByPage(first,pageSize); }
/** *獲取用戶信息的最大頁數(shù) * *@parampageSize *每頁顯示的條目數(shù) *@return當(dāng)前數(shù)據(jù)庫中數(shù)據(jù)的最大頁數(shù) **/ publicintgetMaxPage(intpageSize){
//獲取最大頁數(shù)信息 Longrows=mapper.getMaxPage(); //返回最大頁數(shù) return(int)((rows.longValue()-1)/pageSize+1); } /** *添加用戶的方法 * *@paraminfo *需要添加的用戶信息 **/ publicvoidaddUser(UserInfoinfo){
//創(chuàng)建加密工具
info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //執(zhí)行用戶信息插入操作 mapper.addUser(info); }
/** *刪除用戶的方法 * *@paramuserId *待刪除用戶的Id **/ publicvoiddeleteUser(IntegeruserId){ //獲取帶有連接池的數(shù)據(jù)庫模版操作工具對象 mapper.deleteUser(userId); } /** *修改用戶自身信息的方法 * *@paraminfo *需要修改的用戶信息,其中userId屬性指明需要修改的用戶ID,其他信息為目標(biāo)值,本人修改信息只能修改密碼和頭像 **/ publicvoidmodify(UserInfoinfo){ //獲取帶有連接池的數(shù)據(jù)庫模版操作工具對象 info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //修改本人信息 mapper.modify(info);
}
/** *管理員修改用戶信息的方法 * *@paraminfo *需要修改的用戶信息,其中userId屬性指明需要修改的用戶ID,其他信息為目標(biāo)值 **/ publicvoidadminModify(UserInfoinfo){ info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //修改本人信息 mapper.adminModify(info);
} /** *根據(jù)ID獲取用戶詳細(xì)信息的方法 * *@paramuserId *需要獲取詳細(xì)信息的用戶ID *@return返回查詢到的用戶詳細(xì)信息 **/ publicUserInfogetUserById(IntegeruserId){
returnmapper.getUserById(userId); }
publicList<UserInfo>findUserByName(StringuserAccount){ returnmapper.findUsersByName(userAccount); }
/** *驗(yàn)證用戶用戶名密碼是否正確的方法 * *@paraminfo *用于判定用戶名、密碼的用戶對象 *@return用戶名、密碼是否驗(yàn)證通過,true表示用戶名密碼正確、false表示用戶名或密碼錯(cuò)誤 **/ publicbooleancheckPass(UserInfoinfo){
//根據(jù)給定的用戶名查詢用戶信息 List<UserInfo>userList=mapper.checkPass(info); //判定查詢結(jié)果集合 //如果沒有查詢到任何數(shù)據(jù) if(userList.isEmpty()){ //返回驗(yàn)證失敗 returnfalse; } //如果查詢到一條記錄則判定密碼是否一致 //構(gòu)建加密對象 BCryptPasswordEncoderencoder=newBCryptPasswordEncoder(); //判定用戶給定的密碼和數(shù)據(jù)庫中的密碼是否一致 //如果一致,則返回true //如果不一致 //返回用戶名、密碼不匹配 //其他情況下返回驗(yàn)證失敗 returnencoder.matches(info.getUserPass(),userList.get(0).getUserPass()); }}在“com.chinasofti.ordersys.mapper”包中,新建UserInfoMapper類,用于實(shí)現(xiàn)用戶管理模塊映射類。包含方法見表4-5。表4-5任務(wù)2UserInfoMapper類方法表方法名說明getAllUser()管理員修改用戶信息的方法。addUser(UserInfoinfo)新增用戶。getUserByPage(intfirst,intmax)獲取用戶分頁數(shù)據(jù)。getMaxPage()獲取用戶信息的最大頁數(shù)。deleteUser(IntegeruserId)刪除用戶。modify(UserInfoinfo)修改個(gè)人信息。adminModify(UserInfoinfo)管理員修改用戶信息的方法。getUserById(IntegeruserId)根據(jù)用戶ID獲取對應(yīng)用戶信息。findUserByName(StringuserAccount)根據(jù)用戶名獲取對應(yīng)用戶信息。checkPass(UserInfoinfo)驗(yàn)證用戶用戶名密碼是否正確的方法?代碼如下: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大數(shù)據(jù)分析處理個(gè)人勞務(wù)合同3篇
- 2025年浙江嘉興市海寧市城投集團(tuán)招聘筆試參考題庫含答案解析
- 二零二五年度鞋類產(chǎn)品回收與再利用技術(shù)研究合同3篇
- 2025年度個(gè)人健康保險(xiǎn)連帶擔(dān)保協(xié)議4篇
- 2025年遼寧鞍山國家高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)國有企業(yè)招聘筆試參考題庫附帶答案詳解
- 2025年度個(gè)人果園生態(tài)旅游開發(fā)與承包經(jīng)營合同4篇
- 二零二五年度綠色能源貸款擔(dān)保服務(wù)協(xié)議4篇
- 二零二五年度門窗五金件行業(yè)人才培養(yǎng)與引進(jìn)合同4篇
- 二零二五年度民辦學(xué)校學(xué)生宿舍維修與設(shè)施更新合同4篇
- 2025年度智能門禁系統(tǒng)節(jié)能環(huán)保改造合同文檔4篇
- 第22單元(二次函數(shù))-單元測試卷(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級上冊(含答案解析)
- 藍(lán)色3D風(fēng)工作總結(jié)匯報(bào)模板
- 安全常識課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(含答案)
- 2024年中考英語閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 新版中國食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測試試題含解析
- 2024年山東省青島市中考生物試題(含答案)
- 保安公司市場拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實(shí)體鑒別第2部分:采用鑒別式加密的機(jī)制
評論
0/150
提交評論