日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
91neishe| 人人看人人插| 亚洲国产一区二区三区在线| 国产精品人妻无码久久久老鸭窝| 欧美激情亚洲情色| 69AV女优男人的天堂| 翔田千里Av在线| 白嫩妹子国产骚| 99色色网| 亚洲一区二区精品福利| 爱爱动态60秒| 日本在线15p| 亚洲色图加勒比| 色五月网址| 国产精品点击进入在线影院高清| 久9久9久9久9久9久9 | 五月激情影院| 国产 亚洲 丝袜 制服| 精品人妻一区二区三区在| 98福利在线视频| 98一区二区精品| 久久久久9| 操逼国产免费| 成人av在线播放| 大香蕉中文在线| 91激情国产| BBBBB97COM| 亚州色图欧美| 国产精品内射婷婷一级二| 性爱AV天堂| 尤物视频网 刘玥| sss视频华人在线| 超碰精品在线| 另类在线| 国产福利影视| 无码伊人久久大杳蕉中文无码| 欧美性爱18观看| 亚洲日韩电影| 天天拍夜夜| 久久久月天| 亚洲美女 晚间男人天堂 | 亚洲欧美内射| 韩国毛片一区二区三区| 日日日大屁股骚女人精品| 2001天天操| 五月婷婷久久综合| 熟妇艹鸡八| 嗯嗯嗯好爽| 欧美国产日韩清纯唯美| 啊啊啊不要好疼视频| 涩五月婷婷| 日日爽夜夜爽| 观看视频图片一区二区三区| 老熟女熟妇| 色婷婷婷五月天激情四射| 白丝1区2区3区| 情色五月天久久久| 久久久精品久久| 美女让帅哥通她小鸡鸡| 日韩久草| 啊啊啊慢点| 日韩欧视频| 蜜臀久久99精品久久久久久无删减 | 五月天婷婷欧美三区| 五月婷婷六月色| 天天天天天干夜夜夜夜夜操| 狠狠综合网| 天天爽天天爽| 日本中文字幕一区| 亚欧操逼片在线观看 | 国产精品成人无码av无码免费| 色情乱伦AV| 日本日逼视频网| 天天综合网站| 欧美日韩婷婷中文| 偷拍视频青青草在线视频| 久久久久极品| 欧美中文综合| 国产亚洲日韩欧| 日本一级婬片试看三分钟| 日韩去日本高清在| 中文字幕55555| 熟妇高潮精品一区二区三区下载| 中文久久96| 精品二区三四区五电影 | 久综合国内精品自在自线| 国产毛片久久久久久久| 中文字幕在线观看二区三区| 色老汉色| 一卡二卡三卡| 乱伦av麻豆| 色色99| 91五月天| 偷拍 欧美 日韩| 国产日逼视频| 四虎国产精品永久地址入口| 久久五月综合| 神马久久69| 亚洲自拍欧美色综合| 高清视频一区| 日韩一区二区高清在线观看的| av九九| 欧美综合在线91| 视频二区美腿制服人妻欧美| AV一区观看| 99热婷婷| 国产AV线| 粉嫩av在线一区二区| 亚洲精品久久久久久久久豆丁网| 偷拍五区| 日韩欧美成人综合在线| 久久久久久中文字幕中文字幕最新| 久久久久久久久久久六六| 久久夜精品一区二区三区| 91亚洲在线| 翔田千里爆乳巨臀无码| 欧美综合骚| 舔人妻中文免费视频| 91国产操逼视频| 国产精品久久伊人| 久区视频| 日本 欧美 国产一区| 超碰这里只有精品| 国产毛片久久久久久久| 99国产精品免费| 久久久96| 日韩高清一二三| 乱伦av麻豆| 久久中文色图| 亚洲超碰AV| 丝袜色综合| 韩国成人精品久久久免费看| 久久999久| 久操精品| 久艹伊人精品综合在线| 午夜操逼不卡| 亚洲性猛| 成人乱码一区二区三少妇| 亚洲男人的天堂AV| 中文字幕一区二区日韩网| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 九九九九免费视频| 欧美激情中文字幕另类小说| 亚洲色图 图片| 日本高清一区二区在线| 伊人网在线点播| 日本操逼视频导航| 欧美性视频二区三区| 国产51色综合久久免费| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 人人操人人操人人操人人操人人操人人人11.CM | 日日摸夜夜夜夜爽| 射久久| 大鸡巴久久久| 亚洲国产精品有声| 亚洲精品国产拍免费91在线| 口爆综合网| 中文字幕av亚洲精品| 久久久工口| 91丝袜视频在线观看| 人妻激情偷乱视频一区二区三区 | 91麻豆天美传媒在线| av在线浏览| 夜夜影视四色| 偷拍 欧美 日韩| 久久久com| 亚洲91在线播放影院| 91成人亚洲色图| 国产丝袜美女诱惑| 美女午夜福利免费视频| 少妇激情一区二区三区视频| 亚洲综合网图| 国产欧美日韩在线不卡第一页| 蜜臀99精品国产高清在线观看| 日韩AV电影网站| 91视频伊人| 熟妇一区,二区,三区。| 素人美腿视频网站| 亚洲AV无码久久久国产精品| 精品日韩人妻精品一二三区| 香蕉精品二区二区| 日本不卡卡一区| 国产9l 大屁股| 欧美天堂日韩三级国产传媒| 120分钟婬片免费看| 成人羞羞视频国产| 在线二区不卡| 很很很很操| 久久超碰爱| 国产一在线观看| 高清视频一区| 9999九九九久久久| 91精品国产综合久久久蜜臀| 国产69精品久久久久99尤物| 被男人吃奶很爽的毛片| 少妇精品久久| 欧美性五月| 亚洲欧洲精品成人| 天天肏美女| 92人人操人人| www.色操逼| 自拍偷拍国产欧美日韩韩| 中文字幕一区二区三区四五区| 欧美精品偷拍| 天天综合网久久ww| 日韩内射视频| 岛国AV一区二区电影| 成人午夜视频免费播放| 婷婷中文网| 日韩无码a片| 国产女同在线观看视频| 日日躁夜夜躁狠狠躁超爽| 欧美三四五区| 欧美色干| 蜜臀99久久精品久久久懂爱| 五月天日日操夜夜操| 日韩精品9999| 精品97久久综合| 日本三级久| 成人情色一区二区| 人妻少妇色综合| 久久‘黄片视频| 女人喷水视频在线观看| 国产精品自拍xxxx| 色欲天天综合网| 九九99精品视频在线观看| 91强热人妻| 日本成a人v网站在线观看| 加勒比综合88| 另类亚洲一区二区三区| 久久东京伊人一本到鬼色| 成在线人在线观看视频| 亚洲古典另类欧美在线| 日韩无码黄色片| 伊人久久综合影院| 新婚人妻扶着粗大强行坐下| 黑丝少妇| 91是天天| 青青伊人加勒比海| 91天天| 放黄片放3级黄片没穿衣服| 2019天天干| 亚洲熟女综合一区二区| 国产日韩欧美操逼视频| 操逼逼无码| 精品区9| caopeng97| 精品一久久久| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美72网页| 国产女人9999| 私人尤物在线精品不卡| 乱伦1色页| 99热精品在线观看| 蜜臀人妻少妇久久在线观看| 久久夜夜夜夜| 四虎影视国产精品| 国产一区二区三三视频| 国产欧美第五页| 91亚洲黑人| 天天看特黄的免费网站| 亚洲清纯综合| 亚洲一区二区三区播放在线| 国产亚洲色婷婷久久99精品91| 久久久爆乳翘臀一线天伦理视频| 天天综合香 ld视频| 九九热精彩视频| 亚州综合色| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 夜色91| av无线看| 青青草伊人久久| 青青草导航在线视频| 九九九九免费| 亚洲天堂,男人| 精品人妻一区二区免费蜜桃| 国产一区在线看| 久久精品人人做人人看| 久九干| 色天天野狼综合社区| 色五月激情AV在线| 国产绿奴视频在线观看| 青青草天天亲夜夜操网| 亚洲日韩东京热一区| 久久岛国| 开心五月激情网| 久久天天躁日日躁狠狠躁| 欧美一品道| 黑人精品XXX一区一二区| 人人妻人人狠人人| 97频视在线| 秋霞网无码| 开心婷婷五月| 自拍啪啪视频| 久久久久久AⅤ无码免费肉站| sss视频华人在线| 国产精品久久久久婷婷二区次| 亚洲天堂精品日韩电影| 久久久久9| 日韩大香蕉精品在线视频| 岛国激情视频在线观看| 久久綜合很很很| 2024黄色视频| 天天摸天天插天天日| 天天影视综合色| 青草av在线| 日本熟妇自慰性高潮一区二区三区| 欧美色图20p| 丁香六月激情综合| 九九九不卡| 日韩一区二区三区四区五区| 国产亚洲日本| 国产精品爽爽va在线观看98| 综合情欲网| 亚洲成人性爱在线观看| 日韩人妻资源在线看| 1024精品在线| 丝袜内射| 91精品女厕偷拍视频| 91色色综合| 国产乱伦亚洲色图高清无码| 蜜伊人色综合97| 国产欧美在线观看免费观看| 嗯嗯啊好大| 日韩在线欧美精品一区二区| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 亚洲日韩精品久久久久一区壹牛| 国产传媒美日韩av| 中文字幕奈奈美被公侵犯| 久插综合| 色成人Www精品永久观看| 九九九九97| 精品毛片久久久精品毛片| 大屁股熟女一区二区三区| 日本高清免费一本视频在线观看| 少妇专区一二三四五| 色婷婷九月天天综合| 中文字幕欧美精品亚洲日韩蜜臀| 国产精品视频电影| а√天堂资源官网在线资源| 自拍欧美| 六月丁香久久| 九九精品99| 老熟妇91| 熟女网站最新| 亚洲色吧网| 特色a在线上| 欧美青青视频| 欧美久久九九| 午夜欧美女人操逼| 国产操逼网站亚洲一级黄色| 欧美色图片色哟哟| 啊操爽品善一区二区三区| 人人操人人色人人摸| 国产超碰欧美| 99热97| 日韩国产乱子伦App| 欧美色视| 国产精品3| 色综合美国| 一,爱啪啪,在线免费视频| 夜夜欢天天干| 2020天天色综合| 日本欧美成人片AAAA| 色欧洲| 嗯嗯啊啊好大好爽| 神马久久久久久久久久久久| Julia在线播放亚洲久久| 人人看人人爰人人操| 国产麻豆91欧美一区二区久久婷婷国产精品| 91大胆欧美| 全免费a敌肛交毛片免费| 日韩一级久久毛片| 在线欧美亚洲| 九九久久99| 丁香五月天啪啪| 日本一级性爱| 午夜福利免费精品视频| 久热99999| av网站在线看| 欧美日韩色| 国产外初女出血视频| 久久99国产综合精品女同| 国内三级自拍小视频在线观看| 亚欧免费观看视频| 国产精品白丝在线播放| 亚洲无992tv| 麻豆天美在线| 91爱| 人人摸人人添人人操 | m欧洲一级午老| 大香蕉操久久| 亚洲AV乱码专区国产噜噜亚洲| 日韩欧美经典在线观看| 日本 欧美 国产一区| 日韩黄色av中文字幕| 1769国内精品视频| 国产精品永久免费10000| 人人操人人色网| 久久禁| 97超碰国产亚洲精品| 亚洲十八禁止| 欧美日韩不卡传媒| 99999精品| 日本成人在线不卡一区二区三区 | 久久大黄片| 老熟妇乱轮| 国产精品久久久吖| 97在线视频观看网站| 一区二区三区亚洲| 成人网址在线观看| 成人综合色网| 久久手机视直播| 天天干干天天干干| 中文字幕日韩精品久久| 亚洲中文sv| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 欧美色图91| 色97干| 无码免费在线观看黄色片| 日韩一级成人毛片免费观看| 欧洲熟妇xxXx欧美老妇裸体 | 午夜精品探花| 青青青操| 制服丝袜第二页| 蜜臀99久久精品久久久久久| 91另类| 国产性久久久| 调教熟妇 久久久久久| 中文字幕成人| 久草综合视频| 91亚洲高清| 免费精品无码一级毛片牛牛影视| av绯色| 精品国产乱码久久久久A| 亚洲熟女综合| 清纯唯美第一页| 欧美高清18A片| 国模无码一区二区三区在线| 国产夫妻一区二区| 欧美91色| 人人妻人人澡人人爽久久av| 欧美性爱无码一区二区三区| 色色综合网站| 中文字幕第23区| 亚洲人妻久久| 欧美性爱系列| 欧美无圣光在线| 天天躁日日躁狠狠躁| www.黄色在线| 国精品一区二区三| 伦理第一页| 亚洲中文日韩精品| 综合av影片| 欧美天天干| 18禁美女裸体无遮挡啪啪| 日韩欧美麻豆大片| 免费在线视频97| 91人妻最真实刺激绿帽| 色哟哟-国产专区| 中韩中文字幕在线观看| 国产精品亚洲一级av第二区| 91美腿丝袜在线观看| 蜜臀AV午夜精品久| 婷婷久久五月| 熟妇女伦乱视频视频 | 亚洲五月丁香花狠狠干一区二区三区 | 超碰97精品在线| 久久婷婷苹果| 粉嫩av在线一区二区| 欧美大香蕉97| 欧美亚洲第一页| 91N五十路| 精品国产乱码久久久| 老熟妇一区二区三区…| 欧美亚洲宗合色性图| 人人干黄色| 大香蕉黄色一区| 殴美在线AⅤ| 欧美日本成人一区二区| 四虎永久在线精品免费网址| 国产色综合亚洲色综合吹潮| 日本曲间由美性生活片| 日韩黄片视频试看| 99久久精品国产系列| www.色婷婷| 久久久青青草| 久久午夜伦| 97亚洲中文| 色婷婷色99国产综合精品| 成人十八禁日韩欧美一二三| 国产精品干干干| 亚州 综合 色图| 日本三级网页| 超碰碰小说97| 国产精品一区二区黄片| 欧美综合天堂| 久久久久久久久久久久久9999| 黄页av| 亚洲夜色在线| 夜夜嗨视频| 九九玖玖精品| 中文字幕一区二区韩| 久久久久斤小| 国模一区二区三区| 青娱乐二区免费| 91天天c| 欧美亚洲涩涩| 久久久久婷婷| 777奇米影视777四色| 黑人免费福利视频| 怡红院成人视频| 九九亚洲色在线观看| 亚洲色婷婷久久久综合日本| 色综合九九| 97欧美日韩| 黑丝日韩av丝袜av| 国产精品自拍欧美在线| 91天天综合日韩欧美| 综合网~91综合网| 99视频这有这里有精品| 后入国产| 校园春色亚洲无码| 粉嫩av一区二区三区四季| 九九av| 妇女性内射冈站HDWWWCOM| 91天天c| 开心五月天激情网| 日本欧美一区二区三区免费| 精品玖九九久| 色哟哟av网址| 丝袜美腿诱惑亚洲欧美视频在线观看 | 校园春色 亚洲| 啊啊啊在线观看免费视频| 午夜男女爽爽爽在线视频| 亚洲AV成人精品网站在AV| 精品人妻一区二区三区不卡断 | 激情五月天色播| 久久精品国产72国产精品福利| 日本午夜福利影院| 欧美天天综| 疯操AV| 亚洲色啪| www.99视频| AV一二区| 无码少妇精品一区二区60岁老人| 日韩精品大香蕉伊人在线| 精品十三区| 黑丝制服中文字幕| 国产自偷| 丁香五月综合| 日本成人A片网站| 国产久9| 蜜桃AV天堂| 精品一区二区三区丰满熟女-亚洲欧美一区| 尤物网站91| 欧美激情精品久久久久久| 伊人久大| 色娱乐色呦呦夜夜夜夜av| 很黄很污的免费网站| 色老牛| 成人夜夜爽| 无码高清操逼网址| 啪啪综合网| 久久超碰国产一区二区三区| 亚洲成人性爱在线观看| 爱干爱射网啊啊啊| 五月情色天| 无码精品久久久天天影视| 国产强奸AV在线| 国产二区三区粉嫩在线| 91九九| 五月婷婷丁香六月| 色老汉色| 乱理日韩中文| 凹凸 69堂 在线播放| 熟女91网| 78精品| 鸥美中出| 1区2区3区视频| 97天堂| 午夜成人爽爽爽爽A片李冰冰| 久久系列| 人人看黄色视频| 亚洲国产成人福利在线观看| 欧亚乱色熟女一区二区| 8050午夜少妇无码| 激情抓乳插进去啪啪啪日韩| 欧美午夜一区二区三区| 一区二区三区视频在线观看免费| 中国一区二区亚洲人妻| 欧美青青视频| 九九亚洲| 人妻久热在线| 国产精品情侣啪啪| 四虎免费看黄| 久久9999| 性天堂| av网站在线观看了| 一区二区三区精品久久| 亞洲久久直播| 五月天婷婷久久| 爱干爱射网啊啊啊| AV久日| 九久9精品| 青青操网| 黄污污污污| 福利天堂| 香蕉视频精品亚洲一区二区三区在线播| 日韩免费中文字幕视频| 国产精品一区二区三区,亚洲综合| 亚洲国产欧美中日韩成人综合视频| 色综合久| 乱码人妻一区二区三区| 国内一级精品| 十八禁视频一区二区| 一区二区三区黄色片a| 五月丁香影院| 中文字幕久久精品一区| 久久久久久久| 亚洲精品一区二区三区在线播放| 日本久操视频| 屁股久久久久久久久| 亚洲中文字幕在现观看| 无码抄逼网| 丝袜喷水在线| 久久久夜夜夜| 美女黄频a美女大全免费皮| 伊人久久大香线综合无码| 99久久久| 日本国产欧美高清在线| 日韩精品一二三四| 亚洲校园激情| 日韩中文字幕人妻视频| 欧洲综合视频| 福利视频网站| 91九九| 亚洲精品人伦一区二区| 久草这里只有精品| 亚洲激情在线| 亚洲AV在线资源| 国产人妖的免费的视频| 久久久久久AⅤ无码免费肉站| 97超碰免费人人性爱| 天美传媒AV在线| 蜜乳av首页| 亚洲成人在线乱码色午夜| 欧美系列在线一区二区| 青青草日本中文字幕| 久久狠狠色噜噜狠狠狠狠97| 亚洲日韩AV视色| 欧美日韩小说| 五月天大香蕉| 日日干日日摸| 男人的天堂不卡一区二区| 91熟女视频网| 青青草成人视频在线观看二区| 超碰在线人妻中文字幕| 91美女在线精品视频| 九九九九九精品| 丁香五月天社区| 久夜视频| 日韩偷拍色图| 青娱乐休闲视频在线观看| 91九色精品熟女内射| 亚洲高潮影院| 热久久这里只有精品| 日韩欧美中文字幕搭讪巨乳美人妻视频| 亚洲国产麻豆一区二区三区| 国产精品国产| 欧美日韩第一页| 99少妇| 五月激情综合网| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 新版天堂中文资源8在线| 91精品人妻五十路| 3p国产欧美99热| 午夜久久久| 精品国产精品一区二区| 国产美女高潮视频| 欧美午夜精品久久久久久超碰| 欧州一区二区三区四区| 女人的天堂大香蕉网| 免费A V在线播放| 中文字幕精品亚洲熟女| 东京太热久久久| 人人操人人摸avav| 青娱乐手机日韩在线视频| 亚洲 日韩 丝袜 熟女 变态| 久久亚洲天天做| 亚洲av影音先锋| 国产精品对白自产拍| 国产精品一级毛片不卡视| AV在线播放网址| 国产刺激视频| 综合久久久久久久久91| 97色欧州| 精品无码产区一区二| 91人妻素女| 91精品老女人| 久久综合超碰| 另类小说五月天| 秋霞成人做爱| 91n处女在线观看| 亚洲综合影视| 国产精品亚洲一级av第二区| 香蕉精品二区二区 | 欧亚 另类 久| 亚洲欧美日韩电影网站一区 | 欧美成人9797| 亚洲欧美国产中文视频| 日韩成人人妻网站| 99re视频在线观看这里只有精品| 一级片视频啪啪| 91n免费处女| 欧美性天天影视| 女人被添高潮免费视频| 一级做a爰片性色毛片久久| 五月天AV资源| 美女啪欧美一区| 婷婷久久网| 国产成人午夜视频网址| 久久午夜色播影院免费高清| 欧美高清在线| 99热导航| 久久久工口| 亚洲综合五月天婷婷丁香| 美國A片| 久久AV无码AV| 啊啊啊啊免费视频| 自拍第一页| 97免费在线观看| 欧美精品欧美精品系列| 亚洲资源网| 色爱欲亚洲| 97亚洲综合电影| 午夜高清成人在线视频| 精品在线观看视频在线| 国产又色又粗又黄又爽| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 青草视频在线看看看看看看看看看| 十八岁啪啪视频免费看| www国产精品| 啊啊啊爽爽| 久久精品区| 日韩日韩日韩-国产乱码精品一区二区| 99re6国产精品99re| 中出789在线视频| 射欧美综合| 少妇天堂网络| 超碰97最新人妻| 人妻社区男人天堂| 六月丁操逼| 久久婷婷欧美| 青青伊人久久| 日日摸日日碰| 国产精品一级二级在线| 亚洲人精品久久久| av日韩中文字幕| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 国产狂喷潮在线精品| 秋霞午夜成人福利片片| 成人性爱AV在线免费观看| 国产精品ww久久| 日韩激情电影中文字幕| 岛国黄片网站| A 天堂在线观看视频| 丁香五月综合| 亚洲图片偷拍视频区| 久久伊人最新网址视频| 亚洲精品国产无码高清| 又大又长又粗又爽又黄| 欧美网站免费| 333kkkk·亚洲com久久| 日本中文字幕在线视频| 人妻AV在线| 六月婷激情福利天堂69| 欧美97视频| 五月天欧美色图| 欧美 亚洲| 久久粉色| 隔壁邻居波多野结衣中文字幕| 国产成人亚洲精品无码古代早漏男| 欧美日韩操操操| 人人摸人人叼| 五月婷婷激情网| 亚洲第一页欧美| 国产一区二区精品在线视频| 天天日天天干少妇日| 日本操逼无码| 欧美性爱视频免费一区一A| 性色av蜜臀av色欲aV| 亚洲 日韩 欧美 国产综合体| 九九九综合精品| 色色色色色色色色综合| 9精品久久| 水滴偷拍| 亚洲国产尤物yw在线观看| 午夜精品视频777| 亚洲瓯美色图| 亚洲高潮影院| 国产 亚洲 一二三四| 欧美性爱第一区| 国产精品一区二区三区在线密挑| 春色校园综合网| 999色欧美中文字幕| 日本一区二区中文字幕久久| 综合免费无码中文| 天天欧美色| 精品人妻视频一区二区在线播放| 日本爽爽爽爽爽爽免费视频| 久久久97| 97公开久久| 啊啊啊啊啊啊好多水| 思思在线免费视频| 夜夜嗨AV蜜臀av| 蜜乳AV色欲AVAV无码| 日本午夜福利视频| 国产又粗又长又大的视频| 中文字幕国产| 日韩伦理视频| 色欲久久99国产精品久久久久久| 少妇啪啪自拍| 欧洲中文字幕| 久久久神马影院| 极品综合| 91美女视屏| 青青草原伊人网| 国产在线精品偷| 久久夜精品一区二区三区| 麻豆三极片| 欧美成人一区二区三区在线播放| 国产偷仑| 免费中文综合精品| 麻豆 欧美 日韩| 精品天堂| 五月天婷婷综合网| 极品少妇久久久久| 中文人妻av高清一区| 久草资源欧美在线视频| 国产精品美女视频诱惑| 一区二区 韩日AV| 骚人妻少妇视频| 国产毛片在线| 欧美成人色| 久久久一区二区三区三州| 97资源欧美| 91P0RNY大屁股人妻| 怡红院视频在线| 91色伦| 操逼日韩无码 | 人人摸人人摸人人干| 国产精品在线一区二区| 狼人综合婷婷激情四射| 无码乱人伦中文视频| 日本性爰一道本| 99久久99久久免费精品蜜臀| 91精品国| 亚洲h片在线免费观看| 亚洲精品自拍| 天天综合色| 男人的天堂日本东京热| 变态乱伦伪娘灌肠一区二区| 久久久久久久久久久久黄色| 秋霞免费无码视频日韩A片| 久久精品一区二区三区不卡| 91色香| 久久免费老司机精品| 蜜臀中文字幕| 少妇一区二区三区在线观看| 亚洲国产成人精品999| 超碰这里只有精品| 95自拍视频在线观看| 大香蕉青青9| 青娱乐久久艹| 嗯嗯不要视频| 欧美日韩淫加| 欧美综合娱乐久久| 中文无线日韩一区| 久久人妻精品| 综合伊人网12色| 亚州色图欧美| 户外裸露刺激视频第一区| 亚洲日本天堂| 五月天开心网| 伊人五月天婷婷| 老女人91| 中文啪啪视频| 1级黄色夫妻对换性交免费看| 国产精品丝袜久久亚洲不卡| 熟女被操视频网址| 亚洲色图日韩丝袜制服一区二区五月在线| 久久国产视频性吧| 国内精品久久人妻性色av| 91少妇通奸网站| 久久人妻办公室视频| 91美| 99re69综合| 亚洲中文字母在线播放| 起碰97| 久久久久国产精品人妻aⅴ天堂| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日本熟妇人妻中出视频| 97极品无码| 好爽免费视频,| 亚洲 综合 欧美| 白丝被操91| 国产视频97| 久草资源在线视频官方总站日韩丝袜美腿 | 欧美天天综合网| 欧美午夜视频| 欧美亚洲国内自拍| 色综合中文字幕不卡| 中日亚韩免费视频| 水多多映视AV| 婷婷人妻激情| 2017天天透天天通天天擦| 91n美女视频| 五月激情视频| a片久久久久久久久久久久| 青青草国产一区二区三区| 欧美狠狠弄| 亚洲午夜免费狠狠干| 日本高清_区二区三区| 最新日本中文字幕| 成人性交午夜免费片| 一区二区三区色综合| 国产婷婷一区| 大香樵伊人网| 大香蕉久久| 亚洲乱码国产乱码精网站| 中文字幕日韩电影人妻| 亚州欧美综合| 青青伊人加勒比海| 伊人玖玖网| 欧美丝袜激情| 色爱综合网欧美| 人妻天堂综合网| 亚洲色五月| 久久九九网| 成人美女av| 久久精品国产Aⅴ| 99re免费| 成人性交免费视频| 欧美综合色,www| 人妻少妇精品久久久久久| 亚洲丝袜二区在线| 天天影视综合色| 国产91 丝袜在线播放 | 四虎国产精品永久入口| 欧美一区二区男人天堂| 永久免费观看的毛片的网站| 国产精品黑人一区二区三区| 尤物av网站免费在线播放| 精品99999| 碰碰97| 91福利网在线观看| 亚洲欧洲日本精品中文a∨| 欧美成熟性爱精品| 国产黄色影片在线观看| 中文字幕高清精品一区| 日本操逼视频导航| 大香蕉一线视频| 国产女人91精品嗷嗷嗷嗷| 亚洲操人| 激情色色| 天天综合91在线| 亚洲不卡不卡中文字幕不卡| 97精品视频免费| 偷窥自拍亚洲色图| 超碰精品| 99热大香蕉伊在线| 中日韩久久久免费看| 夜夜爽夜夜操| 日日夜夜精品视频| www.色吧5.com| 操逼国产免费| 亚洲日韩精品在线播放| 色99在线| 97色色国产视频| 久久精品72| 久久久天美| 一区二区三区高清 | 婷婷午夜成人色中色| 色哟哟511老熟女| 青娱乐日韩无码| oumeisetu综合| 国产成人亚洲精品自产在线| 在线 亚洲 网爆 自拍| 97在线观视频免费观看| 欧美色图 人妻| 久久久久久中文| 超碰成人人人爽人人爽| 宅男影院久久久,99| 99精品久久久久久久婷婷蜜桃| 嗯嗯嗯好爽| 性色国产东北露脸精品视频| 东京热大香焦| 欧美色综合网| 欧美1区二区三区公司| 综合一区中亚洲国产成人综合精品 | 强奸乱伦中文字幕AV| 亚洲精品男人的天堂| 自拍视频大全亚洲专媒视频/一区二区三区 | 久久国产成人精品国产成人亚洲| 欧美性爱中文字幕无线码| 美中日韩无码| 射丝袜高跟鞋99| 亚洲精品黑丝| 久久久久9999| 免费看黄片现成| 大香蕉520| 嫩草影院永久在线制服丝袜| 91白虎| 91快色色色色色| 伊人综合色网| 国产怡红院在线| 俄罗斯一区二区视频在线观看 | 少妇被c 黄 免费观看| 4399成人黄A片| 日本性一区| 亚洲AV无码翔田千里网站| 成人影 天天操 亚洲| 青青久久艹| 九月丁香| 丝袜美腿91| 欧美亚洲日本激情在线| 日本中文字幕一区| 国产一区二区三区视频在线看| 嗯阿好爽好紧| 色网色网色网色网色网色| 骚逼高潮久久精品| 欧美色图自拍| 97超碰碰| 国产日韩在线播放| 超碰在线看| 大干人妻| 熟妇操花| 91高清日| 婷婷五月综合在线| 亚州,欧美在线| 日本三级日本三级99| 欧美激情一| 亚洲国产欧美中文永久| 91天堂丝袜美腿| 国产亚洲在线| 国产9l 大屁股| www.婷婷| 九九碰九九爱97超| 午夜福利久久久噜久噜久久综合 | 一级一性爱免费视频| 97玖玖人妻| 麻豆国产97在线| 欧美精品偷拍| 国产精品无套内谢| 久欲AV| 国产在线视视频有精品| 好涩综合| 乱日视频| 日韩在线性爱免费视频| 少妇一区二区三区精选| 9999亚洲电影| 欧美成人一区二区三区在线播放| 国产后入清纯| 五月丁香六月激情综合| 国产91影院| 96国产污污污丝袜| 国产av美女被艹的乱叫| 本道综合精品| av操操不卡| 中文字幕精品日韩中文字幕| 啊啊啊啊,啊啊好多水| 伊人久久88国产女| 国产美女口爆吞精视频| 日韩资源网| 色色激情五月天| 天天射天天操天天干天天吃2018 | 91亚州| 伊人伊人LD| 九九热九九| 国产亚洲精品一区二区三区| 久久噜| 91人妻超碰| 亚洲高清无码在线桃色| 性91| 新精精品久久精品| 六月婷婷综合| av在线观看不卡网站| 亚洲综合在线91| 骚逼一区二区| 99热精品在线| 久久精品久久九九精品| 91中出视频| 性爱AV天堂| 粉嫩国产精品久久粉嫩| 国产白嫩漂亮KTV在线| 少妇久久| 亚洲激情欧美色图| 大香蕉伊人在线成人AV在线观看| 黄aaaaaaaaaaaaaaaaaa色网站| 久久伊人最新网址视频| 一二三四区电影| 97久久精品国产| 亚洲第一页色| 亚洲成A∨人影院在线欢看| 91人妻人人澡人人爽人人精品| 十八禁电影伊人网| 少妇同性| 另类图片五月| 日韩一级片在线看| 久久久久久人妻一区精品色欧美| 色香综合| 久热网| 日韩精品人妻中文字有码在线| 欧美.亚洲.另类.丝袜.制服.诱惑| 中国国国产一级特黄毛片| 操逼视频国产无套| 白丝AV| 九色黄站| 久草看看看| 九九超碰综合网| 超碰碰激情97+久| 国产精品久久久久久夜夜夜| 99热综合| 丁香婷婷啪啪| 国产树林里野战在线看| 国产一区自拍欧美日韩| 欧美高清性猛交| 青青三级视频| juliaann丝袜大战黑鬼| 95人妻爽爽人人做人人澡| 中国东北熟女老太婆内谢| 成人自拍三级在线观看| 麻豆美女丝袜人妻中文| 天天干人人乐| 日韩久射综合| 女人18精品一区二区三区| 色麻豆AV| 动漫av中文| 欧美久久人妻少妇一区二区| 香港成人一级视频在线青青草| 蜜臀av中字字幕网站| 天天欧美欧美亚洲网| 精品色色| 96精品在线| 欧美性天天影视| 久久草草欧美精品| 欧美视频在线第3页| 综合熟女| 免费看毛片操穴| 国产原创精品| 亚州成人a∨| 东北老女人的激情视频| 亚洲 欧美 另类 日韩 人妻一区| 四虎884a| 久久超碰av在线| 国产AV天美传媒一区二区三区 | 天美精品av| 欧美大香蕉在线观看| 97免费视频网|