日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
丰满美女一级毛片在线播放| 久久水蜜臀亚洲AV无码精品| 亚洲伊人久久综合97| 中文字幕久久精视频久久大全| 亚洲成人一区二区精品| 欧美综合网在线| 夜夜综合| 玖玖爱综合| 国产成人手机视频激情| 日韩成人小视频| 999日韩中文精品观看视频。| 99这里只有精品国产| 校园春色家庭伦理欧美激情| 精品射1999| 日韩欧美tv一区二区在线观看| 精品成人久久久人人亚洲| 99在线精品视频| 国产91会所女技师在线观看| 中文字幕第2页| 视频在线观看一二三区| 99热成人| 日本高清一区二区在线| 日熟女| 蜜臀va69| 欧美玖玖爱免费玖玖| 97精品国产97久久久久久| 伊人五月天激情| 中文字幕熟女人妻丝袜| 色吊丝 日日骚 清纯唯美| 久久超碰亚洲人| 曰韩精品九九无码| 女人高潮大叫一级毛片| 黄片不用下载在线观看| 久久亚洲AV成人精品无码| 放黄片放3级黄片没穿衣服| 欧美最大综合网| 91伊人大香蕉| 精品久久久久久亚洲| 国产精品免费视频人成| 亚洲最新中文字幕免费| 九九探花视频在线观看| 无码高清专| 免费一级欧美片片线观看| 特级特黄一级毛片免费| 一区AV| 欧美激情久操网| 一区二区播放| 中文字幕一区二区三区人妻不卡| 亚洲少妇视频| 蜜桃臀av一区二区| 欧美精品庄| 中出后入| 91精品少妇搡搡搡| 亚洲中文字幕一区| 舔人妻中文免费视频| 91精品国久久久久久无码| 天天综合网在线| 欧美网站免费| 超碰爽人妻熟女Av| 亚洲欧美内射| 欧洲一区二区三区四区在线观看| 人妖欧美一区二区| 97干97色| 日躁天天爽爽| a片在线播放| 久久永久无码人妻视频| 26uuu性| 岛园激情| 嗯嗯嗯啊啊啊在线免费观看| 老熟妇一区二区三区| 东京热大香焦| 五十路三区在线| 天天噜| 久久综合九色综合欧洲98| 亚洲中文字幕熟女| 国产激情久久| silk lablo在线观看一区二区| 一二视频神马久久传媒| 免费观看一区| 亚洲古典另类欧美在线| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 少妇免费视频| 国产精品乱码久久久、久久| 国产白丝网站| 操逼天美3区| 国产精品成人蜜臀AV在线| 欧美丰满熟妇XXXX性ppX人交| 99热综合| 国产一区二区三区,在线观看观看| 超碰综合色| 综合情欲网| 久久久久久久| 强奸国产精品视频| www.97在线| 骚女高跟AV在线| 久久久无码精品人妻二区 | 少妇厨房愉情理伦片bd在线观看| 欧美日韩91| 日本免费不卡二区| 免费草草草草草视频| 国产白丝AV| 国产中文大片资源中文字幕| 婷婷丁香在线| 97超视频在线观看| 探花视频免费观看国产专区| 九九无码视频| 九九九久久久久| 亚洲性天堂| 操逼操逼视频操逼| 天色综合网| 91热热色| 欧美黑人精品一区二区| 自拍欧美| 久草精品国产99| 97自拍视频在线| 国产精品久久久999| 亚洲91在线| 日本色色色视频| 欧美一区二区传媒| 国产精品久久久啊| 丁香五月AV| 亚洲人精品久久久| 欧美劲爆视频一区二区| 综合色久欲| 翔田千里AⅤHD无码| 又黄又爽在线观看视频| 欧美96精品在线| 久久鲁干| 色大香蕉97N| 99超碰网| 亚洲欧美国产其他二区| 60秒免费视频| 亚洲色图亚洲无码强奸乱伦| 亚州综合电影| 日韩在线观看三级电影| 日韩在线AB| 91激情| 91九久| 亚洲久久久久| 久操高青| 日韩一级性爱无码| 插老姨肥穴| 欧美高清91| 色婷婷在线视频| 九九九九九九九九九国产精品| 在线观看岛国有码| 日韩电影中文字幕| 久久小视频| 天天综合网日韩| 久久国产三区| 三级网色| 国产suv精品一区| 五月婷婷色| 精品福利| 亚洲九九视频在线观看| 精品一区二区成人动漫| 国产精品爆乳懂色蜜乳| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 亚洲国产综合图区中文字幕| 久插综合| 免费作爱一级视频| 国语精品av| 嗯啊不要啊在线 | 亚洲欧美setu| 女优视频第10页| 操国产逼| 一区二区三区四区在线不卡| 久操热线| 26uuu久久| 亚洲AV在线资源| 色婷亚洲五月在线观看| 97操B| www.四虎在线| 午夜黄色免费在线观看| 亚洲色人| 亚洲诱惑天堂| 91狠狠综合久久久久久| 全免费a敌肛交毛片免费| 噜噜瑟| 久久久精品国产亚洲伊人| 国产野战露脸在线播放| 成人性交免费视屏| 先锋音影AV| 人妻激情另类| 妺妺跟我一起洗澡没忍住| 97天堂| 在线情色电影 91大 | 成人福利视频网| 色五月av| 最新精品久久蜜桃 | 欧美老妇女内射网址| 亚洲操逼视频网站| 亚洲日本激情| 日本欧美中文字幕| 综合色区偷拍| av久日| 久插综合| 91n美女视频| 五月婷婷丁香中文字幕| 亚洲无码太久| 精品久久久av无码免费| 国产精品一区二区三区在线| 男人的天堂日韩| 99国内精品| 一区在线观看中文字幕| 天天摸夜夜添无码小视频| 日夜伊人网| 中文字幕免费看| 97硬碰| 中文字幕二区日韩天堂| 丁香久久| 久久激情视频| 天天做日日做天天欢。| 萌白酱自拍视频| 国产成人拍国产亚洲精品| 久久久性爱| 超碰在线日韩一区| 丝袜色综合| 91天美传媒精品| 免費黃色視頻觀看一| 色综合av男人天堂| 人妻日日干| 日本东京热加勒比久久| 久久精品福利影院| 熟女探花啪啪| 国产一区二区在线播放量| 老熟女乱伦片| 国产99热| 69XX一中文字幕人妻91| 亚洲日韩精品久久久久一区壹牛| 亚洲av噜噜噜噜噜噜| 日韩综合色图| 视频国产欧美在线播放| 91成人18| 中文字幕高清精品一区| 乱伦图av| 成片免费播放| 超碰亚洲97| 亚洲男人天堂2012| 性爱AV天堂| 偷拍综合亚洲| 囯戸精品高潮呻吟旡码| 日韩免费三级黄片电影| 色欲蜜臀AV| 伦理片秋霞免费影院| 国产免费永久精品无码| 久悠悠av| 熟女高潮合集-永久久久-成人AV| 91色s| 自拍第一页| 大香蕉淫人| 亲子敌伦对白在线播放| 日韩在线一区高清在线| 无码聚合| 日本九九久久99播| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲色图欧美色图日韩色图| 另类一区| 天天日天天操VV| 国产精品网站免费| 91天美免费| 日本大香蕉综合网| 亚洲国产91精品一区二区久久| 国产精品久久99日日| 91精品久久久久久综合五月天| av婷婷色婷婷色六月| 色婷婷亚洲婷婷| 亚洲国产一区二区三区在线 | 日韩中文字幕宗合在线| 91bbb| 久久黄色视频一区二区三区| 男人兔费天堂| 黄色一区三区| 色香天天| 色综合网1| 欧美色五月| 四虎免费看黄| 久久精品国产亚洲粉嫩| 精品一区二区人妖| 区一二区日韩亚洲乱码av电影| 欧美一品道| 亚洲日韩狠狠撸视频| 人妻一区二区三区四区视频| 色婷网| 激情综合五月| 亚洲性高潮| 亚洲精品国产专区在线观看| 99热成人| 97天天插| 思思性爱| 激情婷婷丁香| 人人操我人人干| 日韩精品一二三四| 欧美天堂在线| 亚洲蜜桃V妇女| 美女高潮视频91| 婷婷五月天激情四射| 欧美性爱另类综合| 岛国不卡超碰护士AV在线播放| 97超碰欧美| 国产激情久久久| 成人女人国产| 91高潮| 97精品熟女少妇一区| 黄总AV色图| 青娱乐淫乱1314| 男人天堂2012| 亚洲高清自拍| 国产在线不卡导航| a男人的天堂久久一级A毛片| 天天色悠悠激情| 日日夜夜免费| wwe 天天干.com| 久久久中文| 欧美中文字幕男人天堂久久精品| 欧美综合亚洲综合| 91是天天| 高清国产精品无码| 国产妇女精品视频青青草| 高清国产成人无码| 欧美综合狠| 日亚韩精品视频二区三| 91精品国| 免费夜夜爱黄色视频毛片| 日韩有码专区| 久久久久久亚洲精品不卡人乳 | 精品国产一区二区三区四区在线看| 男人的天堂欧美| 探花在线免费观看视频国产一区| 欧美色图99| 中文字幕人妻丝袜| 强被迫伦姧在线观看无码网站| 图色综合网| 高潮毛片无遮挡高清免费| 嗯~啊~快点 死我视频免费看网站| 亚洲综合中文字幕有码| 亚洲动态色图| 伊人四虎综合| 老色69| 在线看片国产精品每日更新| 九九九九热只有精品| 亚洲国产综合久久天堂| 91操人| sewuyueav| 91成人社区| 亚洲精品无码少妇久久| 日韩福利综合一区| 性生活性生大爱77AV国产| 欧美一区二区日韩传媒搭讪精品| 久久久精品中文字幕爱豆| 欧美日本不卡| 亚洲熟妇熟在线电影视频| 国产AV久久久蜜爱影集| 亚洲精品尤物yw在线影院| 欧美偷偷网| 物尤视频一区二区| av大香蕉| 蜜臀AV网站| 男人女人18禁片免费看网站| 极品美女嘿咻| 综合性视频99| 德国一二三不卡| 啪啪啪大香蕉| 国产精品视频麻豆入口| WWW操逼| 91操熟女| 99re99| 欧美激情黑人| 天天影视网色欲色香| 日韩精品人妻中文字幕有码午| 欧美区亚洲区偷拍区| 精产品久久| 九九九只有精品| 四季AV综合网址| 插入综合网| 免费看欧美美女黄色大片| 亚洲第一黄色av网站| 欧美性性性| 色97欧美| 人人操人人精品影片| 99re在线观看| 伊人991| 久久九九一区二区三区成人| 亚洲限制级| 亚洲综合99999| 性色avv| 中文字幕丝袜美腿| 国产白领连续中出在线观看| 青青操97| 性欧美另类高清| 91九久| 久热久一区二区三区| 天天做天天爽| 天天欧美色| 99国产人成精品| 97网址www| 久久99国产综合精品女同| 啊啊啊好爽快点啊啊啊嗯嗯| 91人妻超碰| 天天干天天操天天拍| 91人妻视频在线| 国产成人资源| 一级黄碟在线观看| 91女优在线观看 | 97 国产精品| 欧美另类天堂| 97AV在线观看| 免费国产电影一区二区| 亚洲最新a在线观看| 国产高清MV操逼视频| 国产成人久久久精品免费AV| 天天综合,91综合永久| 天美av在线观看| 和协无码影院| 亚洲人码13| 人人妻人人爽人人精品| 欧美色网| 欧美一区二区三区另类精品| 天天爽爽爽爽| 在线综合 亚洲 欧美中文字幕 | 九久久精品| 亚洲图片91| 亚洲欧美国产中文视频| 国产精品久久久久久久黄无码| 日本日皮视频逼| 日本精品一区三区| 夜夜爽夜夜摸夜夜操免费视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 久久精品人妻一区二区| 伊人午夜福利视频| 秋霞网无码| 99久久e免费热视| 久久久97| 九热超碰| 涩综合导航| 97人妻碰碰中文无码久热丝袜| 嗯嗯啊啊操死我| 久操影视| 日日噜噜夜夜狠狠视频无| 久久精品国产免费观看99| 99热这里只有精| 九久久精品| 老熟妇乱轮| 熟女乱伦二区| 国产精品久久久777| 777超碰| 欧美人黑A片无码免视费| 成人美女av| 乱老熟女一区二区三区| 欧美色九九| 中文字幕成人理论在线| 日本九九久久99播| 亚洲日韩美女丝袜美腿人妻视频| www网站黄| 青青草色插素人| 91啦人妻| 国产九九久久久精品| 婷婷性网| 99热99在线| 久久久久9| 国产精品一区二区久久精品| 国产精品交换一区二区| 天天综合色图| 九九热精品视频在线观看| 加勒比海成人视频网| 国产二区三区免费视频| 美女尤物福利视频| 久久中出| 亚洲人在线| 免费观看一区| 日日夜夜骚| 国产97视频| 日韩草久视频| 免费试看60秒| 天天综合~91入口| 久9九综合在线| 在线性黄高清免费视频| 夜夜国自区| 99热精品在线播放| 亚洲欧美97| 中文字幕国产精品1区| 91九色丨风韵犹存| 精品人妻一区二区三区-国产| 中文字幕在线观| 亚洲操操操| 国产色图乱伦| 日韩精品人妻系列无码天堂| 成人乱人伦一区二区| 999 久久久| 免费精品人妻一区二区三| 亚洲drav色图| 国产一区二区视频在线播放| 日韩熟女精一区二区三区不卡| 日韩人妻少妇中文字幕| 成 人 A V免费视频在线观看| 操美女人妻| 7777奇米影视久久| 美女黄码视频午夜| 妺妺跟我一起洗澡没忍住| 天天影视综合色| 97天天搞在线| 麻豆天美91| 亚州色图欧美| 777奇米影视777四色| 欧美96在线|欧| 91亚洲青青草原精品1区| 日韩操p| 久草久日| 久久的网站啊啊啊啊啊| 中文精品一区二去| 亚洲风情在线观看| 欧美玖玖爱免费玖玖| 亚洲精品日日夜夜52| av中亚| 大屁股国产在线视频| 曰韩无码777| 高清无码人妻久久久一区二区三区aⅴ| 久久激情视频| 久久精品欧美一区二区三区不卡| 日韩欧美中文字亚洲慕| 大鸡巴久久久| 日本99久久| 狠狠操,使劲操| 伊人午夜福利视频| 九九天堂| 99亚洲天堂| 国产精品午夜福利亚洲综合网| 啊嗯嗯啊好大好爽| 九九久久国产精品| 人人爱操| 91足交| 欧美一级AAAAAAA| 亚洲欧美变态| 丝袜美腿射精91| 五月天精品| 人人看人人爰人人操| 亚洲人成在线放东京热| 欧美亚洲特P| 日韩精品人妻中文字幕久久久| 91总综合网| 99久久婷婷国产综合精品草原| 小视频玖玖| 美女裸体无遮挡永久免费观看网站| 啊啊啊啊啊啊啊在线| 国产一区麻豆免费观看| 亚射在线| 欧美制服网站美腿丝袜| 1024人妻| 日本福利社| 国产男女无套视频免费观看| 高清无码 国产精品| 色哟哟AⅤ| 少妇一区二区三区| 中文字幕乱码在线观看| 激情另类激情| 97情超碰色| 好爽要喷了| 都市激情人妻一区二区青青操视频 | 人妻天天爽夜夜爽2| 蜜桃一区二区三区| 操逼内射干逼白丝91| 啊啊啊好湿久久| 日韩成人色图| 殴美牲| 久视频在线观看| 狼天天狼天天大香蕉| 五月丁香婷婷啪啪| 日韩三级视频一区二区三区| 五月色丁香| 99热精品在线观看| 精品女人999| 欧亚综合一卡二卡中文字幕| 免费观看欧美日韩操逼视频| 天天躁日日躁AAA片李宗瑞| 女同性恋久久| 日本日皮视频逼| 国产精品香蕉热久久新品| 伊人女女资源在线观看| 五月丁香激情综合| 丁香五月影院| 九九十八精品| 狠色婷婷久久一区二区三区_| 四虎视频在线观看| 国产九九九九九九| 国产91丝袜 在线播放| 久一区久久蜜桃| 手机午夜电影神马久久| 久久伊人亚洲AV无码网站| 伦伦成年午夜免费视频| 9久热| 中文字幕啊啊啊在线观看视频| 亚洲国成人情色好看电影| 国产视频大全| 夜夜嗨一区二区三区直播内容| 天天澡天天爽日日AV| 国产在线综合网| 久久毛卡| 国产欧美美女免费观看视频| 亚洲天堂日本| 国产日本顶级一区二区三区| 2023天天操夜夜操| 成人av动漫在线观看| 色色色综合网| 欧美高潮| 97精品一区| 一二三区操逼国产91| 26uuu国产成人综合| 亚洲操操| 啊啊啊啊在线观看网址| 欧美桃色网| 日日夜夜免费| 精品久久久久久中文| 美女黄页| 精品人妻视频一区二区三区蜜桃视频| 爱妻综合网| 亚洲久久久久| 欧亚性爱视频免费看| 91狠狠综合久久久久久| 欧美黑人168页欧美黑人167| 91处女在线观看| 欧美日韩性爱无码| 神马午夜久久久| 亚洲第一页色网| 强奸乱伦AV一天堂网| 色色色网站| 激情小说亚洲图片| 日产操逼| 免费看美国人人爽,人人操| 日韩八十路老熟女| 亚洲久久久久| 9久久精品| 欧美人人天天网| 色色九区| 国产高清无码一区二区三区四区皇冠| 发朗少妇买婬全视频中文| 亚洲影院小综合| 国产热av| 精品性爱一区二区| 久久久九九| 国产精品亚洲天堂网址| 亚洲不卡不卡中文字幕不卡| 天天射日日干| 噜噜在线| 91精品国产长腿丝袜美女| 日本一区二区成人在线| 伦在线97| 国产成人精品必看 | 久操com| 亚洲同性aV综合| 一级特级aaaa毛片免费观看| 啊啊啊久久久视频| 绯色一区二区三区不卡少妇 | 亚洲欧美天堂| 曰韩精品九九无码| 久久久人妻| 亚洲18禁| 亚洲福利影院一区久久| www.狠狠干.coom | 91熟女丨91老女人| 五月大香蕉| 亚洲中文字幕av | 四季av一区二区凹凸精品小说| 国产极品美女高潮无套在线观看| 玖玖蜜臀资源网| av在线观看不卡网站| 啊啊啊啊啊啊好湿好爽视频| 欧美性爱第1 页| 欧美久久久15P| 2024黄色视频| 裸模AV女优| 男女激情黄色网址| 黄色成年| 五月婷婷激情综合| 欧美天天射| 1二区9| 少妇久久久久久久久| 狼人综合婷婷激情四射 | 91性网| 九九色逼| 囯戸精品高潮呻吟旡码| www.acm成人黄色毛片| 视频二区美腿丝袜制服人妻欧美| 国产传媒av天美传媒在线| 东北女人被操| 国产成人网站在线观看| 九九热九九| 欧美91精彩| 操久久久久久| 无码一区二区精品视频久久久春药 | 五月婷在线| 午夜亚洲WWW湿好大| 精品久久9| 五月婷在线| 日韩有码 一区二区三区| A一级色女| 91五月天| 国产人妖的免费的视频| 日韩在线电影| 青青草国产盗摄一二三区| 久久精品国产96精品亚洲拳交| 超碰78| Aa东京男人的天堂| 欧美日韩操逼嗦吊| 欧美日韩大香蕉| 神马久久久久久久久久久久| 欧美精品1区2区3区| 欲香欲色| 欧美草草高清日韩视频| 五月婷婷六月激情| 日韩乱伦AⅤ| 欧成人精品H无码| 色鬼在线综合| 久久久久密臀一区二区| 99无码| 欧美天天在线| 久久a久久| 久操大香蕉| 超碰在线人妻中文字幕| 国产夫妻性生活视频| 高跟伊人julia ann| 日本一区三级韩国| 亚洲第一成人影院色播| 丁香色婷婷| 极品综合| 射久久| 9997se| 99国产精品在线观看| 人妻加勒比东京热| 美国日韩黄色片| 在线观看不卡一区二区三区| 日韩视频中文字幕| 女人香蕉久久毛毛片精品| 色偷偷色偷偷欧美日韩| 成人日韩中文字幕| 射丝袜高跟鞋99| 国产成人网| a在线观看| 六十路日本| 少妇熟女1区2区3区| 91人妻少妇| 97欧美精品| 97欧美色| 亚欧美综合| 91九色丰满高潮| 久久久久深夜无码| 香蕉大久久久| 欧美在线视频观看一二三四区高清| 精产国品一区二三产品| 黑人狂躁日本妞一区二区三区| AV乱伦国产| 亚洲av国产av综合av卡| 欧美性爱第一区| 高清在线不卡一区二区 视频| 亚洲欧美成人网站AAA| 激情小说图片亚洲首页| 东京热男人的天堂| 超碰97亚洲| 91AV入口| 思思热影视| 日本熟妇人妻中出视频| 国产欧美日韩在线不卡第一页 | 欧美内射少妇| 久久AV无码1区2区3区| 亚精品无码毛片一区二区三区| 青操影院| 超碰4A| 国产激情视频一区区三区| 国产第12页| 探花一区二区三| 欧美激情中文字幕另类小说| 婷婷六月天| 亚洲AV高潮| 麻豆精品天美| 亚洲欧美校园| 日本高清免费一本视频在线观看| 国产av又色又爽又黄| 午夜福利免费精品视频| 欧美制服网站美腿丝袜| 亚洲情色在线| 视频在线97| 国产性爱强奸乱伦大全| 一,爱啪啪,在线免费视频| 少妇滛荡视频| 色噜噜狠狠色综无码久久合欧美| 吉田爱美AV在线| 久欲AV| 国产福利一区二| 亚洲色色探花| 一区二区久久天天干狠狠| 91 丝袜在线观看| 深喉吞精| 人人操人人摸avav| 久久五月丁香| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 99国产精品久久久久久久成人热| 久久精品人妻一区二区| 精品福利| 欧美综合区| 久久久久国产亚洲一区欧美色图日韩 | 久久久91| 日本羞羞的视频在线播放| 日韩欧美大力操| 精品国产肉丝袜在线拍国语| 亚洲蜜臀懂色| 97超碰站| 国产综合操逼高清| 酒色综合网| 亚洲av强奸乱伦| 媚薬在线视频麻豆| 午夜毛片亚洲精品片国产久久久| 人人天天干干| 2026国产精品视频| 碰超人人在线一区二区三区| 青青操网| 99r九九| 欧美天天干| 亚洲日韩国产欧美综合v| 麻豆福利视频导航| 国产精品免费久久久久久久久久| 色婷婷视频| 不卡一区视频| 2020中文在线一区二区三区| 夜夜嗨av午夜成人| 99999亚洲| 国产福利小视频高清在线观看| 久久夜嗨| 日韩无码操逼片| 区日韩亚洲乱码av电影| 蜜臀Av一区二区三区| 99re国产中文字幕| 91夜夜蜜桃臀1区2区3区| 成人性交免费视屏| 日本欧美国内在线| 国产尤物在线三区| 1769一区二区| 国产欧美黑人丰满在线| 亚洲系列第一页| 国产妇女精品视频青青草| 久久精品国产亚洲妲己影视| 91ise欧美| 女色综合| 欧美大香蕉卡久久| 久久超碰国产一区二区三区| 精品精品精品| 无码人妻精品酒店| 精品丰满人妻一区二区三区免费观| 中文字幕丝袜| 大香蕉手机视频| 搡老女人老熟女91老熟女综合网| 午夜色婷婷| 五月丁香激情四射| AV天堂丝袜| 97欧美日韩| 麻豆AV一区二区| 被男人吃奶很爽的毛片| 国产AV天美| 性videos欧美熟妇hdx| 男人的天堂2000| 色臀av| 亚洲熟妇乱女区二区三区| 国产亚洲福利第一页丝袜| 绑缚麻绳人妻寝取完整版| 国产成人超碰在线| 日本精品人妻少妇一区二区| 特级特黄一级毛片免费| 北野未奈加勒比av| 熟女色综合久久| 超碰9 7女人| 青青草九九九九九| 午夜一区二区三区国产| 超碰久草| 欧美一区91大爱| 国产精品亚洲无码| 9久9久9久9久视频网站| 插入综合网| 国产亚洲精品精AV.| 青青草国产一区二区三区| 亚洲第一页色| 99色热国产视频精品| 欧美亚洲清纯| 青青草原综合久久大伊人精品| 思思热免费在线视频| 麻豆激情综合| 天美麻花大全视频| 国产日韩无码一区二区三区久久区| 精品无码产区一区二| 午夜大香蕉| 无遮挡男女激烈动态图| 99精品在线| 中文久久一区| 青青草丝袜在线视频| 午夜操一操| 性色高清..……| 久久人人爽爽爽人久久久| 亚洲成人性爱在线观看| 东京热大香蕉| 午夜操操操| 欧美大片天天看| 色五月婷婷中文字幕| 精品人妻一二三| 尤物视频新赏网鲜网色诱网| 大香蕉欧美伊| 婷婷综合视频| 亚洲Av无码成人精品国产| 在线观看中文字幕| 亚洲色图日韩丝袜制服一区二区五月在线 | 亚洲网污污污污| 男人天堂2012| 青娱乐日韩无码| 国产一区二区在线播放量| 日本加勒比无码专区| 亚洲诱惑| 免费久久9999| 欧美色偷拍| 大香网伊人久久综合| 国产探花精品在线| 日本色色视频网站| 欧美色图20p| 日韩天天综合| 九X超碰| 九九天堂| 91黑丝露脚| 婷婷导航| 日韩中文字幕二区| 日本三级网页| 亚洲一区二区精品福利| 欧美呦呦性爱| 亚洲精品一区二区精品| 成人小说另类在线| 亚洲精品少妇| 九九九九九九精品| 欧美色97| 精人妻一区二区三区| 中文日韩欧美熟| 黄呦呦在线| 欧美亚洲高清不卡| 天天色怡春院| 91黑丝操| 97在线资源| 色妇91| 夜夜嗨免费视频| 一二视频神马久久传媒| 91色s| 天堂精品| 日韩人妻无码不卡网站| 日本男人天堂| 五月天伊人网| 亚洲另类天堂| 在线免费观看高清无码视频 | 亚洲日韩精品在线播放| 婷婷丁香久久| 久久XX| 国产人妻精品久久久一区二区三区 | 91超碰人人操| 美国一区二区免费视频| 亚洲操逼无码| 欧美国产日韩清纯唯美| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 2019精品国产无码成人| 97精品熟女少妇一区| 国产女人和拘做爰视频| 91free福利| 欧美黑人猛交春色影视大全| 精品网站9999| 老师充足的奶水小说| 土豪酒店各种姿势玩弄极品幼稚| 国产怡红院在线| 超碰诱惑| 999精品国产高清一区二区| 国产乱伦性爱区| 新婚人妻扶着粗大强行坐下| 久久乐| 四虎影视在线| 欧美国产成人在线| 亚洲欧美综合图片| 一区在线精品中文字幕| 色欲蜜臀AV| 欧亚免费视频| 熟妇熟女一区二三区| 女上位精品在线| av中亚| av毛片aaaaa免费看| 午夜福利激情在线视频| 欧美日韩999| 欧亚成人在线视频| 激情在线青青操| 婷婷久久五月综合激情| 国产第25页在线观看| 国产剧情一区在线观看| 日韩八十路老熟女| 国产精品999aaa| 亚乱色| 亚洲一区二区三区麻豆传媒| 日本熟妇自慰性高潮一区二区三区| 香港澳门日本三级网站| 手机看片日韩人妻| 亚卅熟女乱色| 99国产精品免费| 亚州综| 国产亚州精品美女久久久免费| 亚洲午夜免费狠狠干| 精品人妻视频一区二区三区蜜桃视频| 欧美亚洲特P| 久久久久亚洲?V片无码V| 人妻夜夜爽天天爽麻豆三区网站| 九九玖玖精品| 亚洲人妻色图| 亚洲日韩美女中文字幕乱| 亚洲日韩av一区二区三区百合| 搡老女人老91妇女熟女| 久久大黄片| 国产精品老师| 老色鬼成人精品视频下载大在线观看| a片 xxxx受爽视频| 五月天色图| 美女黑人91神马| 久久性爱精品一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 超碰久久综合| 久久五月天婷婷丁香中文字幕| 丁香五月天婷婷姐| 亚洲第一视频 欧美风情 日韩| 亚州免费啪啪视频| 磁力99AV| 色欲三区| 一区 欧美 日韩 麻豆| 揉揉日日日日| 色官网在线| 91操人| 岛国毛片在线观看免费| 97久精品| 日本久久超碰| 91|九色|国产熟女| 一级免费精品| xxx0国产在线播放| 精品免费国产二区三区| 噜噜噜噜天天狠狠| 精品性爱一二三区| 高清肉丝中文无码| 天天干天天燥| 天天夜夜久久| 精品黄色电影| 91粉芽高清在线一区二区| 深夜激情| 熟女五十路一区二区三| 午夜啊啊啊| 91网站18禁| 日本三级黄页| 91亚洲色图| 色狠狠综合噜一二三区| 男人天堂电影院| 97se综合网| 欧美18 在线观看| 综合色图亚洲欧美| 美女黄网| 人人操AV| 天天伊人| 成人AV素股で擦久久| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 91无码中出人妻视频| 99在线观看视频在线高清| 色婷婷av在线观看| 男啪女色黄无遮挡免费观看| 天天弄欧美| 日本操逼视频导航| 青青草久久在线| 丁香五月久久| 翔田千里A片一区二区| 亚洲色图美腿丝袜| 精品黑人一区二区| 超碰在线第一页| 日韩av不卡在线观看| 国产乱子伦一区二区三区在线观看| 国产男女无套97| 亚洲砖码砖专无区2023| 天堂8在线新版官网| 中文字幕一品色图| 91是天天| 亚欧成人中文字幕一区| 天天日天天干少妇日| 四虎国产成人精品免费一女五男| 日韩欧美性爱电影在线观看| 久久、1234| 啪啪一区| 乱伦一区二区三区‘| 黑人性欧美| 九九九久久久久| 韩国一级婬片A片AAAAA| 久久专区| 日本不卡一区二区三区| 四虎 精品 WWW| 女同性恋久久| 国产深喉视频一区二区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 自拍内地三级在线观看| 日日噜噜夜夜久久亚洲一区二区| 开心激情站| 一级久久久久久久久久久| 成人青青草原伊人| 97爱亚洲综合色| 亚洲成人日韩小说| 激情综合网激情综合| 爱丝福利| 亚洲精品蜜桃久久久久久久| 俺去也婷婷| 99久久久er直播网址| 人妻娇喘 激情视频| 亚洲性图91| 国产精品 午夜福利| 六月激情网| 黄色电影观看久久9| 日韩无码视频黄色| 日日日日做夜夜夜夜做无码97| 99九九久久| 男人的天堂2018东京热啪啪啪| 国产精品无码av在线| 亚洲成人精品在线一区| 天天综合网网欲色| 青青青艹在线视频| 国产极品久久久| 亚洲 中文 女同| 我爱大香蕉| 最近的最新的中文字幕视频| 永久免费发布性爱网| 91视频伊人| 91操熟女| 日韩9区| 少妇熟女视频一区二区三区| 91美女看B| 欧美美女后入| 成人精品一区二区三区| 久久综合18p| 偷拍 亚洲| 99热这里| 亚洲婷婷五月天| 久久99操天天日| 亚洲男人的天堂亚洲| 日欧操屄视频| 99热最新| 91精品国产高清久久久久久,亚洲成人| 日韩欧美中文| 国产精品久久久无码AV网站| 韩国成人精品久久久免费看| 北约熟女超碰| 两女互慰AV高潮喷水在线观看| 2017大香蕉| av网站国产主播在线| 老熟女乱伦片| 日本操逼视频不卡直接放| 欧美在线电影| 围产精品一区二区三区视频播放| 欧美情色亚洲| 天天夜夜rb| 97干在线视频| 超碰97精品| 国产一区二区成人av在线播放| 极品综合| 日本1区2区不卡视频| 91久久免费视频互動交流|