色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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一区二区三区视频| 国产精品无码AV网站| 黄色AAAAAAAAAAA大片| 久久精品99久久久久久| 能看的AV| 性无码专区2020| 欧美日本天堂| 美女超碰978| 免费A片三p视频| 伊人亚洲综合| 夜夜爽77777| 日韩性爱免费视频在线网站| 人人操我人人干| 无码二级三级| 欧美另类天堂| 久久九操在线观看| 男人的天堂亚洲| 欧美性爱免费短视频| 亚洲熟女人妻中文字幕一区二区| 亚洲综合九| 高潮内射在线| 久久九九网| 91搞逼视频| 久九九九| 日韩超碰97| 伊人久久久日韩一区| 玖玖玖玖精品国产剧情| 日本精品高清一二区一本到| 国产精品剧情| 啊啊啊好大好深| 成人精品欧洲亚洲| yy少妇精品久久| 人妻少妇三级| 青青操在线亚洲视频观看欧美在线| 嗯啊抽插大香蕉网页| 九九热av| 人妻少妇精品视频一区二区三区| 超碰欧美COM| 少妇久久久免费| 试看福利| 97久久精品不卡| 视频在线中文字幕| 超硑97精品| 泰国AV在线观看| AV色天香在线| 欧美色图亚洲特色| 日韩精品9999| 97这里只精品| 97人人爱人人做人人乐| 男人的天堂在线| 久久国模av| 美女AV一区二区| 亚洲 欧美 另类 日韩 人妻一区| 中文字幕人乱码中文字的预防方法 | 中文自拍欧美影视| 九久9精品| 国产精品免费视频人成| 91老司机在线视频免费观看 | 猛猛干| 国产白丝网站| 五月天伊人网| 成人精品无码| 91在线精品一区二区三区| 国产综合久久久麻桃个| 青青青草原| 九t超碰| 91亚洲黄色网| 看日韩黄片| 精品亚洲成人免费在线| 国模无码一区二区三区在线| 精品人人| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 玖玖爱伊人玖玖爱| 另类欧美色| 欧美丝袜中文字幕07在线| 国产馆| 欧美97爱| 中文字幕av乱伦| 六月婷婷色综合| 清柠毛片| 91网亚洲| 99re综合伊人| 欧洲在线性爱视频| 亚洲系列第一页| 伊人久久婷婷| 啊啊好多水| 日韩美女高潮喷水视频| 欲色综合| 欧美经典一区二区三区 | 秋霞影音一区二区三区| 天天碰操中国年青熟妇| 啊啊啊骚| 强奸国产在线| 亚洲午夜av| 强免费黄色网址| 欧美色三级片91| 欧美亚州色的图| 99热婷婷一区二区三| 久久内射| 天天躁日日躁AAAXX| WWW4虎| 啊啊啊啊好大好硬啊啊啊啊啊| 欧美性高潮| 蜜臀久久99精品久久久久久成人小说| 国产精品懂色tv影视免费观看| 国产一区免费午夜视频| 日本裸体久久色噜噜| 国产蜜臀在线| 91欧美大片| 大香蕉综合网| 久久精品国产97欧美精品亚洲 | 十八禁视频网站| 欧美少妇第一页| 男人的天堂VA| 狠狠干综合| 97综合在线观看| julia国产在线 | a片久久久久久久久久久久 | 午夜精品久久久久久久99蜜桃一| 和协影院中文字幕三区| 色综合国产在线观看| 天天干天天拍| 日日骚av| 国产AV无码AV| 久草久日| 在线无码操| 欧美亚洲日韩16色| 麻花传媒免费网站在线观看| 亚洲欧洲无码一区夜| 日韩精品在线放| 亚洲欧洲小说图片视频 | 欧美 综合 亚洲| 亚洲麻豆av一区二区| 婷婷综合五月天| 啊啊啊啊好疼视频| 日本 欧美 国产一区| 裸体美女久久久| 眼镜人妻101.com| 久热9| 久久亚洲天堂| 日本午夜久久电影| 麻豆一区二区三区在线看 | 国产人妻精品一区二区三区秋霞| 噜噜噜无码AV一级一级久久影院| 亚洲综人网| 91啪啪视频| 九九九九九九精品| 亚洲熟妇丝袜在线观看| 青草草免费网站av| 久久女女| 久热久一区二区三区| 国产精品96| 丁香九月激情啪| ai欧美亚洲小说| 精品v日韩欧美国产| 9ⅰ久久久天天| 色九月| 亚洲天堂欧美| 99久在线精品99re8a| 国产人伦a片信息免费片| 欧美日韩国产精品久久色婷婷| 探花精品视频| 人人看人人插| 精品九区| 91在线/欧洲| 色一色综合网| 久久精品国产亚洲5555| 九九九久久久久| 国产绿奴视频在线观看| 天天射天天| 男人的天堂无码| 人人天天欧洲| 3P乱轮视频| 91天堂| 日日干夜夜操视频h| 2020国产精品| 熟女突然公开看18禁影片 | 日韩本不卡视频在线观看 | 亚洲另类久操网| 91人妻精华帖| 久久久人妻| 亚洲日韩久久精品一区| 青久操| 色999五月色| 国产亚洲精品久久久久小| 91欧美丝袜| 夜夜肏2021| Sekablack无码一区| 五月天伊人| 国产精品一区二区黄片| 99国产在线 精品 视频| 九九九热| 色综合天天爱去电影网| 亚洲网污污污污| 夜夜肏2021| 99精品久久久久久久婷婷| 精品78| 91痴汉| 色www精品视频在线观看| 欧美大香蕉卡久久| www.狠狠| 亚洲午夜av| 无码av永久免费专区网站| 91P0RNY大屁股人妻| 视频黄站| 久久久久人| 亚洲美女色图| 精品国产99| 婷婷六月天| 天天躁日日躁AAA片李宗瑞| 欧美精品23| 久9re热视频这里只有精品| 欧美亚洲系列| 欧美丝袜中文字幕07在线| 天天综合~91| 久草老司机| 亚洲熟妇综合久久久久久| 婷婷精品| wwe 天天干.com| 女人的久久久| 久久婷婷国产一区二区色| 天天干少妇| 看日韩美女二区三区免费操逼视频| 亚洲综合中文字幕有码| 日本欧美成人片AAAA| 激情专区综合| 亚洲AV免费在线观看| 亚洲色人妻综合| 日韩精品国产精品五码一区二区| 欧美综合骚| 国产天美欧美| 91av天美性媒精品视频| 夜夜骑日日| 欧美 色 亚洲| 内射夫妻三片| 国产aⅴ无码片毛片一级网站| 国产又黄又粗的视频| 国产成人自拍视频视频| 国产男人又猛又粗又爽| 青青草中文-久久青草精品一区二区三| 色五月av| 夜夜 中文视频rt| 校园春色欧美| 天天干人人乐| 久久久久久久人妻丝袜| 国产精品女生av| 亚洲天堂中文字| 性色av婷婷久久一区二区点复制| 大香蕉啪啪网| 国产精品网站免费| 骚妻少妇精品性色无码四色A V| 九九九九一区| 日韩精品在线放| 岛国网址国产 | 欧美成熟性爱精品| 久久精品中文字幕无码l| 黄人人操人人操| 俺去俺来也在线www| 亚洲成人性爱在线观看| 国产女上位好爽在线| 欧美激情片一区二区| 四虎影视国产精品| 无码 黑人一区二区三区| 中字乱伦AV| 自拍欧美| 青青草中文字幕| 福利社区午夜一区二区| 色情综合网| 91久久国产综合精品| 久9综合在线| 国产精品久久| 天天躁日日躁AAAXX| 亚洲综合有玛| 不卡在线观看视频| 国产精品视频精品一二| 男人网站婷婷| 中字幕人妻一区二区三区| 乱伦熟女区| 操人妻逼91| 丝袜亚洲综合| 色色五月天婷婷| 九9热伊人| 性夜影院爽黄A爽免费动漫| 性爱乱伦一区| 加勒比av官网在线| 17c在线成人免费A片观看| 色婷婷激情| 天美一二三在线观看Av| 五月丁香六月综合缴清无码| 色妺妺在线视频| 九九九九热只有精品| 日韩激情啪啪啪| 熟女欧美日韩综合婷婷| 懂色AV网| 亚洲五码一区二区三区| 黄色不卡视频| 操逼片国产| 日日天天久久啊啊aaa| 亚洲熟女人妻中文字幕一区二区| 欧美麻豆成人同性GⅤ在线| 久久国产对白激情浪潮 | 久久久一区二区| 久久亚州精品成人Av无| 国产精品suv一区| 天堂69亚洲精品中文字| 白丝AV网站| 91一区二区三区蜜桃| 久久极品伊人| 国产一国产一级毛片古装| 五月丁香六月| 成人一二| 日本免费中文字幕在线| 国产精品播放| 亚洲综合在线第一页| 麻豆久久久久久久久丝袜| 91成人久久 | 欧美翘臀视频网站一区二区三区| 99久在线精品99re8a| 95精品在线| 91久久精品蜜臀| 综合熟女| 国产后入精品| 久久综合九九| 婷婷丁香六月| 日韩少妇一区二区三区| 亚洲一欧洲中文字幕在线| 黄色电影观看久久9| 欧美在线永久天堂| 精品人妻一区二区三区四区不卡在| 97超碰国产亚洲精品| 久久r精品| 亚洲一二三四区在线免费看视频| 亚洲偷拍欧美激情| 欧美亚洲丝袜人妻制服中文99| 国产精品夜夜夜| 国产一级高清免费观看| 18禁看网站一区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91久久久久免| 欧美岛国精品在线观看| 人人操我人人干| 老熟女天天操| 欧美黑人猛交春色影视大全| 夜夜一区二区| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 亚洲日产专区婷婷| 久久亚洲一区二区色婷婷| 羞涩视频| 亚洲成人无码影院| 色香色欲天天综合网天天来吧| 久99视频| 97天天做| 女生看匆91网站| 精品视频在线观看精品| 国产精品香蕉热久久新品| 久久久97| 色老牛| 欧美色视| 人妻啊啊人妻啊| 91熟女.com| 91丨九色丨国产丨人妻在线 | 色噜噜人妻av中文字幕| 91AV入口| 97超碰天天| 91色欧美| 福利在线黄片| 国产精品人妻无码久久久老鸭窝| 2017av无码免费无线播| 中日亚韩免费视频| 国产女人视频三四五区| 中日高清无码操逼视频| 亚洲 欧美 色图| 91色黑人少妇| 亚洲无码视频免费在线观看网址!| 91丝袜在线观看| 丁香五月偷拍| 国产中文字幕曰本毛片| 九九英色视频| 噜噜噜在线视频| 欧洲精品在线播放| 伊人网综合在线视频| 美女91色黄18| 99热精品在线播放| 青青草国产欧美非洲黑人| 国产11页| 都市久久精品激情亚洲| 亚洲综合性网址| av三级电影在线播放| 欧美九九99久久精品| 日韩av电影成人在线| 欧美熟女少妇| ji熟女.com| 97少妇人妻中文字幕久久 | 人妻熟女午夜精品在线| 天天干18禁| 人妻一区久久二区三区色播| 国产精品亚洲无码| 97av,com| 综合网,亚洲,欧美| 国产精品点击进入在线影院| 精品制服美女中文一区二区三区| 亚洲五月丁香花狠狠干一区二区三区| 一级AV性爱| 欧美天天干| 综合五月婷婷亚洲一区| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 男人在线天堂| 亚洲成人久久一区二区| 91女优在线观看| 久久伊人最新网址视频| 99欧美| 另类一区| 欧美页片| 一级AV性爱| 人人喜人人妻| 国产精品爽爽v| 日韩精品影视| 国产免费一区二区三区最新不卡| 综合激情五月丁香| A级国产欧美激情在线| 久久中文字幕不卡人妻| 天美精品一区二区三区四区在线观看| 天天干人人干天天日97| 久久久久久久久国产| 韩国一级做A片免费的| 校园春色美腿丝袜 | 亚洲AV小说| 被窝影院午夜看片无码| 无码二级三级| 校园春色家庭伦理欧美激情| 在线人妻熟女一区二区三区四区五区| 国岛片视频| 东北少妇高潮zzzz| 日韩欧美中文字| 九九色色| 97资源制服丝袜| 色香色欲天天综合网天天来吧| 97亚洲精品| 超碰久超碰久| 屁股久久久久久久久| 亚洲美女30b| 97天天爽| 日韩无码嘿咻黑热久| 中文字幕av乱伦| 一起草欧美| 热99re69精品8在线播放| 美女91网址 | 国产农村妇女精品| 97国产中文| 亚洲97资源| 欲色啪| 日韩精品人妻中文字有码在线 | 婷婷午夜清品久久久久久久性色视频观| 自拍视频大全亚洲专媒视频/一区二区三区 | 久草视频制服诱惑| 嗯嗯啊啊亚欧精品| 亚洲综合骚逼| 成人夜夜| 1240青青草一区二区三区视频天爱| 日本在线伊人啪啪| 黄页网站成人免费| 日韩一级性爱无码| 天天弄天天操| av天堂手机版追回 | 久久手机好看网站| 91网亚洲| 偷拍导航视频网站| 亚洲欧洲av影音| 国产精品无码久久久久2025| 精品人妻美妇91job| 日韩欧美亚洲国产日韩| 天堂岛av| 欧美中字二区| 少妇三p| 免费A片三p视频| 国产剧情AV不卡在线观看| 免费黄色视频网址| 日韩精品影视| 免费福利视频中文字幕| 五月婷在线| 精品国产自在在线99| 天天草AV| 超碰成人最新最好看| 久久99手机免费视频| 无码精品久久久久久亚洲| 亚洲色系另类精品国产| 亚洲五月丁香花狠狠干一区二区三区| 一区二区三区日韩欧美| 欧美在线中M| 欧美激情亚洲情色| 国产热RE99久久6国产精品首| 97超碰无码网| 超碰人人操97碰| 日韩三级久久久| 97色操| 九九热精品| 超碰91在线| 啊啊啊啊啊在线观看网址 | 国产懂色精品国产av| 屌妞视频久久久久久久| 久久精品 六十路 熟女 欧美| 国产色精品午夜大片| 免费草草草草草视频| 亚瑟国产精品久久无码| 久久久性爱视频| 小草三级久久观看| 亚洲 自拍偷拍 欧美| 天天躁日日躁狠狠狠躁| 99热精品青草在线| 日韩欧美亚洲一区二区三区影院| 人人妻人人爽一区二区三区| 丰满少妇一区二区三区四区观看| 在线观看AV片| 国产精品熟女一区二区三区| AV99热18这里只有精品| 久99热| 情趣丝袜无码操逼视频| 久久久久久久六六| 天堂岛av| 黑丝自慰喷水网站| 久久精品一区二区| 91超碰在线观看| 一区久久久二区| 亚洲av乱伦色图网站| 91欧美www| 玖玖爱一区在线| 中文字幕日韩精品一区二区三区| 久久发布国产伦子伦精品| 人妻嗯啊啊在线播放| 亚洲色图尤物视频| 激情小说亚洲| 欧综合网| 青青操在线亚洲视频观看欧美在线 | 久久日韩肥臀| 久久久久女教师免费一区| 熟妇激情| 欧美亚洲高清不卡| 伊人 俄罗斯 a v| 亚洲欧洲小说图片视频| 蜜臀AV成人精品蜜臀AV久久| 丁香五月激情婷婷| 艹比视频国产精品| 一级久久性爱视频| 欧美日韩性爱视屏免费看了| 欧美成人黄网色网站| 日韩在线观看字幕精品| 日韩午夜精品一区二区三区电影| 女人喷水视频在线观看| 久久久久国产一区二| 手机在线观看不卡无码av| 一级黄色性爱裸体视频| 欧美日韩性爱视屏免费看了| 夜夜一区二区| 久久久久久亚洲精品中文字幕人妻| 天天拍天天操| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 中文字幕一区电影在线观看| 黄色片大香蕉| 中文字幕-区二区三区四区视频中国| 99re视频在线观看这里只有精品| 草久久久| 亚洲天在线| 超碰免费人妻人人| 无套内射人妻在线播放| 天天操夜夜操| 一本一首道人妻少妇免费久久| 青青欧洲黑| 久久久久久人| 国产精品亚洲高清在线| 日韩在线视频1234| 国产成人精品一区| 偷拍偷窥与盗摄视频专区| 秋霞久久亚洲精品成人| 图色综合网| 国产精品久久久久久久久久二区三区| 男人的天堂 在线一区| 亚洲色图欧美视频| 伊人玖玖网| 欧美爱爱97| 日韩一级片在线看| 人妻人妻天天碰| 免费视频在线一区二区不卡| www激情| 91成人在线| 大香蕉视频啪啪啪啪| 密乳AV免费观看| 亚洲情色电影网| 男同专区一区二区三区在线| 一起草日韩| 日韩99神马视频播放片在线播放| 综合色久欲| 人人做人人妻人人夜视频| 0755午夜福利视频| 蜜乳AV免费观看| 激情终合网| 3P乱轮视频| 欧美性少妇| 97亚洲综合电影| av无线看| 欧美偷拍| 日日骚 av| 国产99 中文字幕日韩小视频| 啊啊啊啊啊啊在线| 天天做天天爱天天爽AV| 亚洲综合精品国产一区| 丰满人妻一区二区三区免费 | 美女被啪到深处抽搐视频| 色 婷97| 狠狠爱综合网| 自拍偷拍第26| 欧美高清16| 69精品人人人人| 国产偷拍自拍在线视频| 精品一级毛片在线观看| 欧美偷偷网| 99久在线精品99re8a| 1024亚洲中文字幕久在线看片你懂的| 国产操逼视频在线观看| 精品91| 久热热| 精品人妻久久久久一区二区三区| 性爱欧美五月| 亚码人妻| 密臀AV在线| 台湾佬中文娱乐自偷自拍| 嗯嗯啊啊日韩精品| 亚洲AV无码AV吞精久久久久| 另类图片五月| 男人天堂东京热| 青青草久草| 91日产欧美| 久久精品亚洲成a人天堂| 91高潮喷水美女| 91爱啪| 五月天婷婷综合网| 福利在线黄片| 天天干天天拍| 日本有码久久| 黄页大片在线观看| 亚洲欧美校园另类春色| 肉丝网站91| 狠狠夜色午夜久久综合在线| 久草婷婷| 91蜜桃传媒精品久久久一区二区| 久湿久久| 啊啊啊慢点| 97欧美日韩| www.av家庭乱伦| 国产无码高清操逼视频| 尤物一级在线免费观看| 黄色av一区二区在线| 国产农村妇女一区二区| 伊人一区二区三区| 后入福利| 黄人人操人人操| 中文字幕av亚洲在线| 成人 日韩欧美一区| 今日头条成人一区二区三区四虎精品| 日本天天干天天日一区| se..亚洲欧美| 手机看av网站在线看| 混色激情av| 久久久九九| 欧美同性恋 的搜索结果 - 91n| 99蜜月精品久久| 97欧美日韩综合| 日韩激情小说一区二区| 久久男人的天堂国产| 97热视频在线观看| 在线播放免费av福利片| 中文字幕丝袜| 九久9精品| 天天干1区2区在线| 蜜臀久久99精品| 男人久久精品| 亚洲一级特黄大片在线播放91| 日本不卡高清免v欧美日韩在线观看| 丝袜亚洲综合| 中文字幕人乱码中文字的预防方法 | 91成人在线| 亚洲综合在线91| 国产亚洲精品精AV.| 91精品久久久久久综合五月天| 都市激情人妻一区二区青青操视频| 精品一区二区三区麻豆| 欧美日韩国产三级黄色| 久久大香蕉手机高清视频| 欧美激情1区| 26uuu国产免费观看| 蜜桃视频精品一区二区| 青青草影视蜜久久| 静品嫩模一区二区| 九九av| 99老司机精品视频在线观看| 亚洲AO在线| 亚洲毛片基地专区| 后X久久| 超碰2017| 熟妇熟女一区二三区| 96一区二区三区| 91超级碰| 老鸭窝成人| 妺妺跟我一起洗澡没忍住| 久久亚码| 性爱乱伦网址| 在线洲亚线| 日韩一区二区精品视频| 欧美综合自拍亚洲综合图| 国产欧美日韩精品中文| 热久日综合| 精品久久久高清无码| 97在线青| 大香网站| 欧美亚洲自拍另类人妻| 日韩乱伦影音先锋| 传媒在线观看一区二区三区| 欧美亚男人的天堂| AV天堂国产| 在线情色电影 91大 | 91操操操操| 亚州九九九精品视频| 一级黄色影片| 久久精品午夜国产亚洲AV无码 | 亚洲色图A| 妇女视频网站| 亚洲欧美清纯| 一区,二区,三区网站| 亚洲熟女人妻中文字幕一区二区| 手机在线播放国产福利| 熟妇艹鸡八| 久久女人| 国产人妻久久精品一区二区三区| 尤物视频新赏网鲜网色诱网| 99在线观看| 九九九国产| 国产色精品午夜大片| 久热久一区二区三区| 蜜桃精久三区| 天天综合网~91| 五月婷久久| 18禁看网站一区| 丁香五月婷婷基地| 国产精品日韩在线一区| 欧美97| 女性91网站| 资源新线在线天堂| 日本综合色图| 九九九免费视频| 欧美成人性爱视频在线播放| 国产高清成人免费视频| 东北少妇高潮zzzz| 插入逼91| 国产精品久久久久亚洲av| 日韩av不卡在线看| 青青操综合网| 日本福利二区视频| 中文字幕日产av人| rivers-china.com| 日本影视久久免费| 欧美精品日韩久久久九| 九九热精品| 特级大荫道BBwBBwBBW| 久久同城AV| 啊啊啊草死我| 亚洲AV无码黄色强奸| 婷婷色一区| 亚洲日韩东京热一区| 91N综合网| 十八禁av无码免费网站APP| 91黑人无码激情在线| 亚洲国产剧情少妇激情| 91久久久久| 人人操人人搞人人草| 艹我哪美一区无码| 美女91av| 国产黄色小视频网站| 国产精品久久久久av| av72网| 强奸乱伦 亚洲一区| 男人天堂2019亚洲| 18精品一二区| 欧美三级中文字幕hd| 麻豆国产97在线| 加勒比综合九九99视频在线播放| 国产成人无码高清| 日韩精品碰碰| 久久久久亚洲三级电影| 搡老女人老91二区| 九九九九九精品| 国内操逼视频二区| 日本成人A片网站| 欧美日韩大陆黑人少妇99| 亚州综合色| 久久色一区| 六月婷婷色综合| 1000部熟女视频在线观看| 天天综合日韩网| 久久久久久久久久久久九| 久久亚洲欧美中文字幕国语| 天天拍天天操| 香港成人一级视频在线青青草| 97热视频在线观看| 亚洲熟女综合| 日日躁夜夜躁狠狠躁超爽| 成人AV在线电影| 97精品在线视频| 欧美色偷拍 | 秋霞久久亚洲精品成人| 欧美青青视频| 欧美劲爆视频一区二区| 伊人网在线点播| 精品国产一区二区久久| 久久久久亚洲av综合波多野制衣| 自拍亚洲综合| 好吊色在线观看| 久久久久久久久久久免费精品| 人妻少妇久久中文| 三级三级三级日本99| 1级黄色夫妻对换性交免费看| 国产成人主播| 婷婷日韩一区二区三区中文字幕在线| 青娱乐国产剧情av一区| 91老熟女老女人国产老太| 九九综合色| 亚洲成人日韩小说| 2023天天操夜夜操| 久久激情四射婷婷丁香五月天| 欧美精品在线观看| 欧美色婷婷| 久久精品国产亚洲AV片多多| 九九热AV| 好爽视频在线观看视频 | 秋霞Av理论一级在线| 超碰一区二区| 熟女欧美日韩综合婷婷| 高清无码网址| 国产18精品亚洲精品| 国产性爱在线视频一区二区| 久久一二三四| 欧美精品97| 亚洲精品人体| 亚洲成人ab| 亚洲色人阁| 精品国产乱码久久久| 免费男人的天堂| 密乳AV免费观看| 亚洲免费在线探花| 天天操天天射青青草| 亚洲天堂男人天堂网| 国产又粗又长又爽又色| 天天情欲宗合网| 日本护士高潮| 青青草大香蕉在线视频| 国产吹潮女在线观看| 9美女超碰在线免费观看| 男人的天堂VA| 色综合一本| 精品中文字幕一区二区| 思思热久久成人| 99热婷婷| 97av在线视频| 啊啊啊啊免费视频| 亚洲AV无码天美传媒一区| 麻豆AV一区二区天美传媒| 嗯啊不要在线| 久久综合九色综合欧洲98| 91在线限制级| 乱伦3P视频| 美女诱惑久久| 伊人久久大香蕉线AV五月天| 岛国黄色大片网站| 国产精品一区二区密臀| 日本九九久久99播| 亚洲最新中文字幕免费| 亚洲天堂男| 秋霞午夜视频一区二区| 精品伊人久久久大香线蕉小说| 久久无码精品| 日日噜噜夜夜久久亚洲一区二区| 免费a在线播放v| 亚洲人妻在线精品| 久久 久久国内精品亚洲| 丁香五月成人| 日韩黄片视频试看| 91欧美色| 青草视频人妻在线观看| 午夜丁香婷婷| 婷婷在线视频在线观看| 97爱啪| 精品久久久久,69国产成人精| 一本色道久久天天射天天干| 91操熟女视频| 久插不卡| 丁香婷婷色五月| 国产操伦| 欧美97在线欧| 丝袜色综合| 欧美综合第一| 蜜臀少妇一区二区| 欧美亚洲另类在线蜜桃| 超碰在线人人射| 四虎884| 天天色怡春院| 91色女| 性色av婷婷久久一区二区点复制| 亚洲国产精品无码AV久久久| 日本大香蕉综合网红本杳社区 | 少妇贴图| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 久热色情精品| 国产欧美一区激情交| 四虎影视永久在线免费| 激情熟女12P| 啊啊啊啊网站| 国产日韩怡红院| 欧美丰满少妇交换91欧美精品| 都市激情人妻一区二区青青操视频| 婷婷香蕉欧美在线一区二区三区 | 中文字幕免费在线观看 | 99国产在线 精品 视频| 十八禁啪啪视频| 我想要 啊 啊 啊| 亚州,欧美在线| 超碰 国产熟女精品一区| 亚洲综合九| 久久中日麻豆| 欧美精品丝袜久久久中文字幕| 天天综合色| 色5月婷婷| 国产福利第一视频| 日韩AV无码中文一区二区| 亚洲h片在线免费观看| 狠狠色伊人亚洲综合网站色| 老司机午夜精品视频| 蜜臀久久99精品久久久久| 国产路线专区| 男人的午夜天堂| 啊啊啊想要| 亚洲97| 久久精品国产亚洲AV清纯| 91蜜桃传媒精品久久久一区二区| 一本久道久久综合狠狠爱| 亚洲高清色综合| 色欲人妻一区二区在线| 激情啪啪拍91| 日韩免费三级黄片电影| 香蕉大久久久| av操操不卡| 色情综合| 嫩呦国产一区二区三区AV| ...日韩成人一区二区三区字幕| 99欧美| 人人妻人射| 婷婷伊人五月| 九九九九九九免费视频| 欧美熟女丝袜| 久久久亚洲精品电影免费看| 日韩有码免费视频| 激情综合二| 一卡二卡三卡| 人妻熟女av国产网站| 东京热一区二区中文字幕| 久久做97| 日韩人妻丝袜美腿中文| 大香蕉天天看妹子| 操久久久久| 久久精品熟妇丰满人妻99| 亚洲天堂男人| 黄色人人| 亚洲一区二区性爱电影| 色小视频蜜乳| 成人欧美一区二区三区黑人一| 亚洲男人天堂2019| 大香蕉色网| 日韩有码回春沙龙第一页| 久久久久久久9| wwwxxx日本爽| 欧美成人性爱视频大全| 亚洲丝袜色| 97自拍一区| 青青久久久| 欧美日韩大香蕉| 国产强奸超碰AV| 色香阁在线| 超碰久久网| 青草精品视频-日本久久久久网站| 国产辣妈在线视频福利| 能直接看AV的网站| 爱爱动态120秒| 偷拍片久久| 天天综合网日韩| 一级特级aaaa毛片免费观看| 大香蕉AV在线| 天堂涩涩| 999久久久| 日韩激情中文字幕有码| 亚洲午夜免费狠狠干| 国产精品久久久久久久久久久久久久久久| 国产青青综合伊人| 亚洲无码成人精品| 六月婷婷综合| 好爽免费视频,| 日本性感人妻91| 久久女婷| 久久超碰av在线| 韩国一级做a久久久久| 日本国产成人亚洲精品无码| 熟妇一区二区三区| 九九精品网| 午夜理论片在线观看免费| 18精品一区| 日韩欧美麻豆 | 日韩免费中文字幕视频| 成人性爱电影一区二区| 男生女生啊啊啊啊| 97AV在线观看| 激情综合色| 亚洲欧美日韩中文久久自慰| A片大香蕉在线| 射 色综合| 密臀成人视频久久久| 做爱A级亚欧| 日韩超碰97| 久久久久9999| 91在线丝袜| 日韩探花精品在线视频| 欧美亚洲涩涩| 八戒无码国产午夜福利| 久久久亚洲精品电影免费看| 九热久| 亚洲欧美经典一区二区| 秋霞鲁丝午夜无码一区二区三| 综合伊人激情| 欧美色图片91| 精品一级毛片在线观看| 日韩啪啪啪啪啪| 久久色精品视频在线| 国内精品久久久久影院亚洲| 亚洲91综合| 亚洲女毛多水多21P| 伊人亚洲综合| 在线观看AV片| 精人妻无码一区二区三区伊人直播| 国产性爱在线视频一区二区| 久久天天躁日日躁狠狠躁| 午夜国产成人精品视频| 爱欲AV| 人妻干天天| 国产午夜视频| 天天操天天干一区二区 | 中文字幕少妇色| 国产精品盗摄 偷窥盗摄| 精品网站99999| 性在久久久久久| 亚洲AV色图一区| 91Chinese在线| 性一级黄色录像片网站导航 | 东京热一区二区中文字幕| 久久久久久久少妇| 日韩性爱免费观看视频| 国产青青美女玩逼视频| 日操粉逼逼| 激情小说激情视频| 69AV女优男人的天堂| 亚洲另类欧美精品| 亚洲日韩欧美一区二区| 中文字幕jul-617人妻熟女| 亚洲女人91| 岛国AV一区二区电影| 欧美aaaaaaa| 欧姜老司机| 激情图片亚洲色图| 国产欧美日韩精品中文| 99久久99九九99九九九| 一区麻豆 高清中文字幕| 国产人妖视频一区在线观看| 日本一线产区和二线产区伦理片| 偷窥自拍亚洲色图| 探花熟女,姿勢到位,體驗感也到位| 老司机福利社视频在线观看| 丝袜AV一二三区| 欧美性爱91| 综合色欧美| 少妇人妻无码| 久久激情五月| 久久黄片国产一区二区| 88在线一区二区三区| 男人下部插入女人下部| 久久久无码av精| 思思热一热婷婷热一热| 黑丝少妇| 综合五月婷婷亚洲一区| 99精品九九九九九九| 2025亚洲男人天堂| 亚洲aV性爱| 蜜乳成人AV| 成人三级片一区二区三区视频| 日本999精品视频| 色婷婷久久| 思思热久久成人| 精品人妻一二三| 中文字幕1区2区| 天天舔天天日天天射| 国产suv精品一区二区四区999 | 蜜桃臀AV在线| 9超碰免费| 夜夜爽77777| 午夜福利成人免费视频| 在线岛国新天堂8| 国产深夜福利| 久久久999国产| 天天综合网~91综合网| 夜夜操av亚洲一区二区| 五月色综合| 久久久免费一级黄片| 无码人妻精品一区二区中文 | 久久精品国产精品一区| 91在线国产后入风骚翘臀美女素人| 宗合情欲网| 婷婷色一区| 丁香五月天社区| 亚洲国产欧美中文永久| 日韩图区 偷拍| 欧美呦呦性爱| 人人摸人人入| 黄骗免费网站| 亚洲 欧美综合| 插B在线观看| 精品欧美日韩在线观看| 人人搡人人肉久久精品| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 一本色道综合久久欧美日韩精品| 一区二区中文| 色色97爱| 中文字幕一区二区三区四五区| 97露脸精品丝袜| 四虎 精品 WWW| 麻豆天美国美国产| 国产11页| 天天看少妇| 人妻加勒比东京热| 人妻嗯啊啊在线播放| 可以免费观看的AV| 91操操| 六十路日本| 国产欧美日韩在线不卡第一页| 亚洲午夜福利在线影院| 亚洲导航深夜福利| 亚洲精品无码成人久久久99| 国产日产精品久久快鸭的功能介绍| 牛牛操视频逼| 小视频国产| 日韩欧美成人午夜福利| 免费一级精品啪啪视频| 韩日性爱av| 色情乱伦AV| 99热99色| 亚洲有码 视频一区| 99啪| 打av高清|