基于Java+SpringBoot+vue+node.js的图书购物商城系统详细设计和实现
🍅 作者主頁:Java李楊勇?
🍅 簡介:Java領域優質創作者🏆、【java李楊勇】公號作者? ?簡歷模板、學習資料、面試題庫【關注我,都給你】
🍅文末獲取源碼聯系🍅
前言介紹:
? ? ? ?隨著信息技術的不斷發展,我們現在已經步入了信息化的時代了,而信息時代的代表便是網絡技術的日漸成熟,而現在網絡已經和我們的生活緊密的聯系起來了,我們不敢想象沒有網絡我們的生活會像怎么樣,也許就像食物中沒有調料現在的生活離開了網絡會變得索然無味。通過網絡我們可以足不出戶的做許多事情,例如圖書、工作、娛樂、學習,購物、交友和購物等等許多我們數之不盡的事情,而就是因為網絡我們的生活變得多姿多彩,或許有時甚至幫我們省下不少的時間和給予了我們更多的機遇。圖書商城網站對我們來說就有這些意義。圖書網站商城主要是一些企業為了不流失因為某種原因而沒有到商店店里選購商品的圖書商品客人而設計的一個通過 Internet 就能進行方便購物的系統,圖書商城網站的誕生為商家們提供了很多的機遇。另外一個原因是現在網上購物對圖書商品人們生活和工作中所產生的壓力是很有用的,所以現在網購的需求量在不斷的提升,然而有很大一部分人還是沒有時間去選購自己喜歡的圖書商品, 所以圖書商城網站應運而生。在圖書商城網站誕生之后,用戶可以在空余的時間通過互聯網來查看大量品種的家具商品信息,從而很方便地購買到自己心儀的圖書之類的、在另外一方面就是提高了圖書商家的銷售額。總的來說,圖書商城網站既滿足了很多人的需要,也不會影響到工作或者浪費了休息的時間,它是一個很有意義的系統
完整地址:2022Java畢業設計項目:圖書購物商城系統(java+springboot+vue實現)-寒假了快卷起來
功能截圖:
用戶登錄:分為管理員和普通用戶進行登錄、也可以在這里進行用戶注冊。?
?錄入相關用戶信息進行用戶注冊。
前端用戶首頁:用戶登錄后、可以查看新上架的書籍和新聞等書籍、點擊進入詳情查看購買書籍、加入購物車以及對自己感興趣的圖書書籍收藏等操作和查看修改個人信息等。
?管理員首頁:圖書商城系統管理員登錄后主要有如下功能模塊:用戶個人信息管理、修改密碼、圖書分類管理、圖書商品詳情管理、首頁輪播圖管理、新聞資訊管理、書籍列表管理、訂單信息管理和發貨信息管理等。
?書籍分類管理:
新聞資訊管理:
??添加和修改:
?書籍列表管理:管理員可以添加、修改、刪除和查詢書籍列表信息
?書籍詳情:
訂單管理:管理員可以查看訂單信息、對訂單狀態進行修改、以及發貨狀態等操作 。?
發貨信息管理:??
?前端書籍詳情頁:
?書籍詳情頁:查看書籍詳情信息、可以加入購物車和收藏等查看、也可以查看用戶評論信息等
?填寫購物車信息等。
我的個人中心:
工具語言:
?開發工具:IDEA 2021.3、navicat for mysql 、postman。
開發語言:java、jdk1.8、mysql5、node.js 14。
硬件環境:Windows 10操作系統、Google瀏覽器等。
主要技術:springboot、mybatis-plus、vue、element UI、mysql等
關鍵代碼:
用戶相關:
package com.controller;/*** 登錄相關*/ @RequestMapping("users") @RestController public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登錄*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("賬號或密碼不正確");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注冊*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){ // ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用戶已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密碼重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("賬號不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密碼已重置為:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 獲取用戶的session用戶信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){ // ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用戶已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){ // ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();} }?攔截配置:
package com.config;@Configuration public class InterceptorConfig extends WebMvcConfigurationSupport{@Beanpublic AuthorizationInterceptor getAuthorizationInterceptor() {return new AuthorizationInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**");registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/upload/**"); // registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/virtuel/**");super.addInterceptors(registry);}/*** springboot 2.0配置WebMvcConfigurationSupport之后,會導致默認配置被覆蓋,要訪問靜態資源需要重寫addResourceHandlers方法*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/resources/").addResourceLocations("classpath:/static/").addResourceLocations("classpath:/upload/").addResourceLocations("classpath:/admin/").addResourceLocations("classpath:/front/").addResourceLocations("classpath:/public/");registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/work/");super.addResourceHandlers(registry);} }?全局yml配置:
# Tomcat server:tomcat:uri-encoding: UTF-8port: 8080servlet:context-path: /springbootUCW7vspring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/springbootUCW7v?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTCusername: rootpassword: 123456servlet:multipart:max-file-size: 10MBmax-request-size: 10MBresources:static-locations: classpath:/testStatic/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/#mybatis mybatis-plus:mapper-locations: classpath*:mapper/*.xml#實體掃描,多個package用逗號或者分號分隔typeAliasesPackage: com.entityglobal-config:#主鍵類型 0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";id-type: 1#字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"field-strategy: 2#駝峰下劃線轉換db-column-underline: true#刷新mapper 調試神器refresh-mapper: true#邏輯刪除配置logic-delete-value: -1logic-not-delete-value: 0#自定義SQL注入器sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjectorconfiguration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: true#springboot 項目mybatis plus 設置 jdbcTypeForNull (oracle數據庫需配置JdbcType.NULL, 默認是Other)jdbc-type-for-null: 'null' #文件虛擬路徑 virtuel:filePath: C:/Users/Administrator/Desktop/lyy/數據庫設計:
數據庫名:springboot-book
文檔版本:V1.0.0
文檔描述:圖書商城系統數據庫表設計描述
表config (配置文件)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | name | varchar | 100 | 0 | N | N | 配置參數名稱 |
| 3 | value | varchar | 100 | 0 | Y | N | 配置參數值 |
表dingdanxinxi (訂單信息)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | dingdanbianhao | varchar | 200 | 0 | Y | N | 訂單編號 |
| 4 | shujimingcheng | varchar | 200 | 0 | Y | N | 書籍名稱 |
| 5 | fenlei | varchar | 200 | 0 | Y | N | 分類 |
| 6 | fengmian | varchar | 200 | 0 | Y | N | 封面 |
| 7 | jiage | varchar | 200 | 0 | Y | N | 價格 |
| 8 | shuliang | int | 10 | 0 | Y | N | 數量 |
| 9 | zongjiage | varchar | 200 | 0 | Y | N | 總價格 |
| 10 | xiadanriqi | date | 10 | 0 | Y | N | 下單日期 |
| 11 | beizhu | varchar | 200 | 0 | Y | N | 備注 |
| 12 | yonghuming | varchar | 200 | 0 | Y | N | 用戶名 |
| 13 | shouji | varchar | 200 | 0 | Y | N | 手機 |
| 14 | dizhi | varchar | 200 | 0 | Y | N | 地址 |
| 15 | ispay | varchar | 200 | 0 | Y | N | 是否支付 |
表discussshuji (書籍評論表)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | refid | bigint | 20 | 0 | N | N | 關聯表id |
| 4 | content | varchar | 200 | 0 | N | N | 評論內容 |
| 5 | userid | bigint | 20 | 0 | N | N | 用戶id |
表fahuoxinxi (發貨信息)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | dingdanbianhao | varchar | 200 | 0 | Y | N | 訂單編號 |
| 4 | shujimingcheng | varchar | 200 | 0 | Y | N | 書籍名稱 |
| 5 | fengmian | varchar | 200 | 0 | Y | N | 封面 |
| 6 | shuliang | varchar | 200 | 0 | Y | N | 數量 |
| 7 | fahuoriqi | date | 10 | 0 | Y | N | 發貨日期 |
| 8 | yonghuming | varchar | 200 | 0 | Y | N | 用戶名 |
| 9 | shouji | varchar | 200 | 0 | Y | N | 手機 |
| 10 | dizhi | varchar | 200 | 0 | Y | N | 地址 |
| 11 | dingdanzhuangtai | varchar | 200 | 0 | N | N | 訂單狀態 |
表news (新聞資訊)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | addtime | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | |
| 3 | title | varchar | 200 | 0 | N | N | 標題 | |
| 4 | picture | varchar | 200 | 0 | N | N | 圖片 | |
| 5 | content | longtext | 2147483647 | 0 | N | N | 內容 |
表shuji (書籍)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 |
| 1 | id | bigint | 20 | 0 | N | Y |
| 2 | addtime | timestamp | 19 | 0 | N | N |
| 3 | shujibianhao | varchar | 200 | 0 | Y | N |
| 4 | shujimingcheng | varchar | 200 | 0 | N | N |
| 5 | fenlei | varchar | 200 | 0 | N | N |
| 6 | fengmian | varchar | 200 | 0 | Y | N |
| 7 | zuozhe | varchar | 200 | 0 | Y | N |
| 8 | chubanshe | varchar | 200 | 0 | Y | N |
| 9 | jiage | int | 10 | 0 | Y | N |
| 10 | shuliang | int | 10 | 0 | Y | N |
| 11 | shujijieshao | longtext | 2147483647 | 0 | Y | N |
| 12 | clicktime | datetime | 19 | 0 | Y | N |
| 13 | clicknum | int | 10 | 0 | Y | N |
表shujifenlei (書籍分類)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | fenlei | varchar | 200 | 0 | N | N | 分類 |
表storeup (收藏表)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | userid | bigint | 20 | 0 | N | N | 用戶id |
| 4 | refid | bigint | 20 | 0 | Y | N | 收藏id |
| 5 | tablename | varchar | 200 | 0 | Y | N | 表名 |
| 6 | name | varchar | 200 | 0 | N | N | 收藏名稱 |
| 7 | picture | varchar | 200 | 0 | N | N | 收藏圖片 |
表token (token表)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | userid | bigint | 20 | 0 | N | N | 用戶id |
| 3 | username | varchar | 100 | 0 | N | N | 用戶名 |
| 4 | tablename | varchar | 100 | 0 | Y | N | 表名 |
| 5 | role | varchar | 100 | 0 | Y | N | 角色 |
| 6 | token | varchar | 200 | 0 | N | N | 密碼 |
| 7 | addtime | timestamp | 19 | 0 | N | N | 新增時間 |
| 8 | expiratedtime | timestamp | 19 | 0 | N | N | 過期時間 |
表users (用戶表)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | username | varchar | 100 | 0 | N | N | 用戶名 |
| 3 | password | varchar | 100 | 0 | N | N | 密碼 |
| 4 | role | varchar | 100 | 0 | Y | N | 角色 |
| 5 | addtime | timestamp | 19 | 0 | N | N | 新增時間 |
表yonghu (用戶)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | |
| 2 | addtime | timestamp | 19 | 0 | N | N | |
| 3 | yonghuming | varchar | 200 | 0 | N | N | 用戶名 |
| 4 | mima | varchar | 200 | 0 | N | N | 密碼 |
| 5 | xingming | varchar | 200 | 0 | N | N | 姓名 |
| 6 | xingbie | varchar | 200 | 0 | Y | N | 性別 |
| 7 | touxiang | varchar | 200 | 0 | Y | N | 頭像 |
| 8 | shouji | varchar | 200 | 0 | Y | N | 手機 |
| 9 | dizhi | varchar | 200 | 0 | Y | N | 地址 |
項目總結:
? 經過近期對 java 面向對象程序設計、前端知識以及JAVA 框架的掌握和學習,以及這段時間本圖書商品網站系統的開發,讓我更加了解到 java 學習的重要性。在開發這個系統是哪個,我完成了多個實驗以及教育系統的功能測試,在這個階段的系統開發學習當中,我從認識到熟悉java,而后到能夠自主運用相關技術。通過對 java 相關技術的了解和學習,我發現了它確實有很多方便之處,比如java集抽象性和封裝性以及繼承性和多態性于一體,實現了對代碼重用和代碼擴充功能,提高了整體軟件開發的速度和效率。對于我們計算機這個專業來說學好 java 語言是很重要的一部分,所以在開發這個教學管理系統項目的過程中我都盡力理解 java 編程思想、掌握基本技巧,常見的方法和對錯誤的解決能力、盡量學到最多的知識。 我學習程序設計的主要目的就是提高自己實際問題的程序解決方案的關鍵技能和技術, java 面向對象程序設計是一科實踐性相對來說非常比較強的語言了、springMVC框架的MVC三層架構模式、和框架中遇到的設計模式將數據訪問和邏輯操作都集中到組件里面去了 , 增強了系統的復用性和擴展性。使系統的擴展性大大增強。以及前端jQuery、js、jsp、css樣式的掌握讓我對網頁的布局、樣式調整、字體等讓網頁效果實現的更加精準。?
系列推薦:
基于java+Springboot操作系統教學交流平臺詳細設計實現
基于java Springboot+Vue+shiro前后端分離疫情防疫管理系統設計和實現
基于SpringBoot+vue的學生信息管理系統詳細設計
基于java ssm springboot+mybatis酒莊內部管理系統設計和實現
基于java springboot+mybatis電影售票網站管理系統前臺+后臺設計和實現
java springboot+mybatis電影售票網站管理系統前臺+后臺設計和實現
源碼獲取:
大家點贊、收藏、關注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯系方式👇🏻👇🏻👇🏻
打卡 文章 更新?136/? 365天
?精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
Java項目精品實戰案例《100套》
web前端期末大作業網頁實戰《100套》
總結
以上是生活随笔為你收集整理的基于Java+SpringBoot+vue+node.js的图书购物商城系统详细设计和实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《零基础》MySQL 连接的使用(二十)
- 下一篇: linux php oci,Linux下