亚洲有码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
返回資訊列表
天天综合网~91综合网| 激情国产乱伦Av| 91国产丝袜足交精品视频| 中日韩久久久免费看| 久久91| 伊人99热| 亚洲熟伦熟妇AV无码春色| 天天干天天干天天干| 97伊人超碰| 日人妻视频91| 99热这里都是精品| 欧美综合色站| 国产av又色又爽又黄| 亚洲熟妇丝袜在线观看| 高清国产性猛交xxxx乱大交| 日日黄色三级网站| 久热九九| 影音先锋日本一区二区| 色欲久久99精品久久| 岛国片在线观看视频亚洲| 99re视频这里只有精品| 素颜老阿姨乱情色| 这里只有精品久久| 一级毛片久久久久久久女人18| 亚洲熟久久| 丁香五月影院| 91丨熟女丨丰满熟女| 欧洲精品二区| 国产女人9999| 久久久久无码| 精品婷婷| 国产综合永久精品日韩鬼片| 欧美欧美啪啪视频| 98福利在线视频| 嗯啊不要在线| 性爱av在线免费观看| 97天堂| 操死我了啊啊啊| 色好看av| 91天天日| 99精品无码| 天天上日日上日韩精品| 麻豆亚洲AV成人无码久久精品| 青青草在线成人视频| 国产精品久久久久中文字幕| 99亚洲国产精品色一区二区三区| 亚洲图片 欧美电影| 亚洲综合射| 亚洲一区二区三区久久 亚洲一区二区| 白嫩国模丰满一二三区| 天堂俺去俺来也www久久婷婷| 91美女小视频| 欧美色性情| 国产又粗又长又大的视频| 久欲AV| 亚洲丝袜色图| 色九月综合| 一本一道人妻久久一区二区三区 | 波多野42部无码喷潮在线观看| 久久久久亚洲Av无码专区老牛影视| 欧美在线第五页| 97精品97| 日韩八十路老熟女| 久久综合久色欧美综合狠狠 | 亚洲色人妻综合| 五月天综合| 男女真人网18| 欧洲综合视频| 97免费免费视频网| 欧美成人色| 熟女精品va中文字幕| 国产精品免费视频人成| 日韩精品一区的| 91在线精品| 国产av美女被艹的乱叫| www狠狠| 大香蕉五月天婷婷| www.超碰在线| 美女97超碰| 大香蕉啪啪啪啪在线| 二对二中文字幕。| 福利大香蕉| 国产久久日| 欧洲亚洲人人爽爽视频| 日韩综合97p| 草草草视频在线免费看| 国产高清免费不卡av| 青草草免费网站av| 国产原创剧情在线丝袜| 自拍盗摄一区| 中文字幕无码不卡啪啪| 影音先锋日本一区二区| 五月丁香啪啪| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 九九碰九九爱97| 理论久久婷婷网 8| 亚欧美综合网。| 麻豆天美在线| 把腿张开老子CAO烂你| 99欧美| 亚洲欧洲偷拍一区| 五十路熟女工口| 久久99久久99精品天美传媒棢·纸:. | 可以免费观看的av| 91美女高潮| 69天堂| 亚洲二区精品在线观看| 亚洲精品国产精品乱码不卡| 亚洲色电影在线| 亚洲色系另类精品国产| 有码免费观看| 亚洲日韩天堂| 日韩精品区二区三区不卡| 五月天人妻综合| 久久性爱视频99| 婷婷色婷婷| 欧美91在线+|+欧美| 思思热一热婷婷热一热| 亚洲欧美自拍偷拍| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 午夜无码熟妇丰满人妻| 岛国片在线播放| 国产精品一二三免费网站| yazhouzaixian| 欧美一级黄片视频在线| 999综合色| 亚洲电影中字一区二区| 伊人综合色网| 97免费在线观看| 97在线精品| 亚洲第一页综合在线| 啪啪AV导航| 九热大香蕉| 日韩欧美大片免费高清啪啪| 精品久久久久9999| 一级片视频啪啪| 日韩熟女精品无码专区一区二区| 亚洲国产一级黄色视频| 欧美少妇内射| 狠狠躁天天躁日日躁97| 久久久91福利姬| 天天拍夜夜| 五月天婷婷成人网| 97爱碰| 99热精品在线| 蜜乳视频网站| 91操熟女视频| 亚州成人A√| 乱伦AVxx| 欧美色图亚洲色| 自拍欧美| 东京热亚洲一区二区| 国产精品分类在线观看| 92大香蕉| 性爱欧美五月| 国产一区96在线| 交换娇妻呻吟声不停中文字幕| 久久久久久无码人妻中文字幕| 99色色| 51久久夜色精品国产麻豆| 久久久91福利姬| 日韩av三四区| 欧美日韩超碰在线| 99久热| 操操操日本的逼| 亚洲色狠| 97色色色| julia国产在线 | 亚洲精品一卡二卡三卡福利视频网站| 久久精品人体| 女人的久久久| 国产精品交换一区二区| 一块操欧美性爱| 亚洲无码超碰免费| 色淫网站优优视频| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 超碰色综合| 亚洲图片视频小说| 中文熟女五十乱码在线| 欧美国产有色电影| 搞中出视频在线观看| 黄色乱论网站| 亚洲 欧美 小说| 九九九综合精品| 色综合美国| 亚洲超碰AV| 国产精品一级片在线看| 国产黄色av大片网站| 日本亚洲熟女视频| 日本久久天堂| 开心五月天激情网| 中文字幕日产av人| 欧美综合加勒比在线| 神马福利久草| 亚洲欧美爆| 亚洲一二三四区机械| av优播| 冬京热男人的天堂| 蜜臀在线免费观看在线免费观看| 狠狠热这里都是精品| 97伪v| 亚州中文字幕超碰97| 日韩视频小说在线观看| 亚州色图片在线色| 色狠狠 - 百度| 日韩国产十八禁| 国产福利合集| 亚洲欧美中日韩| 中文字幕片| 婷婷三区| 亚洲少妇色| 天美国产精品| 亚洲吊色| 97久久国产| 99这里只有精品国产| 欧美色视频在线| 免费操逼视频下载| 国产精品久久久久久夜夜夜| 亚洲图片 欧美电影| 2017天天操| 日韩免费三级黄片电影| 狠狠色婷婷7777久| 狠狠亚洲| 97碰久久| 美女操逼福利视频| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 在线情色电影 91大| 欧美日韩色| 日韩中文字幕视频| 国产成人综合网| 天天内射| 日本中文熟女视频| 骚货人妻偷情自拍在线视频| 97视频新免费| 久久午夜鲁丝片| 亚洲一区中文字幕一区| 日本精品九九九| 精品大全99999| 99久久久久久亚洲精品不卡| 激情综合97| 精品免费囯产一区二区三区| 影音先锋中文字幕日本好一区二区| 伊人影院中文字幕| 无码天堂| 国产传媒一区日韩| 免费精品国偷自产在线在线| 久久久噜噜噜久久久| 欧洲精品一级二级精品综合视频综合| 开心五月激情网| 国产夫妻性生活视频| 国内毛片国产专区二| 色天欧美| 97啪啪| 久久αⅴ| 婷婷色中文字幕| 91岛国动作片| 18精品一区| Sekablack无码一区| 欧美老妇综合网| 久久精品国产亚洲AV嘿嘿| 97AV在线免费观看| 1024日韩| 秋霞一级鲁丝片A片| 欧美韩国你懂得在线| 日韩在线一区高清在线| 美女网站黄页| 国产又色又爽又舒服的三级视频| 躁躁躁日日躁2020| 97天天做| 丁香五月天啪啪| V A在线| 色香伊人| 婷婷情色综合网| 吉川爱美98堂在线| 国产精品自产拍在线观看社区| 大香蕉黄色一区| 神马九九九| 久久国内| 大粗鳼巴久久久久| 国产精品一区人妻精品阁在线| 欧美97网| 超碰97起碰| 欧美亚洲天堂| 天天操天天日青青草超碰av| 激情干在线| av2014 日韩在线中文字幕| 日本日皮视频逼| 亚州综合在线| 久久亚洲不卡一区二区三区| 国产精品不卡一区二区三区av| 欧美精品四区| 亚洲在线| 内射黑丝袜| 五月激情在线| 国产大陆天天艹| 偷拍2020| 亚洲老熟妇xxx| 亚洲一区在线观看欧洲 | 国产成人一级av88| 亚洲色综网| 亚洲精品蜜桃久久久一区二区三区| 亚洲一区日韩精品中文字幕| 色天堂在线观看| 成片免费播放| 9久精品| av天天在线| 97香焦色区| 91成人久久 | AV天堂男人的天堂| 永久免费发布性爱网| 国产伊人精品在线| 日韩伦理视频| 最新的亚洲无吗| 亚洲欧美不卡线| 中文字幕超碰CAO| 96AV久久久| 色综合色欲色综合色综合色综合| 十八禁啪啪视频| 99国内熟女露脸视频| 精品久久99| 美女超碰978| 亚洲色图日韩精品| 自拍偷拍国产欧美日韩韩| 欧洲亚洲人妻无码中字久久三区四区| 国产三级电影免费观看| 久久久久亚洲av综合波多野制衣| 精品传媒在线一区| 亚洲女人毛茸茸91| 91丨精品丨国产丨丝袜| 国产午夜福利视频在线| 成人精品在线观看| 欧美成人一区二区三区在线播放| 男人天堂黄片| 干我久操| 亚洲av无码国产精品字幕| 亚洲激情片| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 久久这里都是精品| 亚洲熟妇图片| 日日天天久久啊啊aaa| 九色婷婷| 综合色播| 99性爱视频| 久久精品人体AV| 亚洲人成网www| 丁香五月AV| 亚州AV无码国产精品| 日韩久久.一级黄色片| 最新岛国大片| 99久久久久久亚洲精品不卡| 性色av一区二区| 色九月综合| 久久av网| 欧美久久人体| 亚洲欧美视| 性天堂| 91网站18在线| 91男同| 伊人午夜福利视频| 激情小说亚洲视频| 日韩电影中文字幕| 五月天伊人网| 欧美亚洲天堂| 91精品女厕偷拍视频| 日本免费一级AAA大片器| 男人天堂2017| 8x福利精品第一福利视频导航| 在线午夜成人无码视频| 日韩强奸av| 亚洲字幕一区二区| 人人操人人插人www| 被体育老师抱着c到高潮| 亚洲操操操| 久久最新免费视频23| 91麻豆一二三区| 久操电影网| 老熟女乱伦片| 亚洲啪啪性视频| 亚洲天堂东京热| 999 久久久| 99精品九九九九九九| 亚洲成人在线高清| 99无码视频| 亚洲人91| 日韩日本欧美在线观看| 欧美一区二区观看在线| 国产美女91视频| 亚洲校园激情| 青青伊人这里只有精品| 97干色天堂| 欧美日韩妖精91com| 欧 美 自 拍 偷 拍| 国内自拍 日韩激情 99| 91+欧美| 天堂亚洲精品| 超碰人人干| 欧美国产成人在线| 国产久久久| 人人插人人摸人人| 亚洲自拍欧美国产首页网曝| 日日操免费视频| 免费观看有码高清视频| 日韩欧美~中文字| 久久久少妇诱惑精品视频| 国产成人超碰在线| 亚洲欧美另类少妇精品| 中文字幕后石码四区五区| 激情综合网五月婷婷| 熟女91网| 国产久久久久久久久一区二区| 国产第11页| 九色精品视频导航1| 欧美亚洲高清不卡| 人人摸人人摸人人干| 亚91亚洲网| 男女无套 免费网站| 欧洲综合视频| www国产无码| 丝袜夫妻自拍| 夜色综合| 啊啊啊com| 性爱综合一区二区| 热的中文 热的有码 热的国产| 国产综合操逼高清| 十八禁黄色| www.夜夜| 欧美日韩午夜精品一区二区三区| 青青青青草av在线观看| 色综合一本| 欧美白嫩在线放| xxx0国产在线播放| 国产一区二区在线播放| 素人播放一区| 男女性无套 免费九一| 国产高清不卡视频| 色婷婷五月综合激情中文字幕| 亚洲情色 自拍| 91久久国产综合久久| 国产无码精品无码| 大屁股国产在线视频| 日韩精品一区的| 国内毛片热久久思思热| 偷拍五区| 亚洲91色在线| 日本中文字幕在线电影| 日韩无码视频黄色| www.人人摸在线视频| 91色噜噜狠狠| 色99视频| 熟妇的味道HD中文字幕| 日韩在线电影| 蜜臀网址在线| 91黑丝美女| 婷婷伊人| 国产视频一区二区三区在线免费观看| 精品国产乱码久久久影院| 亚洲视频,小说| 国内三级自拍小视频在线观看 | 九七色图| 色欧美在线| 免费人人搞97| 综合色图区| 久久久久久国产成人| 91综合网在线| 91日日夜夜| 操久久久久久| 婷婷丁香熟妇综合网| 18禁免费视频| 色99999| 自拍第一页| 日韩av情韩国爱禁区av一区二区| 69超碰综合| 日韩一级成人毛片免费观看 | 91 亚欧| 色天堂在线观看| 97干日韩| 91亚洲不卡一区| 青青草操逼逼视频| 丁香五月天社区| 亚洲超碰AV| 久久精品国产亚洲AV片多多| 偷拍亚洲熟女视频播放| 麻豆综合一区av| 久区视频| 99re9| 国产成人欧美精品在线| 九九九九九九精品| 91网站18禁| 亚洲国产综合图区中文字幕 | 人妻少妇精品久久久| 婷婷美人网| 97视频620| 欧美大香蕉97| 青青草久草AV| 97久久久网站| 日韩精品 资源| 91久久| 精品视频一区二区| 乱伦一二三区| 婷婷丁香五月天亚洲天堂网| 激情四射五月天| 亚洲精品乱码久久久久久蜜桃麻豆| 每日更新AV| 青青草日韩无码| 91五月天| 欧美亚洲特P| 国产9l 大屁股| 丰满人妻区一区二区三| 欧美系列在线一区二区| 伊人影院在线理论播放 | 七久久久| 亚洲性猛| 精品人妻一区二区三区不卡断 | 亚洲免费人妻在| 五月天丁香网| 97视频620| 蜜桃臀av一区二区| 免费看A片毛毛片在线播| 国产av激情无码久久天堂| 一区二区三区探花在线观看| 九九人人操| 青青草日本中文字幕| 九九九不卡| 国产精品不卡av免费在线观看| 日韩色欲久久一二三四区| 屌色在线97视频| 都市激情人妻一区二区青青操视频| 欧美啪啪啪91| 国产精品无码久久久久2025| 天天插天天干| 亚洲精品一区二区免费在线观看| 欧美综合色图网| 国产一区二区精品久久99| 无码一区二区三区四区五区六区七区八区九区十区视频 | 欧美高清18A片| 五月丁香色情| 老鸭窝日丰县女人| av片在线观看免费播放| 日本欧美色| 欧美日本成人一区二区| 色五月网址| 日韩成人午夜精品久久高潮| 国产精品一区二区三区免费视频| 中文字幕狠狠玩| 91黑丝操| 美国精品国产精品| 亚洲激情 欧美色图| 亚洲综合在线91| 天天爽天天干| 中文字幕一区二区三区四五区| 草草网站影院白丝内射| 试看福利| 国产一区二区欧美日本| 人妻丝袜肏逼| 人妻 中文 日韩| 免费成人在线熟妇网| 成人aⅴ一区二区三区| 中文字日本乱码| 蜜臀久久99精品久久久久| 九九久久综合| 国产AAAAAABBBBB| 中美日韩毛片| 亚洲h片在线免费观看| 麻豆精品A片免费观看| 亚洲无码视频免费在线观看网址!| 精品国产一区二区三区av在线资源| 蜜桃午夜视频一区二区 | 日韩A优精品在线观看| 1000部熟女视频在线观看| 欧亚乱色熟一区二区三四区| 影音先锋日本一区二区| 国产第二页| 欧美亚洲中文字幕| 老熟女91视频| 国产超碰在线一区| 97精品熟女少妇一区| 久热9| 啊啊啊爽爽| 欧美亚洲性爱一区二区| 久久激情亚洲精品无码?V| 日日骚av| 伊人影院中文字幕| 国产精品婬乱一级毛片彝族| 殴美性天天| 97国产天堂岛| 99亚洲精品| 为用户提供免费看黄网址在线观看| 久久久久久久六六| 黄色AAAAA欧美| 99热精品在线观看| 97精品视频免费| 乱色视频中文字幕| 狠狠中文字幕| 久久精品超碰| 日产成人久久| 亚洲精品色| 日韩中文字幕视频在线观看| 成人一道本免费视频| 91久久午夜无码鲁丝片久久人妻| 婷婷五月成人| 青椒国产97在线熟女| 大逼色网站| 98精品国产乱码久久久久久| 日韩精品一区二区三区四虎影视| 福利伊人玖玖国产| 欧美特大AA级黄片| 日韩情色一区二区| 十八禁电影伊人网| 亚州色图片在线色| 人妻一区久久二区三区色播| 日韩精品99999| 色色激情五月天| 极品色www影院| 中国一区二区亚洲人妻| 亚洲欧美在线观看免费| 多毛小伙内射老太婆| a亚洲欧美色欲| 欧美色图片| 97美日韩视频| 亚州欧美总和| 一牛影视久久久一区二区三区| 五月天婷婷综合网| 又黄又爽在线观看视频| 精品人妻伦一二三区久久| 国产精品久久久久久久久AV大片| 久久美女福利是上海美女| 自拍大香蕉乱插| 成人网站 免费观看| 亚洲精品中文字幕一区在线视频 | 能在线播放的国产三级| 岛国黄| 啪啪免费| 色综合色欲色综合色综合色综合| 国产超碰| 国产精品女久久久久av爽| AA特级绝黄| 爽 好舒服 无码刺激久久| 丁香五月天啪啪| 日韩草久视频| 欧美大香蕉97| 精品制服美女中文一区二区三区| 天天干夜夜操一区二区| 亚洲综合性网址| 中文字幕一区二区三四五区日日骚| 视频在线观看青青99国产| 日逼97| 黄色操人| 韩国一级婬片A片AAAAA| 嗯嗯啊操我| 大吊色| 久久偷偷色综合蜜桃| 农村少妇久久久久久久| 超碰碰小说97| 一区二区三区一亚洲中文字幕、综合区灬 | 亚洲av无码成人精品国产| 国产精品三级视频网站| 亚洲国产综合久久久性感熟妇| 国精综合一二三区影视| 清纯唯美激情| 久久久久免费看少妇A片特黄| 婷婷99| 欧美大片天天看| 美女诱惑久久| 五月婷婷爱六月丁香色| 九久9热| 99re在线视频国产| 国内毛片热久久思思热| 性色av婷婷久久一区二区点复制| 日本精品人妻少妇一区二区| 可乐操亚洲蜜911| 17c在线成人免费A片观看| 日日夜夜天天| 天欧美在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲天堂中文字幕无码男同| 国产二区三区粉嫩在线| 日本一区二区三区午夜观看| 精品网站9999| 野狼福利社区| 人妻熟女午夜精品在线| 欧洲自拍第一页| 国产男女无套视频免费观看| 91中文精品日韩欧美在线 | 性爱Av免费| 亚洲丝袜二区| 久久久青青草| 国产超碰| 97在线亚洲| 一起草精品人妻| 国产乱青青草久久| 亚洲国产一级精品毛一级精品看免费视频 | 欧美性五月| Sekablack无码一区| 色第一页| 日本欧美一区二区三区免费| 熟女精品一区二区在线观看| 99操逼| 欧美色网| 91久久久老司机| 九九伊人网| 99精品无码| 国产精品免费视频人成| 乱操乱伦AV| 亚洲国产一区二区三区在线| 久久亚洲AV无码专区国产精品| 后入国产| 天天天天做夜夜夜夜做| 99精品欧美一区二区三区桃色| 欧美亚洲丝袜美女电影| 国产精品免费日韩| 国产精品扒开腿做爽爽爽视频| 国产白嫩精品久久| 大香蕉啪啪网| 青娱乐休闲视频在线观看| 男人的天堂无码| www.操| 亚洲中文字幕乱码无码一区二区 | 九九热男人天堂| 人妻一区二区三区四区视频| 超碰97色色| 国产精品久久久啊| 综合色欧美| 精品99999久久久久久| 国产精品免费视频人成| 亚洲国产精品久久AV| 五月天AV资源| 欧美 亚洲 另类 综合| 亚洲第一页色| 國產尤物AV尤物在線觀看| a片自拍直播视频| 九九九999久久久网站| 97爱b| 精品射1999| 四虎AV在线观看| 日本三级网页| 一级特黄aaa大片在线观看成人一级片在线观看| 综合情欲网| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 97中文综合| 热热热热日日漂亮永久永久国产日| 色色国产| www.99中文字幕| 黄片qw| 精品久久久av无码免费| 久久粉色| 快播电影网日韩新片| 91少妇通奸网站| 91天射| 97超碰免费人人性爱| 厕所偷拍在线| 狠肏骚人妻| 亚洲、日韩、综合、另类| 蜜臀久久99精品久久综合| 噜噜噜狠狠色综合| 26uuu欧美| 成人看片网站| 亚洲av在线免费观看| 婷婷久久综合| 亚洲av夫妻操穴网| 欧美图片偷拍| 亚洲、日韩、综合、另类| 淫色网综合| 区一二区日韩亚洲乱码av电影| 女一区二区| 精品十三区| 日韩超碰精品综合| 狠狠亚洲| 久久久久久免费电影| 91痴汉| 97爱爱爱| 久久久999| 韩国一级婬片A片无码天美| 日韩国产欧美伦理在线| 99日精品欧美国产| 五月婷婷大香蕉| 五月天伊人| 欧洲站一级二级三级h| 啪啪啪亚欧美视频| 人人性爱视频免费| 欧美视频一区二区在线| 色五月婷婷麻豆在| 欧美性暴力猛交XXXX | 蜜臀99久久精品| 亚洲黑人在线| 性色生活片久久毛片婬片免费放女人一级毛片 | 久久女女| 中国熟女老妇仑乱一区二区三区| 亚洲无码免费看| 啊啊啊啊一区| 亚洲 综合 第一页| 男人天堂毛片| 日韩人妻有码免费视频| 九九碰九九爱97超碰| 欧美日韩婷婷中文| 中文字幕人妻丝袜乱一区三区| 亚洲伊人久久综合97| 狠狠激情综合狠狠操中文字幕| 九一综合精品视品av| 大白逼三四级| 亚洲免费在线探花| 亚洲天堂区| 亚洲少妇综合| 一区不卡在线观看av| 亚洲欧美中文日韩视频中国语| 国产丝袜美腿美女麻豆| 男人在线天堂| 精品国产无码中文| 好爽,再快点啊哈嗯嗯嗯嗯| 后入福利视频| 青青伊人这里只有精品| 久久99国产综合精品女同| 精品国产乱码久久久久久免费| 国产亚洲精品A在线观看下载| 麻豆精品久久久久久久| 久伊人网78| 综合欧美日本三级| 91欧美成人色站| 91操熟女| 中文字幕av色| 亚洲毛片基地专区| 大奶啊啊好爽| 亚洲色人阁| 97人妻色| 中文一区二区三区影院| 性色av婷婷久久一区二区点复制| 人妻无码后入| 91白嫩| 日日日啊啊啊| 精品人妻视频一区二区在线播放| 日本免费人成视频播放120秒| 日韩熟女视频二区| 国产精品麻豆视频网站| 中文字幕精品亚洲熟女| 欧美色偷拍 | 一本一道vs波多野结衣| 中文字幕国产| 神马午夜久久久| 特级毛片特黄久久免费看 | 国产精品日本无码A片| 久操| 性色中出| 97人人模人人爽人人| av黄图片在线观看| 夜夜夜爽www精品视频| 国产精品久久久久久久久久久久久久久久久久 | 无码不卡亚洲成?人片| 亚洲一区二区三区久久 亚洲一区二区| 久久久久九九九九九| 一区二区精品日韩欧美在线观看 | 久久春色| 少妇内射www在线观看视频| 日韩人妻 中文字幕| 乱色老一区二区三区的观看方式| 精品夜夜澡人妻无码| 亚洲人妻久久| 熟女丰满人妻一区| 欧美日韩中文字幕人妻| 五月天久久综合网| 成人热久久精品| 精品国产Av无码久久久亚洲| 黄总AV色图| 五月丁香啪啪啪| 国产精品4p在线观看| 男人的天堂欧美| 午夜色婷婷| 国产最火爆久久国产网站网站| 超碰4A| 啊操爽品善一区二区三区| 能看的AV| 综合自拍| 老熟女网站| 亚洲高潮影院| 久噜噜| 久草视频制服诱惑| 夜夜爽33333| 操逼网免费无码视频| 国产中文字幕在线点播| 国产一区二区在线看| 国产乱人妻精品入口| 青青国产精品在线| 97人妻碰碰中文无码久热丝袜| 亚一综合久久久久久久久久| 99无码狠狠久久| 91激情国产| 国产又长又大又粗的视频| 天天日天天射天天干| 九一综合精品视品av| 亚洲综合精品国产一区| AA级电影三区| 伊人天天久久动态图| 另类图片天天影视| 蜜臀网 一区| 97超碰欧美精品| 97亚洲中文| 久久精品国产亚洲粉嫩| 欧美色图99| 老司机香蕉| 人妻天天爽| 久久9999 | 午夜丁香| 长长久久免费视频| 国产一区在线观看无码AV| 亚洲精品国产日韩无码AV永久免 | 福利视频香蕉免费一区二区在线| 久久精品无码熟妇一区二区三区视频导航 | 97在线观看视频| 精品夜夜澡人妻无码AV| 欧美天天综合在线| 91爱| 午夜国产成人精品视频| 亚洲性爱电影| 婷婷亚洲五月***久久| 激情专区综合| 欧美大香蕉在线观看| 麻豆人妻少妇在线免费观看| 日韩无码AB| 亚洲综合图片在线| 国产三级中文字幕粉嫩 | 78精品在线| 97综合久久| 青娱乐淫乱1314| 国产色精品午夜大片| 色狠狠综合| 曰本熟女视频| 夜夜无码| 20cm女自慰在线日韩欧美| 久久国内| 久久超碰久| 99999精品成人| 久9爱经典视频| 欲色综合| 99国产精品| 强奸乱伦中文字幕AV| 能看的av| 天天拍天| 免费观看网黄| 久久99精品视频| 久日综合网| 熟女探花啪啪| 一区二区娱乐网站| 99热导航| 国产高清成人免费视频| 日韩精品在线观看网站| 亚洲国成人情色好看电影| 精品丰满熟妇人妻一区| 欧美精品23| 99自拍B亚洲 | 张柏芝国产一区在线观看| 中文字幕精品一区二| 天天添天天干电影| 久操视频在线| 亚洲 国产 精品一区| wwe 天天干.com| 精品九九| 动漫爆乳3D奶水一区在线观看| 北京美女一区二区| 日韩欧无码一区二区三区免费不卡 | 国产精品婬乱一级毛片彝族| 色五月婷婷五月天| 韩日欧亚a级| 国产三级电影免费观看| 97超碰免费生活| 欧美另类综合久久| 伊人aaa| 一牛影视成人片免费| 久久久久久久久久久久久久久性生活视频| 99精品无码| 久久男女激情视频网站 | 亚洲网站一区二区在线| 激情看片网站| 9 9无尺码天堂网| 射久久| 国产SV一线| 91青青草| 亚洲天堂另类小说男人| 亚洲国产精品成人综合| 五月天久久婷婷亚洲 | 老熟妇一区二区三区…| 97在线青| 日本三级日本三级99| 另类图片五月天| 亚洲麻豆精品二区三区| 欧美日韩1234| 九区国产| 日韩欧美经典在线观看| 天天肏美女| 久操99| 激情熟女12P| 美女诱惑久久| 久久999久| 操人91| 又粗又长又爽在线观看| 日本999精品| 亚洲天堂综合AV| 99在线免费公开视频| 欧美性夜| 国产九九九九九九| 欧美亚洲中文字幕| 高清国产精品无码| 情色大香蕉| 蜜乳av一区二区三区四区不卡| 欧美日韩91| 国产亚洲色婷婷久久99精品91葵花宝典 | 91啪啪| 蜜乳AV网址| 伊人热综合| 久久久人妻| 日韩视频小说在线观看| 色色99| 伊人五月天| 激情干在线| 国产精品欧美日韩久久| 亚洲日韩电影| 色综合天天爱去电影网| 好湿好紧视频| 欧洲站一级二级三级h| 午夜成人福利影视| 蜜臀亚洲中文| 91久久国产综合久久| 狠狠操狠狠爱| 极品极品色影院| 51一区二区三区| 综合五月婷婷亚洲一区| 精品中文字幕一区二区| 白天啪啪晚上啪啪视频| 飘花国产午夜精品不卡| 国产精品96| 啊啊啊爽爽| 超碰久久.com| 人人妻人人爽一区二区三区| 欧姜老司机| 九九九九免费| 2021国产成人精品久久| 好色综合| 欧美天天弄| 精品78| 97综合在线| 国产家庭乱伦表演| 亚洲āv网址在线观看| 亚洲字幕一区二区| 无码聚合| 床上啊啊啊一区二区三区| 热久久91婷婷| 亚洲成人精品久久久| 中文字幕文字幕无码一区二区三区电影99 | 国内91熟女人妻丝袜天天精品视频在线 | 国产精品福利视频| 午夜AV人气不卡| 中文字幕在线免费观看视频| 亚洲熟妇乱女区二区三区| 亚州 综合 色图| 青青青草原| 日韩一级欧美一级国产一级台湾 | 亚洲欧美日韩夜夜| 少妇二级| 超碰国产情侣自拍网| 人妻天堂综合网| 天天综合色电影| 99xav| 97操在线| 久热热| 久久黄色视频一区二区三区 | 9丨亚洲一区二区在线| 中文字幕精品一区二区精| 精品国产久热在线观看| 曰韩无码777| 日韩女优中文字幕| 亚洲精品欧洲精品| 中文字幕熟女人妻丝袜丝| 国产97色在线| 91人人| 搡老人老9丨女老熟人| 综合色久| 九九九九日本 | 粉嫩不卡一区二区性爱 | 99综合视频| 冬京热男人的天堂| 成人久久精品| 欧美性色欧美| 成人97人人超碰人人| 亚洲欧美成人在线| n1038 一二三区| 久热网| 强奸乱伦AV网址| 97色婷婷| 国产女同性恋视频| 久久伊人东京热| 9色国产精品一区粉嫩| 日本性爱少妇| 九九热超碰97亚洲最新香蕉| 床戏久久久av一区二区麻豆| 囯戸精品高潮呻吟旡码| 天天干少妇| 日本精品九九九| 97人妻免费中文字幕| 国产精品视频播放| 成人久久久| 人妻天天操天天爽视频免费| 伊人网高清| 欧美一级三级| 国产欧美另类久久久精品课程| 高清有码一区二区| 人妻熟女午夜精品在线| 国产熟码AV| 18禁网站在线播放| 18禁久极品美女久久哦哟呀!| 蜜桃臀一区二区aV| 日韩福利综合一区| 欧美黄色图片| 欧美一级久久久丰满| 天天舔天天日天天射| 人妻一区二区三区四区视频| 9久超碰| 亚洲综合91| 96AV精品| 极品欧美一区二区三区| 亚洲 欧美 小说| 久草福利在线资源站| 亚洲日韩东京热一区| 日本操大逼| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 成年人黄色| 欧美 亚洲 制服 精品| 亚洲精品一区二区日本| 国产农村妇女精品一| 午夜操一操| 国产女同性恋视频| 三级三级三级a级全黄三| AV在线播放网址| 久久精品国产免费观看99| 97 国产精品| 亚洲精品819| 91精品女厕偷拍视频| 亚洲精品九九九九九九| 久久精品一区二区三区不卡| 欧美日韩午夜精品一区二区三区| 久久久久ab| 亚洲图片偷拍视频区| 亚洲国产精品久久久久婷婷青年| 日日干夜夜欢| 91国产丝袜足交精品视频| 欧美,日韩,亚洲视频| 国产无码精品成人| 天天操天天舔| baiduhicn.com。| 91亚洲不卡一区| 久久国内| 国产无码精品无码| av天堂加勒比| 久9久| 人妻天堂综合网| 岛国大片在线观看网站入口| 人妻精品一区二区| 久久草视频污视频| 91精品电影18| 色婷五月| 亚洲国产高清福利视频| 欧美成熟性爱精品| 亚洲av资源| 超碰吊日色|