亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
国产v片在线免费观看| 中文字幕一区二区无码成人| 人妻人妻天天碰| 人人做,人人操,人人摸| 丁香五月婷婷啪啪| 91亚洲电影| 久久久神马影院| 自拍六区| 久欲AV| 日韩av乱伦| 欧美福利视频啊啊啊啊| 亚洲福利影院一区久久| 91黑丝美女| 婷婷丁香久久| 国产精品无码在线| 欧美高清18A片| 久久久九| 大香蕉日韩欧美| 欧美精品 - 91爱爱| 91小视频| 黄色欧美性爱视频| 国产操伦| 五十路六十路素人熟女| 成人五月天丁香激情综合| 97天天在线| 极品粉嫩少妇视频| 五月天婷婷色色| 久久久久成人亚洲国产| 国产三区免费在线观看| 中文一区在线视频| 熟女六十路| 亚洲成人无码影院| 人人插人人搞人人操| 亚洲欧洲日韩天堂av| 9色国产精品一区粉嫩| 人妻精品一区二区| 96精品久久久久久久久| 操国产逼| 亚洲91在线播放影院| 久久精品国产亚洲妲己影视| 岛国免费视频在线| 久操网视频| 日本日逼高清| 伦理片秋霞免费影院| 三级特黄60分钟播放| av绯色| 秋霞影音一区二区三区| 大香樵伊人网| 男人的天堂VA在线| 久久久女人| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 超碰97COm中文| 啊啊啊骚| 视频不卡中文字幕| 精品一区二区综合熟妇| 综合久久中文字幕综合日韩精品| 欧美制服另类丝袜| 熟妇熟女一区二三区| 韩国国产欧美情侣视频在线| 国产精品夜夜| 国产精品岛国片在线观看| 伊人久久婷婷| 少妇精品久久久| 岛国999| 国产白丝AV| 蜜桃av色偷偷av老熟女| 日韩一区二区高清在线观看的| 五月天婷婷成人网| 九X超碰| 97综合国产| 日韩性爱免费视频在线网站| 久久精品一区二区三区蜜桃臀| 9999伦理视频| 欧美亚洲激情小说| 四虎在线免费视频| 麻豆福利视频导航| 日韩在线性爱免费视频| 超碰九九| 91成人亚洲色图| 天天操av懂色| A 天堂在线观看视频| 国产精品久久久久999| 韩三级a视频在线观看| 日日骚中文字幕| 欧美第38页| 强奸乱伦 亚洲一区| 亚洲国产一级中文综合久久天堂在线免费观看 | 久久婷婷五月天| 伦理第一页| 91亚洲不卡一区| 中文乱码99| 久久极品一区二区| 九九探花视频在线观看| 亚洲精品国产无码高清| 色五月天AV| 日韩簧片免费看| 国产精品久久久777| 亚洲天天自拍| 在线人人人人人人精品超| 九九热超碰97亚洲最新香蕉| 国产视频一区二区三区在线免费观看 | 麻豆久久视频在线地址| 成人五月天丁香激情综合| 国模限制级电影| 国产91丝袜 在线播放| 91oumei| 国产一级舔足在线观看| 国外91| 久久99精品视频| 搡老女人老熟女91| 少妇色综合| 九九热九九| 日本精品999| 操死我了嗯嗯嗯| 99操逼| 国产在线视频二区| 一区二区高清视频| 欧美少妇一区二区三区| 亚洲国产婷婷在线播放| 久久久久久九| 青草精品视频一日本久久久久网站| 国产丝袜美女诱惑| 日韩精品中文字幕人妻| 久久熟女精品不卡一区| 9久超碰| 激情综合网五月婷婷五月天| 懂色aV一区二区天美传媒| 久久久久久久六六 | 色97欧美| 久久9免费视频| 亚洲男人的天堂AV| 丁香六月婷婷| 欧美精品亚洲精品日韩传电影| 人妻激情在线视频| 天天天干977| 麻豆国产成人精品| 女人高潮抽搐喷水视频网站| 亚洲 欧美 手机在线观看| 欧美黄片视频在线观看免费 | 熟女突然公开看18禁影片| 亚洲中文字幕噜噜噜久久久| 国内偷拍精品一区二区| 精品一区二区三区四区女| 97超碰免费人人性爱| 99热这里| 久久人爽| 国产激情视频一区区三区| 97免费在线观看| 天天操夜夜操| 精品国产乱码久久久久久口爆网站| 家庭乱伦性爱av| 亚洲高清无码AAA久久久精品| 欧 美 自 拍 偷 拍| 欧美日韩日产免费网站看| a级成人毛片免费视频高清| 婷婷午夜成人色中色| 日韩国产不卡在线视频| 亚洲最大无码中文字幕网站| 2011国产精品| 亚州,欧美在线| 九九九九九精品视频| 蜜臀一区二区三区在线| 911粉嫩人妻| 玖玖视频在线资源一区二区三区| 欧美有码亚洲中文字幕一区二区三区四区 | 91色五月俺来也| 国产伦精品免编号公布| 麻豆尤物视频网| 亚洲欧美一区二区网址| 色色色色电影网| 亚洲少妇诱惑| 91痴汉| 囯戸精品高潮呻吟旡码| 色妺妺在线视频| 国产精品久久久久久久久久二区三区| 国产无吗在线播放| 国产小视频91| 久久色一区二区| 91国产丝袜白虎| 欧美gv在线观看| 十八禁啪啦拍视频无遮挡| 内射日韩大臀美女| 插插综合网天天影视网| 操逼操2| 日亚韩精品视频二区三| 校园春色宗合网| 爱爱动态60秒| 99精品在线播放| 九9热伊人| 欧美v日韩v亚洲v最新在线| 人妻少妇av在线观看| 久久精品天美| 日本操逼视频在线| 午夜免费视频1000| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 色情综合网| 亚洲最大的黄色电影网站。| 日韩有码中文字幕女同性恋| 草草影院在线视频| 中国少妇啪啪视频| 激情久久久| 超碰97人人乐| 在线啊v一区| 男人的天堂日本东京热| 国模艳艳啪啪一区| 丰满人妻一区| 秋霞无码av鲁丝片一区| 岛国999| 亚洲熟女性高潮久久久| 搡老女人老妇女老妇老熟女怎么读| 青青草导航在线视频| 国产真实野战在线视频| 五月亭亭六月丁香| 久久发布国产伦子伦精品| 91熟女丨91老女人| 色诱中文字幕| 欧美日韩午夜精品一区二区三区 | 操婢日韩| 91激情网| aⅴ日韩成人电影av在线免费看av大全 | 精品97精品97| 亚洲九月丁香| 久热最新在线杭州| 97色在线观看| 亚洲av综合色| 青青草原成人| 超碰 97国产熟女| 蜜臀久久99精品久久久| 丝袜狠狠草尤物人妻av91| 青娱乐休闲视频在线观看| 99.色网| 国产精品亚洲色婷婷久久久| 亚洲 另类 丝袜 自拍 动漫| 91快色色色色色| 亚洲欧美setu| 欧美在线视频99| 啊啊啊好想要| 人人搡人人肉久久精品| 久久色情| 九九色热| 在线a亚洲视频播放在线| 国产视频三区四区| 欧美十八禁导航成人| 麻豆精品A片免费观看| 干干干天天| 大干人妻| 色性荡荡荡荡视频| 五月天玖玖资源站| 综合网欧美| 欧美成人综合| 水澄无码AV| 操婢日韩| 精…码一二三区| 97色色国产视频| heyZO天然素人无码AⅤ专区| 亚洲综合有码| 97精品视频网站| 日本免费亚洲欧美| 国产隔壁老王影院在线| 亚洲色图A| 色爽爽文学| www.狠狠操| 九九人妻| 国产日韩精品人妻久久久久色欲网站| 少妇熟女视频一区二区三区| 四虎免费看黄| 92久久| 中美日韩毛片| 天天爽人人综合免费7799| 97欧美超碰| 亚洲熟女乱色一区二区三区久久久| 太久视频| 一个色导综合| 国产深夜福利| 日婷婷| 亚洲风情综合网| 操操碰| 久操操| 少妇大屁屁| 一个国产在线综合网站| 婷婷激情五月| av网站国产主播在线| 狠狠爱夜夜| 国产一区在线免费播放| 亚洲国产成人精品久久久国产成人一区二区三.| 欧美翘臀视频网站一区二区三区| 蜜臀99久| 成人热久久精品| 老司机香蕉久久久久| 婷婷五月天成人网| 午夜精品99久久久久传媒| а√天堂资源官网在线资源| 看日韩美女二区三区免费操逼视频| 欧美另类精品xxxx| …亚洲黄色厕厕女女在线播…| 国产精品久久久亚洲第一牛牛_在线观看| 五月婷婷爱六月丁香色| 中文字幕永久在线| 久久9精品视频| 亚洲一区中文精品| 中文字幕在线免费观看 | 小草三级久久观看| av72网| 欧美97| 国产热RE99久久6国产精品首| 天天干2区3区| 中文字幕日韩专区精品系列| 久久久草成人网站久久久草成人久久久草久久久 | 92人人操人人| 少妇极品熟妇人妻无码| 日产操逼| 青青草视频爽一爽| 免费av高清无码| 国产女性无套 免费观看| 麻豆国产97在线| 久久婷婷苹果| 日韩激情中文字幕有码| 婷婷九月国产| 免费观看的av| 国产91亚洲精品一区二区三区| 日本大香蕉综合网红本杳社区| 人人看人人插| 亚洲综合大片| 色综合色综合网| 欧美激情亚洲| 色婷婷综合视频| 欧美黑人168页欧美黑人167| 先锋女优在线观看视频| 伊人色综合超碰| 人妻一二三区| 久九色| 91爱做| 成片免费播放| 精品蜜乳AV免费观看| 人妻少妇精品一区二区三区| 2019精品国产无码成人| 情色日播放AV| 囯产操逼片| 欧美超碰97| 欧美激情黑人| 97亚洲资源| 成人精品久久久午夜福利| 欧美91久久久久| 男人的天堂啪啪啪啪啪蜜桃不卡| 日逼97| 欧美91在线+|+欧美| 日本天天色| 色呦呦呦在线观看视频| 国产家庭乱伦表演| 17c嫩草51久久91嫩草| 2020中文字幕在线| 精品女人999| 日韩性爱网址| 日本性爱少妇| 日韩成人私密一级精品av| surenchaopeng| 人妻碰碰碰碰碰碰| 亚洲精品一区二区三区新线路| 黄片无码在线制服| 成人乱码一区二区三少妇| 日本熟女不卡视频| 国产v片在线免费观看| 欧美少妇人妻| 超碰97中文| 亚州欧美综合| 99久久免费看精品国产一区| 伊人9| 人人操人人操人妻人| 97久久精品亚洲中六字幕| 国产天美欧美| 色色99| 91亚洲精品青草| 视频在线观看一二三区| 亚洲老熟妇xxx| 欧美中文字幕男人天堂久久精品 | 色综合av综合久久| 日韩电影免费网站麻豆视频| 国产超碰在线一区| 五月天婷婷在线看| 操操逼视频| 一级成人性爱| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 91制服丝袜中文字幕| 亚洲人妻精品一区二区| 超碰在线97国产| 国产女主播视频在线观看| 91热色| 久久超碰网| 激情抓乳插进去啪啪啪日韩 | 伊人AAA| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 91天美传媒精品| 欧美在线干| 人妻天天爽天天爽三区| 国产精品一区二区黄片| 天天日日本| 青青草五月份天| 人人操人人干xxx| 亚洲av强奸乱伦| 婷婷色色五月天| 亚洲精品蜜桃久久久一区二区三区| 97精品97| 国产欧美在线观看免费观看| 五月丁香啪啪网| 色呦色呦色精品| 国产婷婷综合在线观看| 亚欧精品久久久久久久久久久| 午夜综合在线| 蜜臀久久99精品久久久久久-DVD原版全| 国产区性爱在线视频秋霞豆| 亚洲揄拍网| 黄色大片免费在线| 清柠毛片| 欧美AAAA黄片| 欧美色图片91| 免费国产视频| 亚洲情色婷婷五月天| 久久99国产精品| 五月婷婷激情网| 97超级色碰碰| 熟女人妻av在线资源,黄色的资源| 在线视频97| 热久久无毒不卡| 丁香六月啪啪| 亚洲AV无码久久久国产精品| 一区 欧美 日韩 麻豆| 99热伊人| 久久国产精品m码| 国产亚州日韩欧美看片| WWW.加勒比人妻一区不卡.com| 无遮挡h肉动漫在线观看| 少妇内射视频| 91美女视频在线| 久久久久久久久成人av解说| 久久r精品| 少妇被玩视频二三区| 色色五月婷| 乳欲人妻办公室奶水| 天天干天天操天天操夜夜操天天操 | 日韩欧亚中文在线| 天美麻花大全视频| 台湾一区国产高清在线| a级免费在线观看| 久久超碰com| 熟女熟妇一区二区三四区| 十八禁网站在线| 久久人人爽人人爽人人片Ⅴ| 婷婷视频在线免费观看| 涩综合导航| 2018天天日天天日| 久久黄片国产一区二区| 男女日B国产| 黑人精品欧美一区二区蜜桃| 少妇高潮一区二区三区在线| 久久日韩肥臀| 久操免费在线| 日韩性爱小视频| 国产午夜在线观看视频| 韩国一级AAA| 中文字幕第2页| 亚洲美女av无码| 91M一社| 欧美中文字幕精品人妻| 欧美综合综合| 国产激情视频一区区三区| 久久伊人最新网址视频| 欧美性生活男人的天堂| 日韩在线观看字幕精品| 亚洲巨爆乳一区二区三区四季网| 久草这里只有精品| 三四中文字幕| 最新av网站在线观看| 乳欲人妻办公室奶水| 丁香五月综合| 久久久性爱视频| 久久久久深夜无码| 国产97在线视频| 久操免费在线| 亚洲精品官网在线观看| 亚洲天堂电影精品一区| 亚洲天天艹| 国桃视频产巨乳精品一区二区在线| www久久精品| 91操熟女| 欧美一区二区三区大综合| 欧美狠狠弄| 人人妻人人色一区二区三区| 成人免费性爱视视| 91在线超高颜值国产| 自拍偷拍 高清无码| 深夜操逼网| 97精品在线| 亚欧免费观看视频| 亚洲婷婷五月天| 78综合网| 亚洲情色综合网| 熟妇色99| www.99色| 精品久操| 熟女字幕| 日韩在线97| 精品免费一区| 色五月大香蕉| av2014 日韩在线中文字幕| 亚洲欧洲综合av在线| 中文字幕一区二区三区高清| 亚洲欧美色综合| 欧美色交| 91人妻精华帖| 妇女视频网站| 久久永久无码人妻视频| 一起草视频在线| 91人妻尻屄视频| 蜜桃精品视频一区| 久草毛片| 一区二区 韩日AV| 一区二区视频在线播放| 成人精品水蜜桃久久久久久久| 97亚洲在线| 欧美韩国你懂得在线| 天天肏视频| 日韩超碰97| 欧美亚洲| 亚洲激情在线| 欧美草草| 另类 日韩 熟女| 色色婷婷丁香| 亚洲涩涩| 亚洲国产欧美一区二区潘金莲| 国产亚洲深夜激情| 久久久爆乳翘臀一线天伦理视频| 久久久999国产精品| 少妇一级无码精品| 人人摸人人干| 国产一区在线播放| AV免费在线播放一区| 玖玖蜜臀资源网| 一区二区三区看视频| 五月丁香婷婷啪啪| 国产精品午夜福利| 大伊香蕉在线视频免费| 十八禁电影伊人网| 超碰在线观看av不卡| 色婷婷蜜臀av| 日本免费人成视频播放120秒| 一区二区偷拍拍视频| 91精品91久久久中77777| 国产精品色色| 伊人操你| 伦理弟一页| 欧美系列在线一区二区| 啊啊啊男女| 猛交交| 亚州性9| 熟妇操花| 淫荡网址| 美女黑人91神马| 岛国黄片网站| 熟妇一区,二区,三区。| 亚洲欧美精品一区天堂久久| 欧美亚洲第一页| 超碰97色色| 美女被艹尤物视频| 亚洲超碰97| 亚欧中文字幕在线视频| 黄网在线播放| 精品人妻1区| 亚av顶级裸体一区二区三区四区五区| 偷拍 精品 另类 四区| 日韩色欲久久一二三四区| 在线 欧美 亚洲| 激激五月| 8050无码八戒| 国产黄色影片在线观看| 78m啪啪啪| 日本99一区二区| 操逼视频免费日韩无码| J?P?NESEHD熟女熟妇伦| 国产二区三区粉嫩在线| 国产精品久久久久久久毛片1| 亚州色综合| 日韩人人精品| 欧洲小说色图视频另类| 色情综合网| V A在线| 亚洲少妇视频| 欧美淫乱视频| 久久久精| 偷拍亚洲高清图片| 色啪网| 亚洲超碰在线| 日韩欧美国产一区二区三区四区| 综合网亚洲| AV色五月| 91久久国外网| 夜夜青青无码影院| 囯产精品强| 国产后入内射| 男人的天堂.com| 亚洲精品男人的天堂| 亚洲一本大道中文字幕无码在线| 天天色黄色影院天天操| 欧美日韩国产高清在线一二三区 | 一级毛片久久久久久久女人18| 97超碰站| 少妇69中文| 性性欧美| 精品一区二区三区蜜桃臀赵总| av毛片aaaaa免费看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 人妻色情天天操| 欧洲一区二区三区四区在线观看| 天天日骚逼熟女| 亚洲Av诱惑| 亚洲另类春色| 老熟女乱伦一区| 精品人妻视频一区二区在线播放| 精品久久久久9999| 97精品97| 欧美后入式| 久久大黄片| 家庭乱伦国产| 人妻22p| 超碰国产情侣自拍网| 久久综合久久综合人久久夜精品| 久久久不卡区一区二区三区久久久| a级成人毛片免费视频高清| 激情熟女12P| 久久的免费性爱视频| 一级片在线观看高清无码| 色牛牛AV| 夜夜嗷嗷一区二区| 精品无码久久| 人妻夜夜爽天天爽三区麻豆AV网站| 国产女人高潮嗷嗷嗷叫小说| 久久人妻视频| 亚洲亚洲亚洲天堂天堂| 日本操逼视频免费| 国产精品青草综合久久| 亚洲伊人久久精品狠狠在线| 久久99精品国产| 肏逼视频日本| 2020视频1区2区3区| 精品视频久久区| 都市久久精品激情亚洲| 国产伦精品一区二区三区视频女| 人人摸人人干| 日韩福利综合一区| 成人贴图日韩欧美| 久久99国产精品| 丝袜熟女一区二区三区| 成年女人一区| 日韩97P| 日韩欧美俄罗斯A片| 偷拍 精品 另类 四区| 后入福利视频| 素人一区二区三区日韩| 一区二区三区 丝袜高跟| 日本国产欧美一区三区二区| 91在线美女| 精品人妻15区| 婷婷久久久| 97日亚洲欧美| 高清不卡视频| 精品视频在线观看精品| 丝袜美腿诱惑亚洲欧美视频在线观看| 中文字幕视频二区| 日本3级一区二区免费 | 欧美色偷拍 | 一区二区三区视频| 性91| 欧美日韩中文亚洲v在线综合| 密臀国产在线| 狠狠久久手机视频精品| 久久久久久久 九九九九九九九| 亚洲欧洲无码bt精品合集| 中文字幕女同在线| 色色色色网站| 欧美丝袜亚洲| 亚洲综合码| J?P?NESEHD熟女熟妇伦| 久9久精品视频| 日本三级日本三级99| 欧综合网| 精品久久九| 香蕉综合网| 久久精品视频28| 乱伦av.com| com 首页 18岁 禁区 女优 免费 精选 同城| 超碰成人最新最好看| 伊香蕉综合久久久久久久噜噜噜| 日本天堂网| 麻豆国产96在线| 视频不卡中文字幕| 2017超碰| 少妇蜜汁| 亚洲三区视频| 久久国产在线一区二区| 少妇久久久久| 99国产精品免费| 在线精品福利免费播放| 国产AAAAAABBBBB| 97精品综合久久网| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 成人免费福利在线观看| 夜夜高潮夜夜爽夜夜爱爱一区| 性性欧美| 日韩钢筋无码高清啾啾啾| 亚洲老熟妇xxx| 91强奸乱轮| 综合欧美激情网| 久久国产在线一区二区| 99少妇| 青操影院| 欧美高潮在线| 四虎免费看黄| 国产天天看| 国产精品视频电影| 色五月激情综合网| 五月丁香激情综合| 国产精品懂色tv影视免费观看 | 超碰97久久国| 国产suv精品一区二区四区999| 色色五月婷| 欧美刺激色黄片免费看| 狠狠中文字幕| 国产女人成人精品视频| 婷婷九月色| 天天操夜夜操| 亚洲色图久久精品蜜| 吻戏激情性巴克| 国产原创精品| 91欧美高清| 日亚韩精品视频二区三| 天天插天天干| 在线综合 亚洲 欧美中文字幕| 67194无码不卡| 区一在线观看| 一牛一区二区三区久久| 色老久久| 高清视频一区| 婷婷丁香人妻 | 黄色视频60分钟| 92性色国产午夜福利在线661| 蜜臀AV秘一区翔田千里| 在线v中文字幕一区二区三区| 99热色精品| 粉嫩国产精品久久粉嫩| 2017天天透天天通天天擦| 麻豆熟妇乱妇熟色A片在线看| 啊啊啊啊网站| 岛国激情视频软件| 99九九精品| 亚洲欧美国产中文字幕| 色综合大香蕉| 综合久久9| 午夜啪啪片| 97综合在线观看| 白嫩嫩一区| 啊啊啊不要好爽日韩无码一区| 99久久99九九99九九九| 中文字幕国产在线天堂| 乱伦熟女区| 欧美精品第四五页中文字幕在线观看| 久久9精品网站| 精品国产Av无码久久久亚洲| 五月婷婷啪啪| 欧美成人都市人妻| 亚洲精品久| 欧美午夜熟妇黑人精品91| 91九色蝌蚪在线观看| ′ !γ}丶。。久久精品欧美一区二区三区 | 三级精品三级在线观看| 成人情色一区二区| 欧美色蜜桃97| 久久久久国产精品片区无码直播| 天天做天天爱天天爽AV| 欧美偷拍| 丰满人妻-区二区三区免费| 国产精品欧美激在线| 免费视频一二三区| 日本123区操B视频| 色婷婷综合网站| 久久久久13| 亚洲男人综合网| 综合欧美日本三级| 日本乱人伦片中文三区| 中文字幕在线免费观看视频| 国产精品久久久999| 草草网站影院白丝内射| 麻豆精品天美| 国产浮力影院第1页| 97超碰欧美手机在线| 黄色免费网| 99色日| 绯色一区二区三区不卡少妇 | 超碰超碰欧美| 操逼网站网站| 日日夜夜模| 在线观看视频91| JIZZJIZZ国产精品喷水| 男同专区一区二区三区在线| 99热色精品| 久久久久久九九九| 96精品在线| 色色色色日本| 日本在线观看网址| 97爱免费插| 逼操网站| 亚洲色人| 色月天AV导航| 最新三级网址| 性欧美91| 碰超人人在线一区二区三区| 日日干夜夜干| 色五月婷婷麻豆在| 98久久超碰| 你草精品在线视频| 综合97| 在线中文AV| 涩五月婷婷| 人妻9117c| 97干综合网| 日韩成人电影AV| 亚洲精品国产熟女| 玖玖资源视频一区二区三区| 白丝AV网站| 禁片 高清 在线观看视频网站| 日日摸夜夜夜夜爽| 最新亚洲黄色免费电影| 少妇同性| 日韩欧美字幕亚洲一区二区| 亚洲牲交| 欲综合网| 久久精品女同亚洲女同13| 欧美少妇第一页| 女色视频社区| 欧亚在线视频| 日本福利二区视频| 久热9| 操逼国产免费| 日韩人妻 中文字幕| 91性片| 热热色中文无码| 999热日韩精品| 欧美高潮| 96精品一区| 欧美日韩少妇色情| 人妻酒店出差被中出免费在线播放| 久久久久久久九九九九九九| 花野真衣| 日韩精品三区四区| 五月婷婷激情| 色女99一级片在线观看| 日韩国产十八禁| 成人欧美日超碰| 久偷拍| 欧美亚洲激情小说| 97色欧州| 青青草一区二区三区四| 超碰在线91| 久久精品| 久久黄色视频一区二区三区| 在线看片国产精品每日更新| 日韩在线一区高清在线| 亚欧Av| 欧州色图区| 亚洲男人的天堂V| 成人久久精品| 婷婷丁香人妻| 国产综合日韩伦理| 三级三级三级a级全黄三| 久操视频资源站公开| 开心五月婷婷| 99蜜桃臀久久久欧美精品网站| 人乳av| 九九九九九九精品| 99超碰网| 密乳AV免费观看| 亚洲无码99| 国产性感骚丝袜在线| 97爱b| 久久这里只| 国产亚洲女v在线观看| 欧美亚性天堂| 亚洲素人综合| 少妇久久久久久| 久久肏大逼| 久操黄色视频| 中文字幕久久亚州无码| 嗯嗯啊啊好爽| 狠狠干,狠狠操| 人妻无码后入| 国产极品馒头逼| 综合五月婷婷| 麻豆色约约| 老司机午夜精品视频| 超碰三级秋霞| 国产日本顶级一区二区三区| 中文字幕精品资源在线| 久9久| 日韩综合色网| 激情久久av一区av二区av| 伊人991| 啊视频在线| 高树玛利亚无码流出| 91无码精品| 26uuu国产| 久久噜| 中文字幕性感少妇av| 97欧美久久久久久久| 美中日韩无码| 屁股久久久久久久久| 在线播放免费av福利片| 天操老女人| 亚洲无 码A片在线观看麻豆| 国产超碰在线一区| 三级色综合| 茄子社区国产精品| 国产又色又爽又舒服的三级视频| 亚洲资源网| 午夜福利国产欧美日韩夜夜| 欧美一级欧美三级在线观看| 人妻另类| 97色色视频| 91精品国产91久久福利| 国产精品不卡一区二区三区| 操逼操操操91| 18禁看网站一区| 蜜桃精品一区二区三区久在线| 欧美性生活综合| 天堂亚洲精品| 青草香蕉网| 91超级碰碰| 人人操人人插 - 百度 - 百度| 性爱AV天堂| 精品四五区| 免费作爱一级视频| 欧美色女人| 粉嫩久久久极品| 91人人看| 久久露脸国产老熟女| 日本97久久| 久久精品老司| 91 手机在线播放 绯色| 午夜福利精品| 性爱网站一区二区| 免费在线视频97| 国产乱青青草久久| 性爱av网站| 成人a级高清视频在线观看| 91青青在线| 91丝袜在线视频| 特级大荫道BBwBBwBBW| 狠狠色色| 粉嫩在线一区二区懂色| 日韩97P| 色欧美在线| 亚洲中文字幕97久久精品少妇| 香蕉人人操tv| 日韩操逼HD| 91热热色| 欧美韩国你懂得在线| 黄色小说亚洲| 丁香六月婷婷综合| 操91| 麻豆国产免费影片| 国产91av在线播放| 色视频蜜乳| 97任你吞精| 蜜桃无码AV一区二区| 综合自拍| 狠狠干婷婷| 91美女丝袜诱惑视频| 桃色五月天| 91啪9色| 久久偷拍人| 97亚洲资源| 夜夜 中文视频rt| 亚洲欧美另类少妇精品| 欧美白嫩在线放| 嗯嗯啊啊好大好爽| 新怡红院| 国产精品久久aV| 狠狠爱夜夜| 97 九色| 欧美日日人人天天| 国产25页| 久久久男人的天堂| 国产丁香精品露脸视频| 91网站18禁| 欧美黑人熟妇精品91| 久久丁香久草综合网| 国产黄色影片在线观看| 亚洲欧洲无码bt精品合集| 亚洲精品国产熟女久久久久久| a级理论午夜日本| 男男H黄动漫啪啪无遮挡网站| 色墦五月丁香| 老汉网| 啊啊啊啊好疼| 日韩性爱视频免费在线| 亚洲图片偷拍视频区| 日韩人妻少妇中文字幕| 91丝袜在线观看视频在线观看| 欧美玖玖爱免费玖玖| 男人天堂资源| 日本国产高清色www视频在线| 亚洲精品久| 人人妻天天做天天爽| 欧洲在线性爱视频| 九九伊人网| 综合97久久| 色欧洲| 99热国产| 欧美三四五区| 狠狠操夜夜| 在线黄页看毛片| 蜜臀99999| 欧美精品69性爱| 国产精品自产拍在线观看社区 | 人人妻人人玩人人澡人人爽| 一级性爱视频免费在线| 中文字幕 码 自拍 视频 区| 国产精品大屁股999| 99婷婷一区二区| 亚洲 欧美都市激情| 97这里有精品| 99久久婷婷国产综合精品草原| 物业黑人 AV一区| 亚欧视频在线| 久久水蜜臀亚洲AV无码精品| 18禁在线视频| 肉丝网站91| 最新av中文字幕高清| 免費人妻夜夜爽天天爽爽一区| 天天肏天天干| 99热自拍| 欧美天天射| 91九久| 欧美日韩*字幕一区| 亚洲情色在线| 亚欧高清v| 久久9精品| 国产精品九9| 男女猛烈无遮掩视频免费软件| 婷婷丁香一区二区三区| 尤物网址| 人妻少妇精品视频一区二区三区| 91在线视频免费中出| 国产乱伦性爱区| 91老妇女| 2010男人的天堂| 为用户提供免费看黄网址在线观看| 少妇三P| 婷婷精品视频| 26uuu成人影片| 色天天野狼综合社区| 黄色网址久久精品欧美喷水| 青青操日韩| surenchaopeng| 资源在线观一 二| 亚洲国产一级黄色视频| 欧洲大香蕉| 一二三啪啪专区| 性做久久久久久免费观看软件| 超碰色综合| 果冻传媒一区二区三区| 五月丁香激情综合网| 国产在线激情视频| 日本成a人v网站在线观看| 日韩专区久久久| 久9久9精品| 狠狠色噜噜狠狠狠狠狠色综合久久| 国产区在线| 色妇91| 夜夜综合| 日韩av三四区| 97人肏| 二色av| 欧美色综合影院| 免费a级毛片av无码久久精品中文字幕| 0755午夜福利视频| 国产精品乱码久久久、久久| 欧美超碰96| 啪啪啪综合网| 97碰在线视频| 乱伦图av| 日韩欧美成人性爱在线| 一二三四视频中文字幕在线看| 人妻9117c| 97在线视频免费看| 久久风骚城市| 后入精品| 嗯嗯啊啊啊好爽| 久神马| 日本孕妇孕交| 亚洲在钱| 精品久久久久成人码免| 亚洲天在线| 中文 人妻 制服| 大象AV在线| 亚洲麻豆av一区二区| AⅤ片水多多| 一级岛国大片| 久久久久久久亚洲Av无码| 18禁免费视频| 黑人精品成人一区二区三区| 久久99热这里只频精品6学生| 男人的天堂2019AV| 婷婷亚洲综合| 艾草av| 99re在线视频国产| 啊啊啊啊无码| 天天激清| 久久男人精品| 少妇人妻好深太紧了vr91| 日韩免费a级毛片无码a∨| 日韩一级特黄av毛片| 另类在线| 亚洲精品欧美专业| 国产精品久久久久久9999| 91九九| 久久91视频| 亚洲 欧美 另类 日韩 人妻一区| 国产熟女精品区| 中文字幕AV片| 亚洲男人天堂网站| 黑人美精品 A片| 中文字幕五区| 亚洲综合性网址| 97久久网| 中文字幕一区二区三区视频播放| 久婷婷一区| 午夜精品久久一区二区| 国模精品娜娜一二三区| 91成人在线| 日本东京热大香蕉a片| 久久春色| 曰韩成人免费视频| 国产精品久久久久久久久久久久久久久久 | 亚洲性高潮| 大香蕉www.超碰| 色妹子A V| 无码人妻一区二区三区四区老鸭窝| 国产乱人伦AVA麻豆软件.| 国产一区二区三区不卡手机在线| 欧美一级二级三级| 亚洲成a人片在线观看中文!!!| 国产精品久久伊人| 亚洲AV免费在线观看| 大香蕉懂9| 中文字幕一区av| 欧美日韩狠狠爱| 思思99热| 91性情| 久久久不能久久久久| 天天色综合影视网| 国产成人无码久久精品| 神马午夜久久久|