日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
狠狠婷婷亚洲中文综合久久| 97精品在线| 91视频成人福利网站在线一区 | 欧美综合自拍亚洲综合图| 99r九九| 91小视频| 精品-91人妻子系列| www亚洲欧美| 国产精品一区二区亚洲人成毛片 | 人妻一区视频| 日韩兔费看黄片| 91大学精品激情戏| 欧美青青视频| 乱欲一区二区| 国内精品久久久久影院亚洲| 欧美制服网站美腿丝袜| 亚洲无码国产探花在线观看| 激情无码日韩| 亚洲av无码国产精品字幕| 天天摸,夜夜摸| 韩国午夜理伦三级好看| 在线综合 亚洲 欧美中文字幕| 欧美日韩性爱精品| 成年人黄色视频免费| 4tube欧美女厕所| 日本亚欧爱爱| 中出91视频| 日本不卡一区二区| 激情久久久| 日韩少妇在线视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产丝袜美腿美女麻豆| 蜜臀99久久| 久草午夜| 东北操逼| 91日本在线观看| 九九精品99| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 97在线日韩中文字幕| 超碰97欧美日韩| 欧美熟妇色| 久久大| 九九国产热| 中国AAAAAA黄色片| 天天综合网网欲色| 欧美亚洲第1页| 视频在线中文字幕| 色噜噜人妻丝袜a∨先锋影| 美女AV一区二区| 亚洲欧美不卡线| 91人妻Pr| 欧美日韩精品一区二区三区高清| 日本人妻一区二区| 私人尤物在线精品不卡| 青青草视频导航官网| 自拍视频一区在线观看| 久久视频少妇美女| 中国一级操逼视频| 92大香蕉| 男人的天堂色偷偷青青草视频婷婷网| 玖草在线视频| 试看福利| 青青草日韩无码| 久久αⅴ| 欧美亚洲日韩人妻在线观看| 91美女小视频| 亚洲精品 超碰| 8050无码八戒| 亚洲国产av中文字幕久久| 亚州五月| 97一区二区三区视频| 亚洲激情四射| 大香蕉碰碰| 超碰成人公开| 国产无马av| 天天躁日日躁成人字幕aⅴ| 五月天激情婷婷| 欧美日韩不卡a片| 97 国产精品| 中文一区在线日| 无码天堂| 国产免费久久久久| 国产成人一级av88| 免费一级a毛片久久久久久鸭绿欲| 极品色综合| 久久亚洲日韩国产欧| 久久一区,青青青青草视频在线播放| 99久久精品国产高潮| 亚洲欧洲无码一区夜| 欧美爆乳精品一区二区| 三男一女不戴套的A片| 九九九久久久| 乱伦熟女区| 五月丁香婷婷啪啪| 目产99999久久999| 超碰综合97在线| 爱爱动态120秒| 久久久国产三级黄色片| 久久久久亚洲AV无码专区少妇| 黑白配性爱AV成| 精品国产a∨一区天美传媒| 日本阿v天堂在线观看| 2017,超碰| 日韩本不卡视频在线观看| 久久九九国产精品| 97超碰香蕉| 91黑丝美女| 丝袜人妻av一区二区| 超碰人人妻| 中文字幕人妻色偷偷久久皮| 精品国产一区二区三区在线播出| 欧美顶级黄色大片免费| 青青草五月天| 强奸乱伦AV一天堂网| 亚洲欧美经典一区二区| 91熟女.com| 色噜噜人妻av中文字幕| 亚洲精品啪视频| 激情五月丁香五月| 蜜臀AV一区二区三区| 亚洲精品国产无码高清| 性色中出| 久久婷婷六月综合| 婷婷在线精品| 蜜桃久久一区二区三区| 亚洲精品aa久久伊人| 性欧美体内射精| 少妇精品久久| 人人摸人人叼| 97人人操人人摸人人爱| 视频在线观看一二三区| 性爱视频免费网址| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 78操B| 先锋影音av先锋一区| 天天肏夜夜肏| 91国产伊人大香蕉| 日本精品成人无码| 免费av在线播放二区| 67914在线精品观看| 韩国轻伦国内自拍一区| 欧美日本视频一区| 秘书高跟黑色丝袜国产91在线| 少妇激情AV| 亚洲欧洲日本精品中文a∨| 偷拍 亚洲| 久久青青草在线视频| 日韩99999色| 思思热国产高清| 啪啪啪东京| 中日韩熟女| 欧美色图人妻| 日韩精品中文字幕一| 色五月激情AV在线| 色色国产| 国产兽交视频在线播放| 亚洲国产丝袜在线观看| 芊芊操逼视频无码| 欧美天堂亚洲电影院一区在线播放| 青草视频在线看看看看看看看看看| 97玖玖人妻| 逼操网站| 另类图片五月| 伊人精品久久网站| 韩日自拍| 吉川爱美98堂在线| 黄片www.| 黑人性欧美| 亚洲熟女综合| 午夜欧美女人操逼| 操一操摸一摸| 久久久少妇诱惑精品视频| 青青草一本道福利视频| 精品福利| 久久精品一区一起草| 99国产人成精品| 999综合网| 成人精品视频| 打av高清| 久久99热这里只频精品6学生| 四虎午夜影院| 九九九成人| 综合久欧洲| 天天干夜夜一操| 久9久| 欧美区亚洲区偷拍区 | 人妻夜夜爽天天爽麻豆三区网站 | 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 免费无码国产精品v片在线观看| 日本久久综合| 女一区二区| 熟妇艹鸡八| 白丝少妇一区二区| 久9久9久9久9久9久9| 欧美情色男人的天堂| 超碰日本97美女人妻人人玩人人爱| 日韩成人大片一区二区| 又黑又大又粗| 三级日本一区二区三区| 素人播放一区| 啪啪资源网| 人人看人人插| 欧美精品自慰系列寂寞少妇| 国产免费一区在线观看| 色女网日韩| 激情综合久久| 国产熟女乱论| 殴美,日韩国产伦精品| 不卡人妻少妇精品毛片一区23区视频| 久久无码一区二区二三区性色| 五月丁香六月激情综合| 欧美一级美片在线观看免费| www.99视频| 成人精品在线免费视频| 天天操天天射天天日| 人妻熟女一区在| 欧美人人天天网| 亚洲综合在线第一页| 超碰97欧美日韩| 伊人嫩草| 六十路日本| 午夜精品久久久久久久99热影院| 欧美大片91| 超碰97COm中文| 久久久国产成人一区二区三区在线| 亚州成人A√| 啊啊啊不要好爽日韩无码一区| 亚洲av成人精品一区| 久久综合五月天| 热热热热日日漂亮永久永久国产日| 91日韩| 国产性爱强奸乱伦大全| 91久久午夜无码鲁丝片久久人妻| 国产AV精久久| 日韩成人人妻网站| 色婷婷五月综合激情中文字幕| 日韩精品大香蕉伊人在线| 久久久四区| 免费一级欧美片片线观看| 日韩欧美中文字亚洲慕| 欧美色五月| 伊人在线大香蕉二。| 久久这里只精品99re66图| 蜜桃臀久久| 国产夫妻性生活视频| 萌白酱自拍视频| 屌逼传媒| 成 人片 黄色大片| 东京热99999| 91人精品妻入口| 色哟哟1区2区| 99re这里只有精品中心播放| 老熟女网站| 男生女生啊啊啊啊| 90后性网国产欧美| 牛牛操视频逼| 91久久久久久久久18| 淮穴色AV| 最新av网站在线观看| 国产一区二区在线看| 日本狠狠干| 欧美中文字幕日韩在线| 大乔未久88一区| 日本天天人人狠狠在线日美女 | 国产探花精品在线| 黄站在线免费观看| 91久久久视| 久久手机好看网站| 国内外色色色色色成人视频| 亚洲中文字幕精品一区| 性爱动态120秒| 国产成年精品高清在线观看91| 性爱乱伦一区| 亚洲欧美另类图片| 天操天操夜操夜月月年年操操| 欧美久久毛片基地| 黄站在线免费观看| 99热这里只有精品8| 天天草天天干天天日| AV在线性爱| 午夜超爽| 国产女人91精品嗷嗷嗷嗷| 久久黄色性爱视频| 亚洲无线码一区国产欧美国| 国产操逼视频在线观看| 亚洲影院365| 亚洲男人综合| 性爱Av免费| 狠狠操使劲操| 手机在线A片| 久久原创中文| 欧美极品性爱天天射| 国产精品另类一区大香蕉| 色综合av综合久久| 欧美色图 色综合图| 97精品视频网站| 操逼视频亚洲| 蜜臀AV午夜精品久| 五月开心网| 99啪啪视频| 超碰在线99| 精品人妻1237| 操逼999| 色哟哟精品1精品2| 欧美乱伦专区| 中文字幕精品久久久久人妻红杏ⅰ| 综合五月天| 性饥渴少妇av无码毛片| 婷婷丁香五月综合| 人看人人摸人人操| 大香蕉欧美日韩| 99999这里都精品| 亚一综合久久久久久久久久| 超碰到97情色| 无码高清国产AV| 黑人综合网| A级在线视频| 精品天堂| 精品无码人妻一区二区免费蜜桃| 欧美日韩91| 免费精品国偷自产在线在线| 白丝被操91| 日韩人妻精品久久久久| 国产久久男人天堂| A 天堂| 91人妻做a观看视频| 超碰色中文| 妇女一区二区三区| 欧美在线色图| 少妇厨房愉情理伦片bd在线观看| 91精品国产综合久久久蜜臀| 久久大| 精品一区二区综合熟妇| 怡红院亚洲怡春院av| 中文字幕五月婷婷免费| 久久久久久免费电影| 日韩无码黄色片| 欧美日韩人妻精品一区二区三区| 久久人妻丝袜一区二区三| 亚洲日韩AV视色| 人人乐大香蕉| 国产精品原创巨作?v网站| 亚洲色五月| 91色亚洲| 丁香五月影院| 秋霞无码av鲁丝片一区| 欧美黄色大香蕉一区二区| 午夜福利免费精品视频| 香蕉99秘 一区精品蜜桃臀| 91国产精品在线看| 无码视频黄色网战| 青青青国产| 久久欧美性爱视频| 亚洲一区二区中文字幕| 欧美制服网站美腿丝袜| 麻豆国产97在线| 久九九九九九九九热| 男人天堂最新手机版在线青青草| 麻豆天美在线喷水AV| 91久久九九精品国产综合| 精品二区三四区五电影| 性色国产东北露脸精品视频| 一区二区精品日韩欧美在线观看 | 国产成人网址| 欧美国产伊人久久久久| 蜜区区视频79| 亚洲中文字幕一区二区| 精品丰满熟妇人妻一区| 青草影院内射高潮| 亚洲成a人片在线观看中文!!!| 国产色呦呦| 久草精品一区| 国产熟女| 宅男午夜在线视频| 神马视频久久久久久| jk白丝没脱就开始啪啪| 草草电影院| 日本操逼视频不卡直接放| 青青操在线亚洲视频观看欧美在线| 日本天堂网| 中文字幕一区 二区三四五 区日 日骚| 国产一区二区av综合| 五月丁香六月激情| 尹人大香蕉视频在线| 欧美综合777| 亚州欧美在线| 欧美经典一区二区三区 | 丁香六月激情| 亚州成人A√| 久久免费9| 伊人网综合在线视频| 人妻精品视频一区二区三区| 亚洲色图欧美激情| 国产丝袜一区二区三区| 嫩草91| 色婷婷久久综合超碰| 色99在线| 男人的天堂亚洲| 精品久久99| 欧美日韩亚洲电影| 777琪琪午夜免费A片| 麻花豆传媒剧国产MV出差| 蜜臀久久99精品久久久久久久久| 青青草福利视频| 97干色| 亚洲伊人a线观看视频| 亚洲一区二区性爱电影| 乱伦av.com| 男人的天堂在线2| 亚洲精品欧美专业| 国产传媒日韩欧美| 亚洲第一综合| 狠狠躁伊人中文字幕| 日韩少妇无码| 中日韩一区二区三区欧美| 精品无码不卡视频| 极品少妇久久久久| 亚洲欧美中文一区二区三| 啊啊啊好湿国产一二| 操国产逼| 无套内射性感少妇视频| 台湾大香蕉99热| 99视频自拍| 日韩综合无码色欲vv| 国产原创剧情在线丝袜| 97伦乱| 丰满高潮18xxxx| 夜夜精品视频一区二区| JULIA人妻风俗店中出电影| 久操高青| 亚洲欧美日韩激情不卡| 欧美日本一区二区a人| WWW.操逼.COM| 亚洲无码超碰免费| 国产性爱欧美性爱在线| 农村妇女精品一二区| 91亚洲丝袜熟女| 极品欧美一区二区三区| 顶级丝袜熟女一区二区三区| 久久成年片色大黄全免费网站| 国产午夜福利合集| 13小男生GAY自慰脱裤子| 麻豆国产97在线| 天天干,天天日| 日韩免费在线观看不卡| 黄色激情电影在线观看| 俺去啦俺来也久久综合| 亚洲在钱| 成人性爱视频在线看| 欧美少妇第一页| 新91视频.cmp| 日韩无码操逼片| 亚洲国产ⅴ高清在线观看| 亚洲欧美经典一区二区 | 国产操逼逼网| 五月婷婷综合网| 久操 高清| 九九九九精品精| 黄片aaaaa一区| 亚洲综合在线高清| 熟妇熟女一区二区三区| 最新中文字幕精品在线| 熟女丰满人妻一区| 上床啊啊啊| 秋霞久久亚洲精品成人| 超碰1024久久| 岛国黄片网站| 久久99精品视频| 任我爽在线视频免费观看| 东京热一区二区中文字幕| 色婷婷综合网站| 九久久精品| 18禁免费视频| 色婷婷aV一区二区三区麻豆综合| 久久有码视频| www久| 天天性射网| 国产精品不卡一区二区三区av| 亚洲有码 视频一区| 久久大香蕉97| 久久婷婷五月| 久久久久久久久久久久久9999| 国产高清亚洲日韩一区| 2000亚洲男人天堂| 揉揉揉夜夜| AV污污污污| 超碰97欧美日韩| 欧美激情另类一区二区| 久久久久13| 亚洲在线观看| 久久乐| 天堂中文资源在线bt| 色噜噜国产精品视频一区二区| AV电影在线播放| 久久婷婷六月综合| 日韩成人午夜精品久久高潮| 清纯唯美亚洲| 欧美72网页| 啊啊啊啊网站| 99在线无码精品秘 入口黑人 | 亚春色色| 无码人妻精品酒店| 91伊人久| 久久久免费一级黄片| 亚洲日韩精品在线播放| 91麻豆天美国产欧美| 色香网| 国产高清无码一区二区三区四区皇冠| 免费99精品国产自在在线| 国产免费一区在线观看| 亚洲十八禁止| 色吧五月| 久久免费99精品久久久久久| 91爱欧美| 亚洲综合色男人网| 97久久国产亚洲精品超碰热| 亚洲一区二区AV| 欧美激情亚洲情色| 制服中出中文人人精品| 搡老熟女免费视频| 成年女人黄网站| 欧美偷偷网| 成人av动漫在线观看| 高清无码人妻久久久一区二区三区aⅴ| 超碰97人妻| 超碰视97中文| 波多野结衣AV无码一区| 色婷婷日韩精品一区二区三区| 大香蕉视频啪啪啪啪| 久久久9视频| 久久精品中文字幕无码l| 天天激情综合站| 午夜精品久久久| 亚洲骚男同com| 手机看av网站在线看| 先锋女优在线观看视频| 97国产天堂岛| 亚洲 91 在线| 日本黄 R色 成 人网站| 久热精品在线| 激情小说亚洲图片| 精品无码久久久| 久久香蕉国产线看观看猫咪av| 91美女视频| 欧美熟爽综合| 日本精品第一视频在'| 大香蕉一人| 国产AV天美传媒一区二区三区 | 97久久网| 嗯嗯啊啊视频在线看| 成人日韩3| 中文字幕av亚洲精品| 亚洲精品国产拍免费91在线| 九九九九97| 91爰爱欧美| 亚洲超碰AV| 国产又粗又又黄又猛| 天天色悠悠激情| 日韩一级二级| 99日韩| 无遮挡一级毛片视频免费的| 99 国产丝袜在线| 97欧美色综合| 91欧美丝袜| 欧洲综合视频| 日韩人妻大香蕉| 在线视频免费播放一区| 日本一区二区不卡精品| 91黑人无码激情在线| 日韩二级| 玖玖蜜臀资源网| 黄色视频特级毛片| 男人的天堂一区三区| 日本欧美亚洲高清在线看| 上特色A在线| 久久久久久久久久久免费精品| 日韩黄色成人性爱| 精人妻无码一区二区三区伊人直播| 久久久新亚洲AV| 天天日天天干天天整| 精品一区96| 欧洲站一级二级三级h| 日本1区2区不卡视频| 欧美成人精品一区| 日日夜夜青青草母狗| 啊啊啊不要啊啊受不了了视频在线| 97鸡把在线视频| 人妻 欧美亚洲| 另类欧美色| 国产av美女被艹的乱叫| 欧美黑人精品一区二区| 欧美黄色大香蕉一区二区| 综合伊人网12色| 久久久国产av美女私房| 伊人网青青| 天天操夜夜嗨| 九月色婷婷| 67914亚洲精品| 久久久久久中文| A 在线网址| 男人把坤坤插入女人的下体| 免费1级a做爰片观看| 激情小说亚洲视频| 久久男人的天堂国产| www.91理论| 欧美啪啪女女| AV高清一区| 丰满人妻一区二区中文| 精品一区96| 天天插天天操天天摸天天射天天看| 大干人妻| 午夜视频久久久久一区| 国产福利影视| 欧美久久久15P| 男人天堂网手机版婷婷| 亚洲情欲| 69少妇一区二区| 人人摸人人摸人人干| 五月婷色| 日本孕妇孕交| 中文字幕精品探花视频| 国产在线精品偷| 日韩无码嘿咻黑热久| 久久久熟妇熟女国产| 97国产|免费| 亚洲国产婷婷在线播放| 98色网| 性交一区二区在线播放| 97亚洲欧美| 久久婷婷综合国际产色怕| 极品丝袜无码| 欧美性爱超碰97| 粉嫩粉嫩一区性色AV片| 国产女人高潮视频| 性生活无遮挡纯毛片在线看| 欧洲久久一二线| 国产精品视频自拍在线| 欧美色图私拍91| 碰碰97| 成人性爱全视频观看| 日韩成人午夜精品久久高潮| 人妻少妇精品| 五月丁香久久| 99日视频在线免费| 国产无码高清操逼视频| 热天堂一区二区| 女人天堂网| 婷婷丁香五月天亚洲天堂网| 欧美国产视频| 精品人妻av区天天看片| 激情五月天丁香| 亚洲精品蜜桃久久久久久久| 欧美综合网A| 久操热| 午夜福利在线合集| 久久美女国产| ai欧美亚洲小说| 国产久久成人| 国产不卡精品91| 男人午夜天堂| 五月丁香成人网| 国产第二页| 日韩一性一交一A片俄罗斯| 中文字幕精品久久久久人妻红杏ⅰ| 婷婷伊人五月| 日韩精品人妻中文字幕久久久| 一二三区精品视频| 亚洲九月丁香| 97欧美日韩中文| 加勒比AV天堂| 成人aⅴ一区二区三区| 熟女精品一区二区在线观看| 日韩性爱毛片操骚逼| 日韩天天本| 亚洲AV无线| 国产1727欧美| 精品久热| 天堂无码| 亚州春色| 99re国产中文字幕| 偷拍盗拍亚洲色图图片 | 国语精品av| 韩国黄色片精品久久久| 91丝袜美女视频| 精品久热| 日本视频在线中文字幕| 久久爽爽精品| 久久精品国产亚洲AV无码电影| 天天天堂影视日韩亚洲91| 日本中文字幕在线电影| 91殴美| 亚洲中文字幕97久久精品少妇 | 日日噜噜夜夜狠狠视频无| 75大香蕉| 亚洲欧美经典一区二区| jazzjazz国产精品麻豆| 久久精品99久久久久久| 久碰视频| 精品人妻中文字幕4399| 久久综合久色欧美综合狠狠| 在现视频女上位好爽| 国产精品久久99日日| 日本精品九九九| 婷婷五月天av| 丁香六月激情| 啊啊啊爽爽| 久久啊啊啊视频| 伊人影院综合是一个与深夜成人在线 | 熟妇人妻一区二区三在线| 91色久| 操操逼视频| 熟女久久久| 国产一区麻豆免费观看| 免费精品福利在线观看| 婷婷伊人五月| 男人的天堂com| 亚洲www91| 97五月天| 女性91网站| 性性久久| 久久久久9999| 国产操伦| 97久久精品亚洲中六字幕| www.高清无码诱惑一区.com| 91麻豆天美传媒在线| 极品粉嫩少妇视频| 曰韩精品九九无码| 啪一啪免费视频| 成人免费看吃奶视频网站| 大香蕉淫人网| 在线播放欧洲免费av| 成人黄页| 影音先锋一区二区在线资源| 青青操97| 久久久爆乳翘臀一线天伦理视频| 亚乱色| 黄色人人| 中文字幕日韩专区精品系列| 91性色| 成人小电影网站tex| 在线一区| 欧美18禁91| 一区二区你上我| 成人看片网站| 五月丁香六月婷| 久久五月天婷婷| 亚洲中文字幕av| 凸凹视频在线观看| 日本精品成人无码| 久久精品国产96精品亚洲拳交| 精品免费成人久久| 中文字幕无码不卡啪啪| 天天综合网入口~91| 国产熟妇一区二区| 欧美少妇第一页| 97色欧州| 久久日本熟妇熟色高清| 亚洲精品1区| 久久精品老司| 日本999精品视频| 日韩国产不卡在线视频| 99国产天美| 天天操女人| 亚洲一区二区三区久久 亚洲一区二区| 九九英色视频| 91动漫操逼视频| 麻豆人妻少妇在线免费观看| 精品国产乱码久久久久久免费| 国产日韩美女小穴视频网站不卡| 亚洲福利中文字幕在线| 992视频一区| 日韩中文字幕人妻视频| 精品国产国产AV| 青青久久久| 久久久蜜桃一区二区三区| 成人日本精品九区| 日本在线不卡v二区| 亚洲图片 激情小说| 欧美日韩精品一区二区三区高清| 超碰 另类 欧美| 91精品人妻偷情| 美女被艹尤物视频| 精品国产乱码久久久兰草影视| 97超碰jingpin| 欧美黄片视频在线观看免费| 人人操AV| 超硑97精品| 天天狂操夜夜狂日| **一级毛片国产| 久久久精| 欧美久久人人网| 婷婷人妻激情| 任你草| 黄色大片免费在线| 伊人骚琪琪亚洲天堂网站| 蜜桃视频精品一区二区| 色小视频蜜乳| 综合亚州欧美| 亚洲超碰在线| 91久久国产综合精品| 久久久精品电影| 天堂国产AV| 久久久人妻| 热99这里有精品综合久久| 天天综合色图| 久久九九热| 欧美激情久久久久| 久草免费在线一区二区| 不卡一区二区日本视频| 夜夜嗨av午夜成人| 久久久久久久性爱| 91暧暧| 欧美激情性久久久久久| 国产久久久久影院老熟女| 老司机天天操| 中文字幕一区二区三区蜜桃视频| 美女一区二区国产精品| 97资源超碰| 性暴力欧美猛交在线直播| 青娱乐手机日韩在线视频| 1769一区二区| 超碰9 7女人| 蜜桃视频精品一区二区| 97天天操| 操操操日本的逼| 福利操逼| 午夜视频久久久久一区| 激情小说图片亚洲首页| 国产精品亚洲色婷婷久久久| 在线电影亚洲色图| 激情四射婷婷四五月天| 天美传媒av 在线| 夜夜 中文视频rt| 国产探花日韩援交| 舔舔啊| 久久极品伊人| 中文字幕aⅴ在线视频| 亚洲春色欧美| 麻豆九九九| av婷婷色婷婷色六月| 国产97亚洲| 69AV女优男人的天堂| 岛国视频一二三区| 青草精品视频日本久久久久网站在线| 97久久超碰国产网站| 日韩精品黄片免费观看| 久操精品| 五十路熟女,国产欧美精品区一区二区三区| 国产一区二区三区影片| 国内偷拍精品一区二区| 青草伊人网| 日日橹狠狠爱欧美超碰| 亚洲中文字幕av| 午夜激情成人在线观看| 欧美一级二级三级| 精吧天堂| 天天爽夜夜欢视| 婷婷丁香在线| 国产亚州高清国产拍精| 青娱乐妇女性生活| 欧美日韩青操| 国产精品2020| 国产玖玖| 久久婷婷综合国际产色怕| 91性高朝久久久久久久久| 欧美亚洲在线| 激情人妻另类| 亚洲美女30b| 亚洲日本成人动漫| 91Chinese在线| 大香网站| ..日韩av毛片精品久久久| 秋霞Av理论一级在线| 怡红院亚洲怡春院av| 色哟哟的毛片| 亚洲午夜av| 国产成人免费观看在线视频| 欧美草草高清日韩视频| 欧美色日| 欧洲精品网| 日韩内射视频| 97九色人妻| 97人人干人人操| 手机看片1025| 日韩人妻中文视频| 一级黄色视频网| 亚洲情色欧美| 亚洲国产精品无石码久久| 97国产|免费| 黑人性暴力毛片| av草草在线电影| 亚洲综合情色| 天天超级碰碰碰| 91N综合网在线| 91色色综合| 久久熟女久| 加勒比av官网在线| 久久久久斤小| 青草影院内射高潮| 精彩久久中文| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 中日韓欧美高清| 天天做天天爱| 男女啪啪网站免费视频| se吧提供91精品国产91久久久久久 | 亚欧成人一级片在线播放| 日韩91网站| 欧美精品,四区。五区| 97操碰| 亚洲激情网| 欧美不卡五十路| 99在线视频播放| 亚洲AV无码成人精品久久| 国产精品69久久久久孕妇欧美 | 91色综| 久久91精品国产9丨久久分亭| 成年无码动漫av片无尽在线| 欧美成人精品一区二区男人蜜臀| 久99| 射综合网| 综合激情97| 夜夜爽爽爽| 国产色图乱伦| 久久久天堂| 激情五月婷婷综合| 麻豆精品一区二区三区四区免费观看| 肥臀熟女一区二区三区视频| 操逼视频国产无套| 日韩综合色图| 日本三级韩国三级美三级91| 久久免费看高潮毛片韩国| 久久骚少妇| 综合网欧美在线| 欧美日韩亚洲高清不卡一区二区三区| 久久久久密臀视频| 国产超碰欧美| 欧美91久久久久| 午夜毛片高清免费不卡| 91精品人妻五十路| 男人天堂网手机版婷婷| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 亚洲av淫乱| 五月天激情四射| 色综合色综合网| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 在线观看A啊啊啊| 国产欧美伊人| 免费国产电影一区二区| 亚州欧美在线| 啊啊啊啊啊好大好舒服想要| 久久偷偷色综合蜜桃| 男人的天堂kva| 玖玖资源视频一区二区三区| 欧美激情亚洲| 亚洲欧洲综合成人av一区| 国产精品探花视频| 青青草视频这里只有精品| 无码国产精品午夜不卡( | 欧美视频激情久久久久久| 台湾佬中文娱乐网久久久久久久久久com | 天天激情干| 日韩欧美俄罗斯A片| 天堂蜜桃无码视频一区二区| 久久久9视频| 国产人人干| 欧美真人抽搐一进一出gif| 综合自拍| 天天α片| 97精品网| 亚洲成?V人片在线观看福利| 91欧美长吊| www男人天堂| 欧美性爱日韩性爱| 有码免费观看| 欧美亚洲首页| 日韩美女操b| 国产婷婷一区| 日本天堂在线播放| 在线无码网站| 中文字幕精品人妻丝袜| 色香91| 91熟女网| 熟女色图在线| 国产精品自拍视频 | 2020国产精品| 99精品人人爽| www.91人妻.com| 日韩黄色成人性爱| 欧美色图亚洲色| 五月丁香激情综合网| 国产精品人妻免费精品| 欧美综合区| 日韩一级二级在线| 超碰97在线中文| 欧美色999| 操逼无码一区| 欧洲色综合| 男生女生啊啊啊啊| 日韩乱伦影音先锋| 国产婷婷一区| 激情黄色片在线观看| 操B久久| 国产又黄又粗的视频| 中文一区在线日| 婷婷五月天激情网| 啪啪综合网| 综合激情97| 韩国黄色片精品久久久| 97精品一区二区三区免费| av国产无码| 极品美女嘿咻| 欧美内射少妇| 十八禁视频网站| 超碰97人人乐| 黄网站黄视频网站进入口| 五月婷婷爱六月丁香色| 日韩成人大片一区二区| 三上悠亚在线毛片91| 精精夜夜| 欧美日本中字另类在线| 国产视频第2页| 久久久艹艹艹| 18精品一区| 内射夫妻三片| 男人天堂久久日韩| 亚洲日本韩国在线| 最好看的中文字幕在线2018| 大香蕉人妻久久| 怡红院网站在线视频| 国产丰满熟夫69mpp| 久久亚洲不卡| 另类天堂| 欧美啪啪女女| 免费啪啪一级视频| 亚洲黄色a级片| 国产精品亚洲一级av第二区| 91美女在线观看| 男女性扦B| 激情99| 国产67194| www.yeyecao| 日韩操逼性鲍| 日韩av不卡在线看| 日本欧美中文字幕| 日本成人免费一区二区三区| 怡春院久久| 欧美色图97| 欧美精品久久96人妻无码| 日韩成人午夜精品久久高潮| 精久久久91| 裸体1区| 精品人妻一区二区三区四区| 亚洲丝袜在线观看| 国产亚洲精品美女| 欧美日韩m| 欧美精品丝袜久久久中文字幕| 一个人在线看的黄色电影网站| 夜夜高潮夜夜爽高清视频一| 玖色AV| 日韩人妻精品中文字幕| 97操综合| 亚洲 欧美 日韩另类 麻豆| 国产和美国毛片| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 97中文字幕九区| 国产高清视频无码在线| 欧美人人AAA| 亚洲色图久久成人| 91美女視頻| 久伊人网78| 好爽视频在线观看视频| 一类av片在线看| 久久久久中出| 欧美性高潮| 97超碰超碰| 免费精品福利在线观看| 欧洲中文字幕| 干B网| 国产成人精品亚洲日本| 干美女人妻| 一二三区精品视频| 黄色激情电影在线观看| 丝袜美腿欧美| 欧美 亚洲精品首页| 91黑人无码激情在线| 欧美影音在线| 亚洲中文字幕在现观看| 99ri视频| 一本大道青青| 嫩草影院在线观看精品| 九九九久久久久| 嗯啊视频免费在线观看| 中文字幕视频2区| 丁香色狠狠色综合久久小说| 神马福利久草| 亚洲成a人v欧美综合天堂下载| 少妇无码av专区线| 超碰欧美在线欧美| 精品伊人久久久大香线蕉小说| 亚洲国内精品成人不卡| 美欧色综合| 欧美激情视频一区二区三区不卡| 怡红院成人视频| 大香蕉亚洲中文| 麻豆AV一区二区天美传媒| 免费作爱一级视频| 国产精品网站www| 搡老人老9丨女老熟人| 亚洲激情深爱文学小说网站| 日本韩欧美在线播放a| 快播久久人人aV| 素人美腿视频网站| 福利操逼| 啊啊啊男女| 操b网站亚洲无码| 永久免费发布性爱网| 97在线播放 | 亚洲性爱成人| 九九九九免费高| 91高清无码下载| 美女丝袜激情小说| 在线岛国新天堂8| 久久久涩| 免费看污网址| 一区不卡在线观看av| 欧美色图另类图片| 九色婷婷| 91中出| 夜夜躁狠狠躁日日躁av| 欧美日日夜夜| 五月婷在线| 美国aaaaa一级黄片| 中文字幕乱妇免费视频| 日韩情色AV| 78p欧美| 日本精品高清一二区一本到| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 人妻中文字幕精品无码| 99999re| 欧美啪啪天堂| 夜夜青青无码影院| 婷婷五月丁香五月| 欧美大色交| 制服乱伦| 在线观看岛国有码| 强奸乱伦AV网址| 正在播放国产精品一区| 豆花视频操逼网址| 日本操逼无码| 天天综合97| 视频一区二区三区精品| julia国产在线 | 久久产精品一区二区三区电影| 亚洲视频小说| 亚洲美女 晚间男人天堂 | 26uuu国产免费观看| 久久人妻| 99热国产精品| SS久久| 久久久久久久久久久久久久久久9|