久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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
返回資訊列表
日本Xx性爱| 美女毛片999| 人夜夜精品网站香蕉嫩草| 国产探花精品在线| 97av,com| 国产在线精品电影观看| 激情久久久| 91久久精品国产| 色999偷自拍拍| 99999这里都精品| 亚洲综合在线91| 乱伦熟女专区| 欧美狠狠弄| 久都青青视频| 中文字幕人乱码中文字的预防方法 | 亚洲天堂男| 色九九九| 狠狠干综合| 一级@啪啪视频| 男人的天堂免费| 色www精品视频在线观看| 日韩精品国产一区二区| 97欧美精品综合| 亚洲一二三四区在线免费看视频| 偷拍欧美亚洲| 五月综合色| 国产亚洲精品无码三区| 久久六六| 欧美色999| 欧美97免费| 玖玖资源中文字幕制服丝袜| 一区二区三区四区姦女| 99自拍B亚洲 | 亚洲丝袜在线观看| 日韩欧美蜜桃精品久久中文字幕久久 | 九九玖玖精品| 日韩三级一区| 混色激情av| 这里只有精品视频在线观看麻豆| 1级午夜影院费免区| 日韩97P| 久久黄人人爽视频| 日韩啪啪视频| 99无码狠狠久久| 欧美日韩欧美| 最新日本中文字幕| 白丝被操91| 久久东京热成人| 国产精品97视频| 夜夜国自区| 91国内外在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 麻豆一区二区AV天美| 夜夜操中文字幕| 亚洲国产中文字幕| 国产国产亚洲一二三久久| 九九九九97| 少妇久久久久| 懂色av色欲av蜜臀av| 日本东京热加勒比久久| 激情小说五月天| 色av中文字| 日韩成年人性爱视频| 久久久久亚洲三级电影| 国产一级αv免费看片| 亚洲成人在线播放| 9精品久久| 成人无码专区精品视频| 国内一级精品| 亚欧性爱无码| 欧美熟女妇同| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 强奸乱亚洲| nuu12国产麻豆精品| 91在线欧色| 久久精品国产免费观看99| 国产精品3| 人妻少妇视频在线播放| 乱伦一区二区三区‘| 久9久9精品| 欧美日本不卡| 北野未奈加勒比av| 亚洲色啪| 九月丁香婷婷| 岛国片在线播放| 日本大香蕉综合网| 高清无码学生妹高潮| 一区二区三区成人| 男人天堂.AB| 欧美色图电影| 黄色操人| 强免费黄色网址| 亚洲青色欧美| 久久99久久99精品天美传媒棢·纸:.| 97国产|免费| 日本成a人v网站在线观看| 福利社区午夜一区二区| 久久草草欧美精品| 成人黄页| 国产在线能看的你懂的| 天天干人妇| 九九久久首页| 久久久久久网址| 久久亚洲日韩熟女精品| 亚洲吊色| 久久婷婷一区二| 18禁的网站在线| 好色综合| 亚洲av综合伊人久久| 人妻激情视频| 九99久久| 欧亚久久偷拍视频| juliaann精品熟女一区| 久久婷婷在线观看视频| 久久人人妻| 大香蕉黄色一区| 中国AAAAAA黄色片| 国产高清亚洲日韩一区| 欧美一区二区三区不卡高清视频| 国产一区二区三区视频在线看| 性爱精品一区| 国产精品视屏| 97AV爱| 美女露胸露屁股| 久都青青视频| 国模一区二区三区| 青青草五月天| 亚洲女毛多水多21P| 国产福利电影| 国产亚洲色婷婷久久99精品91 - 百度 | 婷婷亚洲综合| 91久久久久免| 国产精品岛国片在线观看| 99欧美| 久久综合av| 人人爱人人操人人性| 天天综合网日韩7799| 东京热av男人的天堂| 黄片在线免费在线观看| 狠狠91| 乱伦熟女区| 丁香婷婷色五月| 91狠狠狠| 久久久久久久久久8888| 色九月综合| 久久综合女优| 淫荡少妇免费| 老外又粗又长一晚做五次| 色老久久| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 蜜臀久久在线视频| 级做a爱无码性色永久免费| 久久亚洲影院一区二区| 91在线精品一区二区三区| 俺去也婷婷| 99av| 殴美综合色88| 顶级丝袜熟女一区二区三区| www国产精品| 久久婷婷五月天| 欧美97色| 欧美日韩天堂| 97天堂| 国内偷拍精品一区二区| 欧美A√综合网| 美女国产一区二区久久| 97欧美综合| 91黑丝美女| 午夜欧美女人操逼| 久久在线观看免费视频| 伊人网一本| 精品妇女一区二区三区| 成人精品一区二区91毛片不卡| 精品中文一区二区| 亚洲人在线| 日韩欧美俄罗斯A片| 天天久久久久久| 天天天天做夜夜夜夜做| 91女网站| 97视频观看| 国产精品制服丝袜清纯唯美| 91丝袜在线播放| 91色艳| 人人操人人插人人摸人人干| 欧美极度丰满熟妇hd| 色婷婷成人综合| 国产av美女被艹的乱叫| 日韩熟女三十乱伦| 手机在线免费看的av| 人妻熟女一区二区三区视频| 91日日| 超碰4A| 黄色成品网站| 伊人久久艹| 久久美女国产| 欧美黄片免费在线观看视频| 久久久无码视频| 亚洲色丰满少妇高潮| 玖玖视频在线资源一区二区三区| AV不卡在线| 亚洲欧洲自拍图片专区满春格| 啊啊啊操一区| 97超碰人妻| 在线观看免费视频国产| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 97天天爽| 亚欧性爱在线无码| 国产亚洲中文不卡二区| 天堂v无码免费视频| 欧美春色| 撸无码不卡免费视频| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 伊人色综合超碰| 秋霞欧美性爰视频| 日本在线激情一区二区三区 | 久操热线| 国产伦乱91| 乳欲人妻办公室奶水| 黄片www视频免费| 殴美性天天| 福利五区| 老汉网| 亚洲男人的天堂亚洲| 久久 国产精品 一区| 久久精品中文字幕无码l| 少妇一区二区三区精选| 国产精品亚洲一级av第二区| 国产不良强奸视频免费看| 欧美十八禁视频| 白丝av| 99婷婷一区二区| 欧美亚洲综合高清在线| 欧美色图亚洲激情| 日韩操p| 亚洲欧美首页| 久久精品国产精品一区| 欧美91色| 午夜在线播放| 人人做,人人操,人人摸| 先锋激情∨在线视频播放| 天天谢天天干| 午夜福利免费福利视频| 91操人| 五月综合视频| 91网站18在线| 蜜臀99久久精品久久久久久| 欧美色宗合| 边做饭边操逼逼| 国产精品一区av在线| 美女尤物人人操| 色噜噜人妻丝袜a∨先锋影 | 情色av电影| 久久99999| 黑人粗大V S日韩女优视频| 2019男人的天堂| 成人精品在线免费视频| 久久一区二区三区入口| 深夜操逼网| 很很干很很操| 加勒比AV天堂| 国产黄色小视频网站| 你想操日本小逼吗| 婷婷成人久久久精品| 国产激情久久久| 啊嗯好大视频在线观看| 香蕉免费一区二区三区不读| 色狠狠 - 百度| 亚洲色图欧美激情| 欧美日韩国产高清在线一二三区 | 91oumei| 中文字幕在线观看第二页| 欧亚无码视频| 成年女人18级毛片毛片免费观看| 久久国产成人精品国产成人亚洲| 亚欧操逼片在线观看 | 亚洲少妇色图自慰直播| 91色婷婷综合久久中文字幕二区| 乳欲人妻办公室奶水| 国产久久一区二区午夜| 久男人久久| 国产黄色剧情影片麻豆免费播放| 色综合尤物| 色眯眯射| se吧提供91精品国产91久久久久久 | 夜夜爽33333| 精品人妻一区二区三区视频| 久久精品一区二区一8| 精品成人av一区二区三区在线| 美日韩一卡二卡三卡免费人妻精品| 在线播放欧洲免费av| 都市久久精品激情亚洲| 啊啊啊啊啊在线观看网址 | 日韩不卡毛片Av免费高清| 69精品在线| 亚洲黄色电影| 日本三级中国三级99人妇网站| 亚州综合AⅤ| 超碰在线欧美性爱激情| 欧美精品1区2区3区| 亚洲吊色| 少妇一级婬片免费放一级a性色.| 精品无码不卡视频| 日韩欧美视频青青| 丝袜足交视频| 日韩有码免费视频| 青娱乐妇女性生活| 久久精品免费| 欧美高清无码免费视频高清版| 欧美日韩第一页| 伊人嫩草| 五月婷婷六月色| 久久久精品网| 五月天亚洲网| 狠狠综合网| 日夜伊人网| 丁香五月影院| 精品人妻久久久| 亚洲有薄码区久久在线一区| 色老牛| 中文乱码99| 99国内熟女露脸视频| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 久无码| 久久久久久九九九| 九九久久一区二区三区| 永久免费av无码网站国产app| 久热久一区二区三区| 人人操,人人插| 骚女高跟AV在线| 强奸乱伦中文字幕AV| 亚洲图片欧美另类综合免费视频大大香| japan日本高清乱xxxx| 4虎在线视频| 91色久| 亚洲天堂精品日韩电影| 91久久堂| 久都青青视频 | 最新精品久久蜜桃| 亚洲一本大道中文字幕无码在线| 精品少妇99| 日韩99999色| 97在线视频观看网站| 老色鬼成人精品视频下载大在线观看| 亚洲欧美精品91| 国产在线能看的你懂的| 啊啊啊啊啊啊啊在线| 99热在线观看| 亚洲精品尤物yw在线影院| 91成人久久| 激情五月综合网| 国内毛片无遮挡国产| 99热在线只有精品| 日韩久久艹| 国产97色在线| 97资源视频| 黄色操人| 夜夜嗨TV| 亚洲drav色图| 色综合98| 九热视频| av网页一区二区三区| 久久岛国| 人妻蜜桃臀| 九九九久久久久| 99热在线观看| 亚洲欧洲日韩国产自在线| 久久久久亚洲| 色香天天| 91综合网在线| 色欧洲97| 北京美女一区二区| 少妇同性| 久久久草成人网站久久久草成人久久久草久久久 | 五月丁香影院| 婷婷AV一区二区三区| 国产精品免费久久久久久久久久| 久9久9久9久9久9久9 | 日韩卡一卡二卡三在线| 日韩av免费一级电影| 亚洲图片欧美另类综合免费视频大大香| 91色久| 在线观看亚洲专区| 成人无码在线视频网站| 99热 按摩 日韩| 亚洲男人在线观看天堂| 国产中午字一暮区| 一区二区三区美女超清| 在线看片国产精品每日更新| 欧美亚洲国内自拍| 国产强奸91| 性欧美第一页| 丝袜美腿操av| 大香蕉草草| 日日骚av| 天天欲望网| 久久久久女教师免费一区| 欧美人妻另类在线| 欧美淫乱视频| 91亚洲人| 日本在线观看网址| 777AV电影| 国产亚洲中文不卡二区| 国产午夜激片Av毛片不卡| 亚洲无码免费看| 熟女激情综合网| 日韩性爱视频在线免费观看| 色哟哟511老熟女| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日韩av电影网站| 91国内外在线| 夜夜嗨TV| 欧美不卡五十路| 热99这里有精品综合久久| 老熟女乱伦片| 午夜无码精品免费看性色| 日本国产欧美高清在线| 五月天婷婷欧美三区| 久久色人体| 91欧美高清| 欧亚不卡| 国产一二三在线视频五十路| 无码不卡八戒| 欧美v亚洲v日韩v最新在线二区| 岛国成人av在线播放网址| www.狠狠| 嫩草 人人网精品| 少妇蹲下买菜露大唇0| 国产精品久久久亚洲第一牛牛_在线观看| 久超碰这里只有精品| 国产路线专区| 国产女同视频在线播放| 青椒国产97在线熟女| 色香色欲天天综合网天天来吧| 凹凸视频特色日本特黄| 午夜精品久久久久久久99热影院| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 色九九九综合| 久久久久久久| 你想操日本小逼吗| 美女露胸露奶头| 青草视频人妻在线观看| 国产强奸乱伦第1页| 狠狠色噜噜狠狠狠狠狠色综合久久| 任你草| 五月天综合网| 熟女一区二区三区| 蜜臀久久99精品久久久| 中文字幕 码 自拍 视频 区| 99精品久久久久久久婷婷| 超碰97亚洲区| 91丨九色丨国产打屁股| 国模不卡一本二本三电影| 中文字幕欧洲有码| 黑人性欧美| 欧美成人性爱视频免费观看| 亚洲欧洲精品成人| 久久久久久综合久久伊人蜜月| 二男一女成人A片| 日本久久久久久久久| 999九九九九国产动| 17c嫩草51久久91嫩草| 5月婷婷6月六月丁香| 妇女视频网站| 日韩无码一级黄色av片| 夜夜嗨AV一区天天| 超碰在线在公开超碰在线在公开| 国产一级内射无挡观看| 少妇一区二区三区在线观看| 99精品无码| 日韩激情毛片一级久久久| 成人综合色网| 欧美成人精品欧美一级乱黄一区二…| 国产色呦呦| 天天看高清麻豆| 99久久久无码国产精品性啊聊 | 国产视频三区四区| 日韩啪啪视频| 开心五月婷婷激情| 国产夫妻性生活视频| 操逼操逼逼操操逼91 | 屌逼麻豆| 凹凸 69堂 在线播放| 大香蕉www.超碰| 亚洲 日韩 欧美 国产综合体| 清清草影| 国产日韩欧美亚洲精品95| 99在线观看无大码| 亚洲日韩视频二区| 五月开心久久AV官网| 午夜亚洲国产理论秋霞| 亚洲一本色码中文字幕| 色网在线视频观看免费| 亚洲国产精品V?在线播放| 精品久久久久,69国产成人精| 97资源亚洲| 欧美人与性动交a美精品| www.av在线观看| 欧美人妻一区| 大香蕉在线视频15| 精品国产乱码久久久久久网站入口| 亚洲欧美国产日本一区二区三区| 欧美亚洲天天| 久久99黄色卞西瓜| 日韩性爱小视频| 大香蕉在线免| 亚洲五码一区二区三区| 久艹免费| 色婷婷综合久久久久中文一区二区| A级片日韩欧美国产欧美视频精选观看| 精品久久在线区一区| 久久久久久久久久久久97| 97在线欧洲| 中文字幕免费观看| 懂色AV蜜臀无码精品APP | 农村妇女一级二级三级视频| 84YTCOM性无码| 精品人妻视频一区二区三区蜜桃视频| 久久社区一区二区三区| 亚洲Av诱惑| 五月天偷拍| 亚洲av国产av综合av卡| 久久伊人青青草| wwwcaobibi| 91亚洲色图| 91在线/欧洲| 人人操AV| 成人午夜小视频手机在线看| 日本精品999| 老女人老91妇女老热女| 不卡九肏| 性爱av在线免费观看| 91免费看一区二区三区| 我想要啊 啊 啊| 亚洲日韩av一区二区三区百合| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日骚逼视频| 一区二区视频你懂的| 久久亚洲精品成人av| 欧美亚洲宗合色性图| av操操不卡| 精品无码久久久久久久杏吧| 久久九精品| 亚洲AV无码天美传媒一区| 欧美日本国产日韩激情视频| 91av熟女人妻| 超碰免费人妻在线| 91制服丝袜| 骚日日av| 欧美日韩美女精品久草一区二区三区| 国产60区。| 少妇一线天久久久久久| 秋霞无码av鲁丝片一区| 日本道久久综合色色| 女上位精品在线| 色五月婷婷在线| 亚洲日韩美国人妻| 91在线秘 男同| 国产传媒日韩欧美| 九九久久久| 亚洲成人在线乱码色午夜| 久草精品视频| 欧美白嫩在线放| 天美麻豆精品视频99| 六月丁香啪啪| 色婷婷五月天| 美女91| av日韩中文字幕| 亚洲高清男人天堂| 欧美日韩天堂| 一本久久精品中文字| 三上制服丝AV| 人妻酒店出差被中出免费在线播放| 99热综合在线| 午夜欧美J进J出白浆流出久久久| 熟妇艹鸡八| 超碰在线人妻不卡| 久插不卡| 精品久久久不卡一区二区| 久久综合女优| 夜草欧美| 91热色| 青女偷拍网| 天天综合青苹果| 精品人妻一区二区三区不卡断 | 一本色道综合久久欧美| 超清福利精品视频在线| 久久黄色视频一区二区三区 | 99999这里都精品| 九色 蝌蚪 熟女自 | 99久在线精品99re8| 91粉嫩萝控精品福利网站_精品影音先锋国 | 国模少妇一区二区三区| 婷婷综合在线| 亚洲色鬼| 人人澡人人弄| 国产精品久久久久久久久久二区三区| www.人人摸在线视频| 一区二区三| 后入国产| 国产日韩手机视频在线| 97国产高清视频在线观看| 93人人操人人| 91黑丝在线播放| 国产精品网站www| 97久久久久久久精| 婷婷色色五月天福利| 青青草依人大香蕉| 乱伦熟女论坛| 在线观看亚洲成人精品| 久久精品视频久久久| 啊啊啊啊网站| 69AV女优男人的天堂| 热久久无毒不卡| 日本大香蕉综合网| 性色av大全| 亚洲成A∨人影院在线欢看| 欧美亚洲日本激情在线| 色一射色一射| 美女天天干| 明星性猛交ⅹxxx乱大交| 国产成人无码啪| 五月丁香久久| 91男人天堂网| 男女啪啪网站免费视频| 不卡啪啪视频| 操操操操操操| 青青草好吊色| 夜夜影视四色| 久久久久9久久久久| 性感美女啊啊啊在线| 丁香色狠狠色综合久久小说| 乱伦系列一区二区| 九一性生活免费视频| 中文字幕欧美丝袜07资源| 免费强奸av| 欧美爱三级日韩久久| 蜜乳AV色欲AVAV无码| 婷婷成人久久久精品| 91爱综合| 亚洲丝袜少妇在线| 欧美极度丰满熟妇hd| 久久久久元码视频| 另类亚洲一区二区三区| 神马视频久久久久久| 日本免费二区三区| 中文字幕交换人妻| 一区| 欧美不卡在线一区二区| 日本一级黄色电影| 9精品久久久久| 无码在线亚洲| 久九9精品| www.99中文字幕| 成人五月天色网| 乱伦一二三区| 欲色影视综合吧| 综合影院永久入口国产| 91ise欧美| 无码人妻精品酒店| 日本有码影片下载 | 96AV精品| 色妇综合网| 综合五月天| 人妻丝袜一区二区三区在线| 日本午夜操逼| 精品玖九九久| 欧美日韩国产另类综合| 大香蕉男人的天堂| 国产精品黄色三级av| 伊人991| 欧美综合娱乐久久| 欧美日本天堂| 日本操色导航| 久热大香蕉网站| 日韩性爱小视频在线观看| 一级黄碟| 美女写真| 日本不卡中文| 黄页18禁| 日本性感人妻91| 磁力99AV| 九九黄色视频在线观看| 色欲久久久久综合网| 啊啊啊好舒服好爽啊啊啊视频| 黄人人操人人操| 求求你操操我| 久草福利在线资源站| 啊啊啊啊,啊啊好多水| 天天爽天天| 国产呦精品系列在线观看| 后入内射蜜桃臀| 丰满岳乱妇一区二区三区| 久久精品老司| 超碰久热| 内射老妇BBWX0C0CK| 精品人妻一二三四区视频| 在线视频日韩欧美国产| 无码天堂| 超碰69| 亚洲AV无码国产精品久久久久| 老汉网| 久久6热精品99视频| 精品国产片亚洲一区| 97爱综合| 超碰是碰在线观看| 九九精品美女高溯喷水| 黄片色区软件| 久久精品熟女亚洲AV麻豆软件| 久久神马影院| 婷色五月天| 日韩精品在线观看观看| 91人妻熟女| 国产亚洲精品美女久久久m| 日韩免费看在线黄色片| 极品美女嘿咻| 91在线国产后入风骚翘臀美女素人| 国产成人五月天丁香花| 日韩亚洲中文字幕在线| 大香蕉狠狠爱| 久草国产在线视频| 久久99草| 午夜福利久久久噜久噜久久综合 | 夜夜操美女| 中文字幕一区二区三区四五区| 高树玛利亚无码流出| 亚洲精品三| 国产精品亚洲天堂网址| 久草午夜| 97国产伦理| 亚洲污污网站| 丁香激情五月天| 色综合久久88色综合久久天天| 在线观看中文字幕| 欧美成人精品一区| 91日日夜夜| 东北操逼| 91综合国产精品| 富二代亚洲精品99| 无码免费一区二区三区啪啪| 色色色色电影网| 密乳无码| 欧美高清18A片| 久久久蜜桃臀无码视频| 97碰碰日本乱偷人妻中文的| 超碰 另类 欧美| 色欧美天天| 青青草日韩无码| 九色PORNY9l原创自拍| 婷婷五月色| 超碰人人干| 香蕉人人操tv| 亚洲天堂一区二区久久| 啪啪啪东京| 日本人妻中文字幕| 欧亚性爱在线视频| 少妇无码av专区线| 国产精品自拍xxxx| 手机在线视频国内精品| 亚洲欧美国产成人综合不卡| 亚洲成人无码影院| 另类亚洲一区二区三区| 一级岛国大片| 亚洲成人免费中文字幕| 欧美日韩激情无码专区| 操逼逼中文字幕| 亚洲一卡2卡3卡4卡乱码网站| 色狠狠 - 百度| 丁香色五月 97干| 亚欧精品久久久久久久久久久| 大香蕉操久久| 深夜啪啪啪视频免费| 国产成人精品午夜福利| 亚码人妻| 99热18| 亚洲成A∨人影院在线欢看| 农村少妇久久久久久久| 亚洲av资源| 777超碰| 日日干天天干夜夜爽| 91一区二区三区蜜桃| 中文字幕亚洲热播人妻| 欧美日韩岛国大片在线观看| 婷婷视频网| 久久婷婷五月综合| 色综合加勒比四四季| 色网综合网| 午夜九九九九九九| 日韩字幕一区| 国产亚州高清国产拍精| 色婷婷综合视频| 操人妻丝袜高跟| 大鸡巴久久久| 一区二三区四区视频大全套| 亚欧美综合| AV女资源| www.99中文字幕| 久操大香蕉手机视频在线看| 人妻二区| 天天躁日日躁XXXXYY| 色九区| 91丝袜美女国产| 国产原创剧情在线丝袜| 啊啊啊啊视频免费| 果冻传媒A片麻豆熟妇人妻| 大香蕉丝袜一级片| 99re在线视频这里只有精品| 超碰久热| 97WW精品| 欧美精品,四区。五区| 95精品在线| av天天在线| 精品传媒在线一区| 91成人高清在线观看| 九九成人视频| 欧洲大香蕉| 国产成年女黄特黄| 国内自拍 日韩激情 99| 欧美夜色| 亚洲欧美校园| 色香色欲天天综合网天天来吧| 天天干一区二区| 国产91美女视频| 亚洲无码?第一页| 亚洲AV资源| 99re这里只有精品9| 亚洲国产欧美中文永久| 欧美后入视频| 女性喷水高潮在线观看| 长长久久免费视频| 91模特在线观看| 岛国精品视频在线观看| 制服诱惑亚洲一区二区三区在线观看| 婷婷五月天激情四射| 一区二区三区精品久久| 国产精品久久久777| 少妇被c 黄 免费观看| 91 手机在线播放 绯色| 熟女色图在线| 久久夜夜| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 日韩少妇丰满亚洲| 日韩电影天堂视频一区二区| 逼操网站| 一直超碰| 草草影院日本第一页| 欧美老妇综合网| 久久在线观看免费视频| 亚洲成人网站在线观看| 一区二区视频在看| 青青草日韩无码| 密臀视频三区免费网站| 五月婷婷色| 91熟女丨老女人| 狠狠色丁香| 久久超碰日韩精品| 久7色| 2017大香蕉| 日韩在线视频1234| 91国产操逼视频| 四虎884a| 色综合av男人天堂| 亚洲做性| 九九九九久久久| 成人羞羞视频国产| 怡红院成人av| 天天精品| 国产激情在线| 成人精品电影| 国产性爱在线视频一区二区| 在线视频五十市| 一本久久精品中文字| 国产日韩欧美操逼视频| 日本精品人妻少妇一区二区| 天天综合网91| 色哟哟-国产专区| 91丨九色丨国产丨人妻在线 | 校园春色综合香蕉| 国产女人成人精品视频| 91爱啪| 国产一级久久久| 国精精品无码一二三区水多多| 亚洲国产天堂| 日本九九久久99播| 丰满人妻无码一区二区三区| 色网亚洲人| 天美欧美国产| 色色激情| 极品国产内射| 久久精品男人的天堂| 天天做天天爱天天高潮| 久久久久亚洲熟妇熟女| 97欧美色综合| 天天日少妇逼AV| 久久青青草原免费视频| 欧美肥臀在线| 亚洲欧美激情另类色图| 99国产精品视频尤物| 天堂伊人久久| 丁香五月婷婷基地| 亚洲国产欧美一区二区潘金莲| 91久久国产综合精品| 99啪啪| 亚欧性爱无码| 欧美天天射| 国产嫩草精品A88AV在线| 精品区国产区一区二区三区| 亚洲伊人久久综合97| 久久精品操| 97天天弄| 亚洲情色91| 熟女字幕| 欧洲亚洲国产综合在线| 国产农村妇女毛片精品久久| 国产午夜视频| 丝袜六区| 久久久com| 伊人久久大香大香线蕉中文| 国产又黄又爽又刺激久久久久久| 超碰人人干天天射| 亚洲精品1区| 亚洲男人天堂视频 | 男人的天堂一区三区| 欧美操人视频| 欧美高清16| 久久华人网| 久婷婷一区| 99re这里只有精品3| 久草久热| 丁香五月成人| 欧美精品自慰系列寂寞少妇| 18禁精品网站在线看| 欧美色天堂网在线视频| 国产精品一区二区三区,亚洲综合| 强歼乱伦资源网| 97色婷| 国产白丝精品在线观看| 五月开心网| 91丝袜| 草b在线| 日韩精品区二区三区不卡| 在线性黄高清免费视频| 日韩一级特黄av毛片| 国产在线激情视频| 欧美福利视频啊啊啊啊| 97在线视频观看| 天堂成人网| 91老妇女| 欧美丝袜91| 成人草草视频| 欲综合网| 欧洲亚洲人妻无码高清久久三区四区| 四虎精品一区| 久草成人影片| 天天综合91入口| 鸥美插入视频| 99热aaa| 综合天天网| 欧美综合在线91| www.色婷婷色综合| 日韩一级片| 97人妻碰碰中文无码久热丝袜| 久草视频分类在线| 人妻少妇被猛烈进入中| 四虎精品永久在线播放| 国产无码三级视频在线观看| a片久久久久久久久久久久| 婷婷激情四射| 亚洲图片欧美偷拍| 欧美亚洲特P| 精品人妻一区二区免费蜜桃视频| 综合大香蕉美。| 四虎影视国产精品| 欧美亚洲手机在线| 精品无码久久| 999综合网| 吖在线不卡一区二区国产剧情| 欧美精品23| 92人人操人人| 91美女丝袜诱惑视频| 97色插| 91丝袜激情在线| 男人成人黄色视频在线观看免费下载| 亚洲精品 欧美97色色| 人妻铁牛TV| 国产久久成人| 久久99午夜精品一区人妻| 久久久久婷婷| 丁香五月激情婷婷| 久无码| 超碰久久精品| 天天综合97| 爽极品影院| 久草视频分类在线| 亚洲情色1区| 51一区二区三区| 国产v亚洲v日韩v欧美v片另类| 中文字幕精品一区二| 日韩不卡av一二三| 超碰亚洲97| 内射卯月麻衣| 免费试看60秒| 囯产操逼片| 日本有码影片下载| av 模特一区了| 亚洲精品九九九| 无码久久亚洲高清,| 一本大道不卡一二三区| 日韩AV电影网站| 少妇内射www在线观看视频| 天堂性色| 啪一啪免费视频| 91欧美偷拍| 1024精品在线| 国产精品嫩草影院免费| 亚洲最大无码中文字幕网站| 国产亚洲色婷婷99精品91| 加勒比综合a∨| 色吧5亚洲| 五月天婷婷综合网| 亚洲图片 欧美电影| 尤物网址| 精品四五区| 日本黄色精品| 一块操欧美性爱| 亚码人妻| 无遮挡一级毛片视频免费的| 人人操人人大香蕉| 日韩97视频| 国产美女自拍AV| 91丝袜美女| av2014 日韩在线中文字幕| 亚洲精品xxx| 情色av电影| 亚洲成a人v欧美综合天堂下载| 久久草大香蕉| 白丝jkav| 综合伊人网12色| 黄色网址久久精品欧美喷水| 水滴偷拍| 久久色情| 色777999综合| 久久久精品无码亚免费| 91少妇通奸网站| 亚洲一区二区三区中文字幕| 97色色色综合网站| 被窝影院午夜看片无码| 国产怡红院| 国产肏逼网站| 熟妇一区二区三区| 好涩综合| 97舔舔| 夜夜爽夜夜爽| 欧美综合骚| 欧美性爱综合,免费| 国产无遮挡| 国产偷人伦激情在线观看| 亚洲综合色男人网| 欧美性xxxxx狂欢| 91在线美女| 午夜福利国产欧美日韩夜夜| 欧美男人一区| 又大又大又大又粗爽高潮观看| 一区二区三区精品黑丝白丝酒店对鸡 | 芊芊操逼视频无码| 中文字幕精品亚洲熟女| 国产亚洲禁久一区二区| 欧亚日韩三区| 国产亚洲深夜激情| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 黄色工厂这里只有精品| 99这里只有精品| 激情综合网亚洲| 99热综合| 欧美九九九九九| 婷婷丁香一区二区三区| 欧美操逼熟女| 天天天乱色综合全| 91视频精品| 国产成人精品一区| 久操操| 精品无码一区二区三区| 啊啊啊啊嗯嗯嗯用力好爽| 成人性爱免费播放| 欧美国产成人在线| 亚欧高清| 日本三级韩国三级美三级91| 丁香五月电影| 天堂69亚洲精品中文字| 亚洲日韩熟女人妻高清在线| 激情综合网五月婷婷五月天| 亚洲资源网| 九九内射在线| 永久免费av无码网站国产app| 伊人亚洲综合| 一色网男人的天堂| 亚洲综合另类小说色区亚洲成av人片在www| 在线播放中文字幕| 九九热免费国产视频婷婷伊人五月| 精品国产乱码| 成人天天爽| 国产性刺激| 中国探花熟女| 日韩成人高清一区二区| 久久9精品网站| 午夜呻吟欧美| 亚洲超碰AV| 欧美日韩大香蕉| 黑白配性爱AV成| 亚洲黄日韩无码专区| 免费中文在线| 亚洲国产一级黄色视频| AV在线播放网址| 最新欧洲欧美日本激情网站| Blackedraw视频一区二区| 神马久久久久久久久久久久| 大香蕉99热| 中文有码9| 懂色AV蜜臀无码精品APP| 国产无码久久高清| 久区视频| 久久九精品| 久久黄色网址| 柠檬AV导航| 黄色av网站在线播放| 国产欧美日产一区二区三区 - 国产欧美日 | 熟妇xxxxx性春色| 欧色网址| 六月丁操逼| 欧美最婬乱婬爆婬性视频 | 视频黄站| 国产亚洲欧洲在线观看| 99欧美| 亚洲最大AV网| 欧美在线永久天堂| 久久岛国| 婷婷探花久久精品一区| 后入式999| 久久久久久波多野吉衣高潮| 九九热精品在线| 青青青操| 亚洲欧洲偷拍一区| 久久激情网| 五月丁香在线| 久久婷综合| 亚欧性爱在线无码| 9999久久久久| 麻豆国产免费影片| 国产精品视频白浆免费| 家庭乱伦性爱av| 亚洲一区二区三区不卡国产欧美| 男啪女色黄无遮挡免费观看| 2024黄色视频| 91色色网站| 看全色黄大色大片免费视频| 嫩草 人人网精品| 亚洲在线A| 亚洲亚洲亚洲天堂天堂| 亚洲se电影| 青青草精玖玖69精品| 九九九九日本 |