色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
久操免费视频| 大香蕉123| 90后性网国产欧美| 日韩偷拍色图| 男女性扦B| 成人情色综合网| 国产搭汕a级片| 白丝被操91| 国产成年免费大片黄在线观看| 日韩欧美中文| 婷婷日韩一区二区三区中文字幕在线| 国产丰满少妇久久久精品影院| 67194无码不卡| 日本加靬比网站发布页| 免费看国产大AB| 久久久久国色αv免费观看| 91亚洲欧洲| 国产51色综合久久免费| 六月婷婷五月丁香| 91欧美美女日韩国产婷婷| 人人妻人人色一区二区三区| a'v在线资源| 免费观看性欧美一级| 亚洲一区二区精品福利| 亚洲天堂,男人| 麻豆精品三区视频| 成人线上超碰| av片在线观看免费播放| 丝袜无码a片| 欧美高清色| 国产网红精品| 裸模AV女优| 精品国产久久乱码| 强奸乱伦AV一天堂网| 日韩不卡av一二三| 久久免费看高潮毛片韩国| 欧美激情亚洲情色| 91人妻人人澡人人爽人人精品| 免费中文在线| 91欧美美女日韩国产婷婷| 丰满人妻-区二区三区免费看 | 亚洲精品中文字幕一区在线视频| 亚洲男人的天堂亚洲| a片亚洲一本通视频| 加勒比伊人| 亚洲精品日日夜夜52| 日日日啊啊啊| 97久久久久久久久久| 国产探花日韩援交| 日本人妻一区二区| 91精片| 亚洲古典另类欧美在线| 天天影视激情欧美| 香蕉欧美| 日本 欧美 亚中文字幕| 熟女久久| 午夜寂寞欧美| 亚洲aw毛茸茸在线 | 国产AV色黄看到爽| www四虎| 欧中美三级一区二区三区| 国产大学生口爆吞精合集| 五月综合色| 锕锕好爽 死我在线观看| 久久69| 色婷婷狠狠18禁| 亚洲 综合 第一页| 啪啪免费| 九色97| 青青草在线视频播放器| 国产成人综合在线播放| 午夜啊啊啊| 久久精品高清无码一区| 这里只有精品视频在线观看麻豆 | 欧美亚洲se91| heyZO天然素人无码AⅤ专区| 97超碰天天爱天天爱| 蜜臀久久99精品久久久久久无删减 | 成人精品久久久午夜福利| 久操热| 亚洲AV色图一区| 91久久精品中文字幕| 欧美成人色| 伊人黄色片| 天天天乱色综合全| 色婷婷六月丁香七月婷婷| 大香蕉AV丝袜| 亚洲电影中字一区二区| 久草资源欧美在线视频| 五月天婷婷在线看| 丝袜无码a片| 日韩三A大片在线观看| 亚洲成人精品久久久| 欧美大香蕉久| 亚洲欧美国产va在线| 欧美日韩国产三级黄色| 9997se| 图片区小说区| 神马麻豆福利院| 亚洲欧洲偷拍一区| 日韩三级在线观看网站| 亚洲日本天堂| 欧美性生活综合| 好涩综合| 五月天春色激情网| 免费1级a做爰片观看| 欧美在线l亚洲| 精品久久久久久无码| 日日AV加勒比| 欧美麻豆成人同性GⅤ在线| 竹菊一区二区三区AV线| 国产自产91区13区| 欧美中文字幕日韩在线| 久久女女| 亚洲精品天天影视综合网 | 蜜臀久久99精品久久久久免费观| 日本十八禁免费看污网站| 天天天天天超碰| 欧美顶级黄色大片免费| 熟妇女伦乱视频| 色穴精品| 国产精品无码av在线| 亚洲综人网| 韩国久久97| 男女日B国产| 天天色踪合| 久草大| 国产在线综合福利网站| 亚洲成人帖图| 在线啊啊啊啊| 操逼日批| 加勒比海人人操超碰在线| 精品女人999| 欧美不卡五十路| 中美日韩毛片| 午夜一级免费毛片| 超碰九区| 午夜精品人妻二区三区| 青青草国产亚洲精品久久| 欧美操逼熟女| 九九九九免费| 国产风韵犹存熟妇三区| 亚洲制服欧美另类内射| 日韩啊V| 欧美激情一| 操人妻丝袜高跟| 久草视频在线视频在线视频在线观看| a级免费在线观看| 91精品久久久久久77777| 色一情一乱一乱一区91Av| 老司机午夜精品视频| 亚州欧美综合| 国产日韩精品一区二区三区| 日韩av乱伦| 亚洲 欧美 精品专区 极品| 嗯嗯啊啊日韩精品| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 国产精品久久伊人| 曰韩精品视频一区二区| 五月亭亭六月丁香| 日韩欧美麻豆 | 91国产美女丝袜足交精品视频| 成人国产精品三级A片| 国产 亚洲 一二三四| 久久精品人妻一区二区三区| 欧美中字二区| Av色五月| 日本欧美成人片AAAA| 丰满人妻一区二区三区四区| 久久久新亚洲AV| 97国产中文| 欧美熟女妇同| 亚洲美女精品| 中出91| av天堂手机版追回 | 成人性爱免费播放| 日韩97P| 久草毛片| 99热国产精品| 亚洲图片 激情小说| 亚洲精品丝袜| 国产丝袜美女诱惑| 五月天激情小说| av一区二区三区四区| 国产精品久久久久久久久久久久久久吹 | 久这精品中文在线观看视频| 国产精品高潮久久久无码| 骚货人妻偷情自拍在线视频| 郑州宾馆老熟女露脸啪啪| 国产黄色在线播放观看| 一起草视频在线| 骚熟女AV网| 九七毛片九九毛片| 久草男人天堂| 亚洲男人天堂2016| 人人澡综合涩| 综合网亚| 天天日天天舔东京热| 色噜噜国产在线| 婷婷综合五月天| 久久精品国产久精国产| 在线无码视频| 精品偷拍13p欧美dodk视频| 国产三级资源在线观看| 五月婷婷丁香六月丁香| 九九精品99| 天天躁日日躁成人字幕aⅴ| 欧美精品成人一区二区在线观看| 九九亚洲| 午夜男女爽爽爽影院视频| 婷婷久久五月综合激情| 蜜臀久久99精品久久久电影| 成人精品在线免费视频| 日本国产亚洲一区在线观看| 久久受www免费人成| 草草电影院| 视频国产成人精品日本亚洲18| 男人的天堂 在线一区| 骚鸭AV| 9九九国产| 国产黑白丝在线| 久久中久文96| 久久久一区二区三区麻豆| 99综合视频| 综合网色| 久久综合18p| 麻豆乱码久久精| 天天欧美色| 91AV老熟女视频| 亚洲综合113页| 殴美,日韩国产伦精品| 日韩97视频!在线| 国产精品久久久久久夜夜夜| 中国黑人三级片网站上区| 日韩精品人妻中文字有码在线| 日韩久草| 日夜伊人网| 99婷婷一区二区| 天天躁日日躁成人字幕aⅴ| 欧美视频一| 日本日逼高清| 一区二区激情国产熟女| 婷婷五月天久久精品视频一区二区三区 | 蜜桃视频精品一区二区| 欧美图片色综合| 日韩欧美偷拍美女视频| 日韩欧美三级| 国产精品国产亚洲区艳妇糸列| 久久久久久久9| 97资源视频| 国产一区二区欧美日本| 国产农村妇女一区二区| 青青草玖玖爱| 玖玖久久久| 日韩av在线精品观看| 蜜乳AV一区| 国产日逼视频| 日本久久精品| 熟妇艹鸡八| 超碰 国产熟女精品一区| 老熟妇91| 国产粉嫩出水在线播放| 亚洲色图在线视频| 欧洲精品欧洲精品| 一区二区视频在看| 中文字幕精品一区欧美| 国内精品999| 久久夜夜夜| 精品人妻久久久| 免费看黄片现成| 日韩一区二区三区四区五区| 久久a久久| 91精品免费| 亚洲天堂资源网| 国产女人高潮嗷嗷嗷叫小说 | 日韩电影免费网站麻豆视频| 综合色好色| 欧美天天干| 98一区二区精品| 夜夜 中文视频rt| 亚洲天天更新| 中文字幕 国产 精品| 亚洲精品欧美专业| 欧美性夜| 在线v中文字幕一区二区三区| 肉丝网站91| 亚洲在线综合| 91看黄片| 色综合98| 亚洲欧美91| 天天干天天狼在线视频| 91强在线播放| 久久这里只| 欧美系列在线一区二区| 大香蕉伊在线久草麻豆天堂故事| 啊啊啊在线观看| 免费毛片在线播放| yy少妇精品久久| 日本一级特级毛片视频| 九九AV| 亚洲天堂美臀在线| 美女操逼A A| 大香蕉亚洲中文| 久久是精品| 中文字幕一区二区日韩网| 人妻天天夜夜爽一区二区| 蜜臀99久久国产| 欧亚日韩中文在线| 最新日产中文在线麻豆| 久久婷婷国产一区二区色| 色路综合| 日韩成人电影AV| 97精选久久| 秋霞网—男女啪啪亚洲免费体验区| 久久草草欧美精品| 欧美97在线欧| 狠狠干,狠狠操| 亚洲双插| 欧美 亚洲 偷拍自拍| 色五月激情AV在线| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 97中文字幕一区| 中文字幕奈奈美被公侵犯| 伊人国产av| 97精| 日本少妇va7777| 香蕉视频欧美一卡二卡| 另类图片五月| 久久91| 啊啊啊啊啊啊在线看| 亚洲在线欧美| 高凊专区人人操| 人妻铁牛TV| 伊人成人中文字幕久久网| 国产精品久久久亚洲第一牛牛_在线观看| 国产色精品午夜大片| 99啪啪| 少妇啪啪自拍| 久久偷偷色综合蜜桃| 插穴性爱视频在线观看| 是还免费视频1727我| 亚洲精品啪视频| 欧美亚洲20p| 久久精品国产精品一区| 精品97精品97| 可能人人看人人摸| 91黄射| 色色国产| 亚洲熟女诱惑| 在线观看A啊啊啊| 午夜福利无毒不卡| 色天堂在线观看| 干婷婷综合网| 一本一道久久综合久久| 免费观看的av| 国产JDAV无码视频在线观看| 中文字幕精品一区二区精品| 男人的天堂com| 久久久久久午夜男人的天堂| 欧美欧美啪啪视频| 97伪v| 在免费jIzzjIzz在线视频| 美女91网| 乱日视频| 在线色导航| 欧美草草| 偷拍 亚洲| 日韩福利综合一区| 91国内外在线| 久99热| 伊人天天久久动态图| 青青草视频久久久久| 久久五月天婷婷丁香中文字幕| 91路www| 午夜天堂啪啪| 在线视频 亚洲精品| 久神马| 女人喷水视频在线观看| 97AV在线观看| 97精品国产手机| 国产精品视频一区二区三区八戒| 免费在线视频97| 啊啊啊好湿久久| 成年人性爱日韩| 久久久四区| 精品一区二区麻豆| 国产综合操逼高清| 97超碰人人操人人操| 日本熟妇色熟妇在线视频播放| 成人丁香五月| 无遮挡一级毛片视频免费的| 91精品婷婷国产综合久久| www.狠狠干.coom| 一区二区三区视频国产免费| 天堂性色| 日韩欧美中文字| 99热97| 91精品伊人久久久大香线蕉91| 搡老女人老91妇女老熟女| 久久99精品九九久久久婷婷| 超碰三级秋霞| 睡产熟女乱伦| 国产美女销魂在线观看不卡| 婷婷8月天青娱乐| 热天堂一区二区| 91干熟女| 日韩欧美午夜一区二区| 青草成人免费视频一com| 欧美午夜视频| 人妻夜夜爽天天爽麻豆三区网站 | 欧美后进式| 日日操丁香五月天| 婷婷色色五月天福利| 91高清日| AV色五月天| xxx亚洲午夜天堂| www久久99| 亚洲欧美综合区自拍另类| 一区二区不卡视| 九九九九九九九九九九九蜜桃| 麻豆乱码久久精| 久久婷婷色| 九九精品99| 蜜臀久久99精品久久久电影| 999国产精品999久久久久久| www被窝色com| 久久久性爱视频| 99re久久| 香蕉人人操tv| 亚洲国产一区二区入口| 激情小说图片亚洲首页| 天美传媒精品一区二区| 大香久久| 欧美BT 亚洲色图| 熟妇高潮一区二| 国产后入精品| 五月天婷婷基地| 久久精品国产亚洲AV高级北京| 亚洲色欧美| 99re久久| 欧美自拍网| 土豪酒店各种姿势玩弄极品幼稚| 97日视频| 天天综合网入口~91| 久久AV无码1区2区3区| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 久超碰这里只有精品| 欧美韩日精品资源| 色制服丝袜夫妻av一区| 色制服丝袜夫妻av一区| 69人妻精品丰满熟女区| 操美女人妻| 白丝AV网站| 91neishe| 婷婷色色五月天| 97人人干| 99精品久久| 色婷婷电影| 九九碰九九爱97超碰| 久热9| 婷色五月| 91美女中出| 色香AV| 日韩97P| 久久久久久九九九九| 久久久久久久人妻丝袜| 97久久精品| 人人么人人操| 一区二区精品日韩欧美在线观看| 亚洲一卡二卡在线免费| 天天躁日日躁xxxxx| 高清无码 国产精品| 久久av成人无码免费| 殴美大黄片| 亚洲精品成人激情在线| 中文字幕日本久久| 亚洲操操| av婷婷色网| 大香蕉国产中文自拍| 一区二区 电影 亚洲| 男人精品天堂一区| 亚洲玖玖爱| 久久春色| 91人妻最真实刺激绿帽| 日韩欧美俄罗斯A片| 操人无码| 午夜呻吟欧美| 91少妇香蕉久久精品| 激情文学小说一区二区| 超碰人妻97| 69国产对白刺激| 免费av在线播放二区| 91人妻素女| h在线看免费版在线看| 欧洲综合视频| 午夜后入| 欧美日韩制服| 偷拍偷窥与盗摄视频专区| 无码WWW免费视频网站| 亚洲中文字幕av| 美女超碰978| 99久久综合| 久操视频在线| 日韩成人高清一区二区| 国产99久久99热这里只有精品15| www.夜夜| 色五月第四色| 少妇三p| 欧美大波激情xxxx| 日韩AV熟女乱伦| 亚洲图片欧美日韩| 天天影视网色欲色香| 啊啊啊啊啊啊在线| 国产免费操逼| 又黑又大又粗| 嫩草 我啊~嗯~在线| 撸无码不卡免费视频| 思思热在线视频免费| 一起草欧美| 超碰人人在线| 亚洲一二三精品久久网| 欧美色道啊| 国产精品人妻无码久久久互動交流 | 国产精品午夜福利亚洲综合网| 伊人久久大香大香线蕉中文| 久久精品72| 久久久久久久9999| 欧美性爱中文字幕无线码| 五月天色图影视| 天天超级碰碰碰| 久久永久无码人妻视频| 在线国产探花| 国产丰满少妇久久久精品影院| 欧美激情亚洲情色| 久久久精品网站| 99这里只有精品国产| 99自拍视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 黄片视频,下载| 夜夜中出国产| 男生通女生屁股| 中文字幕久热视频在线| 国产原创精品| 亚洲性高潮| 国产精品一级特黄aaa大片在线观看| 色综合美国| 亚州九九九精品视频| 欧美色www亚洲国产阿娇要播| 欧洲熟妇xxXx欧美老妇裸体 | 性交一区二区在线播放| 99精品国产户外露出| www.99在线| 久久9999 | 秋霞一级视频在线观看免费| 亚洲欧美天堂在线| 2017天天拍大香蕉| 91久久久久久久| 亚洲高清在线se| 97操| 亚洲色堂免费视频| 成人三级片一区二区三区视频| 郑州宾馆老熟女露脸啪啪| 黑操B| 传媒在线观看一区二区三区| 91黑人无码激情在线| 综合91网| 波多野结衣一级视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | AV天堂丝袜| 色综合天天爱去电影网| 99激情视频| 后入精品| 色婷久久| 欧美色图在线视频少妇| 欧美性爱视频免费一区一A| 亚洲国产丝袜在线观看| 日韩AV无码网站| 99爱久久视频频| 在线日韩精品一区二区三区| 亚洲。日韩。欧美| 人妻天天夜夜爽一区二区| 五月天婷婷社区| 色婷婷网| 97超碰9| 在线观看一卡二卡| 中欧人妻丝袜中文字幕| 2011国产精品| 青青在线视频免费| 婷婷五月天影院| 中文字幕国产| 午夜大香蕉| 97视频播放| 激情五月天婷婷| 97手机日韩| 欧美乱色| 久久午夜鲁丝片| 久久久久ab| 黑人操一区二区| 成人久久久精品| wwwcaobibi| 狠狠色五月亚洲91| 98一区二区精品| 99在线观看视频在线高清| 色综合色色| 精品999999| 欧美性色综合网| 交换娇妻呻吟声不停中文字幕| 好看的久久不射无码影视影院| 日本成人电影资源网| 欧美成人精品一区二区男人蜜臀| 日韩免费看黄片| 96一区二区三区| 五月丁香婷婷综合| 亚洲天堂久久久久久粉红视频| 真实高潮91| 亚洲第一黄色av网站 | 免费亚洲黄色视频在线观看| 亚洲综人| 色色色色色色色色色色色色色色综合| 91被操| 激情五月天校园春色网| 婷婷五月天网| 高清有码一区二区| 一区二区三区色综合| 亚洲色诱惑| 东北女人无套内谢视频| 亚洲男人的天堂网| 国产精品久久久久久 百度| 久久久久久中文| ′ !γ}丶。。久久精品欧美一区二区三区 | 10000部十八禁看电影| 乱伦色图网址是多少| 人妻人妻天天碰| 99久热| 欧美日韩大黄片| 伊人国产AV| 精品免费1| 国产91会所女技师在线观看| 中文字幕av丝袜| 国产精品久久久久综合| 午夜舔阴达高潮视频免费看| 日日干夜夜骑| 久久99国产综合精品女同| 国产不卡免费在线视频| 五月天伊人网| 亚洲人久久久网| 日韩AV电影网站| 伊人午夜福利视频| 欧美在线官网| 日本视频一区二区三区| 欧美爱爱97| 东京热99999| 青青青国产| 久久性爱精品一区| 亚洲人妻色图| 蜜桃视频精品一区二区三区| 亚洲国产一级精品毛一级精品看免费视频 | 亚州性色| 东北操逼| 91成人在线| 激情五月综合| 久久久精品视频免费观看| 成人国产视频在线观看| 88在线一区二区三区| 丁香婷婷激情五月天无毒不卡 | 都市激情人妻一区二区青青操视频| 黑丝少妇在线观看| 中国一级特黄大片护士| 天天插网| www欧美91| 97国产伦理| 色五月69夫妻| 看看小穴| 激情久久久| 人妻乱仑一区二区三区| 日欧操屄| 91视频综合| 91N综合网| 啊啊啊好疼| 日夜干射色啊| 九九热男人天堂| 91天堂色男人的天堂| 日韩性爱小视频| 91 丝袜在线播放| av2014 日韩在线中文字幕| 日欧毛片久久| 五月天伊人| 久久手机视直播| 五月天激情小说网| 五月丁香啪啪网| 婷婷五月天久久久| 日韩丝袜二区| 日本性爱不卡视频| 国内精品久久人妻性色av| 农村女一级毛卡片| 久久久久久97| 欧洲精品一级二级精品综合视频综合| 超碰97久| 人妻蜜桃臀| 欧美丝袜亚洲| 亚91网| 大香蕉懂9| 精品国产乱码久久久久久久久久毛片| 一本色道久久综合狠狠操| 97天天在线| 老女人91| 日日躁狠狠躁天天躁精品| 99精品丰满人妻无码| 乱色老一区二区三区的观看方式| 熟妇一区,二区,三区。| 亚欧美色图| 日本免费二区三区| 丰满人妻一区二区三区免费 | 91人妻Pr| 黄污污污污| 亚洲中文字幕噜噜噜久久久| 欧成人精品H无码| 综合 亚洲 欧美| 超碰91在线| 伊人影院日本| 亚洲伊人a线观看视频| 男人天堂黄片| 操逼1区| 99日韩| 天天综合色电影| 久久久久久久久久久久久9999| 91亚州欧美| 九九九九免费高| 色踪合AV| 久久内射| 国产强奸乱伦欧美| 亚洲男人久久综合天堂| caoni国产亚洲av| 伊人久久大香大香线蕉中文| AV九九| 亚洲AV资源| 极品久久久久久久久久久久久久| 亚州国产成人精品女人久久| 欧美九九九九九| V A在线| 6080YYY午夜理论片在线观看| 91精品啪在线观看国产城中村| 欧亚免费视频| 久久男人的天堂国产| 日韩精品9999| 男人的天堂三级| 色妺妺AⅤ| 大香焦A片| 欧美日韩第一页| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 91女神在线视频| 黑人与人妻| AV女优男人的天堂| 亚洲欧美色图小说| 国产又黄又爽又刺激久久久久久| 亚洲AV无码成人精品久久| 国产女人高潮视频| 中文字幕丝袜美腿| 亚洲图片偷拍欧美| 欧美后入| 伊人女女资源在线观看| 日韩乱码av| 狠色婷婷久久一区二区三区_| 超碰人妻久久| 最新av网站在线观看| 国产精品免费视频人成| 91视频观看网站| 久久机热| 人妻精品一区二区| 蜜乳Av成人片网站| 五月丁香啪啪啪| 午夜久久一区二区无码中出| 超碰久久综合| 狠狠操狠狠操操| 色一色综合网| 成人熟女视频一区二区三区| 国产精品大屁股999| 亚洲国产成人精品999| 国内毛片无码一级毛片| AV丝袜少妇| 色97干| 91强热人妻| 欧美亚洲综合色| 黄站在线免费观看| 91一区二区三区蜜桃| 五月丁香啪啪啪| 91综合国产精品| 超碰2017| 色九区| 国产精品第二页| 久久久久久久人妻丝袜| 久久九九网| 亚州高清色综合| 啪啪啪综合网| 久久人妻视频| 99re在线视频国产| 欧美日韩欧美| 嗯嗯啊啊啊好爽| 成人麻豆av电影网站| 日本九九久久99播| 国产日本顶级一区二区三区| 亚洲 一区二区 自拍| 久久国产对白激情浪潮| 极品销魂美女一区二区| www久久99| 91网站18+| 狠狠操官网| 婷婷色婷婷| 国产成人啪一区二区| 久草尤物| 天天插天天舔舔天天干| 日本免费一区二区不卡| 欧美精品日韩久久久九| 亚洲色图欧美色图制服丝袜| 亚洲欧美日韩中文播放| 欧美色五月| 久久久久久中文| 91三级理论片播放器| 91国产美女丝袜足交精品视频| 亚洲无992tv| 精品妇女一区二区三区| 东京热av影院| 三级三久久线久久99久目本WW| 亚洲色图 图片| 久热精品在线国产| 人妻精品一区二区全免费| 色综91| 91精品综合久久久久久五月丁香| 亚洲做性| www超碰| 婷婷丁香人妻| 五月丁香色婷婷| 欧美狠狠狠| 在线啊v一区| 激情另类激情| 91|九色|国产熟女| 天天插天天操天天摸天天射天天看| 欧美一级国产一级| 大香蕉综合在线| 黄片aaaaa一区| 日日摸日日碰| 国产精品69人妻无码久久久| 超碰97导航| 人妻精品一区二区在线| 51一区二区三区| 高清无码国产亚洲| 清纯唯美亚洲另类| 中文字幕在线24| 女色综合| 欧美不卡在线美女| 亚洲激情片| 亚洲最大黄网| 国内毛片无遮挡国产| 欧美人妻中出| 成人97人人超碰人人| 欧洲小说色图视频另类| 国产理论视频在线播放| 中文字幕av一区二区三区人妻少妇| wwwcaobibi| 一本大道青青| 天美国产精品| 熟女色综合久久| 鸥美精品一区二区久久婷婷| 亚州春色| 绯色一区二区三区不卡少妇| 欧美综合第一| 韩国一级AAA| 死我十八禁| 五月婷婷五月天| 国产一级舔足在线观看| 91成人在线| 操逼1区| 国产97av| 日韩pv中文| 日韩福利综合一区| 99re在线精品78| 国产无马av| 国产精品免费久久久久久久久久| 亚洲最大的黄色电影网站。| a片在线播放| 成人天天爽| 97综合在线| 日语五十路和六十路亚洲国产精品| 国产精品suv一区| 性爱av在线免费观看| 999综合网| 大香蕉在线视频重口味毛片在线| 干婷婷综合网| 久草午夜| 97精品在线| 午夜大香蕉| 大香蕉天天看妹子| 麻花传媒免费网站在线观看| 怡红院久久老司机| 久久綜合很很很| 久久久精品视频免费观看| 亚州综合色| 欧美少妇高潮久久91| 91丝袜美女国产| 2018天天日天天日| 91人妻久久久久久久久久久久久| 久热免费视频| 成人自拍三级在线观看| 亚洲九九视频| 国产白嫩精品久久| 日韩激情小说一区二区| 夜夜躁狠狠躁日日躁av| 伦在线97| 东京太热久久久| 日韩欧美tv一区二区在线观看| 97在线免费看视频| 蜜桃一区二区三区| 亚洲免费人妻在| heyZO天然素人无码AⅤ专区| 亚洲中文字幕av | 红杏大香蕉| 奇米四色影视777久久久| 亚洲国产97| 天堂亚洲精品久久老牛| 素人播放一区| 亚洲免费人妻在| 麻豆国产97在线| 韩日欧亚a级| 香蕉久久精品| 青青11操操操操操操操操| 日韩成人精品视频自拍| 91性色| 午夜啊啊| 久久99草| 日本加靬比网站发布页| 色婷视频| 岛国黄色大片网站| 日本成人免费一区二区三区| 福利五区| 日日干男人的天堂| 久久天天性久久伊人| 国产一级片| 人摸人人操人| 国产精品爱欲| 青娱乐91| 蜜臀久久99精品久久久久久成人小说 | 欧美操逼一二三区| 亚洲免费人妻在| 一本精品日本在线视频精品| 国产无码久久高清| 亚洲欧美洲综合| 久久久九九| 日本好吊色视频| 粘花网06av视频| 亚洲日本韩国极品一区二区| 99ri精品| 妺妺跟我一起洗澡没忍住| 黄色人人| 在线观看不卡一区二区三区| 火箭成精品视频884必出精品| 男人天堂最新手机版在线青青草| 中文字幕伊人| 国厂麻豆77q4| 神马久久久久久久久久久久| 久久久com| 亚洲国产精品久久久久久久久久| 精品国产精品一区二区| 3p国产欧美99热| 乱伦3P视频| 亚洲色系另类精品国产| 国产亚洲福利第一页丝袜| 欧美亚洲综合高清在线| 国产精品久久久久久久久久久久久久吹| 蜜桃臀AV在线| 91在线一起| 综合网97| 狠狠操狠狠燥| 国产后入清纯| 91激情国产| 伊人久久亚洲色欲综合网站| 久久久成人精品| 伊人 俄罗斯 a v| 91欧美美女日韩国产婷婷| 精品人妻一区二区免费蜜桃| 精品夜夜澡人妻无码| 东北女人av| 黄页大片在线观看| 欧美黄色图片| 亚洲熟妇丝袜在线观看| 久久精品一区| 欧美日韩电影一区二区| 欧美在线l亚洲| 久久精品视频在线观看| 久草精品视频| 国产成人精品午夜福利| 欧美人妻另类在线| 欧美九一精品久久久熟妇| 国产精品一区二区麻豆| 精品丰满熟妇人妻一区| 久偷拍欧美日韩三区| 午夜久久久| 97在线亚洲| 992视频一区| 亚洲激情综合另类| 日韩在线97| 欧美曰韩国产精品| 亚洲色图综合网| 欧美少妇性乱| 色综合1991| 强乱老妇中文字幕| 久久久偷拍| 综合网亚洲| 操www| 黄片直播三级黄片两女一男| www.av在线观看| 天天干天天做| 九九久久一区二区三区| 99只有精品| 941超碰| 日本天天干天天操一区| 国产无码成人无码| 国产成人午夜视频网址| 日夜精品| 绯色一区二区三区不卡少妇 | 久久国产乱子伦精品免费女人| av天堂天堂av日韩| 伊人黄色片| 亚洲精品精品一区二区| 色播五月婷婷| 无码91| 亚洲美欧999| 色香伊人| 天天综合网在线91| 欧美一级AAAAAAA| 思思热er精品视频| 无码色| 亚洲色图加勒比| 日韩青久久| 97精品网| 亚洲成人久久一区二区| 亚洲精品三| 欧美综合色站| 日本免费一区二区不卡 | 99色天堂| 欧美性,色九九| 亚洲系列欧美| 人妻天天爽天天爽三区| 亚洲va有码在线天堂| 99热色精品| 18岁禁 茉莉成人久久| 97在线播放| 精品一区二区三区国产| 婷婷激情五月天小说网| 久久女人一区二区三区| 无码男人天堂| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 91成人社区| 91女日逼| 91精品国产综合久久久蜜臀酒店| 一类无码操逼视频| 亚洲色图欧美视频| 日日干日日操五月天伦理视频| 久久伊人青青草| 男人天堂2030| 午夜福利精品| 国产欧美日韩女同性恋ww喷水精品| 中国的操老妇女| 少妇久久久久久| 国产一区二区啪啪视频| 无码heyzo高清一区| 欧美日韩系列| 91精品人妻偷情| 五月婷婷激情综合| 久草男人天堂| 试看日韩黄片| 在线国产探花| 加勒比AV天堂| 97亚洲欧美| 婷婷丁香五月激情啪啪| 久久av网| 97视频在线看| 黄网色一区二区三区四区精品| 夜夜嗷嗷一区二区| 国产精品欧美在线观看| 深夜激情无码| 色色99| 久久产精品一区二区三区电影| 蜜乳AV一区| 少妇69中文| 人妻少妇精品| 午夜高清成人在线视频| 少妇内射www在线观看视频| 欧洲久久一二线| 日韩成人精品中文字幕| 97网址97| 国产精品久久久久无码A√| 97视频网站在线观看| 大鸡巴久久| 丰满人妻一区二区三区大胸懂色| 神马久久69| 日本乱人伦片中文三区| 精品国产少妇高潮视频| 欧美黑人91| 国产91精品福利在线| 亚洲91网站| 熟女激情综合网| 91青视频| 久久无码精品| 亚洲日韩一区电影| 久草电影网| 成人综合久久精品色婷婷| 欧美精品三区| 性在久久久久久| 91色综合激情| 综合影院永久入口国产| 成年男人的天堂| 大香蕉中文| 青青草九九九九九| 外国免费性情大片| 五月激情天| 91丰满| 91 刺激在线| 亚洲日韩黑丝| 韩国一级婬片A片AAAAA| 亚洲色欧| 综合欧美日本三级| 成人开心网在线视频| 五月天丁香婷婷综合网站| 东京热99999| 一区二区影院| 国产久9| 搡老熟女国产1000部| 日逼视频日本| 91伊人久久在线| 欧美日韩操操操| 中出20p| 色激情五月天| 国产精品成人午夜福利| 韩国久久97| 草草草草视频| 欧美最婬乱婬爆婬性视频 | 婷婷五月丁香五月| 亚洲 日本 不卡| 激情接吻视频久久久久久| 久久久久国产| 成人自拍三级在线观看| 91国产大片| 一级片在线观看高清无码| 五十路二区在线| 干日本人少妇午夜寂寞影院| 久久婷婷亚洲欧| 日韩一级特黄av毛片| 激情文学亚洲| 丁香五月色情| 国产精品人妻无码久久久老鸭窝 | 人人妻人人色| AV污污污污| 亚洲影视第一页| 婷婷色在线| 精品一区二区三区丰满熟女-亚洲欧美一区| 欧美色偷拍| 国产精品国产亚洲区艳妇糸列| av一区二区三区四区五区久草臀| 国产午夜激片Av毛片不卡| 91高清日|