国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成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
返回資訊列表
国产农村妇女精品一二区| 激情啪啪视频| 久久精品操| 熟女精品日韩一区二区三区 | 中文字幕亚韩| 330Dv国产女人终合视频极品人与兽| 特污精品女优骚货黄色视频在线免费观看| 国精精品无码一二三区水多多| 欧美香蕉视xxx| 男人的天堂Va| 99操99| 色麻豆AV| av一区二区三区四区| 六九九九| 91视频综合| 欧美东京热精品A∨| 亚洲激情色片| 久久久久亚洲三级电影| 青青草吊丝| 色婷婷A V一二三四区麻豆综合| 八戒无码国产午夜福利| 精品久久久久黄少妇| 色波多| 麻豆国产原创AV色哟哟| 啊啊啊啊啊啊在线观看| 草草影院在线视频| 91M一社| 抽插无码高清一区| 俞拍久久国应视频| 天天色香欲综合网| 96一区二区| 一色网男人的天堂| 日本一区二区中文字幕久久| 久青草影院| 精品人妻15区| 高凊专区人人操| 97超碰色| wwe 天天干.com| 日韩三级在线观看网站| 国产四虎在线| 日日夜夜精品| 人妻丝袜肏逼| 91天堂色男人的天堂| 精品少妇人妻一区二区三区| 欧美性爱精品一区二区| 91中文字幕制服丝袜免费视频| 黑操B| 麻豆成人AV| 五月婷婷激情| 人人玩人人添人人澡免费| 三级网站超变态精品| 操逼国产免费| 麻豆天天躁天天揉揉AV| 亚洲中文字幕妇伦久久| 午夜人人操| 999九九精品| 久久久久亚洲Aⅴ无码| chaopen97久久| 日韩AV熟女乱伦| 国产馆| 婷婷丁香五月激情啪啪| 亚洲精品熟妇1区2区3区。| 久久人妻精品| 人妻另类 专区 欧美 制服| 蜜桃精品一区二区三区ww| 在线播放免费av福利片| 亚洲第一视频 欧美风情 日韩| 一本一道人妻久久一区二区三区| 天天色天天干天天射| 997色在线| 天天拍天天操| 中文字幕在线观看永久| 亚洲人久久久久日| 九草在线大香蕉| 国产a级午夜毛片| 78精品| 99999精品视频| 一区二区三区四区免费视频| 3PAV乱伦视频| 欧美精品亚洲精品日韩传电影| 色色色综合网| 日韩 欧美 另类 人妻| 天天天干977| 色呦呦、国产精品| 日本理论在线| 欧美中文字幕日韩在线| 99夜夜操| 99999国产| 熟妇人妻一区二区三区| 色色五月婷| 国产成年女黄特黄| 亚洲欧美综合图片| 夜夜操一区二区| 五月天激情国产综合婷婷婷| 岛国视频一二三区| 91亚洲网| 综合性视频99| 久久綜合很很很| 久久久一级| 韩国午夜理伦三级好看| 日本爽爽爽爽爽爽免费视频| 夜夜精品视频| 国产精品禁久久久精品| 1204金沙人妻懂旧版免费| 免费夜夜爱黄色视频毛片| 亚洲三区视频| 热思思免费视频| 国语精品对白| 精品女同一区| 九九九热精品| 久超超碰| 欧美韩国你懂得在线| 91狠| 99热成人| 五月天色色色| 最新国产亚洲精品精品国产亚洲综合| 国产久久成人| se吧提供91精品国产91久久久久久 | 综合久欧洲| 香蕉久久国产AV一区二区| 久久精品一区二区一8| 600国产精品视频| 茄子社区国产精品| 成人精品视频| 东京热av男人的天堂| 欧美亚洲20p| 五月天激情婷婷| 插穴性爱视频在线观看| 91综合在线| 91综合中文字幕| AV女资源| 91 天天综合| 1204人成网站色www| 中文字幕第23区| 亚洲情色一区二区三区| 少妇人妻精品| 屁股久久久久久久久| 人妻无码久久一区二区三区免费| 强上我不卡卡| 欧美无圣光在线| 免费的av网| 91在线美女| 91人妻丝袜无码| 久久久精品日本一道| 91久久国产综合久久| 一区二区三区在线资源| 国产日韩精品一区二区三区| 日日夜夜国产综合| 75大香蕉| 青青草久草AV| 久久久久九九九九九| 超碰吊日色| 亚洲色图片区| 91亚州| 日日骚中文字幕| 超碰99re| .精品人妻一区二区三| 人人操,人人插| 一区二区三区亚洲| 美女国产一区二区久久| 亚洲黄色影视| 91九色丨国产丨爆乳| 欧美内射少妇| 91伊人久久在线| 日比av无码| 亚洲色人阁| 国产内射爽爽大片| 啪啪啪精品视频| 免费看日产一区二区三区| 成人婷婷丁香| www.97在线| 亚洲男人的天堂网| 亚洲天天更新| 美女尤物人人操| 五月丁香激情综合| 熟女在线视频| 男人成人黄色视频在线观看免费下载| 亚洲视频精选| 园内精品自拍视频在线播放| 人妻熟女av国产网站| 素人播放一区| 熟女高潮合集-永久久久-成人AV | 日韩BBN| 啊啊啊好湿久久| 日韩欧美经典在线观看| 97色碰| 亚洲黄色AV电影| 女人的久久久| 中文字幕亚洲热播人妻| 国产又大又硬又长又粗| 亚洲天堂东京热| 丰满美女一级毛片在线播放| av天堂天堂av日韩| 国产亚洲精品自在线亚洲情侣| 久悠悠av| 亚洲欧美洲综合| 伊人热综合| 中文字幕日韩综合| 精品一区二区三区四区女| 综合欧美亚洲| 91狠狠综合久久| 人妻天天爽天天爽三区| 欧美天天综合网版| 亚洲无码一区成人免费午夜| 亚洲熟妇综合久久久久久| 91成人在线| 国产熟女少妇一区| 九九成人视频| 激情小说五月天| HEYZO高无码国产精品227| a片 xxxx受爽视频| 淫纸中9区| #NAME?| 日韩精品电影| 亚洲欧洲日产国产综合网| 9久综合网| 中文字幕熟女人妻丝袜丝| 综合久久久久久久综合网| aaa淫乱视频| 国产精品午夜AV完会免费| 国产又粗又又黄又猛| 97超碰碰碰| 成人性爱美曰韩| 又粗又长又爽在线观看| 8x福利精品第一福利视频导航| 成人国产视频在线观看| 亚洲综合色图欧美| 国产suv一区二区三区6| 男同专区一区二区三区在线| 91色夜| 激情文学亚洲| 欧美AB在线| 99人妻| 伊人影院日本| 国产毛片毛片4p懂色| 边做饭边操逼逼| 草莓精品视频在线免费观看| 国产综合网站在线播放 | 中国熟女老妇仑乱一区二区三区| 粉嫩av在线| 久久精品国产亚洲粉嫩| 中文自拍欧美影视| 日本午夜操逼| 亚洲少妇综合在线播放| 欧美日韩天堂| 亚洲伊人久久精品影院| 伊人网在线观看| 久久久熟女一区| 天天影视综合色| 一本色道综合久久欧美日韩精品| 99re28在线观看| 翔田千里A片一区二区| 日本成人在线不卡一区二区三区 | 日本色色色色色视频| 国产大学生高潮在线播放| 91一起操| 囯产精品久久久久久久久久梁医生 | 精彩久久中文| 日本三级韩三级99久久| 一本精品日本在线视频精品| 99夜夜操| 品亲网欧美品亲网| 天天射影院| 岛国网址国产| 欧美色狠| 精品无人区麻豆乱码1区2区图片| 91视频成人福利网站在线一区| 3P乱轮视频| 中文字幕欧美丝袜07资源| 在线啊啊啊啊| 四虎影院成年人片| 午夜国产成人精品视频| 成人性爱全视频观看| 黄色成人网久久久久久| 久久久一级| 青娱乐蜜桃臀AV色婷| 偷拍亚洲熟女视频播放| 国产精品人妻无码久久久互動交流| 久久99草| 亚洲情色图片区| 亚洲无码色| 国产精品免费美女视频| 欧亚乱色熟女一区二区| 久久久久久久久久久97| 天天操福利视频综合网站| 十八禁视频一区二区| 久久婷婷六月综合| 国产精品第一页国产大屁股视频免费区i| 欧美性91| 久操精品网| 色悠久久久av| 黄色片,com| 99精品丰满人妻无| 97色网| 97人人超| 国产日韩区| 懂色综合久久久| 99在线精品观看视频中文| 日韩人妻一二三区视频| 中文字幕五区| 在免费jIzzjIzz在线视频| ji熟女.com| J?P?NESEHD熟女熟妇伦| 欧美瑟综合| 超碰在线1234区| 嗯,啊。舔我逼| 亚洲涩涩| 60秒免费视频| 人干人人人操人人摸| 天天摸夜夜操视频| 99精品无码| 人人澡人人弄| 欧美亚州色的图| 涩涩久久精品| 色哟哟av| 久热伊人| 亚洲中文字幕在现观看| 高清国产无码av| 视频国产成人精品日本亚洲18 | 日韩免费性爱视频在线观看| 日本岛国黄色网址| 日本一区二区三区精品| 青青草伊人久久| 亚洲国产一级黄色视频| 999久久久精品国产| 五月亭亭六月丁香| 大香蕉天天看妹子| 综合色啪| 青青草国产欧美非洲黑人| 五月天黄色av| 高清无码在线播放网站| 五十路成人在线视频二区三区| 男人的天堂一区三区| 特污精品女优骚货黄色视频在线免费观看| 日本日皮视频逼| 99热精品在线观看| 欧美日韩一干二干| 久热婷婷| 波多野结衣一级视频| 热久久无毒不卡| 日韩另类色图| 东京热91| 久久中文字幕在线观看| 亚洲精品成人动漫在线| 亚洲AV无码成人精品久久| 欧美啪啪女女| 欧美亚洲涩涩| 啪啪自拍九九综合| 亚洲精品国产无码高清| 嗯嗯,好大,好爽,好骚| 人妻干天天| 亚洲精品97p| 欧美性爱97超碰| 人人摸人人叼| 影音先锋日本一区二区| 精品九九九九九九| 国产风韵犹存熟妇三区| 青青爽| 多乙久久久久久| 男人的天堂 在线一区| 伊人青青一区成人视频在线观看区| 好吊色在线观看| 久久99草| 国语对白露脸XXXXXX | 国产乱子伦一区二区三区在线观看| 99久久久无码国产精品性啊聊| 不卡一区二区日本视频| 熟妇熟女亚洲天堂网| 伊人久久在线视频观看| 夜草网站| 日韩小电影| 97草草| 啊啊啊好舒服好爽啊啊啊视频| 亚洲欧美色图小说| 精品女同一区| 亚洲,欧美,春色,另类| 超碰成人最新最好看| 国产亚洲色停停久久99精品91| 女人的天堂大香蕉网| 蜜臀av在线播放一区二区三区| 日韩久久.一级黄色片| 欧美视频一| 久久精品无码专区| 伊人国产AV| 99久在线精品99re8热视频在线| 熟女字幕| 日本免费不卡二区| 国产精品国产精品国产| 婷婷久久五月| 少妇三p| 国产精品99久久久www| 密臀AV在线| 国产精品日日摸夜夜添骚逼| 人妻嗯啊啊在线播放| 青青草男人天堂| 超碰人妻久久人妻中文97| 日韩影片中文字幕一区二区三区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 97亚洲欧美| www欧美91| 中文 人妻 制服| 先锋女优在线观看视频| 亚洲美女黄色| 啊啊嗯嗯好爽| 婷婷情色五月天| 欧美性爽xyxOOOO| 91女网站| 亚洲av无码成电影在线播放| 在线啊啊啊啊| 日韩欧美性吧婷婷乱伦大香蕉| 九九热AV| 国产精品自拍视频| 69XX一中文字幕人妻91| 国产综合网站在线播放 | 亚洲欧美激情在线视频| 久久激情综合| 欧美制服另类丝袜| 五月婷婷hd| 1024手机看片欧美日韩| 欧美性爱免费短视频| 婷婷国产精品一区二区| 18禁免费视频| 超碰色图| 亚洲人在线| 无码高清操逼网址| 果冻传媒A片一二三区| 26uuu国产免费观看| 欧成人在线| 国产一区96在线| 99婷婷一区二区| 特级丰满少妇一级AAAA爱毛片 | 欧美最大综合网| 超碰99在线| 凹凸视频在线一区二区| 九月丁香综合网| 思思久热在线精品66| 99精彩视频| 日韩欧美大力操| 97欧美| 亚洲精品99| 影音先锋日本乱伦| 亚洲欧美国产精品久久久久久久| 亚洲图片 91| 18禁精品网站在线看| 黄站在线免费观看| 中文字幕在线观看AV| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 搡老熟女国产1000部| 色综合加勒比| 亚洲操逼网| 精品97精品97| 97在线观看免费视频| 亚欧视频在线| 欧美三级一级| 亚洲高清综合网| 天天操夜夜嗨| caoni国产亚洲av| 久草电影网| 欧美 传媒 麻豆 日韩 偷拍| 99热啪啪| 日本高清_区二区三区 | 人妻社区男人天堂| 色五月婷婷久久| 国产av强奸美女| 337p大胆噜噜噜噜噜91Av| 五月综合久久| 天躁夜夜躁2021| 操逼逼福利视频| 无码免费一区二区三区啪啪| 97色操| 色欲日韩欧美在线一区| 蜜桃一区二区三区| 久操com| 九九九网页| 日本美女性生活久久久久久久| 欧美爆乳精品一区二区| 9Ⅰ超碰| 男女香蕉一区二区| 91网站视频在线观看| 天天影视网综合少妇| 日韩字幕一区| 欧美色狠| 91精品老女人| 淫荡少妇免费| 97操97色| 丰满美女一级毛片在线播放| 欧美日韩少妇色情| 亚洲?V无码专区在线电影| av2014 日韩在线中文字幕| 强奸乱伦大香蕉| 国产精品久久久久久久免牛肉蒲团| 性饥渴少妇av无码毛片| 欧美情色贴图| 亚洲天天操| 后入式视频国产自| 91性感网站| 狠色婷婷久久一区二区三区_| 殴美,日韩国产伦精品| 狠狠操狠狠插| 亚洲国产第一页综合视频| 亚洲中文字幕av| 婷婷激情综合网| 蜜桃一区二区三区| 国产丝袜欧美在线视频| 亚洲精品1区| 亚洲 欧美 第一页| 久久是精品| 亚洲97网站| 黑人性暴力毛片| 欧美综合骚| 欧美一区二区福利在线| 鸥美精品一区二区久久婷婷| 精品人妻一区二区三区视频在线| 国模久久在线| 日本高清一本二本免费不卡| 蜜臀Av一区二区三区| 男人的天堂久久久| 欧美18 在线观看| 免费人成在线观看网站品爱网| www.99色| 亚洲成人福利电影免费| 精品久久久不卡一区二区| 秋霞网—男女啪啪亚洲免费体验区| 欧美天天综| 国产精品香蕉热久久新品| 亚洲91射| 免费网色网站| 欧美日韩国产三级黄色| 女生久久网| 狠综合网| 天综合网| 日韩人妻一区二区精品| 精品成人久久久人人亚洲| 欧美玖玖爱免费玖玖| 日韩无码服务区| 熟女探花啪啪| h无码动漫在线观看| 在线观看色视频| 人妻丝袜无 码视频专区| 北条麻妃99精品青青久久| 麻豆一区在线| 免费看日产一区二区三区| 国产精品自拍视频| 人人妻人人澡人人爽久久av| 91插B网站| 玖玖超碰熟| 亚洲综合九| 久久九九一区二区三区成人| 另类图片五月| 午夜激情床戏激情| 嗯嗯啊中文字幕| 九九亚洲视频| 俺去也婷婷| 国产精品分类在线观看| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 欧美久久伊人| 欧美天堂亚洲电影院一区在线播放| 我要去看2个日本美女.com曹逼| 亚洲第一页色网| 91狠狠综合久久| 久久精品无码一区二区三区| 上床啊啊啊| 伦理第一页| 91熟女网| 神马久久久久久| 91精品国产综合久久久蜜臀酒店| 91综合中文字幕| 综合久久97| 明星性猛交ⅹxxx乱大交| 一区二区乱码福利| 日熟女| 亚洲自拍天堂| 亚洲精品人妻吞精av| 岛国片在线观看视频亚洲| 色综合久久久久| 欧日韩不卡视.频| 人妻久热在线| 国产精品密臀网在线观看| 91精品免费| 91热热色| 超碰精品日韩欧美国产| 日韩人妻播放| 色色操| 欧美 中文字幕 一区| 综合色色网| 天堂亚洲精品久久老牛| 日本操大逼| 伊人在线大香蕉视频久久| 黄片无码在线制服| 久久综合久久综合人久久夜精品| 欧美日韩99精品麻豆传媒| 97综合久久| 久久线上视频免费看| 久操凹凸视频| 日本三级小说中文字幕| 一区二区偷拍拍视频| 少妇的嫩逼图片| 激情文学网伊人| 亚洲天堂男人天堂网| 伊人亚洲国产一成人久久精品,久久| 老熟女91视频| 精品久久在线区一区| 18禁在线视频| 中文字幕视频免费| 国产版a级片直播在线| 日日骚av| 91在线综合网| 乱伦图一区| 日本亚欧爱爱| 女同在线视频一区| 国产午夜福利电影免费在线观看 | 亚洲欧美日韩夜夜| 人人看人人摸人人色| 亚洲欧美经典一区二区 | 欧美亚洲素人制服精品| AV大香蕉| 丰满丝袜少妇AV| 永久电影三级在线观看| 亚洲中文字幕精品久久久久久直播| www.四虎在线| 啊啊啊啊免费视频| 岛国艾薇凹凸视频天堂| 91jk色拍| 日韩欧美性爱电影在线观看| 天天看,天天做| 亚州久久9| 91制服丝袜中文字幕| 九色黄站| 91Chinese在线| 夜夜青青无码影院| 韩美日操逼| 91综合网| 久久亚洲天天做| 26uuu国产免费观看| 欧美成人免费在线观看| 亚洲91大片| 日本 欧美 亚中文字幕| av网站在线观看了| 久久久啊啊啊| 亚洲日韩乱码中文无码蜜桃臀网站| 欧美做爰无码A片视频| 日韩视频精品在线观看| 欧美美逼| 91美女视频在线免费观看| 亚洲国产日韩欧美熟妇在线| 亚洲图片色图欧美另类| 91亚洲网站| 91大神电影天堂| 97人人模人人爽人人| 五月天婷婷在线看| 花花AV导航| 啊啊啊啊好疼视频| 99xav| 男人天堂一区二区| 人人操人人大香蕉| 国产美女口爆吞精视频| 五十路三区在线| 国产又黄又爽| 综合网色| 男人的天堂com| 激情综合婷婷| 久久久久久久久久久久色网| 色综合五月天| 2017天天操| 日韩av熟女一区二区三区成人| 东京热毛片177b2viP| 色av中文字| 中文字幕97| 人妻精品一区二区全免费| 欧亚无码视频| 人妻免费观看| 97国产成人精品免费视频| 精品无码产区一区二| 99操视频| 亚洲天堂欧美| 成熟熟女国产精品一区二区| 日本不卡高清视频| 91操熟女视频| 天天躁日日躁AAAAXXXX国产| 久午视频| 国产人妻久久精品一区二区三区| 91狠狠狠| 天天影视综合色| 亚洲清纯综合| 91亚洲狠狠色| 亚州色图欧美| 人妻熟妇久草在线| 亚洲精品一区二区免费在线观看| 久久久久久久国产| 亚洲吊色| 麻豆传媒一区二区在线观看| 走光一区92下载| 超碰伊人在线| 偷拍新久久| 99热在线只有精品| 欧洲站一级二级三级h| 日日玩天天干| 中文字幕熟女人妻丝袜丝| 超碰在线日韩一区| 久久老熟女| 亚洲高清男人天堂| 久久亚洲一区女同性恋中文字幕| 啊啊在线| 欧美色图片| 天天看精品动漫视频一区| 成人三级片无码| 超碰人妻久久| 午夜精品久久久久久久| 亚洲中文字幕噜噜噜久久久| 综合久久六月久久婷婷| 97超碰色色| 天堂av2019| 嫩草影院在线观看精品 | 校园春色亚洲色图| 欧美青青视频| 久久五月份| 婷婷AV一区二区三区| 中文字幕国产在线天堂| 久区视频| 国产乱子伦一区二区三区免看| 91在线视频免费中出| 亚洲午夜福利视频| 激情无码日韩| 午夜成人爽爽爽爽A片李冰冰| 成年在线视频日本亚洲在线视频区精品江靖宇公司| 国产成人超碰在线| 免费成人在线观看91| 国产成人手机视频激情| 丁香激情网| 久久9亚洲| 久久久久921| 欧美成97爱| 最近2018中文字幕在线高清第一页| 免费A V在线播放| 中文字幕一区av| 亚洲情色在线| 亚洲a色| 色哟哟综合| 中文字幕成人理论在线| av天堂手机版追回 | 亚洲精品自拍| 五月婷婷久久综合| 粘花网06av视频| 精品一区二区2| 天天射天天| 大香网伊人久久综合| 成人综合视频久久| 久热最新在线杭州| 韩日性爱av| 任我爽视频在线观看| 久久久久国产精品人妻aⅴ天堂| 你想操日本小逼吗| 日本色色视频网站| 亚洲第一狼人丝袜美女另类| 国产午夜福利电影免费在线观看 | 中文字幕91综合| 91足交| 亚洲欧美中文日韩视频中国语| 一级黄碟在线观看| 91久| 伊人99热| 色五月AV在线| 欧美性生活免费网| 欧美日韩国产传媒在线精品| 亚洲中文字幕一区二区| 久久九九视频九九视频| 欧美 青青草| 亚洲激情视频| 长长久久免费视频| 欧美黑人日韩少妇色情| 3028国产精品| 禁止观看美女黄| 久久少妇| 超碰人人妻| 国产suv精品一区| www黄片免费看com| 色哟哟1区2区| 天天摸夜夜添无码小视频| 欧美日韩国产中文精品字幕自在自线,| 青青草色AV| 爱av免费| 啊啊啊 在线| 国产小黄片在线免费观看| 亚洲精品1区| 黄色av网站在线播放| 天天干天天日天天射黄色片| 久久精品人妻一区| 久久25| 天天看天天日天天操| 91天美| 99久久99久久免费精品蜜臀| 艹精品| 99操视频| 人妻黑丝袜电影| 在线天堂资源亚洲| 欧美国产欧美在线观看| av在线播放国产一区| 蜜桃成人1区2区3区| 超碰97精品| 青青草亚洲一区| 亚洲无码 国产无码| 亚洲天堂第一页| 强奸乱伦免费网站| 久久99精品九九久久久婷婷| 国产免a费看黄片在线| 日本中文字幕熟妇| 丰满人妻一区二区三区大胸懂色| 一级免费精品| 啪啪啪综合网| 久久婷婷电影网| 极品色社| 强被迫伦姧在线观看无码网站| 97国产天堂岛| 看日韩操逼| 亚洲图片欧美| 欧美激情一区二区| 日韩精品永久在线观看| 亚州黄站| 国产性刺激| 综合 欧美 亚洲 日本| 啊啊啊啊,啊啊好多水| 在线播放成人网站| 操国产逼| 大屁股国产在线视频| 色五月网址| 97视频网站| 啊嗯嗯啊好大好爽| 国产情侣自拍在线播放| 97超碰色色| 九九九九九九九九九九九九九九九女| 亚洲古典另类欧美在线| 射久久| 日韩久久艹| 91蜜桃婷婷狠狠久久综合9色| 国产精品点击进入在线影院高清| 激情小说亚洲图片| 亚洲激情av| 狠狠操官网| 久操免费电影| 伊人丝袜美腿高跟在线观看高清 | 任你艹| 超踫中文字幕| 中文字幕精品三级久久久| 亚洲国产成人精品999| 9热9热综合网| 天堂亚洲精品| 99热这里都是精品| 精…码一二三区| 午夜精品久久久久久久男人的天堂| 美女t无毒不卡不卡| 巨爆乳肉感一区二区三区竹菊影视 | 黑人精品久久97| 少妇啪啪自拍| 囯产精品强| 成人免费福利网站国产| 熟妇一区,二区,三区。| 日美免费黄片| 婷婷人妻激情| 国产伦乱91| 天天综合官网| 色鬼在线综合| 大香蕉一区二区在线观看.| 麻豆 亚洲 97| 亚洲欧美中文一区二区三| 91操人| 亚洲女毛多水多21P| 婷婷性网| 爽爽歪在线视频| 国产v片在线免费观看| 亚洲av夫妻操穴网| 亚洲 小说 欧美 激情 另类| 乱久久久| 少妇滛荡视频| 色波多| 91天天c| 色色五月婷婷| 国产一级舔足在线观看| 亚洲男人综合网| 不卡啪啪视频| 亚洲男人天堂AV| 日本欧美色| 亚洲精品国产精品乱码不99| 亚洲色婷婷久久久综合日本| 91欧美美女日韩国产婷婷| 两性综合网| 97AV在线观看| 嗯嗯嗯啊啊啊干死我吧| 免费观看有码高清视频| 豆花视频操逼网址| 精品少妇一区二区| 精精夜夜| 五月婷婷爱六月丁香色| 人人操人人摸人人骑| 欧美综合传媒| 67194无码不卡| 亚洲精品无码久久AV| 色逼综合| 99爱爱| 国产久久日韩网站导航| 国产精品亚洲一区二区三区四区| 免费成人自拍视频在线| 亚洲欧洲激情| 日欧美色| 91麻豆天美国产欧美| 乱伦一区二区三区‘| 97chaopengongkai| 国产美女激情| 青青草日逼视频| 亚洲强奸乱伦影视网| 欧美一级AAAAAAA| 精品97久久| 久操在97| 久久亚州高清| 日韩国语字幕| 五月天色色网站| 久久久免费的精品| 91在线视频国产网站| 一级AAA片一区二区三区| 91天美传媒精品| 久久手机视直播| 怡红院一区二区熟女人妻| 一级黄色视频网| 超清福利精品视频在线| 成人性交免费视屏| 久久国产精品视频| 欧美中文狠| 欧美精品偷拍| 激情图片伦理国产一区二区日韩| 婷婷五月天影院| 黄色高清无码无码破解免费暗网| 五月丁香六月综合缴清无码| 60秒不遮不挡| 玖玖综合网| 亚洲精品97久久中文字幕| 超碰久久草| 伊人午夜福利视频| 亚洲天天影视色综合| 蜜臀久久久国产| 丰满少妇一区二区三区四区观看 | 风骚少妇视频中文字幕| 亚洲欧美一区二区不卡视频播放 | 少妇久久久久久久久| 欧美一级二级三级| 亚洲 欧美 日韩另类 麻豆| 91亚.色| 欧美极品色| 国产丝袜一区二区三区| 五月天九九日国产精品一区二区三区| 蜜臀亚洲综合一二三四区| 大香蕉男人的天堂| 99天天超碰| 97欧美色资源| 九九久久一区二区三区| 九九热超碰97亚洲最新香蕉| 天天综合香 ld视频| 一区二区三区四区五区高清无码永久视频 | 伊人影院在线理论播放| 九一综合精品视品av| 色香阁在线| caopeng97人妻| 五月婷婷hd| 夜夜青青无码影院| 麻豆亚洲Av成人无码一区精品| 青青草亚洲一区| 狠狠爱夜夜| 五月婷婷hd| 亚洲av热热色| 亚洲日韩黑丝| 亚洲一区中文字幕| 亚洲欧美电影| 激情五月天插| 国产理论视频在线播放| 一级性爱aaaa| 思思热在线观看| 久久AV无码1区2区3区| 亚洲综合贴图91| 欧美另类天堂| 9久精品| 日本三级A片网站com| 凹凸视频特色日本特黄| 97蜜桃综合| 综合97亚洲| 日韩猛交| 婷婷超| 久久精品国产亚洲AV片多多| 色综合91| 97久久免费| 久久99九九九九6666免费观看软件| 精品人妻免费观看| 这里只有精品视频在线观看麻豆| 色五月综合网| 操我啊啊啊啊啊| 欧美黑人日韩少妇色情| 蜜乳AV免费观看| 国产精品成人福利在线| 人妻精品一区二区全免费| 97精品免费视频网站| 精品一区二区三区麻豆| 欧美性爱第1 页| 亚洲最新av无码成人精品区| 午夜精品一区二区三区三上悠亚| 60秒免费小视频| 噜噜噜亚洲精| 妇女性内射冈站HDWWWCOM| 国产成人无码网站在线视频| 免费农村成人少妇人妻Aa一区二区视频| 玖玖超碰熟| 日韩一级久久毛片| 99综合| 精品人妻伦一区二区三区久久| 操逼A∨| 无码视频黄色网战| 精品人妻一区春色| 69一区二区三区| 新版天堂中文资源8在线| 热久久99999| 99re9这里只有精品| 亚洲色91| 综合网欧| 国产成人无码啪| 情色五月天就去干| 东京热一区二区中文字幕| 中文字幕美女91| 亚州操操穴网| 全国男人天堂网| 蜜桃av综合网发布| 一级黄碟| 人人 操人人 操人人| 国产精品视频电影| 亚洲图片另类| 大香蕉婷婷| 97久久久网站| www.色操逼| 超碰在线第一页| 久久精品国产亚洲AV嘿嘿| 鸥美插入视频| 亚洲无码偷拍| 96精品久久久久中文字幕| 中文字幕后石码四区五区| 国产精品免费视频不卡| 久久成人网站| www.99中文字幕| 亚洲视频二区| h无码动漫在线观看| 国产天天看| 国产精品亚洲天堂网址| 国产精品天干天干综合网麻豆| 大学生美女口爆| 97精品一二区| 国产精品久久久久久久久久梁医生| 日韩美一区| 小说区 图片区色 综合区| 激情天天视频| 96精品一区| 蜜色网色哟哟| 蜜臀操逼黄色视频操的好爽| 亚洲天堂资源网| 国产亚洲99久久精品熟| 亚洲情色五月天 | 屁股久久久久久久久| 欧美同性恋 的搜索结果 - 91n| 丁香六月啪啪| 一级黄色视频网| 日韩久射综合| 狠狠婷婷亚洲中文综合久久| 亚洲综合影片| 亚洲人妻在线一区| 亚洲天堂人妻一区二区| 日韩性爱小视频| 欧美在线综合| 亚洲精品欧洲精品| 天天天做天天天爱天天天爽| 多毛小伙内射老太婆| 99精品综合久久久久五月天| 亚洲黑丝在线| 国产捆绑一区| 91美女色视频亚洲| 91久久久久久久久18| 0755午夜福利视频| 国产精品久久发布| 国产精品久久99日日| 果冻传媒一区二区三区| 天天天天操| 隔壁邻居波多野结衣中文字幕| 亚热日本熟女| 久久午夜伦| 日韩欧美大力操| 色九九九九九九| 亚欧精品久久久久久久久久久| 久久亚洲中文字幕视频| 97超级色碰碰| 性色一线| 思思热在线cao| 久久久人妻| 人人超碰在线观看黄| 啊视频在线| 国产强奸乱伦xd| 97精品视频在线| 18岁禁 茉莉成人久久| 91精品黄在线观看| 最新亚洲黄色免费电影| 国产精品久久久久久夜夜夜夜| 鲁鲁色综合网| 国产精品宅男免费| 久久精品国产亚洲5555| chaopen97久久| 加勒比AV网| 色综合久| 免费作爱一级视频| 欧美日韩大香蕉| 欧美偷| 麻豆国产成人精品| 人妻久热在线| 欧美丰满熟妇XXXX性ppX人交| 国产多人在线观看视频| 五月情色天| 96久久久精品| 国产精品91ai| 精品国产自在在线99| 久久亚洲av成人无码国产| 久久的免费性爱视频| 亚洲狠| 啊啊啊操死我了| 999综合色| 中文字幕片| 97久久久久久久精| 亚洲少妇综合在线播放| 国产美女销魂在线观看不卡| 久久男人的天堂| 亚洲双插| 男人亚洲91首页在线| 99热这里只有精品地址 | 成人精品一区二区三区| 99色在线观看| 欧美一级久久久久久久大片动画| 中文无线日韩一区| 国产精品嫩草影院免费| 久久精品中文字幕观看| 国产熟女免费观看久久| 久操网视频| 久久中文字幕女同性恋一区| 九九AV| 久热91| 大香蕉丝袜一级片| 日本五十路熟女一区二区| 亚洲日韩美女丝袜美腿人妻视频| 中字一区| 欧美人人天天网| 亚洲男人的天堂网| 色老久久| 亚洲图片 激情小说| 超碰97在线中文| 日韩综合97P| 蜜桃狠狠色伊人亚洲综合 | 高潮内射在线| 国产精品久久发布| 精爱久久| 激情图片亚洲色图| 330Dv国产女人终合视频极品人与兽| 日逼五月天|