免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

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

SpringBoot+Vue3前后端分離商城系統(tǒng)實(shí)戰(zhàn):從數(shù)據(jù)庫設(shè)計到部署上線 去年接了一個服裝批發(fā)客戶的單子需求很直接要做一套商城系統(tǒng)前端能展示商品、加購物車、下單后臺要管商品、訂單、庫存和會員還得留出以后接優(yōu)惠券、拼團(tuán)這些營銷功能的余地。我最終選了SpringBoot Vue3這套組合來落地整套系統(tǒng)從前端頁面到后端接口全部自己搭前后花了差不多三周時間完成核心流程。這套“springbootvue3服裝商城銷售管理系統(tǒng)”做完之后無論是拿來接私活還是作為畢業(yè)設(shè)計都很值得復(fù)盤一遍。這個項目的價值不在于“商城”本身有多復(fù)雜而在于它把電商業(yè)務(wù)里最典型的幾個環(huán)節(jié)——商品中心、購物車、訂單流轉(zhuǎn)、庫存扣減、權(quán)限控制——完整地串起來了。前端用 Vue3 的組合式 API 配合 Pinia 管理狀態(tài)后端用 SpringBoot 做 RESTful 接口安全認(rèn)證走 JWT RBAC數(shù)據(jù)層用 MyBatis-Plus 操作 MySQL。整套方案不吊高難度但每個模塊都是實(shí)實(shí)在在能跑的很適合想系統(tǒng)掌握前后端分離開發(fā)流程的人拿來練手。1. 項目整體定位與方案拆解1.1 商城系統(tǒng)的核心需求到底有哪些做系統(tǒng)之前先別急著寫代碼把需求拆清楚比什么技術(shù)選型都重要。服裝商城這類銷售管理系統(tǒng)表面上是“賣衣服”實(shí)際上拆開來看需求可以分成三條主線面向顧客的購物流程、面向運(yùn)營的商品管理、面向財務(wù)和管理層的訂單與數(shù)據(jù)統(tǒng)計。顧客端的完整鏈路是注冊登錄 → 瀏覽商品列表/詳情 → 搜索和篩選按品類、價格、顏色、尺碼 → 加入購物車 → 提交訂單 → 模擬支付 → 查看訂單狀態(tài)。運(yùn)營端的鏈路是維護(hù)商品分類 → 上架/下架商品 → 管理商品規(guī)格SKU價格和庫存 → 處理訂單發(fā)貨、備注 → 查看會員列表。管理層關(guān)心的則是銷售數(shù)據(jù)這部分我用了一個簡單的統(tǒng)計接口來支撐比如按日/按月匯總銷售額、熱門商品排行等。這個項目里我把用戶端和管理端合并成了一個前端工程通過路由權(quán)限來區(qū)分角色。管理員登錄后能看到后臺菜單普通用戶只能看到商城頁面。這么做的好處是部署簡單不用維護(hù)兩套前端應(yīng)用也方便統(tǒng)一處理登錄態(tài)。1.2 為什么是 SpringBoot Vue3而不是別的組合技術(shù)選型這件事我一直秉持“夠用、順手、好招人”的原則。SpringBoot 不用多說Java 后端在電商這塊的生態(tài)太成熟了MyBatis-Plus 做單表 CRUD 幾乎零成本Spring Security 或者簡單的攔截器都能搞定鑒權(quán)數(shù)據(jù)庫用 MySQL 也完全扛得住商城這個量級。前端選 Vue3 而不是 Vue2核心原因是組合式 API 在邏輯復(fù)用上太舒服了。商城這種業(yè)務(wù)購物車邏輯、登錄態(tài)邏輯、商品篩選邏輯都是跨頁面復(fù)用的用 composable自定義組合函數(shù)可以把這些邏輯抽出來比 Vue2 時代寫 mixin 要清晰得多。配套的 Element Plus 組件庫在后臺管理界面上完全是量身定做表格、表單、彈窗、分頁全都現(xiàn)成。還有一個很實(shí)際的原因Vue3 的生態(tài)現(xiàn)在已經(jīng)很成熟了。Vite 的啟動速度比 Webpack 快一個量級開發(fā)體驗(yàn)好很多。Pinia 相比 Vuex 的樣板代碼少了一大截修改狀態(tài)不需要寫一堆 mutation直接改 store 里的 state 就行這對商城這種狀態(tài)交互頻繁的場景特別友好。1.3 前后端分離的項目結(jié)構(gòu)這樣規(guī)劃整個工程我拆成了兩個目錄互不干擾clothing-server/ # SpringBoot 后端工程 ├── src/main/java/com/cshop │ ├── controller/ # 接口層 │ ├── service/ # 業(yè)務(wù)邏輯層 │ ├── mapper/ # MyBatis-Plus 數(shù)據(jù)訪問層 │ ├── entity/ # 實(shí)體類 │ ├── dto/ # 前端傳參對象 │ ├── vo/ # 返回給前端的數(shù)據(jù)對象 │ ├── config/ # 配置類跨域、攔截器、MyBatis-Plus │ ├── utils/ # JWT工具、統(tǒng)一返回結(jié)果封裝 │ └── CShopApplication.java └── src/main/resources/ ├── application.yml └── mapper/ # 復(fù)雜SQL的XML文件 clothing-web/ # Vue3 前端工程 ├── src/ │ ├── api/ # 接口請求封裝 │ ├── assets/ # 靜態(tài)資源 │ ├── components/ # 通用組件商品卡片、分頁等 │ ├── composables/ # 組合式函數(shù)購物車、登錄態(tài) │ ├── router/ # 路由配置含權(quán)限守衛(wèi) │ ├── stores/ # Pinia 狀態(tài)管理 │ ├── views/ # 頁面商城首頁、商品詳情、后臺管理 │ └── utils/ # axios實(shí)例、工具函數(shù) └── vite.config.js后端按“Controller → Service → Mapper”三層去寫Controller 只管參數(shù)接收和結(jié)果返回業(yè)務(wù)邏輯全在 Service 層。這樣后期如果要把某個接口拆成微服務(wù)或者引入消息隊列做訂單異步處理改動成本都控制得住。前端按“頁面 → 組件 → API”分層所有請求都走src/api里封裝的函數(shù)不放裸 axios 調(diào)用在頁面里。2. 數(shù)據(jù)庫設(shè)計與核心表建模2.1 商品表SPU 和 SKU 必須分開建商品建模是商城系統(tǒng)的地基這塊設(shè)計錯了后面全是坑。服裝類商品有個典型特點(diǎn)一件衛(wèi)衣SPU會有多個顏色、多個尺碼每個顏色尺碼組合對應(yīng)一個價格和一份庫存這就是 SKUStock Keeping Unit。如果把顏色尺碼直接橫著寫在商品表里加一個顏色就要改表結(jié)構(gòu)想想就頭大。我建了兩張表CREATE TABLE spu ( id bigint PRIMARY KEY AUTO_INCREMENT, name varchar(255) NOT NULL COMMENT 商品名稱, category_id bigint COMMENT 所屬類目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 售價, stock int NOT NULL DEFAULT 0 COMMENT 庫存, image varchar(255) COMMENT SKU圖片, status tinyint DEFAULT 1 );查詢商品詳情的時候先查 SPU 基本信息再根據(jù) SPU ID 查 SKU 列表。前端展示的時候用color和size兩個維度做聯(lián)動選擇。價格區(qū)間比如“199-299”可以直接用 SQLMIN(price)和MAX(price)聚合出來不用額外冗余字段。2.2 訂單與庫存表庫存扣減的兩種模式訂單這塊我用了電商最標(biāo)準(zhǔn)的“訂單主表 訂單明細(xì)表”結(jié)構(gòu)另外單拆了一張購物車表。訂單主表存收貨人信息、訂單總金額、訂單狀態(tài)明細(xì)表存每個 SKU 的購買數(shù)量、成交單價、商品快照。商品快照這個字段很重要因?yàn)樯唐穬r格、名稱可能會變但歷史訂單里的信息必須保持下單那一刻的樣子。CREATE TABLE orders ( id bigint PRIMARY KEY AUTO_INCREMENT, order_no varchar(64) NOT NULL UNIQUE COMMENT 訂單號, 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 );庫存扣減我選了下單時直接扣減的方案而不是支付時才扣。為什么因?yàn)橹Ц妒悄M的用戶很可能“下單后不付款”如果庫存不先鎖住就會出現(xiàn)超賣10 件庫存有 20 個人下單成功后面真正付款的人反而沒貨了。當(dāng)然只扣不減也不行所以訂單表里加了個超時狀態(tài)超過 30 分鐘未支付就把庫存加回去這樣既防止了超賣也避免了僵尸訂單占用庫存。2.3 用戶與權(quán)限RBAC 模型在公司項目里最穩(wěn)妥用戶體系我沒用復(fù)雜的方案就是標(biāo)準(zhǔn)的 RBAC用戶-角色-菜單三張表加兩張關(guān)聯(lián)表。一個用戶可以有多個角色一個角色可以訪問多個菜單按鈕。商城場景里只需要兩種角色一個是ROLE_USER一個是ROLE_ADMIN但表結(jié)構(gòu)我依然按通用 RBAC 來做方便后續(xù)加運(yùn)營、客服這類角色。菜單表里直接存前端路由的path和組件路徑登錄后根據(jù)用戶角色動態(tài)生成可訪問的路由表前端配合路由守衛(wèi)做菜單渲染和頁面攔截。這樣后期要加權(quán)限只需要在數(shù)據(jù)庫里給角色掛菜單不用改代碼。3. 后端核心模塊實(shí)現(xiàn)要點(diǎn)3.1 JWT 登錄認(rèn)證與權(quán)限攔截攔截器比框架更省心登錄接口的邏輯很直白接收用戶名密碼 → 查數(shù)據(jù)庫比對密碼MD5 加鹽 → 生成 JWT 返回給前端。前端把 token 存在 localStorage 里之后每次請求在 axios 攔截器里加到請求頭Authorization。后端我寫了個AuthInterceptor實(shí)現(xiàn)HandlerInterceptor接口Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 放行登錄、注冊等接口 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é)會問為什么不直接用 Spring Security說實(shí)話如果只是做用戶認(rèn)證和角色判斷Spring Security 的配置成本遠(yuǎn)高于一個攔截器。Spring Security 適合權(quán)限規(guī)則很復(fù)雜的場景比如按鈕級細(xì)粒度權(quán)限、OAuth2 第三方登錄這個服裝商城的管理端就兩類角色攔截器里判斷一下角色類型完全夠了代碼還更直觀。如果以后要接入 Spring Security這兩套邏輯也可以平滑替換。3.2 商品管理與文件上傳OSS 和本地存儲怎么選后臺商品管理主要是商品的增刪改查。圖片上傳我重點(diǎn)說一下因?yàn)檫@是最容易出 bug 的地方。文件上傳選擇有兩條路一種是傳到阿里云 OSS 這類對象存儲適合部署在云服務(wù)器上的正式項目帶寬和存儲都有保障另一種是傳到項目本地目錄適合本地跑著玩或者部署在廉價服務(wù)器上的場景。我項目里做了一個折中圖片保存到服務(wù)器磁盤的指定路徑數(shù)據(jù)庫只存訪問 URL。配置文件里用upload.path指定存儲路徑再用一個WebMvcConfig把路徑映射成靜態(tài)資源訪問registry.addResourceHandler(/images/**) .addResourceLocations(file: uploadPath /);這樣圖片就能通過http://localhost:8080/images/xxx.jpg直接訪問了。部署到服務(wù)器的時候改一下配置路徑即可不用動代碼。上傳接口最后會返回一個完整的圖片 URL前端el-upload組件拿到 URL 后直接塞進(jìn)表單字段里預(yù)覽回顯都很方便。3.3 下單流程與庫存扣減事務(wù)和鎖缺一不可下單是整個系統(tǒng)里最需要小心的環(huán)節(jié)。我的實(shí)現(xiàn)邏輯是這樣的校驗(yàn)購物車?yán)锏?SKU 是否上架價格是否變化校驗(yàn)庫存是否充足計算訂單總金額創(chuàng)建訂單主表和明細(xì)扣減 SKU 庫存清空對應(yīng)購物車記錄這幾步必須在一個事務(wù)里完成任何一步失敗都要全部回滾否則會出現(xiàn)“訂單建了但庫存沒扣”的臟數(shù)據(jù)。用Transactional注解包住整個方法另外在扣庫存的 SQL 上加了條件判斷UPDATE sku SET stock stock - #{quantity} WHERE id #{skuId} AND stock #{quantity}如果update影響行數(shù)為 0說明庫存不足直接拋異常回滾這樣在高并發(fā)下也不會超賣。這個寫法比先查后改多了一層保障——查詢和更新之間可能插入別的請求但帶條件的 UPDATE 語句本身是原子性的。對于這個量級的項目來說它開箱即用且足夠安全。3.4 統(tǒng)一返回結(jié)果與全局異常優(yōu)雅接口的第一步接口風(fēng)格統(tǒng)一是我一直強(qiáng)調(diào)的。我封裝了一個ResultT類所有接口都返回統(tǒng)一的 JSON 結(jié)構(gòu){ code: 200, message: success, data: { } }同時用RestControllerAdvice做全局異常處理。業(yè)務(wù)異常返回對應(yīng)的錯誤碼和提示比如庫存不足返回 5001未登錄返回 401參數(shù)校驗(yàn)失敗返回 400。這樣前端只需要在 axios 響應(yīng)攔截器里統(tǒng)一判斷 code彈錯誤提示就行不需要每個接口單獨(dú)寫 try-catch。4. 前端 Vue3 落地實(shí)踐4.1 Vite 初始化項目與目錄規(guī)劃前端工程我是用 Vite 初始化創(chuàng)建的命令也很簡單npm create vitelatest clothing-web -- --template vue然后安裝關(guān)鍵依賴npm install vue-router4 pinia axios element-plusVite 相比 Webpack 的啟動速度確實(shí)快幾秒就能起服務(wù)熱更新也是毫秒級。有個要注意的地方是 Vite 的端口默認(rèn)是 5173而后端接口跑在 8080所以必須在vite.config.js里配開發(fā)代理把/api前綴的請求轉(zhuǎn)發(fā)到后端地址順便解決跨域問題export default defineConfig({ server: { port: 5173, proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } } })生產(chǎn)打包之后Nginx 里也配同樣的代理規(guī)則前后端部署在不同端口時就不會有跨域煩惱。4.2 axios 封裝與登錄態(tài)刷新機(jī)制前端請求封裝我習(xí)慣統(tǒng)一放在utils/request.js里。創(chuàng)建一個 axios 實(shí)例設(shè)置 baseURL 為/api然后加請求攔截器和響應(yīng)攔截器const request axios.create({ baseURL: /api, timeout: 10000 }) // 請求攔截器自動帶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ù)錯誤和登錄過期 request.interceptors.response.use( response { const res response.data if (res.code ! 200) { ElMessage.error(res.message || 請求失敗) 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(登錄已過期請重新登錄) } return Promise.reject(error) } )401 統(tǒng)一跳轉(zhuǎn)登錄頁的邏輯放在攔截器里能省掉每個頁面判斷 token 是否失效的重復(fù)代碼。登錄成功后把token和userInfo都存在 localStorage刷新瀏覽器也不會丟登錄態(tài)。4.3 購物車與訂單狀態(tài)管理Pinia 比 localStorage 靠譜購物車狀態(tài)我存在了 Pinia 里。為什么不直接用 localStorage兩個原因一是購物車的狀態(tài)需要多頁面共享頁面組件里用useCartStore()就能拿到跨組件通信成本為零二是購物車數(shù)量和選中狀態(tài)需要響應(yīng)式更新localStorage 沒有響應(yīng)式能力操作完還得手動刷新視圖。購物車 store 的核心就是維護(hù)一個列表提供添加、刪除、修改數(shù)量、勾選的方法。每次變更之后調(diào)后端接口同步同時也把最新狀態(tài)同步一份到 localStorage 做持久化頁面刷新后從 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 后臺管理界面搭建后臺管理頁面其實(shí)就是典型的“左側(cè)菜單 右側(cè)內(nèi)容區(qū)”布局。我用 Element Plus 的el-container、el-aside、el-menu搭框架商品管理用el-table展示數(shù)據(jù)配分頁、搜索、彈窗編輯三個基礎(chǔ)能力。訂單管理在此基礎(chǔ)上增加了篩選標(biāo)簽按狀態(tài)過濾和操作按鈕發(fā)貨、查看詳情。商品編輯表單里用到了el-upload上傳圖片:action指向后端的圖片上傳接口on-success回調(diào)里把返回的圖片 URL 賦值給表單字段。這里有個細(xì)節(jié)el-upload上傳組件走的是原生 XMLHttpRequest沒法帶上 axios 攔截器里的 Authorization 請求頭所以要在組件上顯式傳headers屬性el-upload :actionuploadUrl :headers{ Authorization: Bearer localStorage.getItem(token) } :on-successhandleUploadSuccess el-button上傳圖片/el-button /el-upload4.5 前端路由守衛(wèi)沒有登錄就看不了后臺動態(tài)路由權(quán)限這塊我用的是最簡單的方案在路由配置里給后臺頁面加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來判斷管理員顯示全部菜單普通用戶隱藏后臺菜單入口。這套方案雖然不像動態(tài)路由那樣能在后端配置菜單但應(yīng)付兩個角色的商城系統(tǒng)完全足夠?qū)懫饋硪仓庇^。5. 關(guān)鍵業(yè)務(wù)場景的實(shí)現(xiàn)細(xì)節(jié)5.1 多規(guī)格商品選擇聯(lián)動顏色和尺碼怎么匹配 SKU服裝商城最典型的交互場景就是選顏色選尺碼。前端拿到商品詳情后把當(dāng)前 SPU 的所有 SKU 列表存在本地然后根據(jù)用戶選擇的顏色、尺碼組合去匹配 SKU。匹配到了就顯示價格和庫存匹配不到就提示“該規(guī)格暫時缺貨”。在 Vue3 里這個邏輯很適合放在computed里實(shí)現(xiàn)const selectedSku computed(() { return props.skus.find(s s.color selectedColor.value s.size selectedSize.value ) })下單時提交的是selectedSku.value.id而不是 SPU ID這個很關(guān)鍵。接口那邊通過 SKU ID 才能查到準(zhǔn)確的庫存和價格否則就會出現(xiàn)“前端選了紅色M碼后端只收到了一個商品ID”這種尷尬情況。5.2 訂單狀態(tài)流轉(zhuǎn)從待付款到已完成的全鏈路訂單狀態(tài)我定義了 5 個值流轉(zhuǎn)關(guān)系是狀態(tài)數(shù)值操作者說明待付款0用戶下單后默認(rèn)狀態(tài)超時30分鐘自動取消已付款1系統(tǒng)用戶點(diǎn)擊“模擬支付”后觸發(fā)已發(fā)貨2管理員后臺訂單列表點(diǎn)擊“發(fā)貨”已完成3用戶/系統(tǒng)用戶點(diǎn)擊確認(rèn)收貨或發(fā)貨后15天自動完成已取消4用戶/系統(tǒng)用戶主動取消或超時未支付后端在訂單狀態(tài)變更的接口里做了狀態(tài)機(jī)校驗(yàn)比如不能從“待付款”直接跳到“已完成”只允許按順序流轉(zhuǎn)。這個校驗(yàn)放在 Service 層統(tǒng)一判斷前端雖然做了按鈕控制但必須防一手繞過前端的非法請求。5.3 銷售數(shù)據(jù)統(tǒng)計接口管理端的點(diǎn)睛之筆除了常規(guī) CRUD我給管理端加了一個數(shù)據(jù)統(tǒng)計面板首頁展示訂單總數(shù)、銷售總額、用戶總數(shù)、上架商品數(shù)四個指標(biāo)。查詢語句用 MySQL 的聚合函數(shù)寫很簡單// 今日銷售總額 SELECT IFNULL(SUM(total_amount), 0) FROM orders WHERE status IN (1, 2, 3) AND pay_time CURDATE()再用一個近七天每日銷售額的折線圖接口返回日期和金額兩個數(shù)組前端用 ECharts 渲染一下整個管理端的觀感立刻就不一樣了。這種統(tǒng)計功能技術(shù)上沒有難度但對于商戶來說這往往比那些花哨的表格更有價值也給項目加分不少。5.4 定時任務(wù)處理超時訂單別讓庫存爛在池子里剛才提到訂單超時未支付要釋放庫存這個功能我用 SpringBoot 自帶的Scheduled定時任務(wù)來實(shí)現(xiàn)每 5 分鐘掃描一次超過 30 分鐘未支付的訂單批量把狀態(tài)改為已取消同時回補(bǔ)庫存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ǔ)庫存、更新訂單狀態(tài) orderCancelService.cancel(order.getId()); } }定時任務(wù)放在項目里簡單直接缺點(diǎn)是做不到實(shí)時性極端情況下庫存可能被鎖定 34 分鐘才釋放。如果要求準(zhǔn)確到秒級釋放庫存就得引入消息隊列做延遲消息比如 RocketMQ 的延遲消息或者 Redis 的過期監(jiān)聽但那個復(fù)雜度就上去了。這個商城項目用定時任務(wù)已經(jīng)夠了我自己的體會是先滿足業(yè)務(wù)需求再考慮技術(shù)炫技。6. 部署上線與常見問題排查6.1 本地聯(lián)調(diào)與打包部署全流程開發(fā)完成后要跑通整套環(huán)境我先在本地起兩個服務(wù)前端的 Vite 開發(fā)服務(wù)器5173和后端的 SpringBoot8080通過代理訪問。聯(lián)調(diào)沒問題后進(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)鍵不加的話刷新非首頁路由會 404。這個坑我第一次部署踩過排查了半天最后發(fā)現(xiàn)就是少了這一句。6.2 常見問題速查表問題 1跨域請求被攔截表現(xiàn)瀏覽器 Console 提示 CORS error。原因通常是前端請求地址和后端地址不一致。解決方案優(yōu)先用 Vite/Nginx 代理后端加CrossOrigin只是臨時手段生產(chǎn)環(huán)境還是得靠代理解決。問題 2前端登錄后刷新頁面變回未登錄原因Vuex/Pinia 里的數(shù)據(jù)是內(nèi)存態(tài)的刷新就沒了。解決token 和 userInfo 存在 localStorage頁面啟動時先從 localStorage 恢復(fù) store 狀態(tài)。問題 3表單提交時間字段顯示一串?dāng)?shù)字原因MySQL 的 datetime 類型沒有做時區(qū)轉(zhuǎn)換Java 接收時解析成了時間戳。解決在 application.yml 里配置spring.jackson.date-format: yyyy-MM-dd HH:mm:ss和spring.jackson.time-zone: GMT8。問題 4商品圖片上傳成功但訪問 404原因配置的upload.path不正確或者路徑?jīng)]映射到靜態(tài)資源。解決確認(rèn)磁盤絕對路徑存在檢查WebMvcConfig里的addResourceLocations必須file:前綴。問題 5部署到服務(wù)器后接口可以訪問但圖片加載失敗原因Nginx 配置沖突location /把靜態(tài)資源請求也接管了但找不到對應(yīng)文件就返回 index.html。解決單獨(dú)加一條圖片路徑的 locationlocation /images/ { alias /opt/clothing-upload/; }6.3 兩個值得記住的實(shí)戰(zhàn)經(jīng)驗(yàn)第一個訂單號別用自增 ID。訂單表雖然id是自增主鍵但那只能用于內(nèi)部關(guān)聯(lián)展示給用戶的訂單號必須單獨(dú)生成。網(wǎng)上很多教程直接用主鍵當(dāng)訂單號用戶看到自己的訂單一號二號三號很容易猜出平臺有多少訂單這在電商里是不專業(yè)的。我用的是“時間戳 隨機(jī)數(shù)”的格式比如20241103152012345616 位數(shù)字簡潔還挺好用。第二個所有數(shù)據(jù)庫交互的金額字段必須用 decimal不能用 float 或 double。這是做電商系統(tǒng)的第一天就該養(yǎng)成的習(xí)慣。float 的二進(jìn)制浮點(diǎn)誤差在累計銷售總額、計算優(yōu)惠折扣時會放大到肉眼可見的錯誤用decimal(10,2)才能保證財務(wù)金額精確計算。類似地前端傳價格時用“分”為單位整數(shù)傳遞到顯示層再轉(zhuǎn)成“元”這是很多大廠電商項目的統(tǒng)一規(guī)范既避免浮點(diǎn)誤差也方便對接支付接口。7. 寫在最后的個人體會這套服裝商城銷售管理系統(tǒng)做下來最大的收獲不是掌握了某個具體技術(shù)點(diǎn)而是把電商業(yè)務(wù)里互相咬合的模塊完整地理解了。比如訂單和庫存的關(guān)系、JWT 認(rèn)證在前后端分離項目中的完整鏈路、后端事務(wù)和前端狀態(tài)的配合這些知識單獨(dú)學(xué)任何一門課都很難有這種“全局觀”。對于想拿這個項目練手或者做畢設(shè)的同學(xué)我建議拿到代碼后不要只跑通就結(jié)束而是嘗試自己增加幾個模塊比如優(yōu)惠券功能下單時抵扣金額、商品評論功能用戶下單后評價曬圖、收貨地址管理多地址切換。這些擴(kuò)展點(diǎn)每個都能單獨(dú)寫一套邏輯做完之后你對這套系統(tǒng)的理解會再上一個臺階。項目里最初的代碼風(fēng)格還有很多不規(guī)范的地方比如部分接口參數(shù)沒有做校驗(yàn)、定時任務(wù)沒有加分布式鎖兩臺服務(wù)器部署時會重復(fù)執(zhí)行、圖片上傳沒有限制文件類型等等。我當(dāng)時是在滿足功能的前提下逐步優(yōu)化、迭代加固的。對于個人項目或者畢設(shè)來說先把主鏈路跑通是第一優(yōu)先級然后在這個基礎(chǔ)上持續(xù)打磨項目的質(zhì)量是一版一版“練”出來的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香久久婷| 91热在线| 99热精品在线播放| 婷婷五月天激情开心网| 99热最新网址| 午夜理论片最新午夜理论剧| www.91婷婷| 天天插天天插| 影音先锋一区| 国产密乳av一区二区三区四区| 在线你懂的亚洲欧| 久久丁香九| 欧美色五月| 激情五月天伊人av| 深爱激情五月天婷婷网| 九九成人高清视频| 欧美噜噜噜草| 亚洲综合色色| 五月婷婷色影院| 艹B高清无码| 99热亚洲精品| 色情婷婷| 天天狠天天叉| 99热在这里只有精品| 丁香五月无码| 这里只有精品免费观看网占| 久久亚洲婷婷| 伊人久久丁香婷婷六月五月综合| 久久久精久人妻| AV伊人青草丁香六月| 99热全是精品| 人人操91色| 俺也去色| 狠狠爱深色婷婷综合| 中文字幕在线日亚洲9| 中文AV网站| jiujiu无码五区| 丁香五月色色| 五月天天天综合| 啪啪操超碰| 超碰天堂网| 色婷婷av在线观看| 中字幕视频在线永久在线观看免费 | 激情人妻蜜夜系列区| 狠狠丁香| 久久久婷婷婷| 丁香婷婷综合激情五月色| 日本色色网站| 五月丁香偷拍| 亚洲狠狠色丁香婷婷综合久久| 超碰在线成人| 免费无码毛片一区二区A片| 激情综合久久| 人妻丰满精品一区二区A片| 久久激情五月| 综合久久十| AV亚洲在线| 美女被操一区二区| 亚洲婷婷久久综合| 六月丁香成人| 激情婷婷五月天在线观看| 亚洲人人96@| 日韩黄黄| 亚洲久久婷婷丁香五月天| 亚洲激情 久久| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色五月在线视频观看| 丁香婷婷色五月天| 亚洲AV无码影院| 男人的天堂999| 啪啪综合网| 26uuu国产| 五月激情天| 国产69久久久欧美黑人A片| 色婷婷成人做爰A片免费看网站 | site:jszngf.com| 女性自慰系列第五页| 91婷婷丁香五月天免费视频网站| 五月天成人伊人| 婷婷五月天激情综合婷婷五月天激情综合| 丁香婷婷成人在线播放| 伊人久久五月天| 欧美婷婷日本| 九九色网专区| 97人人操在线| 五月婷婷黄色视频| 另类视在线| 久久五月天婷婷| 激情五月婷| 五月天丁香婷婷久久九| 婷婷四色五月| 天天日天天日天天搞| 99热99热在线| 色日本颜射| 91熟妇大香蕉| 婷婷激情综合无月| 99热主页日本| 9999综合99综合人| 九九sese| 亚洲激情网| 熟女人妻一区二区三区免费看| 亚洲视频码| 成人五月天丁香婷| 天天摸天天日天天舔| 丁香五月影视| 欧洲区自拍| 日韩成人综合网| A A色色| 成年视频免费观看| 免费日韩99| 丁香六月五月婷婷| CHINESE熟女老女人HD视频 | 色婷婷色婷婷五月| www.色五月| 在线91日韩| 只有精品视频在线观看| h亚洲| 婷婷色色五月| 日本色色色| WWW.夜夜| 国产 码在线成人网站| 色色五月激情| www.色擼擼.com| 夜夜夜夜夜操| 五月激情婷婷综合| 26uuu成人网| www.色婷婷| 久久 无毛。| 久久五月天综合视频网站| 99热这里全都是精品| 成 人片 黄 色 大 片| 久久久99免费视频| 五月丁香综合网| 亚洲亚洲人成综合网络| 狠狠干五月丁香| 91精品久久久久久77777| 天天日天天干天天插天天射| 亚洲亚洲人成综合网络| 翔田千里aV中文字幕| 999激情视频| 北条麻妃伊人 | 99热免费观看| 99re久热只有精品6在线直播.com| 久久机热这里只有| 久久婷婷青青草| 色婷婷五月六月丁香综合视频| 九九热自拍| 在线成人视频免费| 伊人玖玖精品| 超碰九色| 欧美成人va| 久久精品9| 亚洲性视频| WWW久久99久久99久久| 五月丁香六月婷婷免费| 香蕉久久国产AV一区二区| 婷婷五月天视| 亚洲蜜桃精久久久久久久久久久久| 五月天婷婷激情网| 国产成人精品一区二三区熟女在线| 99色色网| 六月丁香射婷婷欧美色图片| 综合天堂AV久久久久久久| www.狠狠狠.com| 99re在线播放| 天天日天天爱天天噪| 九色99视频| 色婷婷a三区麻| 97丨九色丨国产丨PORNY| 六月婷五月丁香| 操91| 久狠日av| 武则天精品久久| 久久大香蕉同僚| 欧美VA视频| 成人午夜无码视频| 米奇激情婷婷| 五月天丁香综合在线| 五月婷婷色播| 中文网AV| av一区免费看| www九九热| 丝袜大香蕉| 综合色99| 婷婷五月天开心网| 丁香五月天色| 97干资源在线观看| 色噜噜狠狠色综合日日| 丁香五月天在线| 91日韩美女被插视频| 99精品视频偷拍| 噜噜色天天开心| 丁香六月婷婷综合| 久久天天| 成人婷婷深爱综合网| 九久久九精品视频| 成人丁香五月天| 欧美日韩大黄| 91久久精品无码一区二区三区| 丁香九月综合| 婷婷九月久久| 天天插天天射| 五月婷婷在线视频| 欧美丁香五月天| 天天操天天曰天天射| 丁香五月性爱| 99色| 欧美色五月天| 狠狠色五月激情| 色婷婷伊人激情在线观看| 99综合视频| 超碰在线成人| 久久久99日本大片| 开心五月婷婷伊人| 亚洲精品白浆高清久久久久久| 99无码黄色视频| 99热精品在线播放| av在线免费网站| 开心五月天激情网| 综合婷婷| 欧美 日韩 成人| 久久综合激情五月天| 亚洲天堂色| 天天摸.天天mo| 五月婷婷丁香日韩在线| 91碰碰| 激情婷婷丁香| www.婷婷.com| 婷婷视频在线| 天天做综合网色综合| 中文字幕丰满人妻无码专区| 一本色道久久综合狠狠躁小说| 精品无码久久久久久久久| 五月婷视频| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 欧美激情xxxXX| 亚洲熟女乱色综合亚洲网站| 94干大香蕉| 国产美女无遮挡裸体毛片A片| 99久久这里只有精品| VA国产在线综合网站| 日本视频99| 9精品久久999| 欧美私人家庭影院| AA片在线观看视频在线播放| 99在线精品观看99| 深爱激情五月天| 丁香激情久久| 亚洲中文字幕av| 日韩无码色色| 99福利导航| www.99精品日操伊人乱碰在线| 91九色首页| 热久久91| 丁香五月激情网| 久久狼人天堂| 欧美日朝成人| 五月综合无码| 亚洲亚洲人成综合网络| 少妇性BBB搡BBB爽爽爽视頻| 精品久久久中文字幕大豆网推荐理由| 极品精品一区二区三区在线| 伊综合蕉| 超级碰碰碰碰视频| 九九精品综合| www,五月天com| 免费亚洲婷婷中文字幕| 久久五月天激情美女| 91一起操| 久久性爱网站| 久久久久久久久久久44| 久久九九中文字幕| www。狠狠干。com| 色婷婷丁香中文在线播放| 六月丁香激情最新更新| 婷婷日日夜夜| 殴美日韩成人| 99精品网| 国模九区| 182TV大香蕉| 2016日日夜夜操| 五月天天综合| 丁香六月婷婷综合激情欧美 | 国产日日操夜夜操的肉棒视频| 人人舔天天| 亚洲丁香五月| 婷婷丁香97| 久久久色婷婷五月天| 色综合网上班开心婷婷久久| 亚洲欧洲自拍图片专区五月天| 色大综合| 99热1| 色偷偷综合| 搡BBBB搡BBB搡五十| 懂色av粉嫩AV蜜臀AV| 婷婷丁香五月天色色| 久久久久久久8| 色色丁香| 五月天婷婷爱| 九九色热| 亚洲婷婷五月| 日逼免费视频| 亚洲AV成人精品日韩在线播放| 日日天天干| 成人国产欧美大片一区| 91成人电影| 久久综合九九| 91色吧网| 极品五月天| 人妻久久久| 久热9| 丁香av网| tingtingjiqingwuyue| 五月丁香久久激情网| 久久99热免费最新版| 五月丁香网站| 色玖玖导航| 婷婷六月丁香久| 色五月播五月| 欧美黄色一级录像| 天天激情综合| 色婷婷88| 色综合久久88色综合天天| 久久精彩免费视频| 亚州综合色| 天天在线久久综合| 婷婷五月天丁香| 中文字幕欧美精品久久| 日日爽日日操| 51国精产品自偷自偷综合| 99色在线免费观看视频| 91dy.av| 99视频久久| 182.t午在线观看| 丁香六月开心| 色色色综合网| 久久伦乱| 九九99热久久精品66中文字幕| 99视频| 殴美日比视频| 26.uuu丁香五月婷婷| 成人五月天视频播放| 激情五月综合网| 久久精品噜噜噜成人A∨色欲| 日本在线免费中文com.| 午夜婷婷| 夜夜噜夜夜奇| 三男玩一女三A片| 噜噜干日本| 亚洲色99| 五月婷婷九九热| 天天草天天日| 丰滿爆乳一区二区三区| 五月丁香六月激情啪| 狠狠狠狠狠干| 久久激情视频99| 五月婷婷天堂| 五月天色色网站| 91视频精品99| 亚洲欧美成人在线| 丁香桃色网| XX久久| 免费视频无码| 久久婷婷色情7777网站| 99久久99久久综合| 综合久久婷婷| 99啪啪视频| www色色com| 91在线日| 五月伊人综合| 久久色六月| 色亚洲婷婷| 少妇水多A片太爽了| 在线VA视频| 97干在线| 热的无码综合视频| 狠狠色狠狠爱| 激情五月天色色网| 久久这有这里精品| chaopengdaxiangjiao| 欧美综合婷婷网| 六月婷综合| 五月香六月婷| 欧美99视频| 97久久人人| 热九九精品| 五月天色丁香| 99精品在线下载| 中文字幕91,综合| 五月激情啪啪啪| 激情五月天视频| 丁香九月婷婷| 婷婷激情五月天小说校园| 大大香蕉综合在线| 97色婷| 性 色 婷婷| 20253AV| 日本高清综合网五月丁香| 五月天狠狠色| 极品少妇高潮啪啪AV无码| 99精品网站| 狠狠干狠狠操狠狠爱| 碰97久久| 狠狠999| 六月婷婷最新网址| 五月婷久久| 永久AⅤ1| 久久婷婷五月综合97色一本| 五月激情婷婷偷拍| 日本五月婷| 丁香五月激情月| 婷婷五月天AV在| 超碰99在线| 六月婷婷亚洲| 天天色月| 亚洲另类毛片| 国产精品久久久久久喷浆| 婷婷十月激情综合网| 中文无码婷婷| 色婷综合| 伊人久久大香线蕉精品| 久碰视频| 99这里只有精品视频| 久久视这里只有精品| 9一精品视频观看| www.99视频| 99视频91| 风流少妇A片一区二区蜜桃| 99这里| 成人片久久网站| 成人一区在线观看| 伊人久久大香线蕉精品| 五月色综合| 大婷婷色呦呦噜噜色呦呦噜噜| 99re这里只有精品国产99| 六月激情综合| 日日婷婷不卡| 丁香九月激情| 久久久性爱网| 综合久久六月| 婷婷五月性感| 思思久久99热只有频精品66| 泰州成人视频| 久久作爱| 26uuu丁香婷婷五月| 婷婷五月偷拍| 99色播| 91精品久久久久久综合五月天| 国产女生爱爱AA| 最近韩国日本免费高清观看| 网站免费一站二站| 伊人五月天综合网| 亚洲一区国产传媒| 中文字幕激情综合| 狠狠干在线| 久婷婷久草| AV中文网| 深夜婷婷 丁香| 东京热免费视频| 天天操无码| 天天色天天日| 激情五月天小说网| 丁香五月成人| 五月99久久| 五月天综合色| 九九这里是免费的视频5| 欧美丁香婷婷五月天| 婷婷五月天天aV| 操日本人妻视频| 色综合xx| 99热九九在线| 激情深爱综合网| 婷婷欧美激情| 五月丁香久久| 99久久久免费| 超碰AV在线| 日韩成人综合网| 人妻AV在线| 97天堂| 国产伦亲子伦亲子视频观看| 99ER热精品视频| 精品香蕉99久久久久网站| 风流少妇A片一区二区蜜桃 | 婷婷激情五月天桃花网| 婷久久综合| 狠狠色九月| 七月激情六月婷婷综合在线播放| 91ncm视频| 色玖玖综合网| 天天网站天天爽| 涩涩五| 伊人深爱综合| 激情丁香五月| 丁香六月婷婷综合| 99久久婷婷国产综合精品| 亚洲日本三级片| 色婷婷丁香社综合| 激情黄色小说色五月| 噜噜噜噜婷婷五月天| 国产Va视频| 久色五月| 日本色色网| 色五月婷婷网| 97在线日本| 日日干天天射| 激情都市五月天| 激情五月天综合| www.99热视频| 狠狠婷婷色| 国产亚洲99久久| 激情网战码亚洲A| 五月深爱婷婷| 四月婷婷五月丁香| 丁香成人五月天| 欲色人妻| 99热这里只有99| 精品国产va久久久| 激情六月婷婷| 五月丁香婷婷啪啪综合| 就爱干 在线| 久久婷婷六月综合综合| 任你爽视频| 五月天婷婷网站| 91狠狠色丁香婷婷综合久久精品| 日日肏夜夜干| 五月综合色| 热婷婷在线视频| jiujiu热在线视频| 狠狠狠狠狠狠| 婷婷六月天国产综合| 丁香五月婷婷av| 69精品人人人人人人人人人| 色五月激情综合| 激情五月天无码| 国产免费一区二区三州老师F1F1| 婷婷在线网| 色情五月综合婷婷| 色噜噜狠狠一区二区三区| 亚洲操操操| 偷偷操99| 青草少妇激情| 色婷婷很很十八禁| 99热欧| 成人婷婷| 五月丁了香蕉综合| 日本成人噜噜| 国产偷人爽久久久久久老妇APP | 婷婷五月天久| 激情五月婷婷啪啪| 超碰久热| 色综合网上班开心婷婷久久| 五月丁香成年黄色| 日韩精品二三区| www.夜夜| 少妇丁香婷婷| 99久久99九九99九九九| 九九热99视频在线| 99只有这里有精品在线视频| 色吊操色妞| 插插插色综合网| 欧美日综合| 97超碰在线免费观看| 99久久玖玖| 天天操天天干天天射| www..com色爱| 国产精品久久久久久久久久免费| 五月花综合网| 狠狠色综合网| 色五月丁香五月五月婷婷| www婷婷| 久热黄色| 九九色人| 日本色频| h在线看免费版在线看| 欧美日本VA| 婷婷激情五月综合| 五月天婷婷综合久久| 六月激情婷婷| 亚洲精品网站色视频| 激情五月天影院| 一区色色色色网| 99A片| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网 | 婷婷91| 台湾综合丁香五月蜜桃| 国产精品久久久久久妇女6080| 国产肥白大熟妇BBBB视频| 亚洲久久视频| 五月丁香综合色婷婷| 在线A色| 色九九中文字幕| www色五月天| 九九九九九九九九九九九九九国产精品| 五月激情婷婷丁香| 99碰视频| www.狠狠操| 99re这里只有精品免费| 热思思九九| 婷婷五月天欧美图片在线播放电驴| 99碰碰碰| 日本综合久久| 呦呦v线| 91久久人人操| 婷婷五月天奸女| 99综合网| 国av网| 婷婷 伊人 久久| 色婷婷手机在线| 国产人妻777人伦精品HD| www.色擼擼.com| 久久久久久99精品无码| 久久怡红院| 色婷视频| 久久婷婷五月国产色综合激情| 色色网站毛片| 丁香婷婷五月色成人网站| 狠狠做六月爱婷婷综合aⅴ| 丁香综合日产精品久久| 大香蕉网站,大香蕉综合| 亚洲天堂亚洲色色色| 日韩av高清| 婷婷丁香五另类网站| 五月丁香六月婷婷色| 欧美日韩国产一区二区| 色999;丁香五月| 激情五月狠狠| 桃色五月婷婷| 超碰丁香五月| 狠狠爱综合网| 97超碰在线免费观看| 开心婷婷五月花| 欧美、日韩、中文、制服、人妻| 年轻的妺妺伦理HD中文| 99啪| 激情小说视频图片| 天天干狠狠操| 色色操| 五月婷婷丁香网| 精品夜夜澡人妻无码AV| 五月丁香啪啪激情| 激情深爱综合网| 777久久精品| 任你操精品免费| www.金莲av| 五月丁香综合| 91超碰人人操| 综合性爱网| 五月丁香狠狠| www.伊人天堂偷偷婷婷| 婷婷五月激情的图片| 婷婷性爱视频在线| 91九色偷拍| 99精品偷自拍| 色五月婷婷五月天| 超碰人人在线| 激情婷婷丁香五月天| 丁香六月五月天| 99精品久久久久久久婷婷久久| 玖玖资源站国产| 久久婷婷啪啪视频| 婷婷激情在线| www.久久综合| 激情图片婷婷| 亚洲欧洲午夜成人精品av| 3DAV亚洲香蕉久久 一区二区| 欧美性色A片免费免费观看的| 97色碰| 91ncom.色| 婷婷涩涩五月天| 高清无码入口| 婷婷网五月天| 天天操人人干| 99色色视频| 日本五月天婷婷丁香| 五月激情婷婷开心| 99视频只有这里精品| 色色色欧美色色| 亚洲看av的网站| 天天操夜夜夜拍拍拍| 亚洲成色综合网站免费观看| 天天噜天天爱| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 色色色.COM| 狠狠五月激情婷婷直播片| 婷婷六月中文字幕| 精品久久久久久久人妻| 婷婷五月天成人综合网| 婷婷丁香五月高清| 五月天最新网| 五月丁香自拍| 欧美婷婷综合| 99国产精品久久久久久久久久久| 欧美情色一区| 婷婷综合av| 亚洲综合另类| 亚洲va欧美| 亚洲开心激情网| 人妻VideOssS人妻| 色偷偷五月天| 亚洲精品大片| 牛牛澡牛牛爽| 9久久久| 久久婷五月婷| 影音先锋 91工厂| 欧美成人精品老美女噜噜噜| 99热在线播放| 99re8在这里只有精品| 国产毛片精品一区二区色欲黄A片| 久久9热好| 超碰AV成人| 久久亚洲婷婷| 俺去也在线官网| 开心五月深爱五月| www.激情| 9色在线视频精品观看| 欧美三级黄色片久久| 婷婷丁香射射| 无码色色| 久久五月丁香| 五月深情久久| 久久精品爱爱| 99热.com| 九九热精品在线| 丁香五月激情啪啪综合| 日日噜噜夜夜狠狠久久丁香六月| 六月丁香婷啪射| 婷婷九月丁香| 四LLL少妇BBBB槡BBBB| 91综合在线观看首页| 色情五月天小说| 亚洲最大五月天成人网| 激情五月天婷婷五月天| 五月丁香综合网| 五月亭亭六月色| 激情5月婷婷| 欧美久热| 久久 婷婷 五月天| 天天舔天天摸视频| 色噜噜狠狠色综无码久久合欧美| 丁香五月 激情文学| 色一区高清| 婷婷五月色激情欧美激情| 五月天激情小说网| 久久99久久99精品免观看粉| 久99热| 色播五月丁香| www.色五月.com| 狠狠激情五月天| 99热这里只有精品99| 九色地址91视频| 激情丁香网| 五月天精品视频| 大香蕉七区| 2w在线视频| 超碰免费在线| 久久久五月天| 五月激情综合网| 91re色综合视频| 99热国产国产| 思思久久99| 99久久久久久www| 六月丁AV| 97日本在线播放| 怡红院院在线导航网| 色综合婷婷| 99在线视频免费| 国产综合网在线| 色无婷婷| 亚洲丁香五月美女| 丁香激情五月天| 欧美性二区| 色婷婷操逼| 婷婷色在线视频| 婷婷天天婷婷天天澡| 丝袜熟女一区二区三区| www,婷婷五月天,com| 无码少妇高潮喷水A片免费| 99在线er热| 丁香五月香蕉| 久久久婷婷| 丁香五月久久| 日本三级韩三级99久久| 97人人干人人操| 99精品久久久| 色婷婷小说| 香蕉久久国产AV一区二区| 97色婷婷成人综合在线观看| 中文资源在线a| 亚洲成人网在线观看| 青青草色在线视频观看| 婷婷色五月激情| 亚洲小视频免费播放| 99热这里是精品| 99极品视频| 97精品人人A片免费看| 99热综合在线观看| 丁香五月激情啪啪综合| 激情5月婷婷| 日本天堂免费99| 婷婷丁香97| 这里只有精彩小视频视频网站| 六月丁香久久| 五月婷婷免费| YW无码| 婷婷欧美激情综合| 99色这里| WW婷婷五月天com| 深爱婷婷丁香五月激情| 操久久精| 狠狠干,狠狠操| 狠狠999| 日本玖玖在线| 婷婷97碰碰| 好吊操这里只有精品| 九九热青草| 色婷婷丁香五月天在线观看| 国产精品操| 九月婷婷久久| 天天做天天爱天天做| 99操免费视频| 久热大香蕉| 丁香5月婷婷| 日本99视频精品免费播放| 九九精品热| 五月天中文网| AV动漫不卡无码免费| 99超级碰免费视频| 无码 色| 中文字幕av久久爽一区| 国精产品一区一区三区免费视频| 激情五月,婷婷五月,丁香五月| 成人综合视频在线| 色伦专区97中文字幕| 婷婷狠狠色| 女人露出p毛视频www网站| 婷婷五月丁香基| 久久激情五月天| 天天拍夜夜爽日日| 狠狠色丁香婷婷久久综合| 天天插天天射| 色色99| 丁香五月婷婷亚洲综合精品在线| 五月婷婷七月丁香| 欧美大片| 另类A片| www.开心激情| 色五月xxx| 婷婷伊人五月丁香天堂网| 天天日天天插| 丁香六月婷婷综合缴| 色色影院aaaav| 五月丁香激情综合啪啪| 久久一级AV| 国产一级片| 欧美人妻一区二区| 五月丁香 久久久| 武则天精品久久| 日本大逼91| 久久久亚洲精品一区二区三区浴池| 99在线视频免费| 狠狠狠五月婷婷六月丁香| 性爱综合网| 欧美 日韩 成人| 日本91在线播放| 99热这里只有精品8| 99狠狠| 日本社区五月天激情| 九九sese| 天天综合网、天天综合色| 91久久电影| AV操一操| 综合久久狠狠| 日欧一片内射VA在线影院| 大香蕉综合网| 爆乳熟妇一区二区三区爆乳| 深爱激情丁香| 国产一二三四五六七八视频| 激情综合网激情五月网| 激情六月下句是什么| 九九九九国产| 丁香五婷婷| 日本黄色精品| 99欧美三级视频| 日韩熟女啪啪视频| 成人综合视频网址| 国产又爽又猛又粗的视频A片| www.婷婷六月天| 午夜五月天| www超碰| 操97| www.久久99| 久久xxxx| 综合色久| 99热在线观看免费精品| 色屌丝中文字幕| 天天操天天操天天操天天操天天操 | 开心激情站婷婷五月天| 精品99只有。| 国产精品A片| 五月丁香花激情综合网| 这里只有精品视频一区| 热的无码综合视频| 97五月天婷婷| 色五XX| 几激情五月婷婷色五月色天堂| 五月丁香六月综合激情无码软件亮点| 亚艹艹| 99热这里只有精品青草| 五月天婷婷基地| www.色色五月天.com| 丁香大香蕉| 五月丁香六月成人| 99热这里是精品| 屁股翘好撅高迎合跪趴| 五月婷婷 婷婷五月 一区二区 久久久| 五月婷婷影视| 99热www| 亚洲性爱电影| 亚洲午夜精品久久久久久人妖| 九九热这里精品| 亚洲综合婷婷五月| 五月天婷婷在线播放免费| 99热免费在线| 日本欧美国产| 99re这里只有| 国产免费性爱| 极品九九九九九九| 激情久久综合| 97激情五月天| 亚洲视频图片婷婷五月| 九九热99免费视频| 久久五月婷| 九九色插| 伊人狠狠丁香婷婷综合尤物| 激情丁香五月婷| 亚州精品久久久久AV无码| 久热免费| 五月激情在线| 六月婷婷天堂| 日本99视频| 米奇影视资源777狠狠色婷婷五月天激情网 | 欧美激情丁香五月天久久婷婷一区| 第四色婷婷色五月| 一丁香五月天月AV| 色9999日韩国产| 日韩AV在线免费| 91欧美| 巴基斯坦粉嫩无码视频| 九九色逼| 色婷婷亚洲综合网站| 久九色| 婷婷丁香在线播放| 六月婷婷五月天| 人妻有码乱操| 欧亚洲在线高清视频| 久热这里只有精品在线| 国产激情久久久| 大香蕉丁香婷婷| 五月天激情综合在线| 五月开心深深爱激情综合| 欧美日韩91| 激情五月天婷婷丁香| 久久久思思热| 草综合14| 99视频在线观看地址| 色天堂在线| 亚洲综合色五月| 亚洲综合五月天婷婷| 色欧美日| 精品九九视频| 伊人啪啪网| 亚洲精品成人片在线播| 色亚洲色宗合| 欧美婷婷五月丁香| 国产精品岛国片在线观看免费| 色五月开心五月激情五月| 97影院一级片| 色九九九综合| 人妻videos人妻高清| 二色av| 热久久色| 婷婷五月天在婷| 天天日天天插| av九九| www.99日本| 婷婷97C| 亚洲精品小视频| 色狠狠色| 99熟女| 婷婷丁香色情| 婷婷色片| 五月婷婷丁香网| 色月视频| 国产免费一区二区在线A片视频| 色你久久| 99热66| 94干大香蕉| 久久久久久丁香五月| 国产SUV精品一区二区883| 九九九这里只有精品| 久久久99久久| WWW.久久久久久久| 超碰国产AV| 青青草婷婷久久| 婷婷情色激情| 亚洲av另类在线观看| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | www久久艹| 欧美啪啪网| 99热.com| 天堂综合久久| 天天舔天天摸天天射| 婷婷五月激情中文字幕| 9久热| 久久婷婷激情| 热久久91| 深爱开心激情| 色婷婷黄色网络| 99热6精品| 99色综合| 99色在线视频| 久久婷婷五月草视频在线播放| 五月花婷婷| 色宗合,宗合网| 中国女人内射6XXXXX| 亚洲综合婷婷五月| 无码碰碰| 色综合色综合色综合色综合| 久久大香蕉伊人| 激情综合一| 综合激情在线| 激情综合网五月天| 这里只有精品视频国产| 亚洲熟妇AV乱码在线观看| 日本在线噜噜| 五月婷婷www| AA久久| 亚州精品色情无码A片| 九九碰九九爱97| 天天久久综合| 色五月色情| 色色五月天婷婷丁香| 婷婷丁香五另类网站| 国产成人网址| 婷婷伊人五月| 久久人五月| 色五月在线观看| 久久五月婷综合网| 色综合9| 亚洲乱码在线观看| 天天日日夜夜爽| 韩日另类| 天天拍天天操| 噜噜狠狠| 99青青草99| 九月色婷婷综合| 五月天合网| 五月综合激情网| 五月 成人 婷婷| 五月婷婷内射网| 97色五月丁香婷婷| 变态另类9| 黄涩毛片| 婷婷刺激综合| 超碰久热| 538在线精品| 狠狠大香婷婷爱| 五月婷婷伊| 亚洲AV网站| 我要射综合| 婷婷五月AV| 五月婷婷视频| 亚洲精品国产setv| 激情婷婷另类| 久久精品4| 日本91在线播放| 成人av在线电影| m色激情网| 久九色| 六月丁香婷婷五月| 99热综合网| 五月伊人91| 五月丁香狠狠爱| 99热这里只有精品在线播放 | 欧美人妻一区二区| 色五月丁香六月欧美综合| 国产67194| 激情国产五月| 婷婷深爱五月天| 夜夜干天天操| 天天cha成人综合网| 色99在线视频| AV中文字幕夜夜操b天天摸bb | 亚洲熟妇AV乱码在线观看| 欧美97色| 激情五月色播五月| 一本道综合网| 丁香五月激情婷婷| 五月婷婷丁香网| 日韩一本操| 激情综合五月| 丁香五月先锋| 亚洲日日操| 五月丁香网中文字幕| 午夜丁香| …亚洲黄色在线播放日韩、av中文a…| 亚洲亚洲人成综合网络| 天干夜夜操| 99爱视频| 婷婷午夜天| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 4399在线观看免费毛片| 97干在线免费| 激情网 久久| 六月婷婷激情| 天天骑天天操| 久久总和99| www.91在线看| 97人人妻人人艹| 中文字幕网伦射乱中文| 久久综合婷婷| 婷婷六月久久综合导航| 欧美天堂久久| www.日本91| 狠狠综合网| 五月丁香另类图片| 婷婷五月天电影区小说区| 人妻操操色| 六月丁香婷婷尤物| 欧洲亚洲免费视频区| 婷婷激情丁香五月天综合| 精品久久99码| 另类天堂| 99re热精品在线视频| 综合色播| 亭亭五月丁香综合欧美| 天天爽在线视频| 97色色色色| 激情宗合哪里能看| 日韩好吊操| 99热精品在线播放观看| site:picc-up.com| 伊人国产婷婷五月天| 6080av| 99亚洲色| 五月丁香六月婷婷的女人| 色丁香五月婷婷在线| 激情六月婷| 久久综合人妻| 日本WWW九九九| 丁香五月另类色婷婷麻豆| 91热久久| 日韩一级片| 色www久视频| 亚州成人综合在线| 国产黄色av| xx久久| 99亚洲天堂| 99这里只有精品视频在线| 久久五月婷综合网| 婷婷五月六月激情| 99综合| 黄色AV日韩| www.夜夜| 丁香99| 六月婷欧美| 婷婷 久综合| 色婷婷丁香AV综合| 亚洲日日日| 久久三级视频| 久久精品一区二区三区四区| 99爱在线| 丁香六月激情四射| 丁香九月综合| 无码人妻一区二区三区免费九色| 日日影院 | 午夜九九九九九九九九九九九九九| 久激情网| 国产做爰视频免费播放| 9色小视频在线观看| 9久国产精品| 色婷婷婷婷成人网| www.com五月天| 99热这里只有精品在线| 国产精产国品一二三在观看| 日本欧美999久久久三级片| 97精品欧美91久久久久久久| 丁香五月婷婷六月婷| 五月天天视频| 久99| 婷婷丁香五月基地| 开心五月六月婷婷| 中文字幕在线人妻| 狠狠色狠狠| 欧美亚洲操逼| 97在线精品视频| 在线看九一V图片| 97人人搞| 色婷五月| 色色色色综合| 碰超在线九色| 99亚色色色| 日日操天天操| 极品人妻VIDEOSSS人妻| 婷婷五月精品中文字幕| 婷婷色五月久久| 99久久婷婷| 香蕉五月婷婷| 亚洲色爽| 五月丁香六月成人| 五月美女婷婷风骚| 五月丁香日本一抹本| 色99视频| 琪琪布丁香社区激情五月天| 五月丁香综合啪啪| 色综合色色| 综合av在线| 婷婷在线观看五月天在线视频| 激情丁香五月婷婷| 综合色、色综合| 2014天天爽| 色六月婷婷| 欧美婷婷综合网| 啪啪啪五月天| 99久久久久| 丁香婷婷黄网站| 九九無妻| 久久婷婷一级片| 亚洲婷婷开心五月| 久久99综合| a九九热www| 中文av网| 五月婷婷黄网站大全| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 欧洲亚洲免费视频9| 99在线视频喷水| 久久机热这里只有精品| 欧美大肥婆大肥BBBBB| 美日韩成人| 国产操碰| 九九热99视频在线| 草五月| 日韩啪图| 中文乱子伦视频| 人人肏逼视频在线一区二区| 丁香五月激情六月| 99re6在线视频精品免费| AV色五月婷婷| 五月丁香六月婷婷网| www色婷婷| 99亚洲天堂| 四虎成人精品永久免费AV九九| 99色五月| 91丨九色丨白浆秘| 97人人搞| 高清不卡一区| 91精品久久久久久| aa久久| 亚洲av网站| 中文字幕黄色片| 色婷婷狠狠爱| 9色视频在线| 久操无码| 开心深爱激情网| 开心五月六月婷婷| 日韩AV片|