色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

SpringBoot+Vue3前后端分離商城系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)設(shè)計(jì)到部署上線

SpringBoot+Vue3前后端分離商城系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫(kù)設(shè)計(jì)到部署上線 去年接了一個(gè)服裝批發(fā)客戶的單子需求很直接要做一套商城系統(tǒng)前端能展示商品、加購(gòu)物車(chē)、下單后臺(tái)要管商品、訂單、庫(kù)存和會(huì)員還得留出以后接優(yōu)惠券、拼團(tuán)這些營(yíng)銷(xiāo)功能的余地。我最終選了SpringBoot Vue3這套組合來(lái)落地整套系統(tǒng)從前端頁(yè)面到后端接口全部自己搭前后花了差不多三周時(shí)間完成核心流程。這套“springbootvue3服裝商城銷(xiāo)售管理系統(tǒng)”做完之后無(wú)論是拿來(lái)接私活還是作為畢業(yè)設(shè)計(jì)都很值得復(fù)盤(pán)一遍。這個(gè)項(xiàng)目的價(jià)值不在于“商城”本身有多復(fù)雜而在于它把電商業(yè)務(wù)里最典型的幾個(gè)環(huán)節(jié)——商品中心、購(gòu)物車(chē)、訂單流轉(zhuǎn)、庫(kù)存扣減、權(quán)限控制——完整地串起來(lái)了。前端用 Vue3 的組合式 API 配合 Pinia 管理狀態(tài)后端用 SpringBoot 做 RESTful 接口安全認(rèn)證走 JWT RBAC數(shù)據(jù)層用 MyBatis-Plus 操作 MySQL。整套方案不吊高難度但每個(gè)模塊都是實(shí)實(shí)在在能跑的很適合想系統(tǒng)掌握前后端分離開(kāi)發(fā)流程的人拿來(lái)練手。1. 項(xiàng)目整體定位與方案拆解1.1 商城系統(tǒng)的核心需求到底有哪些做系統(tǒng)之前先別急著寫(xiě)代碼把需求拆清楚比什么技術(shù)選型都重要。服裝商城這類(lèi)銷(xiāo)售管理系統(tǒng)表面上是“賣(mài)衣服”實(shí)際上拆開(kāi)來(lái)看需求可以分成三條主線面向顧客的購(gòu)物流程、面向運(yùn)營(yíng)的商品管理、面向財(cái)務(wù)和管理層的訂單與數(shù)據(jù)統(tǒng)計(jì)。顧客端的完整鏈路是注冊(cè)登錄 → 瀏覽商品列表/詳情 → 搜索和篩選按品類(lèi)、價(jià)格、顏色、尺碼 → 加入購(gòu)物車(chē) → 提交訂單 → 模擬支付 → 查看訂單狀態(tài)。運(yùn)營(yíng)端的鏈路是維護(hù)商品分類(lèi) → 上架/下架商品 → 管理商品規(guī)格SKU價(jià)格和庫(kù)存 → 處理訂單發(fā)貨、備注 → 查看會(huì)員列表。管理層關(guān)心的則是銷(xiāo)售數(shù)據(jù)這部分我用了一個(gè)簡(jiǎn)單的統(tǒng)計(jì)接口來(lái)支撐比如按日/按月匯總銷(xiāo)售額、熱門(mén)商品排行等。這個(gè)項(xiàng)目里我把用戶端和管理端合并成了一個(gè)前端工程通過(guò)路由權(quán)限來(lái)區(qū)分角色。管理員登錄后能看到后臺(tái)菜單普通用戶只能看到商城頁(yè)面。這么做的好處是部署簡(jiǎn)單不用維護(hù)兩套前端應(yīng)用也方便統(tǒng)一處理登錄態(tài)。1.2 為什么是 SpringBoot Vue3而不是別的組合技術(shù)選型這件事我一直秉持“夠用、順手、好招人”的原則。SpringBoot 不用多說(shuō)Java 后端在電商這塊的生態(tài)太成熟了MyBatis-Plus 做單表 CRUD 幾乎零成本Spring Security 或者簡(jiǎn)單的攔截器都能搞定鑒權(quán)數(shù)據(jù)庫(kù)用 MySQL 也完全扛得住商城這個(gè)量級(jí)。前端選 Vue3 而不是 Vue2核心原因是組合式 API 在邏輯復(fù)用上太舒服了。商城這種業(yè)務(wù)購(gòu)物車(chē)邏輯、登錄態(tài)邏輯、商品篩選邏輯都是跨頁(yè)面復(fù)用的用 composable自定義組合函數(shù)可以把這些邏輯抽出來(lái)比 Vue2 時(shí)代寫(xiě) mixin 要清晰得多。配套的 Element Plus 組件庫(kù)在后臺(tái)管理界面上完全是量身定做表格、表單、彈窗、分頁(yè)全都現(xiàn)成。還有一個(gè)很實(shí)際的原因Vue3 的生態(tài)現(xiàn)在已經(jīng)很成熟了。Vite 的啟動(dòng)速度比 Webpack 快一個(gè)量級(jí)開(kāi)發(fā)體驗(yàn)好很多。Pinia 相比 Vuex 的樣板代碼少了一大截修改狀態(tài)不需要寫(xiě)一堆 mutation直接改 store 里的 state 就行這對(duì)商城這種狀態(tài)交互頻繁的場(chǎng)景特別友好。1.3 前后端分離的項(xiàng)目結(jié)構(gòu)這樣規(guī)劃整個(gè)工程我拆成了兩個(gè)目錄互不干擾clothing-server/ # SpringBoot 后端工程 ├── src/main/java/com/cshop │ ├── controller/ # 接口層 │ ├── service/ # 業(yè)務(wù)邏輯層 │ ├── mapper/ # MyBatis-Plus 數(shù)據(jù)訪問(wèn)層 │ ├── entity/ # 實(shí)體類(lèi) │ ├── dto/ # 前端傳參對(duì)象 │ ├── vo/ # 返回給前端的數(shù)據(jù)對(duì)象 │ ├── config/ # 配置類(lèi)跨域、攔截器、MyBatis-Plus │ ├── utils/ # JWT工具、統(tǒng)一返回結(jié)果封裝 │ └── CShopApplication.java └── src/main/resources/ ├── application.yml └── mapper/ # 復(fù)雜SQL的XML文件 clothing-web/ # Vue3 前端工程 ├── src/ │ ├── api/ # 接口請(qǐng)求封裝 │ ├── assets/ # 靜態(tài)資源 │ ├── components/ # 通用組件商品卡片、分頁(yè)等 │ ├── composables/ # 組合式函數(shù)購(gòu)物車(chē)、登錄態(tài) │ ├── router/ # 路由配置含權(quán)限守衛(wèi) │ ├── stores/ # Pinia 狀態(tài)管理 │ ├── views/ # 頁(yè)面商城首頁(yè)、商品詳情、后臺(tái)管理 │ └── utils/ # axios實(shí)例、工具函數(shù) └── vite.config.js后端按“Controller → Service → Mapper”三層去寫(xiě)Controller 只管參數(shù)接收和結(jié)果返回業(yè)務(wù)邏輯全在 Service 層。這樣后期如果要把某個(gè)接口拆成微服務(wù)或者引入消息隊(duì)列做訂單異步處理改動(dòng)成本都控制得住。前端按“頁(yè)面 → 組件 → API”分層所有請(qǐng)求都走src/api里封裝的函數(shù)不放裸 axios 調(diào)用在頁(yè)面里。2. 數(shù)據(jù)庫(kù)設(shè)計(jì)與核心表建模2.1 商品表SPU 和 SKU 必須分開(kāi)建商品建模是商城系統(tǒng)的地基這塊設(shè)計(jì)錯(cuò)了后面全是坑。服裝類(lèi)商品有個(gè)典型特點(diǎn)一件衛(wèi)衣SPU會(huì)有多個(gè)顏色、多個(gè)尺碼每個(gè)顏色尺碼組合對(duì)應(yīng)一個(gè)價(jià)格和一份庫(kù)存這就是 SKUStock Keeping Unit。如果把顏色尺碼直接橫著寫(xiě)在商品表里加一個(gè)顏色就要改表結(jié)構(gòu)想想就頭大。我建了兩張表CREATE TABLE spu ( id bigint PRIMARY KEY AUTO_INCREMENT, name varchar(255) NOT NULL COMMENT 商品名稱, category_id bigint COMMENT 所屬類(lèi)目ID, main_image varchar(255) COMMENT 主圖URL, detail text COMMENT 商品詳情富文本, status tinyint DEFAULT 1 COMMENT 1上架 0下架, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE sku ( id bigint PRIMARY KEY AUTO_INCREMENT, spu_id bigint NOT NULL COMMENT 所屬SPU, color varchar(50) COMMENT 顏色, size varchar(20) COMMENT 尺碼, price decimal(10,2) NOT NULL COMMENT 售價(jià), stock int NOT NULL DEFAULT 0 COMMENT 庫(kù)存, image varchar(255) COMMENT SKU圖片, status tinyint DEFAULT 1 );查詢商品詳情的時(shí)候先查 SPU 基本信息再根據(jù) SPU ID 查 SKU 列表。前端展示的時(shí)候用color和size兩個(gè)維度做聯(lián)動(dòng)選擇。價(jià)格區(qū)間比如“199-299”可以直接用 SQLMIN(price)和MAX(price)聚合出來(lái)不用額外冗余字段。2.2 訂單與庫(kù)存表庫(kù)存扣減的兩種模式訂單這塊我用了電商最標(biāo)準(zhǔn)的“訂單主表 訂單明細(xì)表”結(jié)構(gòu)另外單拆了一張購(gòu)物車(chē)表。訂單主表存收貨人信息、訂單總金額、訂單狀態(tài)明細(xì)表存每個(gè) SKU 的購(gòu)買(mǎi)數(shù)量、成交單價(jià)、商品快照。商品快照這個(gè)字段很重要因?yàn)樯唐穬r(jià)格、名稱可能會(huì)變但歷史訂單里的信息必須保持下單那一刻的樣子。CREATE TABLE orders ( id bigint PRIMARY KEY AUTO_INCREMENT, order_no varchar(64) NOT NULL UNIQUE COMMENT 訂單號(hào), user_id bigint NOT NULL, total_amount decimal(10,2) NOT NULL, status tinyint NOT NULL DEFAULT 0 COMMENT 0待付款 1已付款 2已發(fā)貨 3已完成 4已取消, receiver_name varchar(50), receiver_phone varchar(20), receiver_address varchar(255), create_time datetime DEFAULT CURRENT_TIMESTAMP, pay_time datetime ); CREATE TABLE order_item ( id bigint PRIMARY KEY AUTO_INCREMENT, order_id bigint NOT NULL, spu_id bigint, sku_id bigint, sku_snapshot varchar(500) COMMENT SKU信息快照(JSON), goods_name varchar(255), price decimal(10,2), quantity int );庫(kù)存扣減我選了下單時(shí)直接扣減的方案而不是支付時(shí)才扣。為什么因?yàn)橹Ц妒悄M的用戶很可能“下單后不付款”如果庫(kù)存不先鎖住就會(huì)出現(xiàn)超賣(mài)10 件庫(kù)存有 20 個(gè)人下單成功后面真正付款的人反而沒(méi)貨了。當(dāng)然只扣不減也不行所以訂單表里加了個(gè)超時(shí)狀態(tài)超過(guò) 30 分鐘未支付就把庫(kù)存加回去這樣既防止了超賣(mài)也避免了僵尸訂單占用庫(kù)存。2.3 用戶與權(quán)限RBAC 模型在公司項(xiàng)目里最穩(wěn)妥用戶體系我沒(méi)用復(fù)雜的方案就是標(biāo)準(zhǔn)的 RBAC用戶-角色-菜單三張表加兩張關(guān)聯(lián)表。一個(gè)用戶可以有多個(gè)角色一個(gè)角色可以訪問(wèn)多個(gè)菜單按鈕。商城場(chǎng)景里只需要兩種角色一個(gè)是ROLE_USER一個(gè)是ROLE_ADMIN但表結(jié)構(gòu)我依然按通用 RBAC 來(lái)做方便后續(xù)加運(yùn)營(yíng)、客服這類(lèi)角色。菜單表里直接存前端路由的path和組件路徑登錄后根據(jù)用戶角色動(dòng)態(tài)生成可訪問(wèn)的路由表前端配合路由守衛(wèi)做菜單渲染和頁(yè)面攔截。這樣后期要加權(quán)限只需要在數(shù)據(jù)庫(kù)里給角色掛菜單不用改代碼。3. 后端核心模塊實(shí)現(xiàn)要點(diǎn)3.1 JWT 登錄認(rèn)證與權(quán)限攔截?cái)r截器比框架更省心登錄接口的邏輯很直白接收用戶名密碼 → 查數(shù)據(jù)庫(kù)比對(duì)密碼MD5 加鹽 → 生成 JWT 返回給前端。前端把 token 存在 localStorage 里之后每次請(qǐng)求在 axios 攔截器里加到請(qǐng)求頭Authorization。后端我寫(xiě)了個(gè)AuthInterceptor實(shí)現(xiàn)HandlerInterceptor接口Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 放行登錄、注冊(cè)等接口 String uri request.getRequestURI(); if (uri.contains(/api/auth/login) || uri.contains(/api/auth/register)) { return true; } String token request.getHeader(Authorization); if (token null || !token.startsWith(Bearer )) { throw new BusinessException(401, 未登錄); } // 解析token把用戶ID放進(jìn)去 Long userId JwtUtils.parseToken(token.replace(Bearer , )); request.setAttribute(userId, userId); return true; }有同學(xué)會(huì)問(wèn)為什么不直接用 Spring Security說(shuō)實(shí)話如果只是做用戶認(rèn)證和角色判斷Spring Security 的配置成本遠(yuǎn)高于一個(gè)攔截器。Spring Security 適合權(quán)限規(guī)則很復(fù)雜的場(chǎng)景比如按鈕級(jí)細(xì)粒度權(quán)限、OAuth2 第三方登錄這個(gè)服裝商城的管理端就兩類(lèi)角色攔截器里判斷一下角色類(lèi)型完全夠了代碼還更直觀。如果以后要接入 Spring Security這兩套邏輯也可以平滑替換。3.2 商品管理與文件上傳OSS 和本地存儲(chǔ)怎么選后臺(tái)商品管理主要是商品的增刪改查。圖片上傳我重點(diǎn)說(shuō)一下因?yàn)檫@是最容易出 bug 的地方。文件上傳選擇有兩條路一種是傳到阿里云 OSS 這類(lèi)對(duì)象存儲(chǔ)適合部署在云服務(wù)器上的正式項(xiàng)目帶寬和存儲(chǔ)都有保障另一種是傳到項(xiàng)目本地目錄適合本地跑著玩或者部署在廉價(jià)服務(wù)器上的場(chǎng)景。我項(xiàng)目里做了一個(gè)折中圖片保存到服務(wù)器磁盤(pán)的指定路徑數(shù)據(jù)庫(kù)只存訪問(wèn) URL。配置文件里用upload.path指定存儲(chǔ)路徑再用一個(gè)WebMvcConfig把路徑映射成靜態(tài)資源訪問(wèn)registry.addResourceHandler(/images/**) .addResourceLocations(file: uploadPath /);這樣圖片就能通過(guò)http://localhost:8080/images/xxx.jpg直接訪問(wèn)了。部署到服務(wù)器的時(shí)候改一下配置路徑即可不用動(dòng)代碼。上傳接口最后會(huì)返回一個(gè)完整的圖片 URL前端el-upload組件拿到 URL 后直接塞進(jìn)表單字段里預(yù)覽回顯都很方便。3.3 下單流程與庫(kù)存扣減事務(wù)和鎖缺一不可下單是整個(gè)系統(tǒng)里最需要小心的環(huán)節(jié)。我的實(shí)現(xiàn)邏輯是這樣的校驗(yàn)購(gòu)物車(chē)?yán)锏?SKU 是否上架價(jià)格是否變化校驗(yàn)庫(kù)存是否充足計(jì)算訂單總金額創(chuàng)建訂單主表和明細(xì)扣減 SKU 庫(kù)存清空對(duì)應(yīng)購(gòu)物車(chē)記錄這幾步必須在一個(gè)事務(wù)里完成任何一步失敗都要全部回滾否則會(huì)出現(xiàn)“訂單建了但庫(kù)存沒(méi)扣”的臟數(shù)據(jù)。用Transactional注解包住整個(gè)方法另外在扣庫(kù)存的 SQL 上加了條件判斷UPDATE sku SET stock stock - #{quantity} WHERE id #{skuId} AND stock #{quantity}如果update影響行數(shù)為 0說(shuō)明庫(kù)存不足直接拋異常回滾這樣在高并發(fā)下也不會(huì)超賣(mài)。這個(gè)寫(xiě)法比先查后改多了一層保障——查詢和更新之間可能插入別的請(qǐng)求但帶條件的 UPDATE 語(yǔ)句本身是原子性的。對(duì)于這個(gè)量級(jí)的項(xiàng)目來(lái)說(shuō)它開(kāi)箱即用且足夠安全。3.4 統(tǒng)一返回結(jié)果與全局異常優(yōu)雅接口的第一步接口風(fēng)格統(tǒng)一是我一直強(qiáng)調(diào)的。我封裝了一個(gè)ResultT類(lèi)所有接口都返回統(tǒng)一的 JSON 結(jié)構(gòu){ code: 200, message: success, data: { } }同時(shí)用RestControllerAdvice做全局異常處理。業(yè)務(wù)異常返回對(duì)應(yīng)的錯(cuò)誤碼和提示比如庫(kù)存不足返回 5001未登錄返回 401參數(shù)校驗(yàn)失敗返回 400。這樣前端只需要在 axios 響應(yīng)攔截器里統(tǒng)一判斷 code彈錯(cuò)誤提示就行不需要每個(gè)接口單獨(dú)寫(xiě) try-catch。4. 前端 Vue3 落地實(shí)踐4.1 Vite 初始化項(xiàng)目與目錄規(guī)劃前端工程我是用 Vite 初始化創(chuàng)建的命令也很簡(jiǎn)單npm create vitelatest clothing-web -- --template vue然后安裝關(guān)鍵依賴npm install vue-router4 pinia axios element-plusVite 相比 Webpack 的啟動(dòng)速度確實(shí)快幾秒就能起服務(wù)熱更新也是毫秒級(jí)。有個(gè)要注意的地方是 Vite 的端口默認(rèn)是 5173而后端接口跑在 8080所以必須在vite.config.js里配開(kāi)發(fā)代理把/api前綴的請(qǐng)求轉(zhuǎn)發(fā)到后端地址順便解決跨域問(wèn)題export default defineConfig({ server: { port: 5173, proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } } })生產(chǎn)打包之后Nginx 里也配同樣的代理規(guī)則前后端部署在不同端口時(shí)就不會(huì)有跨域煩惱。4.2 axios 封裝與登錄態(tài)刷新機(jī)制前端請(qǐng)求封裝我習(xí)慣統(tǒng)一放在utils/request.js里。創(chuàng)建一個(gè) axios 實(shí)例設(shè)置 baseURL 為/api然后加請(qǐng)求攔截器和響應(yīng)攔截器const request axios.create({ baseURL: /api, timeout: 10000 }) // 請(qǐng)求攔截器自動(dòng)帶token request.interceptors.request.use(config { const token localStorage.getItem(token) if (token) { config.headers.Authorization Bearer ${token} } return config }) // 響應(yīng)攔截器統(tǒng)一處理業(yè)務(wù)錯(cuò)誤和登錄過(guò)期 request.interceptors.response.use( response { const res response.data if (res.code ! 200) { ElMessage.error(res.message || 請(qǐng)求失敗) return Promise.reject(new Error(res.message)) } return res.data }, error { if (error.response error.response.status 401) { localStorage.removeItem(token) localStorage.removeItem(userInfo) router.push(/login) ElMessage.warning(登錄已過(guò)期請(qǐng)重新登錄) } return Promise.reject(error) } )401 統(tǒng)一跳轉(zhuǎn)登錄頁(yè)的邏輯放在攔截器里能省掉每個(gè)頁(yè)面判斷 token 是否失效的重復(fù)代碼。登錄成功后把token和userInfo都存在 localStorage刷新瀏覽器也不會(huì)丟登錄態(tài)。4.3 購(gòu)物車(chē)與訂單狀態(tài)管理Pinia 比 localStorage 靠譜購(gòu)物車(chē)狀態(tài)我存在了 Pinia 里。為什么不直接用 localStorage兩個(gè)原因一是購(gòu)物車(chē)的狀態(tài)需要多頁(yè)面共享頁(yè)面組件里用useCartStore()就能拿到跨組件通信成本為零二是購(gòu)物車(chē)數(shù)量和選中狀態(tài)需要響應(yīng)式更新localStorage 沒(méi)有響應(yīng)式能力操作完還得手動(dòng)刷新視圖。購(gòu)物車(chē) store 的核心就是維護(hù)一個(gè)列表提供添加、刪除、修改數(shù)量、勾選的方法。每次變更之后調(diào)后端接口同步同時(shí)也把最新?tīng)顟B(tài)同步一份到 localStorage 做持久化頁(yè)面刷新后從 localStorage 恢復(fù)。這樣既不丟失數(shù)據(jù)也保留了響應(yīng)式的交互體驗(yàn)。export const useCartStore defineStore(cart, { state: () ({ items: JSON.parse(localStorage.getItem(cart_items) || []) }), actions: { addToCart(item) { const index this.items.findIndex(i i.skuId item.skuId) if (index -1) { this.items[index].quantity item.quantity } else { this.items.push(item) } this.save() }, removeItem(skuId) { this.items this.items.filter(i i.skuId ! skuId) this.save() }, save() { localStorage.setItem(cart_items, JSON.stringify(this.items)) } } })4.4 Element Plus 后臺(tái)管理界面搭建后臺(tái)管理頁(yè)面其實(shí)就是典型的“左側(cè)菜單 右側(cè)內(nèi)容區(qū)”布局。我用 Element Plus 的el-container、el-aside、el-menu搭框架商品管理用el-table展示數(shù)據(jù)配分頁(yè)、搜索、彈窗編輯三個(gè)基礎(chǔ)能力。訂單管理在此基礎(chǔ)上增加了篩選標(biāo)簽按狀態(tài)過(guò)濾和操作按鈕發(fā)貨、查看詳情。商品編輯表單里用到了el-upload上傳圖片:action指向后端的圖片上傳接口on-success回調(diào)里把返回的圖片 URL 賦值給表單字段。這里有個(gè)細(xì)節(jié)el-upload上傳組件走的是原生 XMLHttpRequest沒(méi)法帶上 axios 攔截器里的 Authorization 請(qǐng)求頭所以要在組件上顯式傳headers屬性el-upload :actionuploadUrl :headers{ Authorization: Bearer localStorage.getItem(token) } :on-successhandleUploadSuccess el-button上傳圖片/el-button /el-upload4.5 前端路由守衛(wèi)沒(méi)有登錄就看不了后臺(tái)動(dòng)態(tài)路由權(quán)限這塊我用的是最簡(jiǎn)單的方案在路由配置里給后臺(tái)頁(yè)面加meta: { requiresAuth: true, roles: [ROLE_ADMIN] }然后在全局前置守衛(wèi)里判斷router.beforeEach((to, from, next) { const token localStorage.getItem(token) const userInfo JSON.parse(localStorage.getItem(userInfo) || {}) if (to.meta.requiresAuth) { if (!token) { next(/login) } else if (to.meta.roles !to.meta.roles.includes(userInfo.role)) { next(/) } else { next() } } else { next() } })菜單渲染是在登錄后根據(jù)userInfo.role來(lái)判斷管理員顯示全部菜單普通用戶隱藏后臺(tái)菜單入口。這套方案雖然不像動(dòng)態(tài)路由那樣能在后端配置菜單但應(yīng)付兩個(gè)角色的商城系統(tǒng)完全足夠?qū)懫饋?lái)也直觀。5. 關(guān)鍵業(yè)務(wù)場(chǎng)景的實(shí)現(xiàn)細(xì)節(jié)5.1 多規(guī)格商品選擇聯(lián)動(dòng)顏色和尺碼怎么匹配 SKU服裝商城最典型的交互場(chǎng)景就是選顏色選尺碼。前端拿到商品詳情后把當(dāng)前 SPU 的所有 SKU 列表存在本地然后根據(jù)用戶選擇的顏色、尺碼組合去匹配 SKU。匹配到了就顯示價(jià)格和庫(kù)存匹配不到就提示“該規(guī)格暫時(shí)缺貨”。在 Vue3 里這個(gè)邏輯很適合放在computed里實(shí)現(xiàn)const selectedSku computed(() { return props.skus.find(s s.color selectedColor.value s.size selectedSize.value ) })下單時(shí)提交的是selectedSku.value.id而不是 SPU ID這個(gè)很關(guān)鍵。接口那邊通過(guò) SKU ID 才能查到準(zhǔn)確的庫(kù)存和價(jià)格否則就會(huì)出現(xiàn)“前端選了紅色M碼后端只收到了一個(gè)商品ID”這種尷尬情況。5.2 訂單狀態(tài)流轉(zhuǎn)從待付款到已完成的全鏈路訂單狀態(tài)我定義了 5 個(gè)值流轉(zhuǎn)關(guān)系是狀態(tài)數(shù)值操作者說(shuō)明待付款0用戶下單后默認(rèn)狀態(tài)超時(shí)30分鐘自動(dòng)取消已付款1系統(tǒng)用戶點(diǎn)擊“模擬支付”后觸發(fā)已發(fā)貨2管理員后臺(tái)訂單列表點(diǎn)擊“發(fā)貨”已完成3用戶/系統(tǒng)用戶點(diǎn)擊確認(rèn)收貨或發(fā)貨后15天自動(dòng)完成已取消4用戶/系統(tǒng)用戶主動(dòng)取消或超時(shí)未支付后端在訂單狀態(tài)變更的接口里做了狀態(tài)機(jī)校驗(yàn)比如不能從“待付款”直接跳到“已完成”只允許按順序流轉(zhuǎn)。這個(gè)校驗(yàn)放在 Service 層統(tǒng)一判斷前端雖然做了按鈕控制但必須防一手繞過(guò)前端的非法請(qǐng)求。5.3 銷(xiāo)售數(shù)據(jù)統(tǒng)計(jì)接口管理端的點(diǎn)睛之筆除了常規(guī) CRUD我給管理端加了一個(gè)數(shù)據(jù)統(tǒng)計(jì)面板首頁(yè)展示訂單總數(shù)、銷(xiāo)售總額、用戶總數(shù)、上架商品數(shù)四個(gè)指標(biāo)。查詢語(yǔ)句用 MySQL 的聚合函數(shù)寫(xiě)很簡(jiǎn)單// 今日銷(xiāo)售總額 SELECT IFNULL(SUM(total_amount), 0) FROM orders WHERE status IN (1, 2, 3) AND pay_time CURDATE()再用一個(gè)近七天每日銷(xiāo)售額的折線圖接口返回日期和金額兩個(gè)數(shù)組前端用 ECharts 渲染一下整個(gè)管理端的觀感立刻就不一樣了。這種統(tǒng)計(jì)功能技術(shù)上沒(méi)有難度但對(duì)于商戶來(lái)說(shuō)這往往比那些花哨的表格更有價(jià)值也給項(xiàng)目加分不少。5.4 定時(shí)任務(wù)處理超時(shí)訂單別讓庫(kù)存爛在池子里剛才提到訂單超時(shí)未支付要釋放庫(kù)存這個(gè)功能我用 SpringBoot 自帶的Scheduled定時(shí)任務(wù)來(lái)實(shí)現(xiàn)每 5 分鐘掃描一次超過(guò) 30 分鐘未支付的訂單批量把狀態(tài)改為已取消同時(shí)回補(bǔ)庫(kù)存Scheduled(cron 0 */5 * * * ?) public void cancelTimeoutOrders() { ListOrder orders orderMapper.selectList(new LambdaQueryWrapperOrder() .eq(Order::getStatus, 0) .lt(Order::getCreateTime, LocalDateTime.now().minusMinutes(30))); for (Order order : orders) { // 回補(bǔ)庫(kù)存、更新訂單狀態(tài) orderCancelService.cancel(order.getId()); } }定時(shí)任務(wù)放在項(xiàng)目里簡(jiǎn)單直接缺點(diǎn)是做不到實(shí)時(shí)性極端情況下庫(kù)存可能被鎖定 34 分鐘才釋放。如果要求準(zhǔn)確到秒級(jí)釋放庫(kù)存就得引入消息隊(duì)列做延遲消息比如 RocketMQ 的延遲消息或者 Redis 的過(guò)期監(jiān)聽(tīng)但那個(gè)復(fù)雜度就上去了。這個(gè)商城項(xiàng)目用定時(shí)任務(wù)已經(jīng)夠了我自己的體會(huì)是先滿足業(yè)務(wù)需求再考慮技術(shù)炫技。6. 部署上線與常見(jiàn)問(wèn)題排查6.1 本地聯(lián)調(diào)與打包部署全流程開(kāi)發(fā)完成后要跑通整套環(huán)境我先在本地起兩個(gè)服務(wù)前端的 Vite 開(kāi)發(fā)服務(wù)器5173和后端的 SpringBoot8080通過(guò)代理訪問(wèn)。聯(lián)調(diào)沒(méi)問(wèn)題后進(jìn)入生產(chǎn)模式后端打包mvn clean package -DskipTests java -jar clothing-server-1.0.0.jar前端打包npm run build打包產(chǎn)物在dist/目錄下把dist里的文件復(fù)制到服務(wù)器 Nginx 的 html 目錄然后配置 Nginxserver { listen 80; server_name your-domain.com; root /usr/share/nginx/html; index index.html; # 前端history路由 location / { try_files $uri $uri/ /index.html; } # 接口代理 location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }try_files $uri $uri/ /index.html;這行是 history 路由的關(guān)鍵不加的話刷新非首頁(yè)路由會(huì) 404。這個(gè)坑我第一次部署踩過(guò)排查了半天最后發(fā)現(xiàn)就是少了這一句。6.2 常見(jiàn)問(wèn)題速查表問(wèn)題 1跨域請(qǐng)求被攔截表現(xiàn)瀏覽器 Console 提示 CORS error。原因通常是前端請(qǐng)求地址和后端地址不一致。解決方案優(yōu)先用 Vite/Nginx 代理后端加CrossOrigin只是臨時(shí)手段生產(chǎn)環(huán)境還是得靠代理解決。問(wèn)題 2前端登錄后刷新頁(yè)面變回未登錄原因Vuex/Pinia 里的數(shù)據(jù)是內(nèi)存態(tài)的刷新就沒(méi)了。解決token 和 userInfo 存在 localStorage頁(yè)面啟動(dòng)時(shí)先從 localStorage 恢復(fù) store 狀態(tài)。問(wèn)題 3表單提交時(shí)間字段顯示一串?dāng)?shù)字原因MySQL 的 datetime 類(lèi)型沒(méi)有做時(shí)區(qū)轉(zhuǎn)換Java 接收時(shí)解析成了時(shí)間戳。解決在 application.yml 里配置spring.jackson.date-format: yyyy-MM-dd HH:mm:ss和spring.jackson.time-zone: GMT8。問(wèn)題 4商品圖片上傳成功但訪問(wèn) 404原因配置的upload.path不正確或者路徑?jīng)]映射到靜態(tài)資源。解決確認(rèn)磁盤(pán)絕對(duì)路徑存在檢查WebMvcConfig里的addResourceLocations必須file:前綴。問(wèn)題 5部署到服務(wù)器后接口可以訪問(wèn)但圖片加載失敗原因Nginx 配置沖突location /把靜態(tài)資源請(qǐng)求也接管了但找不到對(duì)應(yīng)文件就返回 index.html。解決單獨(dú)加一條圖片路徑的 locationlocation /images/ { alias /opt/clothing-upload/; }6.3 兩個(gè)值得記住的實(shí)戰(zhàn)經(jīng)驗(yàn)第一個(gè)訂單號(hào)別用自增 ID。訂單表雖然id是自增主鍵但那只能用于內(nèi)部關(guān)聯(lián)展示給用戶的訂單號(hào)必須單獨(dú)生成。網(wǎng)上很多教程直接用主鍵當(dāng)訂單號(hào)用戶看到自己的訂單一號(hào)二號(hào)三號(hào)很容易猜出平臺(tái)有多少訂單這在電商里是不專業(yè)的。我用的是“時(shí)間戳 隨機(jī)數(shù)”的格式比如20241103152012345616 位數(shù)字簡(jiǎn)潔還挺好用。第二個(gè)所有數(shù)據(jù)庫(kù)交互的金額字段必須用 decimal不能用 float 或 double。這是做電商系統(tǒng)的第一天就該養(yǎng)成的習(xí)慣。float 的二進(jìn)制浮點(diǎn)誤差在累計(jì)銷(xiāo)售總額、計(jì)算優(yōu)惠折扣時(shí)會(huì)放大到肉眼可見(jiàn)的錯(cuò)誤用decimal(10,2)才能保證財(cái)務(wù)金額精確計(jì)算。類(lèi)似地前端傳價(jià)格時(shí)用“分”為單位整數(shù)傳遞到顯示層再轉(zhuǎn)成“元”這是很多大廠電商項(xiàng)目的統(tǒng)一規(guī)范既避免浮點(diǎn)誤差也方便對(duì)接支付接口。7. 寫(xiě)在最后的個(gè)人體會(huì)這套服裝商城銷(xiāo)售管理系統(tǒng)做下來(lái)最大的收獲不是掌握了某個(gè)具體技術(shù)點(diǎn)而是把電商業(yè)務(wù)里互相咬合的模塊完整地理解了。比如訂單和庫(kù)存的關(guān)系、JWT 認(rèn)證在前后端分離項(xiàng)目中的完整鏈路、后端事務(wù)和前端狀態(tài)的配合這些知識(shí)單獨(dú)學(xué)任何一門(mén)課都很難有這種“全局觀”。對(duì)于想拿這個(gè)項(xiàng)目練手或者做畢設(shè)的同學(xué)我建議拿到代碼后不要只跑通就結(jié)束而是嘗試自己增加幾個(gè)模塊比如優(yōu)惠券功能下單時(shí)抵扣金額、商品評(píng)論功能用戶下單后評(píng)價(jià)曬圖、收貨地址管理多地址切換。這些擴(kuò)展點(diǎn)每個(gè)都能單獨(dú)寫(xiě)一套邏輯做完之后你對(duì)這套系統(tǒng)的理解會(huì)再上一個(gè)臺(tái)階。項(xiàng)目里最初的代碼風(fēng)格還有很多不規(guī)范的地方比如部分接口參數(shù)沒(méi)有做校驗(yàn)、定時(shí)任務(wù)沒(méi)有加分布式鎖兩臺(tái)服務(wù)器部署時(shí)會(huì)重復(fù)執(zhí)行、圖片上傳沒(méi)有限制文件類(lèi)型等等。我當(dāng)時(shí)是在滿足功能的前提下逐步優(yōu)化、迭代加固的。對(duì)于個(gè)人項(xiàng)目或者畢設(shè)來(lái)說(shuō)先把主鏈路跑通是第一優(yōu)先級(jí)然后在這個(gè)基礎(chǔ)上持續(xù)打磨項(xiàng)目的質(zhì)量是一版一版“練”出來(lái)的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中国zzijzzijzzwww精品| 老女人爆菊| 97超碰伊人| 久久精彩视频| 91人妻做a观看视频| 欧美东京热青青草| 色婷婷在线视频精品导航| 18禁免费视频| 26UUU欧美激情一区二区| 久射吧| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 久久一本大香蕉| 激情久久av一区av二区av| 高清孕妇孕交 交| 中文字幕少妇色| 亚洲AV成人无码一区二区三区在线观看 | 亚洲人成网站7777| 一级AAA片一区二区三区| 九九成人精品| 国产精品久久久蜜臀| a在线观看| 在线播放免费av福利片| 乱论91| 伊人五月天婷婷| 亚洲国产福利视频| 日韩中文字幕宗合在线| 五月天综合网| 亚洲s在线观看| 91丨熟女丨丰满熟女| 91在线欧美| 大香蕉一人| 人妻在线臀日韩| 六月丁香网| 人妻少妇被猛烈进入中| 999国产精品999久久久久久| 人妻熟女一区二区三区视频| 69丨亚洲丨精品丨入口免费播放| 久久超碰天天| 五月天婷婷小说| 久久精品国产亚洲AV成人直播| 欧美组图日韩亚洲中文字幕| 国产久久久久久| 午夜噜噜噜| 中文精品少妇天堂| 91精品久久久久久| 久污| 久久久久久中文| 亚洲欧美日韩电影网站一区| 亚洲成人色情五月天丁香花| 亚洲欧美变态| 欧美色图片91| 果冻传媒A片一二三区 | 一级二级在线观看| 3PAV乱伦视频| 中文AV制服乱伦| 人妻久久一区二区三区| 超碰在线一区| 自拍偷拍第26| 中文字幕精品日韩中文字幕| 强奸乱伦动态污图免费 | 超碰无码加勒比| 亚洲 欧美 制服 另类 自拍| 成人一道本免费视频| 午夜舔阴达高潮视频免费看| 久久精品 六十路 熟女 欧美| 乱人乱色一区二区三区免费| 国产真乱mangent| 永久免费av无码网站国产app| 人妖欧美一区二区| 色色九区| 免费的黄片有限公司| 在线中文字幕极品av| www色婷婷| 操一区| 黑人天8A∨高清网站| 情侣操 逼视频99| 久久9精品网站| 欧美97超碰| 国产400孕妇孕交群| 久久精品无码熟妇一区二区三区视频导航 | 欧美不卡在线美女| 国产精品久久久久久久久久久久久久久久久久| 亚洲欧洲无码97久久精品| 日本有码影片下载| 伊人五月天青青草婷婷| 无码人妻系列少妇| 中文字幕第2页| 欧美性爱综合,免费| 久久久久久AⅤ无码免费肉站| 五月丁香在线| 99re6国产精品99re| 97碰碰色| 蜜乳性色无码专日粉嫩骚逼AV| 亚洲经典啪啪| 桃色人妻在线视频| 99re超碰| 国产激情视频在线观看| KK色在线影院| 久久欲| 婷婷午夜| 啊啊啊好湿久久| 久久综合久色欧美综合狠狠 | 日韩在线观看三级电影| 天天躁日日躁AAAAXXXX国产 | 午夜精品久久一区二区| 亚洲一区日韩| 人妻丰满熟妇av无码区蜜桃| 97干在线视频| 97干色天堂| 91色宗合| 国产激情久久| 大屁股熟女一区二区三区| 日本一级特级毛片视频| 久久国产三区| 久久久偷拍| 日韩av不卡在线观看| 99视频在线| 经典丝袜一区| 久久这里是精品| 蜜臀精品1区2区| 国产丝袜一区二区三区| 性色av大全| 久久黄黄| 国产丝袜欧美在线视频| 欧美中文字幕一区| 美女天天干| 亚洲九九夜夜| 懂色av一区二区三区天美传媒| 欧美日韩中文亚洲v在线综合| 刺激性视频黄页| 人人操欧美风骚| 91N欧美| 99精品无码| 日韩一级特黄av毛片| 青娱乐手机日韩在线视频| A级毛片在线看免费| 不卡超碰护士AV在线免费播放| 久久蜜桃一区二区| 九九性视频| 人人操人人摸超碰| 色呦呦、国产精品| 天天摸夜夜添无码小视频| 蜜屁Av| 人人干人人操人人..com| 97bbn| 亚洲国产成人精品无码专区| 欧美影音在线| 國產尤物AV尤物在線觀看| 欧洲亚洲天堂精品| 国产丝袜视频| 黄片视频观看| 在线国产探花| 大学生美女口爆| 神马午夜久久久| 高清国产性猛交xxxx乱大交| 久久久专区| 午夜福利成人免费视频| 91麻豆天美| 69人妻精品丰满熟女区| 91free福利| 久久一区二区三区四区五区| 91久久久老司机| 欧美午夜一区二区三区| 蜜臀久久99精品久久久久久无删减| 啊啊啊啊嗯嗯嗯用力好爽| 无遮挡男女激烈动态图| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 91香蕉视频在线观看免费| 欧美 日韩 婷婷 五月| 呦呦影院| 狠狠操狠狠燥| 国产日本熟女顶级一区二区三区视频| 91人妻素女| 老司机香蕉久久久久| 天美传媒国产原创中文字幕亚洲欧美另类 | 嗯嗯啊啊操死我| 亚洲欧洲综合成人av一区| 欧美综合综合| 啊啊啊啊啊啊啊啊要喷了| 亚洲麻豆av一区二区| 天综合网欧美| 少妇毛片久久| 又黑又大又粗 | 国产精品久久久久久久久久久久久久久久久久 | 色好看av| 亚洲欧洲另类| 成年人性爱日韩| 欧美色亚洲| 熟妇人妻一区二区| 强奸乱伦av电影| 小说区 图片区色 综合区| 亚洲影院小综合| 亚洲激情网一二三四区| 9 9精品一区二区三区| 一级@啪啪视频| 天天日天天干少妇日| 欧美97日韩精品| 性色avv| 天天干天天狼在线视频| 2019久久久久久久久福利| 91少妇| 18+91网站| 婷婷五月天色网| 曰本91情色| 亚洲天堂自拍| 宗合情欲网| 亚洲情色电影网| 日本性爱少妇| 超碰成人国产| 日韩一区二区精彩视频| 亚洲日韩人妻中文字幕一区| 欧美性爱第1 页| 蜜臀va69| 亚洲综合97| 天天综合中文字幕 91| 国产欧美另类久久久精品课程| 久久久久久久久国产| 色拍偷亚洲| 二级久久网| 91呆哥人妻| 三级片网站在线播放| 秋霞一级视频在线观看免费| 在线国产一区二区av| 国产精品呦一区二区三区| 热无码中文亚洲H一道本一区二区| 国产欧美另类久久久精品课程| 日韩9999| 成人网欧美风情| 超碰精品在线| 熟女被操视频网址| 色综合网1| 国产人妖视频一区在线观看| 国产女人与拘做受视频免费| 夜夜操美女| 日本免费人成视频播放120秒| 国产精品 久久久精品一牛| 国产精品盗摄 偷窥盗摄| 在线免费观看高清无码视频| 国产精品美女久久久久久网站| 国产熟女无套内射| 2017av无码免费无线播| 在线观看色视频| 男女激情黄色网址| 色五月综合网| 国产精品视频| 日韩欧视频| 翔田千里A片一区二区| 色亚洲欧美| 熟妇乱伦一区二区| 熟妇操花| 伊人一区二区三区| 人人操人人精品影片| 97精品一区| 97欧美| 国产日韩精品人妻久久久久色欲网站 | 欧美高清18A片| 日韩欧美大力操| 婷婷亚洲五月***久久| 91狠婷| 蜜桃精品一区二区三区ww | 国产97色在线| 超碰色97| 99精品欧美一区二区三区桃色| 欧美在线干| 欧美图片偷拍| 亚洲色图自拍| 熟妇女伦乱视频| 日韩激情毛片一级久久久| 国产精品人妻一区二区| 97色婷| 91精品成人| 骚货操死你| 男女性感激情网站| 你操综合| 超碰97久| 蜜桃av综合网发布| 老鸭窝黄色视频网站| 亚洲综合嫩| 国产亚洲精品美女久久久久久2021| 91久久99久久91熟女精品| 丰满欧美少妇| 欧美激情 一区| 亚洲阿v天堂无码z2018| 十八禁网站在线| 9美女超碰在线免费观看| 人妻干天天| 麻豆久久久一区二区| 久久精品人妻一区二区| 亚洲天天做日日做天天谢日日| 免费黄色片。| 激情文学 亚洲图片| 国产1024在线播放| 亚洲砖码砖专无区2023| 婷婷15月天青娱乐| 亚洲精品人体| 久久性爱城| 日韩人妻网站| 久操精品| 久久久久久久久久久97| 色吧 综合| 日韩中文字幕二区| 综合网,亚洲,欧美| 欧美亚洲中文| 欧美 中文字幕 一区| 大鸡巴久久| 十八禁视频网站| 东北女人被操| 人妻 丝袜美腿 中文字幕| 一区二区三区国产精产| 亚洲伊人成综合成人网| 99re这里只有精品3| 免费精品无码一级毛片牛牛影视| 亚洲、日韩、综合、另类| 精品久| 亚洲国产精品乱码在线观看| 91成人无码| 探花一区在线| 色香综合| 成人精品视频一区二区| 日本狂喷奶水在线播放212| 日韩精品人妻中文字幕有码午| 欧美色999| 99国内精品| 襙一襙| 超碰人人在线| 久久超碰com| 区一在线观看| 淫荡少妇免费| 久久超碰天天| 久久偷拍人| 18禁精品网站在线看| 久久精品人妻一区二区三区| 国产精品一二三免费网站| 传媒在线观看一区二区三区| 精品人妻1237| 强奸乱伦麻豆| 国产精品不卡少妇白| 欧美1727免费观看视频| 日韩av性爱在线播放| 操淫穴亚洲五月丁香 | 亚洲导航深夜福利| 一二三区精品视频| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 精品无码不卡视频| 快灬快灬 一下爽蜜桃在线观看| 久极品在线观看| 二男一女成人A片| 任我爽视频在线观看| 逼逼逼逼操操操操操操操操操午夜剧场 | 2017天天插| 一区二区 电影 亚洲| 亚洲第一无码播放立川理惠| 操东北女人| 美女啪欧美一区| 亚洲成人日韩小说| 啊啊啊啊啊啊啊在线| 夜色五月天| 久久精品中文字幕无码l| 加勒比中文av| 啊啊啊啊啊啊啊网址在线观看| 五月婷婷丁香六月| 亚洲啪AⅤ永久无码| 日韩成人人妻网站| 99热日| 欧美美女自慰一区二区三区| 偷窥自拍亚洲天堂网爆| 国产亚洲精品玖玖玖在线观看| 97精品视频在线播放| 久久久久中出| 蜜臀国产AV中文字幕| 国产aⅴ无码片毛片一级网站| 九九热re99re6在线精品| 欧美白嫩在线放| 亚洲 日韩 欧美 国产综合体| 能在线播放的国产三级| 亚洲巨爆乳一区二区三区四季网| 怡红院成人视频| 黄色十八禁网站| 亚洲图片欧美91N| 天天操天天舔| 日韩视频啪啪| 三级网色| 殴美在线AⅤ| 国产福利电影| 96久久久久| 亚洲日韩欧美一区二区| 操死我了嗯嗯嗯| 免费农村成人少妇人妻Aa一区二区视频 | 极品销魂美女一区二区| 天天影视之亚洲综合网| 成人精品水蜜桃久久久久久久| 久久黄色性爱视频| 国产综合色精品在线观看| 麻豆尤物视频网| julia在线观看久久| 中文无码一二三区| 青青草女人天天干| 日本熟妇浓毛hdsex| 亚洲色婷婷综合久久久久中文| 超碰69| 学生妹天天看| 91网站在线播放| 中文字幕欧美日本乱码一线二线 | 俄罗斯及免费在线看| 欧美综合另类| 久操操AV电影| 日本1区2区不卡视频| 91亚洲影视| 欧美成97爱| 欧美九九九九九| 男人天堂2017| 欧美一级久久久久久久大片动画| 亚洲欧美日韩免费电影| 国产吞精a级片激情电影| 国产超碰| 97视频在线观看播放与子乱对白在线……| 天天操女人| 草久久久| 嗯嗯啊啊好疼| 超碰 欧美| 麻豆亚洲AV成人无码久久精品| 啊v在线观看视频| 插入逼91| 国产亚洲精品精AV.| 清纯唯美亚洲综合| 国产隔壁老王影院在线| 久久无码电影| 亚洲 欧美都市激情| 9超碰免费| 日本伦理一区二区| 91 亚欧| 精品一级毛片在线观看| 夜夜操青青草| 中文字幕第页| 综合色久欲| 超碰2017| 亚洲巨爆乳一区二区三区四季网| 亞洲久久直播| 亚洲人妻av| 亚洲成人一二三区| 性欧美| 久操91视频| 两性色网| 天天亚洲综合| 欧姜老司机| 久久社区一区二区三区| 国产av又色又爽又黄| 色婷婷五月综合| 99色婷婷中文字幕乱色| 欧美在线天堂| 国产av美女被艹的乱叫| 久久精品一区| 午夜九九| 性爱视频无打码在线观看| 熟妇的味道HD中文字幕| 久久伊人在线五区| 91美女視頻| 97天天综合| 免费无码国产精品v片在线观看| 伊人天堂在线| 伦理日韩国产久久| 一本色道久久天天射天天干| 人人喜人人妻| 青草一区二区| 天天操天天舔| 啊啊啊啊啊啊啊网址在线观看| 熟女人妻精品一区二区视频| 中字乱伦AV| 色阁阁AV综合网| 日本久久女同性恋视频| 久色网| 大香蕉日韩欧美| 91AV入口| 大香蕉伊人在线成人AV在线观看| 精品国产三级av韩国在线| 激情网五月天| 97超碰中文| 女同女同恋久久级三级| 久久只有精品一区二区三区| 久草尤物| 99久久综合| 欧美一区二区三区互相| 久久水蜜臀亚洲AV无码精品| 最新日日夜夜天天干干| 欧美色一二三| 天天操夜夜嗨| 宗合情欲网| 日韩字幕一区| 日本不卡二三区| 中文字幕在线观看永久| 国产精品视频在线播放| 久久无码电影| 天天干人人乐| 殴美牲| 久96热在线观看视频| 顶级少妇BT天堂| 另类图片欧美激情综合| 黄色十八禁网站| 99在线无码精品秘 入口黑人| 亚州色国| 亚洲欧美激情在线视频| 天天夜夜rb| 丰满的三级少妇欧美久久久| 亚洲情色视频| 精品小视频在线| 国产51色综合久久免费| 91黄射| 国产夫妻一区二区| 成人性爱视频在线看| 国产AV线| 97操97色| 亚洲天堂五月天国产| 美欧老女人97| 亚洲综合另类| 欧美日韩*字幕一区| 亚洲天天精品| 超碰久久性爱| 黄色网址在线免费观看| 青青草一区二区三区四| 日本天天吊| 色网在线视频观看免费| 国色综合天| 少妇69中文| 亚洲欧美在线观看免费| 97干在线视频| 成人一区二区三区四区| 欧美在线视频99| 天天做天天爱夜夜爽毛片试看| 丝袜美女诱惑 91 视频| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 天天综合精品| 精品高清一区二区三区三州| 国产精品久久久亚洲第一牛牛_在线观看| 丁香久久| 啪啪资源网| 天天看天天日天天操| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲人成色9999精品久久 | 五月天婷婷小说| 亚洲国产欧美一区二区潘金莲| 美女91网| 婷婷综合在线观看| 婷婷色色网| 色噜噜人妻丝袜a∨先锋影| 搡老熟女免费视频| 四虎AV在线播放| 九九九久千久久激情蜜桃在线看| 国产三级日产三级韩国三级| 四方色播| 噜噜噜亚洲精| 久九9精品| 亚洲狼狼干综合1| 日韩精品永久在线观看| 国产熟女完整版中字| 国产91 丝袜在线播放00-百度| 吊色| 久草老司机| 91精品国久久久久久无码| 夜夜夜久久| caorenqi shipin| 极品色www影院| 欧美日本国产日韩激情视频| 操逼www.| 操屄日韩| 国产中文字幕在线点播| 国产精品内射婷婷一级二| 亚洲图片偷拍欧美| 啊啊啊啊二区好大| 啊啊啊不要好爽日韩无码一区| 国产伦精品免编号公布| 日韩一区二区精品视频| 婷婷99狠狠躁天天躁| 免费精品福利在线观看| 久久久久国产无av| 一区二区娱乐网站| 精品久久99| 丁香五月天激情| 婷色五月| 人妻天天爽夜夜爽爽| 成人情色一区二区| 精品人妻一区二区三区-国产精品| 91一起操| 日韩AV电影网站| 亚洲人精| 国产熟妇一区二区| 9999久久久久| 久久久涩| 激情综合网亚洲| jazzjazz国产精品麻豆| 波多野结衣被操50分钟免费视频 | 91蜜臀人妻中文字幕在线| 亚洲天在线| 国产精品一区二区三区四区五区| 欧美天天干| 人妻一区二区三区四区视频| 成人精品久久久午夜福利| 精品欧美А∨无码黑人大荫蒂| 91精品久久久久五月天精品| 九月丁香婷婷色| 国产麻豆一级精品视频| 欧美亚洲丝袜人妻制服99| 99热97| 蜜臀久久在线视频| 久久久女人| 日韩欧美亚洲自拍偷拍| 天天视频黄| 熟女字幕| 97亚洲综合电影| 裸体美女久久久| 加勒比伊人影院| 天堂网亚洲区手机版| 性色AV网站| 国产人妻天天干精品| 91婷婷伊人狠人| 欧美日韩另类字幕中文| 亚洲第一男人天堂| 超碰九7| 中文字幕亚洲永久精品| 91久久精品蜜臀| 无码视频一区二区| 欧美宗合网| 欧美欧美啪啪视频| 久久久久国产一区二| 欧美三级一级| 九久久精| 日韩国产欧美伦理在线| 日韩亚洲美州欧洲综三区一品在线| 天天澡天天爽日日av| 亚洲图片小说欧洲| 国产91乱伦| 天天淫人人妻日日色| 破处bbq| 搡老女人老91妇女老熟女| 东京热男人的天堂精品| 男人的天堂色偷偷青青草视频婷婷网| 亚洲少妇视频| 日韩av免费一级电影| 激情六月婷婷| 日韩电影中文字幕| 特级毛片特黄久久免费看| 91丝袜美腿网站| 麻豆av一区二区| 麻花豆传媒剧国产MV出差| 久久久99久9| 欧美日韩亚洲天堂| 国产在线精品偷| 日韩99神马视频播放片在线播放| 久操免费电影| 久久久久久久九九九九九九| 狠狠色丁香| 日韩成人人妻网站| 免费A V在线播放| 久草成人福利导航| 国产九九九九九九| 国产女同视频在线播放| 第四色亚洲色图| 1769成人国产精品视频| 蜜臀久久99精品久久久老,,| 天天噜| 色呦呦、国产精品| 韩三级a视频在线观看| 天天α片| 日韩精品中文字幕一| 亚州欧美综合| 亚洲熟女性高潮久久久| 刺激性视频黄页| 国产精品久久久吖| 精品国产一区二区三区久久久蜜臀 | 超碰天天操| 中文字幕第2页| 91久热这里只有精品| 国产精品操| 偷拍欧美激情| 久久透逼视频| 大乔未久88一区| 国产尤物AV尤物在线观看不卡| 亚洲污污网站| 人妻精品视频一区二区| 情色图区| 九久9精品| 91操熟妇| 爱爱动态120秒| 人妻色偷色噜| 激情视频一二三| 一本一道vs波多野结衣| 色天天野狼综合社区| 久久丁香五月婷婷| 78操B| 精品无码一区二区| 北约熟女超碰| 密臀国产在线| 欧洲天天在线| 巨爆乳一区二区爆乳区| 青青草这里只有精品| 二对二中文字幕。| 六月丁香啪啪| 欧美,日韩综合久久| 国产三级片在线观看| 成人十八禁日韩欧美一二三| 日韩一级二级| 亚洲成人美女无吗| 日韩日本欧美在线观看| 91N综合网| 黄呦呦在线| 精品久久視頻在线| 操屄不卡视频| 亚洲 日本 国产 综合| 另类欧美色| 加勒比性爱成人在线| 色综合加勒比四四季| 色综合色综合网| 可能人人看人人摸| 看免费一级在线播放毛片| 农村少妇久久久久久久| 人妻少妇久久中文| 伊人玖玖网| 麻豆区99999| 人妻加勒比东京热| 日韩在线观看中文字幕视频| 亚洲毛片一级带毛片基地| 91精品人妻偷情| 97超碰中文在线| 中文字幕成人乱码熟女精品国50 | 在线观看一级α片刺激高潮视频| 男人天堂新在线| 骚货操死你| 超碰欧美97资源| 超碰在线第一页| 亚洲精品1区| 亚洲精品国产精品乱码不卡| 中文一区二区婷婷视频| 色综合一区二区三巨| 又大又白奶子| 96精品在线| 久久极品一区二区| 国产欧美日韩在线观看麻豆传媒公司| 五月香婷婷| 一区二区三区机械有限公司| 睡产熟女乱伦| 国产91久久九九免费精品无码| 欧美黄片欧美黄片xxx| 五月天丁香婷婷综合网站| 欧美精品一区二区少妇免费A片| 日韩成人高清一区二区| 久久天堂| 亚洲欧美天堂| 欧美日韩在线视频网站| 日韩无码精品综合久久| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 自拍偷拍 日韩欧美| 无码137片内射在线影院| 中文字幕欧美丝袜07资源| 欧美天天| 最新日日夜夜天天干干| 欧美日产国产在线成人第一区| 三级精品三级在线观看| 国产一区在线观看无码AV| 人妻日日干| 囯戸精品高潮呻吟旡码| 神马久久久久久伦理片| 日本精品高清一二区一本到| 婷婷在线精品| 一本一道人妻久久一区二区三区 | oumeisetupian| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 激情99| 无码99| 久久精品老司| 亚洲玖玖爱| 91搡老女人老妇女老熟女歌词翻译| 亚洲高清视频在线免费观看| 国产极品粉嫩馒头一线天av| 色嗨嗨在线| 国产按摩一区二区三区| 久久97资源 网| 超碰中文字幕人妻草一区| 久久精品高清无码一区| 热99re69精品8在线播放| 精品国产99999| 精品久久久久久久| 色综合天天| 思思热在线| 欧亚乱色熟一区二区三四区| 狠狠躁天天躁日日躁97| 熟女人妻精品一区二区视频| 国产精品无码av嫩草| 国产精品亚洲免费| 大香蕉十区| 国产中文字幕在线| 91P0RNY大屁股人妻| 另类TS人妖一区二区三区| 特级毛片特黄久久免费看| 九月婷婷| 91嫩草在线| 男人午夜天堂| 日欧操屄视频| 青青草中文-久久青草精品一区二区三| 人人手机欧洲亚洲国产人妻| 人妻素股| 久久受www免费人成| 亚洲小电影免费涩涩成人在线高清| 伊人黄色片| 野狼激情网| 天天欧美97| 一区二区精品日韩欧美在线观看| 久久精品三级影视| 天天天天天天天天综合| 久久久久亚洲| 国产精品久久伊人| 亚州精品丝袜-不卡成人免费| 又黄又硬又粗又长国产视频| 岛国网址国产 | 一区二区影院| 99国产精品人妻人伦| 亚洲第一视频 欧美风情 日韩| av无线看| 老熟妇综合| 亚洲色人| 久久久久13| 亚洲欧洲综合| 欧美精品999| 99re在线视频| 久久美女国产| 日韩欧亚中文在线| 欧美1区二区三区公司| 日本污ww视频网站| 精品二区久久| 日韩av在线播放不卡| 欧美影音在线| 在线看的av| 九九热超碰97亚洲最新香蕉 | 亚洲男人的天堂V| 亚洲欧洲自拍| 亚洲激情网| 九九九久久久W精品| 婷婷天堂站| 青青草一本道福利视频| 日本操逼aaaaa| 大香蕉操久久| 黄页网站成人免费| 成人三级片无码| 97视频新免费| 国产一区二区三区影片| 欧美色老汉| 美女黄色一级A视频| 久久一二三四五六七八九区| 久久99亚洲精品久久99果| 亚洲图片视频小说| 亚洲熟妇极品| 欧美中字不卡| 熟女人妻一区二区三区| 91热热色| 丝袜制服字幕在线| 男女激烈网站最新| 99色婷婷中文字幕乱色| 国精精品无码一二三区水多多| 玖玖爱综合网| 色婷婷影院| 人人妻人人爽一区二区三区| 91亚洲精品青草| 九九视频黄色片| 成人五月天色网| 日韩成人性日韩成人性爱视频在线免费观看 | 情色图区| 91大学精品激情戏| 亚洲高清无毛一区二区| 97热视频在线观看| 国产精品点击进入在线影院| 欲色啪| 狠狠干,狠狠操| 国产精品视频91久久| 日韩天天本| 国语av最新自产拍在线观看| 欧美色图99| 九九毛片这里只有精品| 青娱乐福利99| 欧美一二级| 婷婷丁香五月激情啪啪| 9丨久久九九九| 97一区二区蜜臀| 免费亚洲黄色视频在线观看 | 人人操人人摸人人骑| 国产午夜视频| 九九aV| 久久成年片色大黄全免费网站| 三级网站超变态精品| 国产69精品久久久久99尤物| 日本二三四区| 91国产精品熟女| 国产性久久久| 亚州性色| 免费啊啊啊| 亚洲色吧网| 91精品久久久久五月天精品| 91麻豆天美传媒在线| 久草在| 91久操| 午夜精品久久久久久久久久蜜桃 | 亚洲综合五月天| 久久丁香久草综合网| 欧美丝袜中文字幕07在线| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 综合久久六月久久婷婷| 亚洲伊人成综合成人网| 欧美一区二区三区成人性生活| 色999人与兽| 97人人模人人爽人人| 国产精品不卡av免费在线观看| 夜色97| 啊啊啊不要啊啊受不了了视频在线| 能看的av| 少妇高潮对白在线观看| 精品国产无码中文| 国产400孕妇孕交群| 97自拍一区| 99热综合| 人看人人摸人人操| 欧美在线永久天堂| 精品熟女呻吟久久91| 日本布卡一区二三区| 人妻丝袜无 码视频专区| 入口操逼网站| 乱伦av国产| 国产精品黑人一区二区三区| 少妇久久久| 久久久涩| 亚洲精品国产拍免费91在线| 日日妻色网| 日韩精品三级片长长久久| 丝袜综合色图| 欧美日韩国产中文精品字幕自在自线,| 我爱大香蕉| 久久仑合| 激情五月天综合网| 亚洲综合九九| 骚女天天综合网| 九9热伊人| 熟人人妻少妇精品久久| 91大胆欧美| 翔田千里一区二区三区奶水| 日本国产亚洲一区在线观看| a一区二区三区乱码在线| 韩国手机不卡无码三级视频| 久久啊啊啊| 国产亚洲精品av一区| a人片中文字幕一区二区| 欧美激情片一区二区| 爱啪精品一区| 好吊色一区| 伦理弟一页| 亚洲资源网| 少妇久久久免费| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 被男人添B超爽视频| 一级做a爰片性色毛片久久| 99re6国产精品99re| 亚洲色图 欧美热图 清纯唯美 另类自拍| 性爱久久| 欧美精品人妻视频| 99热超碰| 男人的天堂欧美| 日韩欧美偷拍美女视频| 我中文字幕6区 | 污污汅18禁网站在线永久免费观看| 一起草欧美| 国产自产一区视频在线| 国产高潮AA片免费看| 欧美性爱精品一区二区| 91N欧美| 欧美欲色| 亚洲激情色片| 九九久精品| 精品人妻一区二区三区免费视频| 97精品免费| 久久国产免费激情视频| 日韩A优精品在线观看| 91精品久久久久久77777| 中文字幕一区av| 超碰中文字幕人妻草一区| 职场同事知名国产国产精品久久欧美日韩| 美女网站黄页| 蜜臀久久99精品久久久电影| 91大神精品长腿在线观看网站| 成人八戒网站| 偷窥自拍亚洲色图| 人妻酒店出差被中出免费在线播放| 91欧美少妇| 国产深夜福利| 日韩在线性爱免费视频| 国产日本久久免费精品| 99免费在线视频| 亚洲欲| 色激情综合网站| 黄色高清无码无码破解免费暗网| 色999人与兽| 嗯阿好爽好紧| 男人的天堂久久| 色翁荡息又大又硬又粗又爽| 五月婷婷色| 蜜臀av中文字幕| 亚洲国产日韩精品久久久| 久久亚洲国产成人| 日本天天操| 99久久9| 中文字幕五月婷婷免费| 五月丁香综合| 天天摸天天舔天天操| 久久国产在线一区二区| 五月天综合在线| av草草在线电影| 亚洲国产精品成人综合| 成人激情无码在线视频| 四虎影库国产精品免费| 乱人乱色一区二区三区免费| 八人操人人摸人人看| 欧美天天综| 麻豆成人影音在线| 男人的天堂一区三区| 97精品国产手机| 日韩无码视频黄色| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 国产成人精品亚洲日本| 欧美天堂亚洲电影院一区在线播放| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 日韩性爱啪啪视频| 久久人妻丝袜一区二区三| 国产青青综合伊人| 国产精品久久久久久 百度| 丝袜狠狠草尤物人妻av91| 亚洲国产精品无石码久久| 在线只有精品| 熟妇人妻精品一区二区| 亚洲激情网| 久久原创中文| 黄色片,com| 极品久久久久久久久久久久久久| 天天做天天爱夜夜爽毛片试看| 精品久久久九九九孕妇| 久久精品| 920日本午夜免费| 亚洲国产97| 国产原创精品| a片久久久久久久久久久久 | 偷拍伦理视频| 亚洲国产精品无石码久久 | 色男人色天堂东京热| 午夜啪啪片| 欧美在线干| 无套后入双马尾| 小少妇| 天天看天天日| 偷拍亚洲高清图片| 伦激情人妻另类人妻| 国产精品第二页| 加勒比在线观看一区二区| 91少妇香蕉久久精品| 日韩欧美一级特黄大片| 啊啊啊操死我了| 志村玲子视频一区二区| 国产毛片毛片4p懂色| 老女人日韩美91| 国产精品久久久久久久久久梁医生| 国模不卡一本二本三电影| 可以在线观看的黄色网址| 啊啊啊好疼| 日韩传媒在线| 美日韩男女操屄视频| 色在线69堂| 色播五月丁香| 99人妻碰碰碰久久久久禁片| 亚洲天堂情色| 久草视频分类在线| 91熟女丨91老女人| 欧美少妇第一页| 天天色综亚洲91污| 精品在线蜜臀| 日韩视频小说在线观看| 亚洲成人久久美女| 91人妻熟女| 国产五码丝袜屁眼| 色婷五月| 色色网91| 久久久久久九九九九九| 天天综合网91入口| 成人三一级一片aaa| 美女久久久久久久久久久| 日韩 成人 有码| 亚洲无码色| 精品成人亚洲午夜电影| 啊啊啊好舒服视频| 台湾肥佬网一区二区三区| 久久久久久AⅤ无码免费肉站 | 亚洲成人性爱在线观看| 老熟女熟妇| 人人干人人搞人人摸| 麻豆三极片| julia ann久久| 国产精品99精品视频网站| 欧洲色| 人人操人人爽人人操人人| 激情久久日韩精品中文字幕麻豆| 久久本道| 精品婷婷| 可以在线观看的黄色网址| 一区二区三区高清| 97人人操人人干| 日韩激情小说一区二区| 91中出| 超碰97国产欧美| 亚洲熟女乱色一区二区三区久久久| 天美传媒国产原创中文字幕亚洲欧美另类| 国产精品亚洲天堂网址| 欧美综合1性辶| 日日干夜夜欢| 黄呦呦在线| 日韩内射视频| 男人天堂久久精品| 久操不卡视频| 中文字幕在线观看永久| 黄片视频观看| 久久国产乱子伦精品免费女,网站| 伦理日韩国产久久| 亚洲91网站| 97中文字幕色| 国产suv精品一区二区四| 婷婷亚洲五月***久久| 国产h片在线观看视频| 久久国产熟女影院| 久久亚洲AV无码白度| 亚洲情色 欧美| 久久精品国产亚洲粉嫩| 九九九久千久久激情蜜桃在线看 | 狠狠操使劲操| 春色91| 亚洲精品电影| 啊啊啊骚| 国产嫩草精品A88AV| 亚洲色天堂九9| 一本久久精品中文字| 一区二区三区日韩欧美| 六月婷激情福利天堂69| 日日爽夜夜爽| 九九99精品视频在线观看| 精品久久无码午夜福利| 一级毛片电影免费看| AV女优男人的天堂| 亚洲综合伊人无码久久| 国产路线专区| 久夜视频| 日本一区二区中文字幕久久| 亚洲色天| 日韩三级在线观看网站| 99热99re6国产在线播放| 性九九九九九九| 91插B网站| 九九九国产| 99无码狠狠久久| AⅤ片水多多| 中国国产精品一区视频| 国产 亚洲 丝袜 制服|