久久亚洲成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
返回資訊列表
久久久久久九九九九九九| 欧美日韩亚洲少妇寂寞影院正在播放 | 99超碰色| 精品欧美乱码久| 大香蕉乱级| 花野真衣| 天天澡天天爽日日AV| 五月天婷婷成人网| 日本一二区不卡| 嗯嗯啊在线视频| 亚洲中文sv| www九九热| 大香蕉人妻久久| 亚洲九九夜夜| 午夜操一操| 欧美黄色大香蕉一区二区| 国产热av| 亚洲色啪| 精品三级在线专区| 色99色| 色色毛片| 噜噜噜亚洲精品| 久草网站免费在线观看| 超碰97久| 福利视频一区二区微拍| 2017天天操天天日| 操b网站亚洲无码| 亚州操逼图| 欧美精品系列| 青青操少妇| 日本在线视频导航| 舔人妻中文免费视频| 久久黄黄| 最近的最新的中文字幕视频| 很很操在线| 蜜臀AV一区二区三区| 亚洲人妻一区二区三区| av无码av无码专区| 亚春色色| 天天操熟妇| 99re69| 久久精品国产精品亚洲艾通辽熟妇 | 欧美中文字幕精品人妻| 欧美黑人91| 大香蕉操久久| 天天插天天干| 人妻乱仑一区二区三区| 午夜操逼不卡| 97超碰精品| 女人天堂网| 大香蕉男人的天堂| 九九久久国产精品| 中文字暮97| 中国探花熟女| 欧美黄色大片在线观看| 东北女人无套内谢视频| 精品一区二区2| 91美女视频直播| 熟女色图在线| 亚洲天堂男人的天堂| 97在线视频网站| 九九九国产精品| 亚洲一区二区av| 午夜偷拍久久熟女| 午夜视频久久久久一区| 国产一级黄色片在线观看| 伊色久人大在线| 欧美制服网站美腿丝袜| 激情五月丁香五月| 亚洲91在线播放影院| 欧美少妇一区二区三区| 中文字幕三四五区| 色伊人91| 人妻久热在线| 超碰欧美97| 91l欧美在线| 色九九九综合| 久久久久久久强迫| 国产原创自拍| 人妻另类 专区 欧美 制服| 日本中文字幕熟妇| 成人综合网 欧美| 狠狠操综合| 久久久久久9| 国产JDAV无码视频在线观看| aaaa少妇高潮大片| 又粗又长又大国产不卡| 97天天操天天干| 久久肏大逼| 久久中日麻豆| 嗯嗯啊中文字幕| 欧美不卡在线一区二区| 久久久久夜夜夜夜| 日本淫乱女一区二区三区视频| 97超碰色屌| 精品国产无码中文| 综合97久久| 色欲日韩欧美在线一区| 日韩精品影视| 国产成人无码高清| 色天天野狼综合社区| 97蜜桃综合| 久久女人| 亚州欧美在线| 亚洲 中文 女同| 99综合网| 青青草国产亚洲精品久久| 久久人妻视频| 看日韩黄片| 九色 人妻 大香蕉| 国产99精品一区二区三区免费| 99热国产| 欧美呦呦性爱| 天天综合官网| 一区二区三区男人的天堂| 一区不卡在线观看av| 伊人激情五月天一区二区| 嫩草一区二区在线观看| 亚洲欧美一区二区网址| 91九九九吃| 欧美综合加勒比在线| 日本狠狠干| 欧美黄片欧美黄片xxx| 久久久9999| av天堂加勒比| 男人天堂毛片| 97鸡把在线视频| 蜜桃精久三区| 按摩中文字幕| 亚洲情色五月天 | 欧美色网络| 天天热精品| 中文字幕日韩人妻视频一区二区三区交换夫妻| 久草久热| 欧美一二三区四五区| 日韩欧美视频青青| 91女在线观看| 久久夜色一区二区| 天美传媒在线一区| 日影院久久婷婷夜夜网| 男人的天堂久久狠| 无码九九九九| 色图四区| 美女久久久久久久久久久| 日韩欧视频| 欧美另类天堂| 亚洲黄色| 亚洲国产一级黄色视频| 26UUU欧美日本| 99热在线播放| 亚洲欧洲成人在线电影| 国产绿奴视频在线观看| 家庭乱伦性爱av| 久久精品店| 91精品伊人久久久大香线蕉91| 激情综合网五月婷婷五月天| 久久老子无码午夜伦不卡| 国产日本久久免费精品| 日韩欧美视频青青| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 狠狠操夜夜操蜜桃视频三区| 久久久影院| 蜜臀AV成人精品蜜臀AV久久| 99re6国产精品99re| 色九色久| 免费一二区| 性暴力欧美猛交在线直播| 国产日韩精品无码去免费专区国产| 四虎国产精品永久地址入口| 激情五月天社区| 激情婷婷| 97这里都是精品| 亚洲成人妻日韩在线| 啊啊啊在线看| 69精品| 大屁股人妻女教师撅着屁股| 久久99午夜精品一区人妻| 亚洲av乱伦色图网站| 中文字幕第页| 欧美夜色| 亚洲精品 欧美97色色| 中文字幕蜜乳av| 亚洲制服aⅴ中文字幕| 黄aaaaaaaaaaaaaaaaaa色网站 | 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 色综合超碰超| 亚洲a色| 日欧操屄| 色婷网| 青青色综合| 欧美激色| 无码精品久久久天天影视| 婷婷五月天色| 91丝袜美腿片| 黄页| 啪啪资源网| 五月激情综合网| 性生活久久久久久久久久| 国产麻豆一区二三区| 久久久四区| 久久91视频| 日本超碰在线国产一区| 中文字幕欧美日本乱码一线二线| 国产精品视频内谢女人| 啊啊啊好爽快点啊啊啊嗯嗯| 日影院久久婷婷夜夜网| 亚洲丝袜诱惑| 天天肏夜夜肏| 九七毛片九九毛片| 日日操免费视频| 超碰人人草| 天天日天天射天天干| 91n处女在线观看| 豆花视频操逼网址| 97综合国产精品高潮久久| 玖玖资源视频一区二区三区| 亚洲性爱电影| 熟妇一区二区三区| 男人的天堂久久久| www.色综合| 免费成人在线熟妇网| 美女被啪到深处抽搐视频| 人人考人人摸人人干| 综合网欧| 在线视频 亚洲精品| 99在线免费观看| 美女让帅哥通她小鸡鸡| 天堂中文日本在线观看| 91网站18在线| 国产美女自拍AV| 久草综合京东| 久久久久久九九九| 大香樵伊人网| 东北女人高潮视频| 五月综合色| 久久久免费高清中文视频| 国产欧美成人第一页在线观看| 国产乱婷婷精品二区三区| 亚洲欧美骚| 99自拍视频在线观看| 91爱欧美| 亚洲成A∨人影院在线欢看| 精品国产乱码久久久兰草影视| 精品一区二区国产日韩| 800zy一区二区| 精品对白久久不卡| 青青草视频爽一爽| 在线αⅴ| 96免费视频在线| 2017av无码免费无线播| 97高清啪啪| 国产精品 视频| 91人妻丝袜无码| 欧美日韩国产成人高清| 久干网| 无码高清国产AV| 精品一久久久| 333kkkk·亚洲com久久| 9九九国产| www.久久最新地址| 超碰伊人在线| 伊人久久大香大香线蕉中文 | 91在线精品一区二区三区| 97中文超碰| 中文久久久| 久久久久无码| 亚洲91在线播放影院| 91超碰碰在线| 九久9精品| 久久粉色| 中文字幕丝袜人妻| 精品亚洲国产成人精品| 久久久偷拍| 成人AV素股で擦久久| 日本性爱视频一级| 伊人亚洲综合| 99热18| 一区二区中文| 亚洲色图第一页| 波多野结衣先锋影音| 久久久一区二区| 岛国精品视频在线观看| 热99这里有精品综合久久| 男人的天堂在线有码| 91丨国产丨白浆秘 洗澡动漫| 三级片大波波| 五月丁香拍拍激情综合三级| 日本精品一区二区不卡| 亚洲综合图色在线| 一级免费啪啪片| 国产97在线视频| 青青草日本中文字幕| 日本性爱少妇| 中国人高清www色视频免费| 97超级欧美| 色牛牛AV| 久久精品午夜国产亚洲AV无码 | 欧美日动态视频| 插日本熟女视频| 极品色综合| 久久久18禁| 一级久久性爱视频| 一区二区三区美女超清| 青青草在线视频播放器| 啊啊啊啊二区好大| 一起草AV| 中日韩熟女| 日日摸天天爽夜夜欢| 国产精品视频电影| 亚洲色香| av天堂影视中文在字幕在线中文| 强奸乱伦AV网站| 青青草依人大香蕉| 九九九影院| 亚洲色人妻综合| 国产小视频91| 国产人妖的免费的视频| 一区二区高清视频| 蜜臀网址在线| 久久视频少妇美女| 夜夜高潮夜夜爽高清视频一| 国产又色又爽又舒服的三级视频| 国产成人99久久亚洲综合| 91天美免费| 天操老女人| 久热69九色熟妇97| 婷婷性爱| 自拍偷拍 日韩无码| 免费αV在线视频| 欧美性色网| 激情文学小说一区二区| av久日| 插老姨肥穴| 婷婷综合五月天| 亚欧高清在线| 日韩中文字幕国产| 美女熟妇色| 白丝AV| 精品人妻一区二区三区不卡断| 99精品丰满人妻| 好爽,再快点啊哈嗯嗯嗯嗯| 激情综合五月丁香| 竹菊影视国产一区二区| 播播亚洲小说亚洲| 视频黄色国产一级| 伊人精品久久网站| 欧美日韩午夜精品一区二区三区 | 久久久免费一级黄片| 久久午夜鲁丝片| 蜜桃狠狠色伊人亚洲综合网站| 欧美一级二级三级| 久九九九九九九九热| 智利AV在线网| 黄久在线| 欧美丝袜美女电影一二三四区| 欧美色图成人网一区二区| 欧美色九九九| 亚洲 图片 欧美 色图| 久久婷婷国产一区二区色| 色情婷婷| 美女露胸露屁股| 九九九九九九九精品视频| 激情专区综合| 99色色网| 男人的天堂2018东京热啪啪啪| 一级黄色影片| 亚洲精品819| 99热超碰| 日本蜜桃| 国产丝袜高跟美女av免费观看| 风月影院男女十八禁| 成人欧美日超碰| 91男人天堂网| 美女上床网站| 一二视频神马久久传媒| 欧洲一区二区| 婷婷爽人人婷婷爽视频| 大香蕉综合网| 欧美成人A√在线一区二区| 91丨豆花丨熟女| 成人a大片在线观看| 96久久精品一二三区色欲| 久久婷婷综合国际产色怕| 亚洲偷拍自拍在线视频| 六六久久日韩不卡| 国产传媒美日韩av| 中国黄色特级精品一区二区三区片| 爱妻综合网| 国产精品天干天干综合网麻豆| 国产女人9999| 午夜啊啊| 亚欧毛片基地国产毛片基地| 亚洲色图亚洲无码强奸乱伦| 亚洲一区二区麻豆影院| 欧美色图天堂网m| 无码人妻精品一区二区三区九九| 333kkkk·亚洲com久久| 桃花色涩综合影院| 国产亚洲 中文欧美久久| 久操B网| 艳尻美人妻| 91老熟女91老女人| 91社区伊人| 成人激情无码在线视频| 天天日天天插| 日韩人妻精品中文字幕| 97亚洲在线| 7777奇米影视久久| 丁香六月啪啪| 欧美在线55555| 日曰骚久久精品| 欧在线一二区| 日本人人操人人操| 精品免费一区二区三区在线亚洲人成| 玖玖草久草99蜜月一区二区三区| 97超碰欧美手机| 性影在线视频| 一区久久久二区| 热久久无毒不卡| 亚洲精品97| 久操网线| 久久久久久性爱视频| 99re综合伊人| 亚洲伊人成综合成人网| 亚洲色婷婷| 久久久111| 97干色| 国产精品香蕉热久久新品| 97网址www| 久久精品人妻一区二区三区| 亚洲国产成人精品女人久久久| 亚洲日韩少妇一道本视频| 超碰色图| 欧美熟女操屄| 日日黄色三级网站| 人妻少妇久久中文字幕一区二区 麻豆 | av在线一区二区三区| 蜜臀久久一区二区| 骚女高跟AV在线| 日本操逼视频免费| 91黑丝露脚| 久久9999| www.91逼逼.com| 欧洲射精91| …亚洲黄色厕厕女女在线播…| 日韩不卡毛片Av免费高清| 亚洲欧美九九九| 天天躁日日躁狠狠躁| 毛片电影一区二区三区| 爱妻综合网| 国产性爱强奸乱伦大全| 欧美制服网站美腿丝袜| 91精品国产91熟女| 欧洲熟妇xxXx欧美老妇裸体 | 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 怡红院亚洲怡春院av| 免费?级毛片无码?∨蜜芽试看| 久久婷婷国产一区二区色| 久久精品区| 人妻精品视频一区二区| 麻豆a'v电影| 狠狠操夜夜| 中文在线久久字幕| 夜夜操美女| AV天天综合| 女人久久久| 调教熟妇 久久久久久| 淫色网综合| 91丨熟女丨丰满熟女| 亚洲成人日韩小说| 91丨精品丨国产丨丝袜| 人妻丰满熟妇一区二区三| 99操| av在线观看不卡网站| 青青操97| 91精品女厕偷拍视频| 成人性爱AV在线免费观看| 曰本精品久久久| 国产成人亚洲精品无码最新在线| 无码人妻丰满熟妇奶水区毛片| 91性高朝久久久久久久久| 啊嗯好大视频在线观看| 久久久久久久伊人精品| 风月影院男女十八禁| 欧美熟女操屄| 麻豆熟妇乱妇熟色A片在线看| 我爱大香蕉| 91宗合网| 青青草日本无码| 欧美一级黄色免费专区| 人妻丝袜肏逼| WWW黄片COM| 香港久久久| 2020视频1区2区3区| 激情婷婷综合久久| 欧美 日韩 另类 亚洲| 约操熟妇| 久久久久久久久久久久97| 国产又色又爽又舒服的三级视频 | 78超碰| 精品久久久久9999| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 黄片色区软件| 99精品九九九九九九| 丰满欧美少妇| 欧美日日操| 久久久久人| 日日AAvv| 99久热| 午夜福利国产欧美日韩夜夜| 九一国产精品| 日本三级久| 国产Av超碰| 99热线麻豆| 91男女啊啊啊| 先锋激情∨在线视频播放| 大香蕉2017| 亚洲伊人久久精品狠狠在线| 黄色小视频日本txt| 91爱| 亚洲日韩久久精品一区| 精品区9| 久久av一级av少妇av高潮 | 久久久性少妇| 99热啪啪| 精品久久久av无码免费| 97av,com| 69综合网| 狠狠穞A片一區二區三區| 久久久久久亚洲精品中文字幕人妻| 性开放中文AV高清无码免费看| 国产日韩久久| 久久9精品网站| 亚州色图狠狠干| 色玖玖| 亚乱色| 92性色国产午夜福利在线661| 精品一区二区2| 天天弄欧美| 日日爽夜夜爽| 免费强奸av| 97国产超碰| 国产吹潮女在线观看| 久久这里精品国产99丫e6| www.91久久| 18禁免费视频| 人人性爱视频免费| 亚洲在饯| 国偷自 一区二区| 91黑丝少妇| 操美女高潮抽搐白浆| 亚熟在线| 七久久久| 69精品人人人人| 99精品视频在线观看免费| 久久精品国产精品一区| 97超碰欧美中文字幕| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 91大胆欧美| 91久久久久久| 丁香五月婷婷基地| 日本高清一区二区在线| 在线观看AV片| www.久久最新地址| 高清国产成人无码| 老熟女搡BBBB搡BBBB视频| 精品无码久久久久久久杏吧| 国产精品诱惑| 亚洲AV不卡在线观看| 亚州综合色图| 少妇三P| 75大香蕉| 神马久久中文字幕| 久草新免费| 日韩情色AV| 欧美五区| 亚洲巨爆乳一区二区三区四季网| 91 欧美| 久久夜夜| 欧美色人| 97精| 欧美中出| 在线播放成人高清免费视频| 成人午夜高潮av猛片| 女性喷水高潮在线观看| 亚洲欧美国产中文视频| 国产精品直播在线观看直播| 亚洲欧美日韩免费观看| 国产精品久久久久久亚洲色欲| 亚洲黄色AV电影| 97中文热色| 熟女人妻精品一区二区视频| 成人线上超碰| 无码人妻精品一区二区三区99不卡| 一个人免费视频观看在线WWW| 久久久久久99AV无码免费网站| 欧美 精品国产制服第一页| 18禁无码永久免费无限制| 日日插夜夜| h无码动漫在线观看| 欧美一级做a爰片免费视频| 婷婷六月色开| 99re这里只有精品中心播放| 国产有码一区| 免费黄色片。| 久久久精品视频免费观看| 无码国产精品午夜不卡(| 久久精品国产免费观看99| 九月婷婷综合| 亚洲男人的天堂一区二区| 91高跟美女在线播放| 熟女露脸激情自拍视频| 丝袜AV一区二区三区| 色综合国产在线观看| 亚洲最新av无码成人精品区 | 五月天色图| 亚洲欧洲视频小说在线观看| 97一区二压| 久久综合久色欧美综合狠狠| 91丝袜| 色欲av一区二区三区蜜芽| 91精品人妻电影| 激情四射婷婷四五月天| 色娱乐色呦呦夜夜夜夜av| 易易A毛视频| 极品销魂美女一区二区| 日韩欧美俄罗斯A片| 91oumei| 97频视在线| 夜夜高潮夜夜爽夜夜爱爱一区| 秋霞怕怕片| 亚洲色图8| 极品销魂美女一区二区 | 五月综合久久| 青青草视频导航官网| 超碰这里只有精品| 91欧美经典| 日韩中文9| 亚洲天堂五月天国产| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 欧美|91色综合| 性生活无遮挡纯毛片在线看| 国产精品久久泡妞网站| 亚州免费啪啪视频| 91xingse| 东京热伊久| 欧美一区二区日韩三区| www.婷婷五月天| 97精品中文字幕| 国产美女高潮| www.99色| 欧美熟女丝袜| 国内偷拍精品一区二区| 五月天社区| 国产精品一级二级在线| 乱抡国产91| 超碰97起碰| 中文字幕精品三级久久久| 超碰日韩人妻| 久久极品一区二区| 超碰97综合网| 乱伦Av网| 久久大线蕉一区| 欧美日本成人一区二区| 99热色精品| 欧美综合色综合| 久久无码成人| 91欧美长吊| 99热国产| 国产97综合| 国产欧美岛国精品一区| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 天天综合~91| 99日韩| 91美女国产在线| 日本欧美一区二区三区视频麻豆| 国产精品小视频一区二区三区| 97亚洲色图| 亚洲最大无码中文字幕网站| 99re9这里只有精品| 九九九九精品九九九九| 五月婷婷六月色| 新怡红院| 日本在线不卡一二区| 久久久91福利姬| 黄片免费久久久久久久| 天天干人妻| 污污汅18禁网站在线永久免费观看| 蜜桃精品一区二区三区ww| 东京热天堂网| 九九热AV| http://qxhbdz.com| 欧美在线啊啊| 国产高清1234区| 97欧美视频| 高清不卡视频| 久久久久久九九九| 日夜啪电影| 女性91网站| 亚洲中文制服诱惑| 亚洲视频中文一区| 日欧美色| 少妇啪啪自拍| 亚州男人的天堂| aaaa少妇高潮大片| 亚洲成人在线资源| 五月丁香影视| 天天躁日日躁狠狠躁| 高清不卡国产| 大香蕉乱级| 在线天堂999| 都市久久精品激情亚洲| 人妻黑丝袜电影| 大伊香蕉在线视频免费| 新怡红院| 98一区二区精品| 一区二区三区美女超清| 日韩钢筋无码高清啾啾啾| 又大又长又粗又爽又黄| 97国产伦理| 色婷婷综合视频| 野狼福利社区| 久久亚洲不卡一区二区三区| 少妇3P性爱自拍| 99re热| 六月丁香啪啪| 乱伦熟女论坛| 学生妹天天看| 婷婷色婷婷| 囯产精品久久久久久久久久梁医生 | 色综合色欲色综合色综合色综合| 精品久久久久综合无码| 蜜臀久久99精品久久久电影| 大香蕉伊人一区在线观看| 亚洲图片婷婷五月天| 欧美同性恋 的搜索结果 - 91n| av资源在线播放天堂| 欧美人妻少妇| 精品9区| 人妻少妇久久久| 可以免费看黄片的视频| 中文字幕无码不卡啪啪| 天天操女人| 久草免费福利在线播放| 大鸡巴久久| 10000部十八禁看电影| www网站黄| 天天看天天日天天操| 蜜桃视频一区二区三区| 色99视频| 欧美丰满少妇xx高潮| 国产精品久久久久9999小说| 成人热久久精品| 色婷婷基地| 影视综合无码少妇| 夜夜欢天天干| 中日韩久久人妻一区二区| www久久99| 操操逼视频| 日本亚洲嫩草影院啪啪| 亚洲一二三| 天堂蜜桃无码视频一区二区| 成人三一级一片aaa| 日韩无码一区二区三区| 欧美综合777| 中文字幕一区二区三区蜜臀| 久久精品国产亚洲AV成人直播| 亚洲一区二区三区春色| 操一对老熟妇爽上天视频| 97色色色综合网站| 中文字幕在线观看丝袜| 全免费a敌肛交毛片免费| 一区二区三区免费视频入口| 999国产精品999久久久久久| 91强在线播放| 大香蕉十区| 中出91| 精品人妻一区二区视频| 肉动漫无遮挡h在线观看| 91操熟女视频| 精品97精品97| 日本少妇va7777| 99这里只有精品| 日本性爱不卡视频| 欧美黑人精品在线播放| 黄色香蕉视频网站一区| 大香蕉78| 久啪视频| 天天日骚逼熟女| 欧洲精品久久| 国产熟妇一区二区| 天色综合网| 精品四五区| 天天做天天爱天天高潮| 国精精品无码一二三区水多多| 最新日日夜夜天天干干| J?P?NESEHD熟女熟妇伦| 91久久青青草原精品| 成人性交午夜免费片| 欧美色爱综合| 人妻 欧美亚洲| 亚洲熟妇综合久久久久久| 人妻少妇色综合| 伊人一区二区三区| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 欧美天天干| 日韩本不卡视频在线观看| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 久夜操| 小电影欧美91| 蜜臀99久久精品| 骚妻少妇精品性色无码四色A V| 久久精品99久久久久久| 日本黄色天堂| 欧美人妻一区二区| 青青草在线视频播放器| 超碰久久.com| 麻豆av一区二区| 97色综合中文网| 91人妻少妇| 在线播放成人高清免费视频| 一级AV性爱| 欧美的性爱网站免费| 九九综合久久中文字幕| 国产精品免费日韩| 欧美激情中文字幕另类小说| www网站黄| 色色色综合网| 五月婷婷色色| 久久欧美1卡2卡3| 操美女人妻| 久久少妇人妻| 中文字幕第7页| 久久一区二区蜜桃| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 国产传媒日本欧美专区| 神马久久网| 91久久久久久久| 亚洲清纯综合| 国产精品第一页国产大屁股视频免费区| 国产精品白丝| 亚洲国产精品9999在线观看| 婷婷亚洲五月***久久| 九九热视频在线观看| 宅男午夜在线视频| 极品久久久久久久久久久久久久| av草草在线电影| 60秒不遮不挡| 欧美一二三级精品在线| 人人操人人操草草| 五月丁香久久| 中文字幕日韩精品一区二区三区| 尤物视频网 刘玥| 中文字幕午夜精品久久久| 色综合91好| 欧美亚洲第一页| 色丁香久久| 天天操天天射青青草| 日欧毛片久久| 国产精品久久泡妞网站| 欧美一区二区日韩三区| 探花精品视频| yiren97| 99色热| 国产亚洲性生活视频播放| 岛园激情| 伊人五月天青青草婷婷| 91色综合色| 国产高清自拍| 成人免费在线网站| 99热这里| 91激情综合| 中文字幕后石码四区五区| 秋霞久久亚洲精品成人| 国产按摩一区二区三区| 欧美91网站| 国产极品馒头逼| 国产无马视频| 69AV女优男人的天堂| 久久久9 9 9精品| 免费观看成人www精品视频| 在线人人人人人人精品超| 亚洲日韩肥臀视频在线观看| 热久久无毒不卡| 91丨国产丨白浆秘 洗澡动漫| 日韩不卡a级视频专区| 大香蕉在线视频15| 亚洲激情欧美色图| 日本性感人妻91| 翔田千里av一区二区三区| 麻豆AV短剧| 亚洲97精品| 欧日a| 国内精品不卡无毒99999| 插插综合网天天影视网| 无码人妻精品一区二区中文| 久草精品热视| 97色操| 日韩欧美中文| 亚洲射综合网| 精品人妻一区二区三区四区不卡在| 91三级理论片播放器| 久久一区,青青青青草视频在线播放| 国产熟码AV| 草草影院最新网址| 97综合国产精品高潮久久| 国产一二三在线视频五十路| 亚洲日韩国产欧美综合v| 国产十八禁视频| 日韩偷拍一区二区三区| 天天摸天天插天天日| 亚洲中亚日激情视频| 99老司机精品视频在线观看| 蜜伊人色综合97| 91综合中文字幕| 久99热| 国产又长又大又粗的视频| 成人性爱av| 欧美久久毛片基地| 一级乱伦网站| 91丨国产丨白浆| 97超碰欧美精品| 婷婷丁香六月| 91天美免费| 亚洲图片欧洲图片aⅴ| 久久免费精品96| 老熟女乱伦一区| 秋霞男人网| 91在线精品一区二区三区| 日韩三级网址| 东北少妇高潮zzzz| 有码免费观看| 日韩欧美亚洲自拍偷拍| 人人妻人人操人人乐| 亚洲se91| 蜜臀久久一区二区| 欧美日韩97| 天天射网| 人人模人人看| 亚洲日韩青青草色月| 国产日韩欧美中文在线播放 | 五月婷婷六月丁香| 成人一二三区| www久久久| 不卡在线观看视频| 97精品国产97久久久久久| 免费试看60秒| 一区久久久二区| 日韩 国产 欧美自拍| 黄页大片在线观看| 一区在线精品中文字幕| 天天亚洲综合| 成人小说视频在线精品欧美| 美国久久一二三四| 97精品熟女少妇一区| 久久精品99久久久久久| 国产无码一二三区| 欧美宗合网| 九九热免费国产视频婷婷伊人| 国产精品人妻无码久久久互動交流 | 中文字幕欧美日韩三级| 丝袜制服字幕在线| 操www| 中文一区二区| 九九热超碰| 午夜舔阴达高潮视频免费看| 91久久18禁| 影音先锋中文字幕日本好一区二区| 亚洲中文字幕av| 欧美乱色| 黄色av网站在线播放| 怡红院亚洲怡春院av| 天天干少妇| 日本精品中文字幕视频| 蜜桃精品视频一区二区三区| 色色婷婷丁香| 免费人成毛片乱码| 天堂网 主播 亚洲| 亚洲操操| 人人做,人人操,人人摸| 五月天亚洲网| 欧美午夜精品久久久久久3D| 亚洲欧洲自拍图片专区满春格 | 青青草狠狠撸| 婷婷色婷婷| 黄人人操人人操| 丰满欧美放荡少妇在线| 天天日日舔舔| 少妇高潮特黄A片| 不卡日本一区二区| 久久尹人大香焦视| 色狠狠综合噜一二三区| WWW操逼| 清纯唯美综合亚洲| 亚洲限制级在线| 天天干天天狼在线视频| v91av| 在线情色电影 91大| 国产精品一区二区三区在线密挑| 一线黄色免费性爱片| 干超碰碰熟女| 九热超碰| 中文字幕55555| 婷婷色色网| 国产一区二区精品久久99| 91 欧美| 午夜九九| 好屌色综合| 99热这里是精品| 一区二区三区成人高清视频| 成人久久久| 欧美日日人人天天| 天天做天天爱天天爽AV| 六月丁香婷| 中文字幕日韩人妻视频一区二区三区 | 欧美成人性活片| 91女优在线观看| 麻豆黄四叶草网站| 开心激情婷婷| 日韩欧美午夜视频在线| 性色AV蜜色av色欲av| 久久黄黄黄| av线电影| 情色五月天久久久| 欧美极品女人的天堂| 最近的最新的中文字幕视频| 亚欧免费| 一起草视频在线| 婷婷探花久久精品一区| 精品九九九九九九九九九| 4141514逼喷水三级片| 狠狠色综合网| 高清有码一区二区| 老熟妇91| 91情色在线| 久久成人东京热人妻| 狠狠干妹子| 精品中文日韩字幕视频| 国产精品。| 亚洲一区二区三区麻豆传媒| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 激情小说亚洲色图| 色五月av| 99re超碰| 国内伊人久久久久久网站视频| 日韩91网站| 青青久久艹| 欧美黄业| 啊啊啊操死我| 欧美色综合| 国产精品美女久久久久久网站| 青草成人免费视频一com| 天天网综合| 国产深喉视频一区二区| 97欧美超碰| 搡老熟女免费视频| 亚洲人体视频在线观看| 在线播放成人高清免费视频 | 国产亚洲性生活视频播放| 伊人操你| 熟女乱伦A| 成人三一级一片aaa| 美女操逼福利视频| aⅴ日韩成人电影av在线免费看av大全| 黄色AAAAA欧美| 国产女人操逼视频| 日本亚洲熟女视频| 9久精品| 久久9久久| 啊啊啊啊操死我| 超碰78| 成人免费毛片| 亚洲国产欧美另类自拍| 日韩精品黄片免费观看| 国产97色在线| 精品丰满人妻一区二区三区免费观| 日韩另类色图| 96爱综合| 在线中文AV| 色路综合| 极品白嫩美少妇在地板上位骑射淫水泛滥| 97色网| 欧美精品一区二区少妇免费A片 | 天堂亚洲精品| 2019天天干| 都市久久精品激情亚洲| 91人妻素女| 婷婷五月天成人| 精品久久久久9999| 九九国产热| 99精品九九九九九九| 精品国产一区探花在线观看| 四虎国产精品永久地址入口| 最新啪啪视频| 狠狠中文字幕| se,,,亚洲欧美| 久草看看看| 91久久免费视频互動交流| 熟女人妇一区二区三区| 91粉芽高清在线一区二区| 久久天天躁日日躁狠狠躁 | 亚洲91网站| 日韩内| 性videos欧美熟妇hdx| 天天干夜夜操网| 女人天堂AV五区在线| 欧美日韩人妻婷婷一区| 91欧美经典| 国产日韩在线播放av| 色综合99| 撸撸成人在线视频| 亚洲午夜精品久久久中文影院| 草草草视频在线免费看| 一级久久久久久久久久久| 亚洲精品 大香蕉| 亚洲综合69| 中文视频在线观看| 国产中文字幕曰本毛片| 久久久99久9| 国产精品一二三| 欧美色www亚洲国产阿娇要播| 乱伦3P视频| 啊嗯好大视频在线观看| 精品成人久久久人人亚洲| 亚洲日本激情| 久久精品一区二区三区不卡| 学生妹天天看| a片自拍直播视频| 人人色人人操在线| 亚洲一区二区 麻豆传媒| 久久97精品久久久久久久不卡| 亚洲 一区二区 自拍| 伊人影院在线理论播放| 久热网| 又大又长又粗又爽又黄| 美女黄页| 国产农村妇女毛片精品久久| 午夜福利av电影在线| 久久久9品一区二区三区| 久久精品视频久久久| 日日干夜夜操视频h| 97久久久网站| 乱伦av麻豆| 日韩精品人妻中文字幕有码午| 91美女视频。| 成人a大片在线观看| 99精品丰满人妻无| 青青草这里只有精品| 天天干夜夜一操| 69精品人人人人| 国产97在线视频| 超碰国产在线| 欧美黑人日韩少妇色情| 2017人人操,人人摸| 午夜呻吟欧美| 久久久久久久精| 啪啪啪大香蕉| www.成人无码| 思思性爱| 韩日精品福利视频一区不卡在线免|