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

ARTICLE DETAIL

資訊詳情

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

SpringBoot手工藝品電商平臺開發(fā)實(shí)戰(zhàn):從設(shè)計(jì)到部署

SpringBoot手工藝品電商平臺開發(fā)實(shí)戰(zhàn):從設(shè)計(jì)到部署 簡介本資源是一套完整的基于SpringBoot的手工藝品銷售系統(tǒng)畢業(yè)設(shè)計(jì)項(xiàng)目面向計(jì)算機(jī)專業(yè)本科生及Java全棧初學(xué)者解決課程設(shè)計(jì)選題難、環(huán)境搭建復(fù)雜、前后端聯(lián)調(diào)無參考等實(shí)際痛點(diǎn)。壓縮包共830個(gè)文件含133個(gè)Java后端核心代碼、66個(gè)Vue前端組件、157個(gè)JS交互邏輯、162個(gè)SVG圖標(biāo)資源、79個(gè)GIF動效素材及1個(gè)SQL數(shù)據(jù)庫腳本覆蓋用戶管理、商品發(fā)布、購物車、訂單支付與評論模塊的全鏈路實(shí)現(xiàn)包體大小34.18MB。所有代碼經(jīng)完整測試可直接運(yùn)行并配套詳細(xì)部署文檔與bat一鍵啟動腳本如run.bat、install.bat顯著降低環(huán)境配置門檻。學(xué)習(xí)者可快速掌握SpringBootVueMySQL前后端分離開發(fā)范式理解RESTful接口設(shè)計(jì)、JWT鑒權(quán)、MyBatis動態(tài)SQL等關(guān)鍵技術(shù)點(diǎn)同時(shí)獲得可直接用于答辯的源碼與論文雙交付成果。1. 項(xiàng)目概述從零到一構(gòu)建一個(gè)手工藝品電商平臺最近幾年身邊做獨(dú)立設(shè)計(jì)、手工創(chuàng)作的朋友越來越多從陶藝、皮具到編織、木工大家手里都有不少好作品。但一個(gè)普遍的問題是很多人精于手藝卻苦于沒有一個(gè)合適的線上渠道去展示和銷售自己的作品。要么是依賴大型電商平臺被淹沒在海量商品中要么是自己用社交媒體零散發(fā)布管理起來非常麻煩。正好我之前用SpringBoot做過幾個(gè)電商類的項(xiàng)目這次就結(jié)合“手工藝品銷售”這個(gè)垂直領(lǐng)域從頭到尾梳理一下如何開發(fā)一個(gè)專屬的銷售系統(tǒng)。這個(gè)系統(tǒng)不僅僅是商品的上下架它更需要體現(xiàn)手工藝品的獨(dú)特性和創(chuàng)作者的故事同時(shí)兼顧后臺管理的便捷性。如果你是一名Java開發(fā)者或者是一名計(jì)算機(jī)專業(yè)的學(xué)生正在尋找畢業(yè)設(shè)計(jì)的課題這篇內(nèi)容或許能給你提供一個(gè)完整的、可落地的思路和實(shí)現(xiàn)參考。簡單來說我們要做的是一個(gè)B2C模式的電商系統(tǒng)但它的內(nèi)核更偏向于“創(chuàng)作者平臺”。前端用戶可以看到精美的商品詳情、了解手工藝人的故事、進(jìn)行購買后端管理員和手工藝人賣家可以管理商品、訂單、用戶。技術(shù)棧上我們選擇SpringBoot作為后端框架這幾乎是目前Java領(lǐng)域快速開發(fā)Web應(yīng)用的首選它簡化了配置讓我們能更專注于業(yè)務(wù)邏輯。數(shù)據(jù)庫用MySQL前端可以考慮Thymeleaf模板引擎快速搭建或者分離前后端用Vue.js。接下來我會詳細(xì)拆解整個(gè)系統(tǒng)的設(shè)計(jì)思路、技術(shù)選型背后的考量、核心功能的實(shí)現(xiàn)細(xì)節(jié)以及開發(fā)過程中那些容易踩坑的地方。2. 系統(tǒng)整體設(shè)計(jì)與架構(gòu)選型2.1 為什么是SpringBoot在開始敲代碼之前我們先聊聊為什么選SpringBoot。市面上框架很多從傳統(tǒng)的SSH/SSM到新興的微服務(wù)框架。對于“手工藝品銷售系統(tǒng)”這樣一個(gè)典型的單體Web應(yīng)用SpringBoot的優(yōu)勢非常明顯。首先就是快速啟動它提供了大量的“Starter”依賴比如spring-boot-starter-web用于Web開發(fā)spring-boot-starter-data-jpa或mybatis-spring-boot-starter用于數(shù)據(jù)持久化幾乎不需要你手動配置XML一個(gè)pom.xml文件就能搞定大部分依賴。其次它內(nèi)嵌了Tomcat這意味著你的應(yīng)用可以打包成一個(gè)獨(dú)立的Jar文件直接通過java -jar命令運(yùn)行部署變得極其簡單非常適合作為畢業(yè)設(shè)計(jì)演示或個(gè)人項(xiàng)目部署。最后SpringBoot擁有豐富的社區(qū)生態(tài)和詳盡的文檔你在開發(fā)中遇到的絕大多數(shù)問題都能在社區(qū)找到解決方案這對于學(xué)習(xí)和解決問題至關(guān)重要。注意雖然SpringBoot簡化了配置但并不意味著不需要理解Spring框架的核心如IoC、AOP。建議在開始前至少對Spring MVC和一種ORM框架如JPA或MyBatis有基本了解否則你會感覺雖然項(xiàng)目跑起來了但完全不知道發(fā)生了什么。2.2 核心業(yè)務(wù)模塊拆解一個(gè)手工藝品銷售系統(tǒng)其核心業(yè)務(wù)模塊可以抽象為以下幾個(gè)部分這構(gòu)成了我們數(shù)據(jù)庫設(shè)計(jì)和代碼結(jié)構(gòu)的基礎(chǔ)用戶模塊包括買家普通用戶和賣家手工藝人。這里需要一個(gè)統(tǒng)一的用戶表通過“角色”字段或單獨(dú)的關(guān)系表來區(qū)分。買家關(guān)注收藏、購物車、訂單歷史賣家則需要商品管理、訂單處理、數(shù)據(jù)統(tǒng)計(jì)等功能。商品模塊這是系統(tǒng)的核心。手工藝品商品信息比標(biāo)準(zhǔn)品復(fù)雜得多。除了常規(guī)的名稱、價(jià)格、庫存、主圖還必須包含詳情圖文描述需要支持富文本以便賣家講述作品背后的故事、工藝、材質(zhì)等。多圖展示至少需要輪播圖展示作品不同角度。定制化屬性例如對于皮具可能有“皮革類型”、“顏色”、“尺寸”等可選屬性。這涉及到SKU庫存量單位的管理是設(shè)計(jì)中的難點(diǎn)。分類與標(biāo)簽分類可以是樹形結(jié)構(gòu)如手工藝 - 皮具 - 錢包標(biāo)簽則更靈活如復(fù)古、手工染色、禮物。訂單模塊記錄訂單狀態(tài)待付款、待發(fā)貨、已發(fā)貨、已完成、已取消、收貨地址、支付信息通常對接第三方支付系統(tǒng)內(nèi)只記錄支付狀態(tài)和流水號、物流信息。購物車模塊臨時(shí)存放用戶意向商品支持增刪改查。后臺管理模塊提供儀表盤集中管理用戶、商品、訂單、分類、輪播圖等所有內(nèi)容。2.3 技術(shù)棧與工具清單基于以上分析我建議的技術(shù)棧如下后端核心框架SpringBoot 2.x (建議2.7.x穩(wěn)定且資料多)持久層Spring Data JPA (開發(fā)速度快) 或 MyBatis-Plus (SQL更靈活)數(shù)據(jù)庫MySQL 8.0模板引擎/前端Thymeleaf (適合快速出原型) 或 完全前后端分離Vue.js RESTful API安全框架Spring Security (用于登錄認(rèn)證和權(quán)限控制)工具庫Lombok (簡化Bean代碼)Hutool (國產(chǎn)工具集好用)前端如果不用前后端分離Bootstrap 5 jQuery Thymeleaf 碎片化布局。如果前后端分離Vue 3 Element Plus 或 Ant Design Vue。開發(fā)與部署IDEIntelliJ IDEA (對SpringBoot支持最好)構(gòu)建工具M(jìn)aven版本控制Git部署打包成Jar可以在Windows/Linux上直接運(yùn)行。對于畢業(yè)設(shè)計(jì)用本機(jī)或?qū)W生服務(wù)器即可。3. 數(shù)據(jù)庫設(shè)計(jì)與核心表結(jié)構(gòu)解析數(shù)據(jù)庫設(shè)計(jì)是系統(tǒng)的基石設(shè)計(jì)得好后續(xù)開發(fā)事半功倍。這里我給出幾個(gè)核心表的設(shè)計(jì)思路和避坑點(diǎn)。3.1 用戶表 (sys_user)這張表需要同時(shí)容納買家和賣家信息。一個(gè)常見的做法是通過一個(gè)user_type字段來區(qū)分例如0-管理員1-賣家2-買家。但更靈活的方式是使用角色關(guān)聯(lián)表實(shí)現(xiàn)RBAC基于角色的訪問控制模型。CREATE TABLE sys_user ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主鍵, username varchar(50) NOT NULL COMMENT 用戶名唯一, password varchar(255) NOT NULL COMMENT 加密后的密碼, nickname varchar(50) DEFAULT NULL COMMENT 昵稱, avatar varchar(500) DEFAULT NULL COMMENT 頭像URL, email varchar(100) DEFAULT NULL COMMENT 郵箱, phone varchar(20) DEFAULT NULL COMMENT 手機(jī)號, status tinyint(4) DEFAULT 1 COMMENT 狀態(tài)0-禁用1-正常, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 創(chuàng)建時(shí)間, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新時(shí)間, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用戶表;實(shí)操心得密碼存儲絕對不要明文存儲使用Spring Security的BCryptPasswordEncoder進(jìn)行哈希加密。即使數(shù)據(jù)庫泄露攻擊者也無法直接獲得用戶密碼。字段長度avatar頭像字段要預(yù)留足夠長度因?yàn)榭赡艽鎯Φ氖峭暾腛SS對象存儲URL地址。字符集務(wù)必使用utf8mb4字符集以支持存儲Emoji表情等特殊字符特別是昵稱字段。3.2 商品與SKU設(shè)計(jì)最大的挑戰(zhàn)這是系統(tǒng)最復(fù)雜的部分。普通商品可能只有一個(gè)價(jià)格和庫存但手工藝品常有定制選項(xiàng)。例如一個(gè)手工皮包可以選擇“棕色牛皮”或“黑色植鞣革”選擇“大號”或“小號”。每種組合對應(yīng)不同的價(jià)格和庫存。這就需要引入**SPU標(biāo)準(zhǔn)產(chǎn)品單元和SKU庫存保有單位**的概念。商品SPU表 (product_spu)描述一個(gè)商品的基本、通用信息。CREATE TABLE product_spu ( id bigint(20) NOT NULL AUTO_INCREMENT, title varchar(200) NOT NULL COMMENT 商品標(biāo)題, sub_title varchar(500) DEFAULT NULL COMMENT 副標(biāo)題/賣點(diǎn), category_id bigint(20) NOT NULL COMMENT 分類ID, seller_id bigint(20) NOT NULL COMMENT 賣家用戶ID, main_pic varchar(500) NOT NULL COMMENT 主圖, slide_pics text COMMENT 輪播圖JSON數(shù)組格式, detail_html text COMMENT 商品詳情HTML富文本, status tinyint(4) DEFAULT 0 COMMENT 狀態(tài)0-待審核1-上架2-下架, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT商品SPU表;商品規(guī)格/屬性表 (product_spec)定義可以選擇的維度如“顏色”、“尺寸”。CREATE TABLE product_spec ( id bigint(20) NOT NULL AUTO_INCREMENT, spu_id bigint(20) NOT NULL COMMENT 所屬SPU ID, spec_name varchar(50) NOT NULL COMMENT 規(guī)格名如顏色, spec_values varchar(500) NOT NULL COMMENT 規(guī)格值列表JSON數(shù)組如[棕色,黑色], PRIMARY KEY (id), KEY idx_spu_id (spu_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT商品規(guī)格表;商品SKU表 (product_sku)代表一個(gè)具體的、可售賣的庫存單元是規(guī)格組合的結(jié)果。CREATE TABLE product_sku ( id bigint(20) NOT NULL AUTO_INCREMENT, spu_id bigint(20) NOT NULL COMMENT 所屬SPU ID, sku_code varchar(100) DEFAULT NULL COMMENT SKU編碼可自定義, spec_combination varchar(500) DEFAULT NULL COMMENT 規(guī)格組合JSON如{顏色:棕色,尺寸:大號}, price decimal(10,2) NOT NULL COMMENT 價(jià)格, stock int(11) NOT NULL DEFAULT 0 COMMENT 庫存, pic varchar(500) DEFAULT NULL COMMENT SKU特有圖片, status tinyint(4) DEFAULT 1 COMMENT 狀態(tài), PRIMARY KEY (id), UNIQUE KEY uk_spu_specs (spu_id, spec_combination(100)), -- 防止重復(fù)組合 KEY idx_spu_id (spu_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT商品SKU表;核心難點(diǎn)與解決方案SKU生成與庫存扣減前端選擇不同規(guī)格時(shí)需要動態(tài)查詢對應(yīng)的SKU ID。在用戶下單時(shí)必須基于SKU ID來扣減庫存。這里必須使用樂觀鎖或悲觀鎖來防止超賣。例如在更新庫存的SQL中加上條件where id? and stock ?。規(guī)格組合的存儲spec_combination字段存儲JSON是一個(gè)靈活的選擇方便前端解析和展示。但要注意如果需要根據(jù)某個(gè)規(guī)格值如所有“棕色”的商品進(jìn)行篩選JSON字段的查詢效率很低。如果篩選是核心需求可能需要更復(fù)雜的、標(biāo)準(zhǔn)化的表結(jié)構(gòu)如關(guān)聯(lián)表。圖片管理slide_pics字段存儲圖片URL的JSON數(shù)組。圖片本身建議上傳到云存儲如阿里云OSS、騰訊云COS數(shù)據(jù)庫只存路徑。這能極大減輕服務(wù)器壓力。3.3 訂單與購物車表訂單表需要關(guān)聯(lián)用戶、地址并且一個(gè)訂單可能包含多個(gè)商品所以通常拆分為訂單主表 (order_master)和訂單詳情表 (order_item)。購物車表 (cart_item) 相對簡單記錄用戶、商品SKU、數(shù)量即可。需要注意的是購物車商品價(jià)格應(yīng)該實(shí)時(shí)查詢商品SKU表的最新價(jià)格而不是在加入購物車時(shí)固定下來避免商品調(diào)價(jià)后產(chǎn)生糾紛。4. SpringBoot后端核心功能實(shí)現(xiàn)詳解4.1 項(xiàng)目初始化與配置使用IntelliJ IDEA的Spring Initializr或訪問 start.spring.io 快速生成項(xiàng)目。依賴選擇Spring Web,Spring Data JPA,MySQL Driver,Lombok,Thymeleaf如果做前后端不分離。關(guān)鍵的application.yml配置server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/handicraft_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update # 開發(fā)環(huán)境可以用update生產(chǎn)環(huán)境務(wù)必設(shè)為none或validate并通過SQL腳本管理表結(jié)構(gòu) show-sql: true # 開發(fā)時(shí)顯示SQL方便調(diào)試 properties: hibernate: format_sql: true # 格式化打印的SQL servlet: multipart: max-file-size: 10MB # 文件上傳大小限制 max-request-size: 20MB # 自定義配置 myapp: upload: path: /tmp/upload/ # 本地存儲路徑生產(chǎn)環(huán)境請改為絕對路徑重要提示ddl-auto: update在開發(fā)初期很方便但存在數(shù)據(jù)丟失風(fēng)險(xiǎn)且對字段重命名等操作支持不好。正式項(xiàng)目一定要使用Flyway或Liquibase這樣的數(shù)據(jù)庫版本遷移工具。4.2 用戶認(rèn)證與權(quán)限控制Spring Security手工藝品系統(tǒng)涉及買家、賣家、管理員三種角色權(quán)限控制必不可少。Spring Security配置是初學(xué)者的一大難點(diǎn)。核心配置類示例Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { Autowired private UserDetailsService userDetailsService; Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers(/, /home, /product/**, /login, /register, /css/**, /js/**).permitAll() // 公開訪問路徑 .antMatchers(/seller/**).hasRole(SELLER) // 賣家后臺路徑 .antMatchers(/admin/**).hasRole(ADMIN) // 管理員后臺路徑 .anyRequest().authenticated() // 其他所有路徑都需要認(rèn)證 .and() .formLogin() .loginPage(/login) // 自定義登錄頁 .defaultSuccessUrl(/) // 登錄成功跳轉(zhuǎn) .permitAll() .and() .logout() .logoutSuccessUrl(/) .permitAll() .and() .rememberMe() // 記住我功能 .and() .csrf().disable(); // 開發(fā)階段可關(guān)閉CSRF上線后需要開啟并處理 } Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder()); } }實(shí)操心得角色前綴Spring Security默認(rèn)在角色前加ROLE_。所以數(shù)據(jù)庫中存儲的角色名如果是SELLER在配置時(shí)寫hasRole(SELLER)框架實(shí)際會去匹配ROLE_SELLER。你也可以通過配置修改這一行為。CSRF防護(hù)在前后端不分離且使用Thymeleaf時(shí)Thymeleaf會自動在表單中添加CSRF Token。如果前后端分離如Vue需要將Token放在請求頭中傳遞或者根據(jù)情況謹(jǐn)慎地禁用對安全性要求不高的API。密碼加密務(wù)必在用戶注冊時(shí)使用BCryptPasswordEncoder的encode()方法對密碼進(jìn)行加密后再存入數(shù)據(jù)庫。在登錄校驗(yàn)時(shí)Spring Security會自動調(diào)用matches()方法進(jìn)行比對。4.3 商品管理的后端邏輯實(shí)現(xiàn)以“賣家添加商品”這個(gè)復(fù)雜流程為例展示Controller-Service-Repository的分層架構(gòu)。1. Repository層 (數(shù)據(jù)訪問)Repository public interface ProductSpuRepository extends JpaRepositoryProductSpu, Long { // JPA會自動實(shí)現(xiàn)基本CRUD方法 // 自定義查詢查找某個(gè)賣家下所有上架的商品 ListProductSpu findBySellerIdAndStatusOrderByCreateTimeDesc(Long sellerId, Integer status); }2. Service層 (業(yè)務(wù)邏輯)這里是核心包含添加SPU、SKU以及處理規(guī)格組合的邏輯。Service Transactional public class ProductService { Autowired private ProductSpuRepository spuRepository; Autowired private ProductSkuRepository skuRepository; Autowired private ProductSpecRepository specRepository; public void addProduct(ProductSpu spu, ListProductSpec specs, ListProductSku skus) { // 1. 保存SPU基本商品信息 ProductSpu savedSpu spuRepository.save(spu); // 2. 保存規(guī)格定義 specs.forEach(spec - spec.setSpuId(savedSpu.getId())); specRepository.saveAll(specs); // 3. 保存SKU列表 skus.forEach(sku - { sku.setSpuId(savedSpu.getId()); // 這里可以生成唯一的SKU編碼例如SPUID 規(guī)格組合的哈希值 if (StringUtils.isEmpty(sku.getSkuCode())) { sku.setSkuCode(generateSkuCode(savedSpu, sku.getSpecCombination())); } }); skuRepository.saveAll(skus); } private String generateSkuCode(ProductSpu spu, String specCombination) { // 簡單的生成邏輯示例 try { String specHash DigestUtils.md5DigestAsHex(specCombination.getBytes()).substring(0, 6); return SPU spu.getId() - specHash.toUpperCase(); } catch (Exception e) { return SPU spu.getId() - System.currentTimeMillis(); } } }關(guān)鍵點(diǎn)整個(gè)添加商品的方法需要用Transactional注解標(biāo)記確保SPU、Spec、SKU的保存操作在一個(gè)數(shù)據(jù)庫事務(wù)中要么全部成功要么全部回滾保證數(shù)據(jù)一致性。3. Controller層 (接收請求)Controller RequestMapping(/seller/product) public class SellerProductController { Autowired private ProductService productService; PostMapping(/add) public String addProduct(Valid ProductForm form, BindingResult result, HttpSession session) { if (result.hasErrors()) { return seller/product_add; // 返回表單頁并顯示錯誤 } // 從session中獲取當(dāng)前登錄的賣家ID Long sellerId (Long) session.getAttribute(userId); // 將表單對象form轉(zhuǎn)換為實(shí)體對象spu, specs, skus // ... 轉(zhuǎn)換邏輯 productService.addProduct(spu, specs, skus); return redirect:/seller/product/list; // 添加成功跳轉(zhuǎn)到商品列表 } }表單驗(yàn)證ProductForm是一個(gè)DTO數(shù)據(jù)傳輸對象可以使用JSR-303注解如NotBlank,Min進(jìn)行校驗(yàn)配合Valid注解在Controller中自動觸發(fā)校驗(yàn)。4.4 訂單創(chuàng)建與庫存扣減的并發(fā)處理這是電商系統(tǒng)的核心難點(diǎn)。在高并發(fā)下多個(gè)用戶同時(shí)購買最后一個(gè)庫存的商品會導(dǎo)致超賣。下面是一個(gè)使用悲觀鎖在數(shù)據(jù)庫層面加鎖的簡單實(shí)現(xiàn)方案。Service層方法Service public class OrderService { Autowired private ProductSkuRepository skuRepository; Autowired private OrderRepository orderRepository; Transactional(rollbackFor Exception.class) public Order createOrder(Long userId, ListOrderItemDTO itemDTOs, Address address) { // 1. 計(jì)算總價(jià)驗(yàn)證商品狀態(tài)略 BigDecimal totalAmount BigDecimal.ZERO; ListOrderItem orderItems new ArrayList(); for (OrderItemDTO itemDTO : itemDTOs) { // 關(guān)鍵步驟通過悲觀鎖查詢SKU (使用JPA的Lock注解或原生SQL) ProductSku sku skuRepository.findSkuForUpdate(itemDTO.getSkuId()); if (sku null || sku.getStatus() ! 1) { throw new RuntimeException(商品[ sku.getId() ]已下架或不存在); } if (sku.getStock() itemDTO.getQuantity()) { throw new RuntimeException(商品[ sku.getId() ]庫存不足); } // 2. 扣減庫存 int updatedRows skuRepository.deductStock(itemDTO.getSkuId(), itemDTO.getQuantity()); if (updatedRows 0) { // 扣減失敗可能已被其他請求修改拋出異常觸發(fā)事務(wù)回滾 throw new RuntimeException(商品庫存并發(fā)更新失敗請重試); } // 3. 構(gòu)建訂單項(xiàng) OrderItem orderItem new OrderItem(); orderItem.setSkuId(sku.getId()); orderItem.setSkuSnapshot(JSON.toJSONString(sku)); // 保存快照防止后續(xù)商品信息變更 orderItem.setQuantity(itemDTO.getQuantity()); orderItem.setPrice(sku.getPrice()); orderItems.add(orderItem); totalAmount totalAmount.add(sku.getPrice().multiply(new BigDecimal(itemDTO.getQuantity()))); } // 4. 創(chuàng)建訂單主表 Order order new Order(); order.setUserId(userId); order.setOrderNo(generateOrderNo()); // 生成唯一訂單號 order.setTotalAmount(totalAmount); order.setStatus(OrderStatusEnum.WAIT_PAY.getCode()); // ... 設(shè)置其他字段 Order savedOrder orderRepository.save(order); // 5. 保存訂單項(xiàng)關(guān)聯(lián)訂單ID orderItems.forEach(item - item.setOrderId(savedOrder.getId())); orderItemRepository.saveAll(orderItems); // 6. 清空用戶購物車中對應(yīng)的商品略 return savedOrder; } }Repository層扣減庫存方法使用原生SQL確保原子性Repository public interface ProductSkuRepository extends JpaRepositoryProductSku, Long { // 悲觀鎖查詢 Query(value SELECT * FROM product_sku WHERE id :id FOR UPDATE, nativeQuery true) ProductSku findSkuForUpdate(Param(id) Long id); // 扣減庫存 Modifying Query(value UPDATE product_sku SET stock stock - :quantity WHERE id :id AND stock :quantity, nativeQuery true) int deductStock(Param(id) Long id, Param(quantity) Integer quantity); }方案對比與選擇悲觀鎖 (FOR UPDATE)在查詢時(shí)直接鎖定記錄其他事務(wù)必須等待。簡單粗暴能保證強(qiáng)一致性但在高并發(fā)下容易導(dǎo)致大量請求等待性能有瓶頸。適用于庫存量極少、競爭激烈的場景。樂觀鎖在表中增加一個(gè)version字段更新時(shí)帶上版本號條件update ... set stock?, versionversion1 where id? and version?。如果更新返回影響行數(shù)為0說明版本沖突讓用戶重試。性能更好但用戶體驗(yàn)稍差可能需要前端提示“請重試”。Redis分布式鎖在扣減前先用Redis鎖住這個(gè)SKU ID防止其他進(jìn)程同時(shí)操作。適用于分布式部署環(huán)境。Redis緩存庫存異步同步到數(shù)據(jù)庫將庫存扣減操作放在Redis中原子操作decr快速返回然后再異步將結(jié)果持久化到MySQL。這是應(yīng)對極高并發(fā)秒殺場景的常用方案但架構(gòu)復(fù)雜。對于畢業(yè)設(shè)計(jì)或中小型項(xiàng)目樂觀鎖是一個(gè)在性能和一致性之間取得較好平衡的選擇。5. 前端頁面與用戶體驗(yàn)關(guān)鍵點(diǎn)5.1 商品詳情頁的動態(tài)SKU選擇前端需要根據(jù)用戶選擇的規(guī)格動態(tài)匹配出對應(yīng)的SKU并更新價(jià)格、庫存和圖片。這是一個(gè)經(jīng)典的交互。實(shí)現(xiàn)思路頁面加載時(shí)從后端獲取該SPU下的所有ProductSpec規(guī)格定義和ProductSku列表。前端使用JavaScript構(gòu)建一個(gè)規(guī)格值到SKU的映射關(guān)系。可以將所有SKU的spec_combinationJSON字符串解析成對象然后建立一個(gè)查找字典。當(dāng)用戶點(diǎn)擊選擇規(guī)格如“顏色棕色”時(shí)遍歷當(dāng)前已選的所有規(guī)格組合去映射字典里查找是否存在對應(yīng)的SKU。如果找到唯一SKU則顯示該SKU的價(jià)格、庫存和特有圖片如果找不到則顯示“此組合暫無貨”或禁用購買按鈕。示例代碼片段Vue.js思路// 假設(shè) skuList 是從后端獲取的所有SKU數(shù)組 const skuMap {}; skuList.forEach(sku { const key JSON.stringify(sku.specCombination); // 將規(guī)格組合對象轉(zhuǎn)為字符串作為鍵 skuMap[key] sku; }); // 當(dāng)用戶選擇規(guī)格時(shí) const selectedSpecs { 顏色: 棕色, 尺寸: 大號 }; const searchKey JSON.stringify(selectedSpecs); const matchedSku skuMap[searchKey]; if (matchedSku) { this.currentPrice matchedSku.price; this.currentStock matchedSku.stock; this.currentSkuId matchedSku.id; } else { this.currentPrice --; this.currentStock 0; this.currentSkuId null; }5.2 圖片上傳與預(yù)覽功能手工藝品展示極度依賴圖片。我們需要實(shí)現(xiàn)多圖上傳、預(yù)覽、排序和刪除。后端ControllerPostMapping(/upload/image) ResponseBody public Result uploadImage(RequestParam(file) MultipartFile file, HttpServletRequest request) { if (file.isEmpty()) { return Result.error(請選擇文件); } // 1. 生成唯一文件名防止覆蓋 String originalFilename file.getOriginalFilename(); String fileExt originalFilename.substring(originalFilename.lastIndexOf(.)); String newFileName UUID.randomUUID().toString() fileExt; // 2. 確定存儲路徑 (配置文件中讀取) File dest new File(uploadPath newFileName); // 確保目錄存在 dest.getParentFile().mkdirs(); // 3. 保存文件 try { file.transferTo(dest); // 4. 返回訪問URL (如果是本地存儲可能需要配置靜態(tài)資源映射) String fileUrl /upload/ newFileName; // 示例URL return Result.success(上傳成功, fileUrl); } catch (IOException e) { e.printStackTrace(); return Result.error(上傳失敗); } }前端實(shí)現(xiàn)可以使用現(xiàn)成的組件如Element Plus的el-upload或Bootstrap-FileInput。關(guān)鍵是要支持多選、拖拽排序、預(yù)覽和刪除已選圖片的交互。上傳成功后將返回的URL存儲在一個(gè)數(shù)組中最終在提交商品表單時(shí)將這個(gè)數(shù)組以JSON格式傳給后端。5.3 響應(yīng)式布局與移動端適配如今大部分流量來自手機(jī)所以前端頁面必須做好響應(yīng)式設(shè)計(jì)。使用Bootstrap 5的柵格系統(tǒng)可以輕松實(shí)現(xiàn)。核心原則是任何容器、行和列都使用Bootstrap的類而不是固定像素寬度。例如商品列表在PC上一行顯示4個(gè)在平板上顯示3個(gè)在手機(jī)上顯示2個(gè)div classrow div classcol-lg-3 col-md-4 col-sm-6 mb-4 v-forproduct in productList :keyproduct.id !-- 商品卡片 -- div classcard h-100 img :srcproduct.mainPic classcard-img-top alt... div classcard-body h5 classcard-title{{ product.title }}/h5 p classcard-text text-danger{{ product.price }}/p a :href/product/detail/ product.id classbtn btn-primary查看詳情/a /div /div /div /div6. 系統(tǒng)部署與上線注意事項(xiàng)開發(fā)完成后如何讓老師和同學(xué)訪問你的系統(tǒng)本地運(yùn)行和部署到服務(wù)器是兩回事。6.1 打包與運(yùn)行打包在項(xiàng)目根目錄執(zhí)行Maven命令mvn clean package -DskipTests。成功后會在target目錄下生成一個(gè)*.jar文件。運(yùn)行將Jar包上傳到服務(wù)器或就在本機(jī)在命令行執(zhí)行java -jar your-project-name.jar。SpringBoot會使用內(nèi)嵌的Tomcat啟動服務(wù)。后臺運(yùn)行在Linux服務(wù)器上可以使用nohup命令讓進(jìn)程在后臺運(yùn)行nohup java -jar your-project-name.jar app.log 21 。更規(guī)范的做法是使用systemd創(chuàng)建服務(wù)。6.2 生產(chǎn)環(huán)境配置數(shù)據(jù)庫不要使用本地測試數(shù)據(jù)庫。在服務(wù)器上安裝MySQL創(chuàng)建專用數(shù)據(jù)庫用戶和密碼并在application-prod.yml中配置。文件存儲切勿將上傳的文件保存在項(xiàng)目Jar包內(nèi)部或相對路徑因?yàn)镴ar包是只讀的且每次更新部署會被覆蓋。必須使用絕對路徑并確保運(yùn)行Jar包的用戶對該目錄有讀寫權(quán)限。最佳實(shí)踐是使用云存儲服務(wù)。日志配置logback-spring.xml將日志按級別和日期滾動輸出到文件方便排查問題。端口與防火墻確保服務(wù)器安全組或防火墻開放了你的應(yīng)用端口如8080。通常我們會用Nginx做反向代理將80/443端口請求轉(zhuǎn)發(fā)到8080并配置域名。6.3 使用Nginx進(jìn)行反向代理在服務(wù)器上安裝Nginx修改配置文件如/etc/nginx/conf.d/your-site.confserver { listen 80; server_name your-domain.com; # 你的域名或服務(wù)器IP location / { proxy_pass http://127.0.0.1:8080; # 轉(zhuǎn)發(fā)到SpringBoot應(yīng)用 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 靜態(tài)資源如圖片直接由Nginx處理效率更高 location /upload/ { alias /path/to/your/upload/dir/; # 指向你文件存儲的絕對路徑 expires 30d; # 設(shè)置瀏覽器緩存 } }配置完成后重啟Nginxsudo systemctl restart nginx?,F(xiàn)在通過訪問服務(wù)器IP或域名就能看到你的手工藝品銷售系統(tǒng)了。7. 開發(fā)常見問題與調(diào)試技巧實(shí)錄在開發(fā)這個(gè)系統(tǒng)的過程中我踩過不少坑這里總結(jié)幾個(gè)最具代表性的問題和解決方法。7.1 問題一JPA 更新實(shí)體時(shí)字段被意外設(shè)置為NULL現(xiàn)象你從數(shù)據(jù)庫查詢出一個(gè)ProductSpu對象修改了它的title字段然后調(diào)用repository.save()結(jié)果發(fā)現(xiàn)其他未修改的字段如createTime在數(shù)據(jù)庫里變成了NULL。原因JPA的save()方法在執(zhí)行更新時(shí)默認(rèn)行為是使用你提供的實(shí)體對象的所有字段去覆蓋數(shù)據(jù)庫記錄。如果你的實(shí)體對象某些字段為null例如從JSON反序列化過來的DTO轉(zhuǎn)換而成只包含了部分字段那么這些字段在數(shù)據(jù)庫里就會被更新為null。解決方案使用查詢-修改-保存流程先通過findById()查詢出完整的持久化實(shí)體Managed Entity然后只修改需要改的字段再調(diào)用save()。因?yàn)榇藭r(shí)實(shí)體處于被管理狀態(tài)Hibernate只會更新發(fā)生變化的字段臟檢查。ProductSpu spu productSpuRepository.findById(id).orElseThrow(...); spu.setTitle(newTitle); // 只修改需要的字段 // spu.setSubTitle(null); // 千萬不要這樣做 productSpuRepository.save(spu); // 實(shí)際上這行可以不寫事務(wù)提交時(shí)會自動flush使用動態(tài)更新注解在實(shí)體類上添加DynamicUpdate注解。這樣Hibernate會在生成Update SQL時(shí)只包含發(fā)生變化的字段。但注意這需要Hibernate進(jìn)行額外的臟檢查有輕微性能開銷。Entity DynamicUpdate Table(name product_spu) public class ProductSpu { ... }自定義Update方法在Repository中定義Modifying和Query注解的更新方法直接編寫Update SQL精確控制更新的字段。7.2 問題二Thymeleaf模板中Spring Security的權(quán)限判斷不生效現(xiàn)象在HTML中使用Thymeleaf的sec:authorize屬性如div sec:authorizehasRole(ADMIN)但內(nèi)容始終不顯示或一直顯示。原因沒有正確引入Thymeleaf與Spring Security的集成命名空間或者依賴缺失。解決方案確保pom.xml依賴正確除了spring-boot-starter-thymeleaf還需要添加thymeleaf-extras-springsecurity5依賴。dependency groupIdorg.thymeleaf.extras/groupId artifactIdthymeleaf-extras-springsecurity5/artifactId /dependency在HTML模板中聲明命名空間在html標(biāo)簽中添加。html xmlns:thhttp://www.thymeleaf.org xmlns:sechttp://www.thymeleaf.org/extras/spring-security檢查Security配置確保你的角色名正確并且用戶確實(shí)被授予了該角色??梢栽贑ontroller中打印SecurityContextHolder.getContext().getAuthentication()來調(diào)試。7.3 問題三事務(wù)Transactional不回滾現(xiàn)象在Service方法上標(biāo)注了Transactional方法內(nèi)部拋出了異常但數(shù)據(jù)庫操作并沒有回滾。原因排查異常類型默認(rèn)情況下Transactional只在拋出運(yùn)行時(shí)異常RuntimeException和Error時(shí)回滾。如果你拋出的是受檢異常Exception事務(wù)不會回滾。解決在注解中指定回滾的異常類型Transactional(rollbackFor Exception.class)。方法訪問權(quán)限Transactional注解在代理對象Spring AOP生成上生效。如果方法不是public代理可能無法正常工作。解決確保事務(wù)方法是public的。自調(diào)用問題在同一個(gè)類中一個(gè)非事務(wù)方法A調(diào)用了另一個(gè)事務(wù)方法BB的事務(wù)不會生效。因?yàn)檫@是通過this對象直接調(diào)用而不是通過Spring代理對象調(diào)用。解決將事務(wù)方法B放到另一個(gè)Service中或者通過AopContext.currentProxy()獲取代理對象再調(diào)用不推薦耦合高。數(shù)據(jù)庫引擎確保MySQL表使用的引擎是InnoDB因?yàn)镸yISAM引擎不支持事務(wù)。7.4 問題四前端頁面樣式和JS文件404現(xiàn)象SpringBoot應(yīng)用啟動后HTML能訪問但CSS、JS、圖片等靜態(tài)資源加載失敗404。原因SpringBoot對靜態(tài)資源有默認(rèn)的映射規(guī)則你的文件可能沒放對位置或者被攔截了。解決方案放置位置將靜態(tài)資源/static/,/public/,/resources/,/META-INF/resources/放在src/main/resources目錄下對應(yīng)的文件夾里。例如src/main/resources/static/css/style.css在HTML中引用路徑為/css/style.css。自定義路徑如果想放在其他目錄如/web-resources/可以在application.yml中配置spring: mvc: static-path-pattern: /resources/** web: resources: static-locations: classpath:/web-resources/這樣src/main/resources/web-resources/css/style.css對應(yīng)的訪問路徑就是/resources/css/style.css。檢查Security配置確保Spring Security的配置中放行了靜態(tài)資源的路徑如.antMatchers(/css/**, /js/**, /images/**).permitAll()。7.5 問題五訂單號等唯一標(biāo)識的生成現(xiàn)象直接使用數(shù)據(jù)庫自增ID或時(shí)間戳作為訂單號在高并發(fā)或分布式環(huán)境下可能重復(fù)或者看起來不夠?qū)I(yè)。解決方案生成一個(gè)全局唯一、趨勢遞增且難以猜測的訂單號。public class OrderNoGenerator { /** * 生成訂單號時(shí)間戳精確到毫秒 隨機(jī)數(shù)或機(jī)器ID 簡短哈希 */ public static String generate() { // 1. 時(shí)間部分yyyyMMddHHmmssSSS SimpleDateFormat sdf new SimpleDateFormat(yyyyMMddHHmmssSSS); String timePart sdf.format(new Date()); // 2. 隨機(jī)數(shù)部分3位模擬機(jī)器或進(jìn)程標(biāo)識 int random (int) ((Math.random() * 9 1) * 100); // 100-999 // 3. 組合并可能加一個(gè)校驗(yàn)位簡單示例 String baseNo timePart random; // 可以再加一個(gè)簡單的校驗(yàn)碼如取后兩位數(shù)字和的個(gè)位數(shù) int sum 0; for (char c : baseNo.toCharArray()) { sum Character.getNumericValue(c); } String checkCode String.valueOf(sum % 10); return baseNo checkCode; } }更嚴(yán)謹(jǐn)?shù)姆桨甘鞘褂醚┗ㄋ惴⊿nowflake可以生成分布式環(huán)境下唯一的、趨勢遞增的ID。有許多開源實(shí)現(xiàn)如Hutool工具包里的IdUtil.createSnowflake。開發(fā)這樣一個(gè)系統(tǒng)從需求分析、技術(shù)選型、數(shù)據(jù)庫設(shè)計(jì)、編碼實(shí)現(xiàn)到最終部署是一個(gè)完整的軟件工程實(shí)踐。它不僅僅是對SpringBoot等技術(shù)的應(yīng)用更是對業(yè)務(wù)邏輯抽象、系統(tǒng)架構(gòu)設(shè)計(jì)、異常處理和用戶體驗(yàn)思考的綜合考驗(yàn)。過程中遇到的每一個(gè)報(bào)錯和踩過的每一個(gè)坑都是寶貴的經(jīng)驗(yàn)。希望這篇超詳細(xì)的拆解能幫你理清思路少走彎路最終做出一個(gè)讓自己滿意、也能打動答辯老師的手工藝品銷售系統(tǒng)。記住在開發(fā)中多寫注釋多寫日志善用調(diào)試工具遇到問題先自己思考搜索再請教他人你的成長會快得多。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97综合在线观看| 亚洲做性| 校园春色第一页| 啪啪啪综合网| 国产亚洲色婷婷久久99精品91葵花宝典 | 另类小说综合网| 亚洲无码精品AV久久久| 亚洲精品一区二区精品| 亚洲色图欧美色图日韩色图| 五月丁香六月婷综合成人综合| 五月丁香六月婷| 日本三级人妻a人妻一在线| 日本A级视频| 午夜国产综合视频在线观看| 九九视频黄色片| 逼逼逼逼操操操操操操操操操午夜剧场| 被体育老师抱着c到高潮| 最新AVzaixian| 91欧美巨乳| 永久电影三级在线观看| 一级性爱aaaa| 中文97国产| 亚洲色天堂九9| 一个人免费视频观看在线WWW| 被体育老师抱着c到高潮| 夜夜操91744565| 日韩色图 一区二区| 性天堂| 制服乱伦| 蜜臀av网址| 精精夜夜| 国产91美女视频| 久久久久亚洲熟妇熟女| 操人无码| 本道在线| 欧美五十路熟| 超碰日本97美女人妻人人玩人人爱| 欧美色日| 色婷婷丁香五月| 99999久久精| 蜜臀操逼黄色视频操的好爽| 久久久久9999妇女| 蜜臀99久久精品久久久懂爱| 91Chinese在线| 中文字幕色AV| 久久婷婷五月天| 日本一二三免费久久| 欧美综合区| 97视频免费在线| 操我无码| 78精品| 中文啪啪视频| 日本无码1| 四虎在线视频| 黄色二级片网站| 2021国产成人精品久久| 97蜜桃综合| 国产福利一区二| 999岛国大片| 久久久无码精品人妻二区 | 91欧美亚洲| 国产91精品久久久久久久网曝门| 交换娇妻呻吟声不停中文字幕| 超碰 97国产熟女| 欧美性爱综合,免费| 亚洲综合一| 一起草AV| 国产精品香蕉热久久新品| 久久久偷拍| 狠狠夜色午夜久久综合在线| 久久婷婷五月综合| 一级毛片久久久久久久女人18| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 中国一区二区亚洲人妻| 中文字幕AV中出| 亚洲天堂日本| 韩国三级三级BD在线| 亚洲精品亚洲人成人网| 老司机老司机午夜影院| 日日超碰亚洲| 久久久久久久久久久精| 91天美传媒在线观看| 中文字幕成人| av天堂精品久久| 97久久网| 欧美极品| v91av| 中文熟女五十乱码在线| 蜜臀久久99精品久久久久免费观| 激情五月激情综合网| 国产精品一区二区亚洲人成毛片| 91久热| 青青操97| 青青草视频久久久久| 婷婷色一区| 亚洲色图超碰在线| 国产欧美伊人| 97超碰碰碰| 人妻熟女字幕一区二区| 日本色色色| 一区二区三区机械有限公司| 91站街按摩店老熟女熟女| 岛国视频一二三区| 亚欧成人综合影院| 国产精品久久久久无码A√| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 欧美宗合网| 久久风骚城市人| 欧美图片校园春色| 熟女人妻一区二区三区| 午夜乱轮操逼视频免费看| 日小BB小视频| 午夜丁香婷婷| 在线人妻熟女一区二区三区四区五区| 亚洲综合性感在线| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲春色欧美激情自拍| 免费福利视频中文字幕| 熟妇的味道HD中文字幕| 人人操人人插人人摸人人干| 午夜爽爽爽在线观看永久入口姬片| 秋霞一级A片黄色视频| 国产精品久久久久久久毛片1| 逼逼逼逼操操操操操操操操操午夜剧场 | 亚洲人妻一区二区三区| 啊啊啊不要好爽日韩无码一区| 久久人妻少妇| 欧美综合91| 人人性爱视频免费| 亚洲中文字母在线播放| 超碰国产情侣自拍网| 日韩久久艹| 亚洲色图第四色| 久热伊人| 秋霞视频一区二区| 亚洲中文电影| 欧美999| 亚洲91大片| 久久精品无码一区二区三区| 一本色道综合久久欧美| 五月天激情小说网| 亚欧操逼片在线观看 | 嗯嗯啊啊亚欧精品| 操熟女91| 天天躁日日躁AAAXX| 一本一道人妻久久一区二区三区| 亚洲制服aⅴ中文字幕| 91色情黑丝搞鸡在线观看一区二区三区三州| 四虎影视永久在线观看精品免费网站| 97综合国产| 97婷婷色| 男人的天堂1024| 欧美v亚洲v日韩v最新在线二区| wwe 天天干.com| 九九九热| 97精品国产97久久久久久免费| 久热这里| 欧苏综合色综合| 999国产精品999久久久久久| 在线看免费无码AV天堂的| 啊啊啊啊啊操我视频| 日韩91网| 水澄无码AV| 色老大| 操逼无码一区| 四季AV一区二区凹凸精品小说| 丰满人妻-区二区三区| 国产女人成人精品视频| 久久精品国产亚洲av水密被窝| 高清在线偷拍自拍视频| 少妇激情一区二区三区视频| 色色婷婷丁香| 青草精品视频-日本久久久久网站| 99性爱| 久久久久久人| 久久久久免费少妇| av网站免费线看| 青青草在线视频欧美| 亚洲国产精品无码AV久久| 色蜜AV| 亚洲,日韩,欧美,成人播放| 九九自拍伦理| 欧美熟女少妇| 日韩人妻 中文字幕| 五十路熟女在线不卡观看一区二区| www黄片免费看com| 中文字幕在线免费观看视频| 97超碰9| 久久精品老司| 亚洲欧洲日韩国产自在线| 免费精品AB| 人妻熟女字幕一区二区| 中文字幕日韩人妻视频一区二区三区 | 日欧操屄视频| 九九九九九九九九九国产精品 | 成人七区| 久久伊人影院| 女人18精品一区二区三区| 一个人在线看的黄色电影网站| 欧美性爱日韩性爱| 天天上日日上日韩精品| 婷婷九月国产| 日韩精品作爱导航| 青青草吊丝| 69精品在线| 午夜色婷婷| 乱伦Av网| 夜夜狼人妻| 日韩精品永久在线观看| 九月激情婷婷| 色黄污美女啪啪啪免费网站| 97在线观看| 精品78| 97欧美色| 黑人综合色| 午夜精品久久久久| 久久秀这里有精品| 另类综合另类| 91国产精品在线看| 大香蕉免费中文| 五月天激情影院| 激情五月天丁香社区| 五月丁香社区婷婷日韩欧美精品影院| 国产精品区在线12p| 国产懂色精品国产av| 日韩AV无码中文一区二区| 色九九九九| 黑丝少妇| 国产老熟女| 高清无码国产亚洲| 精品综合久久久久久97| 日本成人免费一区二区三区| 日本成人电影资源网| 久久欧洲| а√天堂资源官网在线资源| 日韩熟女精品无码专区一区二区| 国内伊人久久久久久网站视频| 日本道久久综合色色| 九九九影院| 国产 日韩,欧美 自拍| 天天日天天爽| 四虎影视精品| 99热这里只有精品9| 天天操天天日天天干| 欧美福利视频啊啊啊啊| 中文字幕88av在线| 自拍偷拍 日韩欧美| 暖暖精品二区三区观看| 国产捆绑一区| 熟妇视频一区二区三区在线观看| 欧美视频一| 97超碰69| 蜜乳AV.COM| 成人A片男人的天堂| WWW操逼| 成年男人的天堂| V A在线| 亚洲人在线成线成人| 翔田千里A片一区二区| 熟妇乱伦一区二区| 97色97好| 日韩不卡在线一区二区| 97超碰欧美手机在线| 120分钟婬片免费看| 欧美春色| 久久久av爱| 日韩在线一区高清在线| 龙兴卡官方查询| 99re久久| 精品免费一区| 精品人妻一区二区三区夜夜| 日韩国产成人自拍视频| 大香蕉手机在线| 精品一区二区三区蜜桃臀赵总 | 久久久久久9999| 欧亚性爱在线视频| 91熟女视频网| 色精品极品| 天天看夜夜看日日干| 曰本91情色| 日本午夜久久电影| 亚洲另类春色| 久久99草| 97精品国产97久久久久久| 98人妻精品一区二区色欲| 神马久久久久久久久久久久| 亚洲欧美国产其他二区| 神马午夜久久| 五月开心久久AV官网| 国产吞精a级片激情电影| 男人的天堂va在线| 97bbn| 免费看一级a性色生活片久久无| 久久久久久久久久久六六| 午夜男女爽爽爽影院视频| 亚洲精品蜜桃久久久久久久| 婷婷午夜| 日韩中文字幕精品一区在线| 夜夜骑操视频| 人妻天天操天天爽视频免费| 亚洲一欧洲中文字幕在线| 久久久涩| 超碰人妻中文在线| 色婷婷丁香五月| 成人AV超碰免费在线| 白嫩妹子国产骚| 久久9精品视频| 国产97视频免费观看| 3PAV乱伦视频| 久久99干一本高清| 蜜臀久久在线视频| 亚洲图片 91| 自拍偷拍 高清无码| 好吊色综合| 秋霞福利网| 素人美腿视频网站| 色婷婷九月| 久久久亚洲Av| 久久精品—区二区三区内射| 亚州九九九精品视频| 九九九综合精品| 国产99热| 五月天婷精品激情| 欧美精品23| 欧美性第一页| 欧美一区二区| 九九九只有精品| 四虎AV影视国产精品亚洲精品| 99色在线| 激情视频网址| 密臀成人视频久久久| 69精品人人人人| 99色| AV九九| 天天日B夜夜干B时时操B| 色哟哟AⅤ| 综合第一页| 激情文学小说一区二区 | 欧美91丝袜| 少妇69中文| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 久久久久性熟视频| 婷婷综合五月天| 久久人人爽人人爽人人片Ⅴ| 国产精品久久久久久久黄无码| 亚洲精品久久久久毛片A片拉屎 | 91欧洲国产成人久久精品网站| 欧美丝袜91| 天操天操夜操夜月操月年年操操| av72网| 情色五月天久久久| 亚洲精品天天影视综合网 | 无码久| 9 7超碰在线免费观看| 亚洲影视综合网| 98色网| 欧美日韩操逼嗦吊| 丝袜亚洲91| 97超级欧美| 久久久婷婷| 欧美狠狠操| 久久偷拍人| 91成人国产综合久久精品蜜月| 福利风月五月天影院| 久悠悠av| 诱惑人妻欧美一区在线播放| 男人的天堂2000| 啊啊啊啊啊啊啊啊啊啊在线观看| 亚洲素人网| 欧美亚洲成人在线一区二区三区| 大香蕉性欧美| 午夜欧美精品久久久| 亚欧美色| 手机午夜电影神马久久| 第四色奇米影视777| 又大又长又粗又爽又黄| 天天色天天干天天射| 色狠狠 - 百度| 国产精品视频一区二区三区八戒| 岛国艾薇凹凸视频天堂| 亚洲国产欧美中文永久| 日韩99神马视频播放片在线播放| 97超碰色屌| 亚洲大胆人体av| 精品妇操一区二区三区| 欧美精品系列| 久久双插| 色综合网1| 天天日日夜夜| 熟女中出视频| 99日免费视频中文字幕| 噜噜噜亚洲精| 农村女一级毛卡片| 91午夜无码| 在线观看国产黄色| 成人av免费观看| 玖玖爱在线视频免费观看| 人人操我人人干| www成人啪啪18秘 免费| 亚洲色人妻综合| 国产乱码精品久久久久久| 性欧美| 久久久久九九九九| 首页中文字幕中文字幕免费| 97超碰碰碰| 99只有精品| 色亚洲欧美| 国产JDAV无码视频在线观看| 99精品成人免费看| 91精品成人www| 啊啊啊啊好大好硬啊啊啊啊啊 | 亚洲无码超碰免费| 插欧洲美女欧美精品| 色哟哟国产精品免费网址| 1204金沙人妻懂旧版免费| 岛国999| 欧美少妇人妻| 在免费jIzzjIzz在线视频| 操九九九九九九| 亚洲日韩久久精品一区| 亚洲高清自拍| 黄网色一区二区三区四区精品| 2001天天操| 精品中文一区二区| 亚洲熟女乱色一区二区三区| 天天综合91在线| 四虎在线免费视频| 色波多| 国产成人+综合亚洲+天堂| 久久综合精品一区二区三区| 97亚洲中文| 操逼啊啊啊91| 欧美A√综合网 | 狠狠久久手机视频精品| 一二三区在线| 国产精品视频精品一二| 一区二区三区四区久久视1| 600国产精品视频| 色伊人91| 香蕉免费一区二区三区不读| 日韩欧美亚洲自拍偷拍| 99色综合| 久久久一二三四区| 日va操| 一本大道综合伊人精品热热| 九九九久久久| 玖玖婷婷五月天| 97超碰总站| 日日操免费视频| 920日本午夜免费| 少妇大屁屁| 操逼片中文| ai欧美亚洲小说| 韩三级a视频在线观看| 激情四射婷婷四五月天| 人人妻人人澡人人爽久久av| 亚洲中文字幕三级在线| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 99re这里只有精品9| 91色色色| 国产美女高潮视频| 国产成人网站在线观看| 美女上床网站| 99在线精品观看99| 久久东京热成人| 91干熟女| 美女t无毒不卡不卡| 7777欧美成是人在线观看| 国产丸一视频| 日本三级R| 久久视频,这里只有精品 | 日韩有码中文字幕女同性恋| 婷婷五月天丁香| 美女高潮国产高清| 精品国产网站| 国产无码精品成人| 欧美曰韩国产精品| 天天躁日日躁成人字幕aⅴ| 东北女人的毛片| 日日操免费视频| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 国产超碰在线一区| 欧美偷拍区| 美性中文综合网| 日韩无码a片| 日本精品九九九| 亚洲女毛多水多21P| 玖玖资源视频一区二区三区| 操一区| 成人性交午夜免费片| 久色网| 九九九热| 大香蕉在线免| 日本免费亚洲欧美| 91操人| 1二区9| av婷婷色网| .精品人妻一区二区三| av在线人气| 国产成年免费大片黄在线观看| 久久动漫精品视频这里只有精品| 国产色呦呦| 老熟女91视频| 1区2区3区中文字幕日韩| 欧美大香蕉久| 亚洲日韩97| 91neishe| 精品性爱一区二区| 性色亚洲| 天天日美女的B| 嗯嗯啊中文字幕| 操婢日韩| 欧美丝袜91| 欧美精品91| 国产色呦呦| 国产91福利小视频在线观看| 素人伊尹大香蕉免费下载视频| 天天干天天日天天射黄色| 国产成人一级av88| 女生91网站| 欧洲大香蕉| 丰满欧美少妇| 熟女乱伦二区| 大黄片做爱的大的| 久久久久亚洲| 熟女少妇视频| 欧美亚洲国产日本在线,久久精品国产| 丁香六月激情| 欧美三级中文字幕hd| 黄骗免费网站| 少妇淫妇久久久久久久| 99re在线精品78| 日韩二三区| 97色碰| 欧美在线91| 少妇色欲综合网2| 国产欧美日韩臀| 天天流夜夜操| 日韩av不卡在线观看| 激情熟女12P| 伊人九九九| 亚洲诱惑天堂| 精品v1区| 男人的天堂2010| 播播亚洲小说亚洲| 秋霞一级A片黄色视频| 九九九九精品精| 人妻少妇久久中文| 另类av综合久久| 亚洲日韩肥臀视频在线观看| 九九久久综合| 岛国AB视频| 欧美A片中文字幕| 91搡老女人老妇女老熟女歌词翻译| 精品9999| 999九九九九国产动| WWW.加勒比人妻一区不卡.com| 免费黄色视频网址| 欧美日韩岛国大片在线观看| 免费精品人妻一区二区三| 国产 日韩,欧美 自拍| 精品久久97| 深夜激情| 在线播放中文字幕| 九九九九97| 小骚逼被操的爽不爽| 欧美亚综合色图| 日韩精品.久久精品.AV女优.天美传媒| 美女自卫慰黄网站免费| 亚洲一区二区中文字幕| 黑人精品成人一区二区三区| 国产精品白丝在线播放| 国产在线能看的你懂的| 国产精品剧情| 淫荡网址| 97亚洲欧美| 久久久久久久精| 伊人91| 上特色A在线| 色姑娘综合网| 啪啪视频免费在线观看| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 综合色色网| 一区二区三区欧美激情| 九月婷婷久久| 亚州国产精品乱| 情侣开房子拍 日韩无码 女的很漂亮| 91粉芽高清在线一区二区| 色五月婷婷在线| 日本天天操| 麻豆成人影音在线| 嗯嗯啊啊操我| 欧美精品精品一区二区| 74成人在线| 亚洲第一狼人丝袜美女另类| 精品人妻一区二区视频| 无码高清国产AV| 国产精品久久久久久久黄无码| 日本色色色色色视频| 色综合网1| 97自拍视频在线| 夜夜嗨av午夜成人| 久偷拍欧美日韩三区| 韩国女主播青草在线| 啊啊啊啊啊舒服| 蜜区区视频79| 国产福利电影| 欧亚性爱视频免费看| 在线中文字幕极品av| 七久久久| 精品九九九九九九九| 91激情综合| 色色97爱| 国产9 9在线 | 亚洲| 国产亚洲女v在线观看| 精品性爱无码在线播放| 欧洲综合视频| 超碰97在线色男人??| 午夜经典| 亚洲精品一区二区精华| 亚洲最大的综合性av| 理论久久婷婷网 8| 日本人妻天堂网站在线播放| 97 国产精品| 欧美线天码中字| 久久中文字幕在线观看| 日产操逼| 亚洲黄网在哪免费看| 欧插网站| 久久↗↗| 国产在线能看的你懂的| 日韩中文字幕视频在线观看| 欧美色www亚洲国产阿娇要播| 国产精品激情久久久久久久| 极品色社| 黑人粗大V S日韩女优视频| 天美传媒精品一区二区| 国产一级黄色片在线观看| 天天操女人| 少妇99| 69天堂| 久久亚州精品成人Av无| 亚洲国产av中文字幕久久| 中国一区二区亚洲人妻| 欧美日日夜夜| 精品美女少妇一区二区| 岛国视频一二三区| 一区二区三区在线资源| 97免费视频在线观看视频| 蜜臀99久久精品久久久懂爱| 美国日韩黄色片| 中文高清一区二区的| 青青草无码视频| 男人女人18禁片免费看网站| 五月婷婷性爱| 在线观看 99热| 欧美日韩*字幕一区| 亚洲激情网一二三四区| 天天大干大香蕉| 黄色大片免费在线| 亚洲最新中文字幕免费| 男人亚洲91首页在线| 亚洲另类色综合网站| 91人妻最真实刺激绿帽| 久无码| 超碰色图| 99久久网站| 91处女在线视频| 最新日本中文字幕| 国产高清1234区| 一本色道久久综合精品婷婷| 国产精品自产拍在线观看社区 | 久热久一区二区三区| 大香蕉手机在线| 无码人妻丰满热妇又大又粗| 最新精品久久蜜桃| 日韩强奸av| 国产怡红院| 啊啊啊好想要| 欧美精品另类人妖xxxx| 91综合网在线| 99在线精品观看99| 久久久青青草| 99爱精品| 少妇三p| 91色久| 性色av婷婷久久一区二区点复制| 亚洲区限制级| 中国一级αV| 亚洲情色五月天 | 欲女人妻性色av| 欧美色性爱| 激情小说亚洲视频| 亚洲欧美国产成人综合不卡| 视频黄站| 国产精品成人无码av| SUV一区二区在线看| 高清无码一区二区三区| 91丝袜在线视频| 丰满人妻无码一区二区三区| 中文字幕诱惑制服人妻丝袜美丝袜美| 国产精品无套内谢| 色阁阁AV综合网| 中文字幕免费看大片| 羞答答AV中文字| 人人插人人搞人人操| 伊人嫩草| AV九九| 综合网 欧美| 偷拍欧美激情| 囯戸精品高潮呻吟旡码| 日韩精品9区| 亚洲一区二区中文字幕| 91欧美综合在线| 人人操人人插人www| 欧美A√综合网| 久久一区二区三区入口| 精产品久久| 按摩中文字幕| 再深点灬舒服灬太大了添视频 | 四虎884a| 中国女人内射6XXXXX| 九九九精品一区二区无码| 日本高清_区二区三区 | 久久精品国产免费观看99| 精品久久97| 久久久久9久久久久| 日韩免费高清大片在线| 99热18这里只有精品| 97av在线视频| 欧美性爱精品七区| 日韩不卡一二三四| 少妇二级| 久久91视频| 青青草公开在线免费不卡视频| 久久99国产综合精品女同| 成人a级高清视频在线观看| 人妻丰满熟妇av无码区蜜桃| 极品销魂美女一区二区| 夜夜综合| 日本片日本片祼观看网站在线看中文版网页在线看| 天天肏天天干| 97就爱干| 青青青操| 久久五月天婷婷丁香中文字幕| 97天天操| 97视频新免费| 九月婷婷| 欧美成人A天堂片在线观看| 91五月天| 97色五月天完| 亚洲Av无码成人精品国产| 无码一区免费在线不卡| 欧美成97爱| 成人片视频| 亚洲s在线观看| 手机看片1025| 国产三级资源在线观看| 久久二| Aa东京男人的天堂| 97玖玖人妻| 高清国产av无码| 黑人白女精品一区| 久久春色| 亚洲伊人青青草| 青青草精品| 国产999精品久久久久久| 三级三级三级a级全黄三| 久久精品国产亚洲AV先锋| 欧美人妻一区二区| AV在线资源| 奸色色 男人天堂 天天射| 人人操人人摸人| 久久首页| 亚洲资源站| 啊啊啊97视频| 国产怡红院| 日本一级一级一级一级| 3D污黄视频在线观看| 欧美成人A√在线一区二区| 91爱啪| 精品一区二区2| 久久久禁| 亚洲精品国产精品乱码不卡| 亚洲美乱| 不卡在线一区,精品一区二区三区中| 国产精品一二三在线看| 国产精品盗摄 偷窥盗摄| 热99这里有精品综合久久 | 青青操综合网| 成人自拍三级在线观看| 精品一级毛片在线观看| 女生久久网| 超碰色97| 这里只有精品97| 国产尤物在线三区| 欧美综合狠| 超碰在线第一页| 亚洲性少妇| 国产熟女二区| 欧美久久婷婷| 免费日韩黄片| 日本爽爽爽爽爽爽免费视频| 国产在线激情| 可乐操亚洲蜜911| 久久天堂网| 久久久精品九| 91痴汉| 亚洲第一页综合在线| 精品97久久综合| 99热导航| 欧美另类色图片| 99热成人| 日韩人妻少妇中文字幕| 97天天摸天天碰| 男人的天堂在线有码| 精品久久視頻在线| 国产欧美精品日韩区二区麻豆天美| 婷婷五月天伊人| 亚洲国产一区二区日韩专区| 思思视频免费看网站| 国产精品扒开腿做爽爽爽视频| 色香欲综合| 91超碰丝袜制服| 久久久亚洲精品中文字幕人妻| 超碰在线日韩一区| 久久久91| 国产精品视频内谢女人| 在线日韩精品一区二区三区| 狠狠久久手机视频精品| 国产精品 久久久精品一牛| 日韩簧片免费看| 国产精品久久天天干| 无码人妻精品一区二区中文| 乱伦av国产| 强奸xx国产| 亚洲天堂区| 亚洲欧洲美腿丝袜| 大香蕉欧美国产日韩高潮| 99999这里都精品| 韩日欧亚a级| 欧美亚洲| www.av在线视频| 99视频自拍| 婷婷丁香六月天| 色一射色一射| 蜜臀AV成人精品蜜臀| 色麻豆AV| 超碰久超碰久| 18禁在线视频| 亚洲美女自拍偷拍视频| 激情综合五月| 色老汉色| 蜜桃视频啊啊啊啊| 欧美 亚洲 在线| 为用户提供免费看黄网址在线观看| 黄页视频网站野外| 国产原创剧情在线丝袜| 国产夫妻一区二区| 青青草久久| 精品国产乱子伦一区二区三区,精品一| 97在线视频观看| 天天综合网日韩7799| 九九碰九九爱97| 大香蕉中文aV在线| 久久熟女嫩草成人片免费| 97精品久久| 国产一区自拍欧美日韩| 亚洲啪啪性视频| 97人亚洲综合字幕| 亚精品无码毛片一区二区三区| 色色97爱| 免费人成在线观看网站品爱网| 免费啪啪啪网站18岁| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 人妻激情在线视频| 亚洲综合首页| a v网站在线播放| 校园春色之综合网| 吊色| 极品销魂美女一区二区| 91黑人无码激情在线| 亚洲永久AV无码精品秋霞| www欧美91| 97精品熟女少妇一区| 色玖玖| 又黄又粗又硬又长又大| 啊啊啊啊,啊啊好多水 | 日韩欧美加勒比| 手机看片1024你懂的国产| 超碰97色色| 人妻欧美| 欧美视频边做饭边橾| 国产精品交换一区二区| 97 九色| 日韩操啪| 蜜桃久久综合视频| 性欧美| 天天激情干| 久久理论字幕视频| 嗯嗯啊啊啊好爽| 久思思热视频在线观看| 国产乱码久久| 99999久久精| 国产欧美日韩在线不卡第一页| 金典av| 97亚洲综合在线| 波多野结衣AV无码一区| 人妻碰碰碰碰碰碰| 日韩大香蕉AV影片| 免费精品人妻一区二区三| 老熟女区| 亚洲国产综合视频| 色妺妺在线视频| 夜夜爽夜夜高潮夜夜爽| 香蕉久久国产AV一区二区| 欧美性五月| 乱性AV| 精品在线观看视频在线| 人人超碰在线观看黄| 夜夜操美女| 亚州成人A√| V A在线| 久久久久久中文字幕中文字幕最新| 91视频综合在线| 久久五月天婷婷丁香中文字幕| 亚洲瓯美色图| 韩美日操逼| 人妻天天夜夜爽一区二区| 欧美性生活内射| 久久久久久日韩| 欧美亚综合色图| 日本精品一级二级三级| 男女打扑克高清网站| 97干在线| 日韩AV中文字幕电影| 日本成人免费一区二区三区| 天堂九九九九九九九九九| 欧美熟妇亚洲版| 亚洲日韩精品一区视频在线| 亚洲精品1区| 久久性爱网站| 神马久久久久久久久| 一级A啪啪啪啪| 欧美色图欧美| 无码免费一区二区三区啪啪| 亚洲不卡不卡中文字幕不卡| 东京热男人的天堂| 国产丝袜视频| 亚州,欧美在线| 国产AV激情无码久久无码| 日产成人久久| 99热婷婷| 欧美色交| 97天天摸天天碰| 中韩中文字幕在线观看| 亚洲激情四射| 超碰色综合| 97 视频在线| 国产精品日本无码A片| 中亚av| 中文字幕精品免费一区二区| 欧美伦乱爱| 亚州AV无码国产精品| 91欧| 校园春色 男人天堂| 精品91日日夜夜超清资源| 99国产在线绯色一区| 人人干人人操人人爱| 精品国产污一区二区三区| 亚欧免费观看视频| 亚洲欧美日韩有码| 欧美日韩国产中文精品字幕自在自线| yazhououmeizongya| 欧美v亚洲v日韩v最新在线二区| 欧美专区17页| 富二代亚洲精品99| 国产AV久久野战精品| 欧美天天综合在线| 久久人妻视频| 大奶的诱惑| 亚洲综合小视频小说在线观看 | 亚洲宗合网| 日韩999| 久久中文字幕不卡人妻| 美女91色黄18| 91社区拍啪人妻| 啊啊啊爽爽| 亚洲熟妇无码一区二区三区| 少妇干B| 狠狠操狠狠操操| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日本韩欧美在线播放a| 18禁无码永久免费无限制| 亚洲欧美成人网站AAA| 国产丝袜美女在线一区| www.99色| 精品久久久久久无码| 伊人操| 亚洲色天| 亚洲Av噜噜一区二区三区妖精| 黑人免费福利视频| 美女大乳久久久久久久女人18| 欧美精品99久久久**| 南澳成人一级片在线播放| 亚洲天堂中文字幕无码男同| 无码丰满熟妇一区二区浪潮AV| 欧美亚洲今日在线| 330dv亚洲成年视频网| 午夜一区二区三区国产| 亚洲少妇视频| 亚洲天堂日本| 97精品国产97久久久久久户外免费| 亚洲第2页| 一级黄色性爱裸体视频| 欧美伊人电影| 日韩不卡一二三四| 性欧美另类高清| 亚洲中文日韩欧美大香蕉视频| 3PAV乱伦视频| 蜜臀久久99精品久久久久久成人小说| 96国产污污污丝袜| 久久人妻97久久久久久久| 操逼日韩无码| 久久国内| 日韩色欲久久一二三四区| 美女裸体无遮挡永久免费观看网站| 精品欧美乱码久| 超碰 欧美| 99热日| 天天操美美| 欧美情色男人的天堂| 台湾佬激情综合| 精品无码久久久| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 色阁阁AV综合网| 久久亚州精品成人Av无| 欧美综合另类| 蜜臀久久99精品久久久久久-DVD| 青青草原成人| 日韩人人精品| 欧美乱妇狂野欧美在线视频| 亚洲欧美性生活| www.久久99| 免费精品福利在线观看| 啪啪啪东京| 97超碰磁| 日日超碰亚洲| 久久久精品| 欧美亚洲中文| 毛片一区二区| 色吧5亚洲| 91精品国产91久久福利| 欧美狠狠干| 放黄片放3级黄片没穿衣服| 亚州黄站| 欧美黑人与女人91| 床戏久久久av一区二区麻豆| 干B| 色哟哟-国产专区| 超碰99热中文字幕| a人欧美综合天堂麻豆| 好湿好紧好爽 视频| 男人天堂.AB| 亚洲色图欧美色图制服丝袜 | 成人开心网在线视频 | 熟妇激情| 亚洲色婷婷综合久久一区二区三区| 久久精品无码一区二区三区| 91精品国| 91丝袜美女视频| 日韩福利综合一区| 国产中文大片资源中文字幕| 久久亚洲AV无码专区首页| 韩国一级做A片免费的| av天堂影视中文在字幕在线中文| 最新欧美色网| 1024亚洲中文字幕久在线看片你懂的| 97青青操视频| 亚洲欧洲久久天堂| 东京热精品97综合网| 欧美黑人日韩少妇色情| 密臀视频三区免费网站| 新亚洲无码| 久久亚洲AV无码专区国产精品| 国产超碰人人操| 九九九九九九九精品视频| 亚洲综合113页| 少妇蹲下买菜露大唇0| 欧美日韩美女精品久草一区二区三区 | 久久久久精| 亚洲黄日韩无码专区| 天天综合网~91入口| 久久欧美激情| 屁股久久久久久| 人妻二区| 郑州宾馆老熟女露脸啪啪| 五月丁香久久| 大乔未久88一区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 激情五月天校园春色网| 性爱乱伦网址| 婷婷99| 91精品成人| 精品白丝一区| 91成人18| 18禁超污无遮挡无码免费网| 国产精品激情久久久久久久| www.久久| 日韩情色AV| 亚洲欧美碰碰| 国产日逼视频| 精品久久一区二区三区四区五区| 超碰在线97国产| 青青草久草AV| 亚洲无码 国产无码| 日本三级R| 内射黑人| 精品人妻久久久久一区二区三区| 日本操逼视频不卡直接放| 亚洲中文一区二区三区视频| 性色国产东北露脸精品视频| 蜜区区视频79 | 欧美写真视频一区| 午夜偷拍久久熟女| 少妇高潮99p| 91综合天天| 隔壁邻居波多野结衣中文字幕| 狠狠色婷婷| 欧美亚洲清纯| 国产精品亚洲无码| 67914亚洲精品| 国产精品69久久久久久久 | 超碰97亚洲| 久操不卡视频| x97av| 欧美18 在线观看| 国产刺激视频| 天堂av最新电影网| 人干人人人操人人摸| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 高清视频一区| 92人人操人人| 日逼五月天| 天美91| 丁香五月综合| 日天天九九天堂666| 操逼1区| 欧美大香蕉97| 日本αv| 美女啊啊啊啊啊啊啊| 一本久久久精品| 极品色www影院| 很狠操| 亚洲日韩美女中文字幕乱| 色五月第四色| 成人一二| 欧洲综合视频| 日韩精品午夜操呦呦不卡影院 | AA丁香综合激情|