国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Spring Boot實戰(zhàn):構(gòu)建小區(qū)團(tuán)購管理系統(tǒng)的核心技術(shù)解析

Spring Boot實戰(zhàn):構(gòu)建小區(qū)團(tuán)購管理系統(tǒng)的核心技術(shù)解析 簡介這是一套面向Java初學(xué)者與畢業(yè)設(shè)計學(xué)生的小區(qū)團(tuán)購管理系統(tǒng)實戰(zhàn)項目源碼基于SpringBoot后端框架與Vue前端技術(shù)棧構(gòu)建解決社區(qū)場景下商品發(fā)布、訂單管理、用戶協(xié)同采購等核心業(yè)務(wù)需求。資源包含826個文件涵蓋122個Java后端邏輯類、62個Vue組件頁面、160個JS交互腳本、79個GIF動效素材及35個JPG/PNG圖片資源輔以MySQL數(shù)據(jù)庫腳本與MyBatisPlus持久層配置整體壓縮包大小為25.55MB。目錄結(jié)構(gòu)完整呈現(xiàn)從緒論、技術(shù)選型、系統(tǒng)分析、數(shù)據(jù)庫設(shè)計到各模塊實現(xiàn)的全流程含用戶信息管理、圖片/視頻素材上傳等關(guān)鍵功能代碼。已有63人學(xué)習(xí)下載適合用于課程設(shè)計、畢設(shè)開發(fā)或SpringBootVue全棧能力訓(xùn)練可直接運行調(diào)試并快速理解B/S架構(gòu)下團(tuán)購系統(tǒng)的典型分層設(shè)計與前后端聯(lián)調(diào)邏輯。1. 項目概述從零到一構(gòu)建一個小區(qū)團(tuán)購管理系統(tǒng)最近幾年社區(qū)團(tuán)購的模式可以說是遍地開花尤其是在一些大型社區(qū)里由熱心業(yè)主或團(tuán)長牽頭組織的團(tuán)購解決了大家日常采購的不少痛點。但隨之而來的問題也很明顯訂單統(tǒng)計靠接龍、收款對賬靠手動、商品信息更新不及時團(tuán)長們常常忙得焦頭爛額效率低下還容易出錯。作為一個有多年Java后端開發(fā)經(jīng)驗的從業(yè)者我意識到是時候用技術(shù)手段來解放這些“民間團(tuán)長”的生產(chǎn)力了。于是我決定動手設(shè)計并實現(xiàn)一個輕量級、易部署、功能完備的小區(qū)團(tuán)購管理系統(tǒng)。這個項目的核心目標(biāo)很明確為小區(qū)內(nèi)的團(tuán)購活動提供一個數(shù)字化的管理平臺。它需要覆蓋從商品上架、訂單收集、支付對賬到配送核銷的全流程同時兼顧團(tuán)長管理員和普通住戶用戶兩種角色的使用體驗。在技術(shù)選型上我毫不猶豫地選擇了Java Spring Boot這套經(jīng)典組合。Spring Boot的“約定大于配置”理念和快速啟動能力能讓我們把精力集中在業(yè)務(wù)邏輯的開發(fā)上而不是繁瑣的框架整合。配合MyBatis-Plus、Redis、MySQL這些成熟的技術(shù)??梢钥焖贅?gòu)建出一個穩(wěn)定、可擴(kuò)展的后端服務(wù)。這個系統(tǒng)不僅僅是CRUD的簡單堆砌它涉及到一些典型的電商業(yè)務(wù)場景比如庫存的并發(fā)控制、訂單狀態(tài)的流轉(zhuǎn)、微信支付或支付寶的集成、以及基于角色的權(quán)限管理。接下來我將從整體設(shè)計、核心模塊實現(xiàn)、踩坑實錄以及部署上線這幾個方面為你完整拆解這個項目的構(gòu)建過程。無論你是想學(xué)習(xí)Spring Boot實戰(zhàn)還是正打算為你的小區(qū)開發(fā)一個類似的管理工具相信這篇詳盡的記錄都能給你帶來直接的參考價值。2. 系統(tǒng)整體架構(gòu)與核心設(shè)計思路在動手寫代碼之前合理的架構(gòu)設(shè)計是保證項目后期可維護(hù)、可擴(kuò)展的關(guān)鍵。對于這個小區(qū)團(tuán)購系統(tǒng)我采用了經(jīng)典的分層架構(gòu)和前后端分離模式后端提供RESTful API前端可以是Vue、React或小程序負(fù)責(zé)展示和交互。這樣做的最大好處是職責(zé)清晰前后端開發(fā)可以并行也便于未來多端適配比如同時開發(fā)Web管理端和住戶用的小程序。2.1 技術(shù)棧選型與考量為什么是這套技術(shù)棧每一個選擇背后都有其實際考量。后端框架Spring Boot 2.7.x。這是Java領(lǐng)域微服務(wù)開發(fā)的事實標(biāo)準(zhǔn)。它內(nèi)嵌了Tomcat服務(wù)器通過Starter依賴能一鍵集成絕大多數(shù)常用組件如數(shù)據(jù)庫、緩存、安全等。我選擇2.7.x這個長期支持版本是因為它足夠穩(wěn)定社區(qū)資源豐富避免了使用最新版本可能遇到的未知坑。持久層MyBatis-Plus MySQL。MyBatis-Plus在MyBatis的基礎(chǔ)上做了大量增強提供了通用的Mapper和Service能極大減少單表CRUD的代碼量。對于團(tuán)購系統(tǒng)里大量的商品、訂單、用戶數(shù)據(jù)關(guān)系型數(shù)據(jù)庫MySQL是可靠的選擇。同時使用MyBatis-Plus的樂觀鎖插件能優(yōu)雅地處理庫存扣減這類并發(fā)問題。緩存Redis。主要用于兩類場景一是緩存熱點數(shù)據(jù)如首頁的商品列表、分類信息減輕數(shù)據(jù)庫壓力二是存儲用戶登錄的Token采用JWT方案時可以將Token加入黑名單或存儲額外信息以及用作分布式鎖確保在高并發(fā)下單時庫存扣減的準(zhǔn)確性。權(quán)限安全Spring Security JWT。Spring Security提供了強大且靈活的安全框架。結(jié)合JWTJSON Web Token實現(xiàn)無狀態(tài)的認(rèn)證授權(quán)是當(dāng)前主流。用戶登錄后后端生成一個包含其身份和權(quán)限信息的Token前端在后續(xù)請求中攜帶后端驗證Token有效性并解析出用戶信息無需在服務(wù)端保存會話。其他工具Lombok通過注解自動生成Getter/Setter、構(gòu)造方法等讓實體類代碼更簡潔。Hutool一個Java工具類庫提供了很多實用的方法比如日期處理、加密解密、HTTP客戶端等能避免重復(fù)造輪子。Swagger/knife4j自動生成API文檔前后端聯(lián)調(diào)和測試時非常方便。注意技術(shù)選型沒有絕對的好壞只有是否適合當(dāng)前場景。對于小區(qū)團(tuán)購這種量級這套技術(shù)棧在開發(fā)效率、運行性能和團(tuán)隊學(xué)習(xí)成本上取得了很好的平衡。如果預(yù)估并發(fā)量極高可以考慮引入Spring Cloud Alibaba套件做微服務(wù)拆分但初期務(wù)必避免過度設(shè)計。2.2 核心業(yè)務(wù)模塊劃分根據(jù)業(yè)務(wù)流程我將系統(tǒng)后端劃分為以下幾個核心模塊每個模塊對應(yīng)一個代碼包package職責(zé)單一用戶模塊 (user)負(fù)責(zé)住戶的注冊、登錄、個人信息管理。這里區(qū)分了普通用戶和團(tuán)長管理員團(tuán)長擁有額外的管理權(quán)限。商品模塊 (product)涵蓋商品分類、商品信息的增刪改查、商品上下架、庫存管理。商品信息包括標(biāo)題、圖片、規(guī)格、價格、起團(tuán)數(shù)量等。團(tuán)購活動模塊 (campaign)一次團(tuán)購可以看作一個活動。它關(guān)聯(lián)了具體的商品并設(shè)置了活動開始時間、結(jié)束時間、成團(tuán)條件如最少參團(tuán)人數(shù)等。這是整個系統(tǒng)的核心驅(qū)動單元。訂單模塊 (order)用戶參與團(tuán)購即生成訂單。這是最復(fù)雜的模塊之一涉及訂單創(chuàng)建、支付集成第三方支付、取消、退款、發(fā)貨、確認(rèn)收貨等完整的狀態(tài)流轉(zhuǎn)。購物車模塊 (cart)雖然團(tuán)購有時是直接下單但提供一個購物車功能能讓用戶體驗更好支持批量下單。地址模塊 (address)用戶管理自己的收貨地址。權(quán)限與安全模塊 (security)集成Spring Security和JWT處理登錄認(rèn)證、接口權(quán)限攔截。公用模塊 (common)存放全局配置、工具類、統(tǒng)一返回結(jié)果封裝、異常處理、常量定義等。這種模塊化劃分使得代碼結(jié)構(gòu)清晰便于團(tuán)隊協(xié)作和后續(xù)的功能迭代。例如當(dāng)需要增加一個“拼團(tuán)提醒”功能時可以很明確地在campaign模塊下進(jìn)行擴(kuò)展。3. 數(shù)據(jù)庫設(shè)計與關(guān)鍵表結(jié)構(gòu)解析數(shù)據(jù)庫設(shè)計是系統(tǒng)的基石設(shè)計得好后期開發(fā)事半功倍。我遵循了第三范式的基本理念同時針對性能做了適當(dāng)?shù)姆捶妒皆O(shè)計如冗余字段。以下是幾個核心表的設(shè)計思路3.1 用戶表 (sys_user)這張表存儲所有系統(tǒng)用戶包括普通住戶和團(tuán)長。通過一個user_type字段來區(qū)分角色如0-普通用戶1-團(tuán)長/管理員。密碼存儲務(wù)必使用加密算法如BCrypt進(jìn)行哈希處理絕對不要明文存儲。CREATE TABLE sys_user ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主鍵, username varchar(50) NOT NULL COMMENT 用戶名如手機(jī)號, password varchar(100) NOT NULL COMMENT 加密后的密碼, nickname varchar(50) DEFAULT NULL COMMENT 用戶昵稱, avatar varchar(255) DEFAULT NULL COMMENT 頭像URL, phone varchar(20) DEFAULT NULL COMMENT 手機(jī)號, user_type tinyint(4) NOT NULL DEFAULT 0 COMMENT 用戶類型0-普通用戶1-團(tuán)長, status tinyint(4) NOT NULL DEFAULT 1 COMMENT 狀態(tài)0-禁用1-正常, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 創(chuàng)建時間, update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新時間, PRIMARY KEY (id), UNIQUE KEY uk_username (username), KEY idx_phone (phone) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用戶表;3.2 商品表 (product) 與商品分類表 (product_category)商品分類表是一個樹形結(jié)構(gòu)支持多級分類如水果-進(jìn)口水果-車?yán)遄?。商品表則關(guān)聯(lián)分類并包含豐富的商品屬性。CREATE TABLE product ( id bigint(20) NOT NULL AUTO_INCREMENT, category_id bigint(20) NOT NULL COMMENT 分類ID, name varchar(200) NOT NULL COMMENT 商品名稱, sub_title varchar(500) DEFAULT NULL COMMENT 商品副標(biāo)題, main_image varchar(500) DEFAULT NULL COMMENT 主圖, sub_images text COMMENT 子圖JSON數(shù)組, detail text COMMENT 商品詳情富文本, specs json DEFAULT NULL COMMENT 規(guī)格JSON如[{key:重量,value:5kg},{key:產(chǎn)地,value:智利}], price decimal(10,2) NOT NULL COMMENT 單價, stock int(11) NOT NULL DEFAULT 0 COMMENT 庫存, status tinyint(4) NOT NULL DEFAULT 1 COMMENT 狀態(tài)0-下架1-上架, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_category_status (category_id,status), KEY idx_status (status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT商品表;實操心得specs字段使用MySQL的JSON類型存儲商品規(guī)格非常靈活前端解析也方便。sub_images字段存儲圖片URL的JSON數(shù)組避免了為商品圖片單獨建表簡化了查詢。但要注意JSON字段的索引和查詢效率問題如果規(guī)格查詢條件非常復(fù)雜可能需要考慮更結(jié)構(gòu)化的設(shè)計。3.3 團(tuán)購活動表 (campaign)這是連接商品和訂單的橋梁是業(yè)務(wù)的核心。CREATE TABLE campaign ( id bigint(20) NOT NULL AUTO_INCREMENT, product_id bigint(20) NOT NULL COMMENT 商品ID, title varchar(200) NOT NULL COMMENT 活動標(biāo)題, start_time datetime NOT NULL COMMENT 開始時間, end_time datetime NOT NULL COMMENT 結(jié)束時間, group_size int(11) NOT NULL COMMENT 成團(tuán)人數(shù)要求, current_size int(11) NOT NULL DEFAULT 0 COMMENT 當(dāng)前參團(tuán)人數(shù), price decimal(10,2) NOT NULL COMMENT 團(tuán)購價, status tinyint(4) NOT NULL DEFAULT 0 COMMENT 狀態(tài)0-未開始1-進(jìn)行中2-已結(jié)束(成功)3-已結(jié)束(失敗), create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_product_time (product_id,start_time,end_time), KEY idx_status (status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT團(tuán)購活動表;狀態(tài)流轉(zhuǎn)邏輯一個定時任務(wù)可以使用Spring的Scheduled注解會定期掃描此表根據(jù)當(dāng)前時間和start_time、end_time以及current_size與group_size的對比自動更新status字段。例如時間到了start_time狀態(tài)從0變?yōu)?時間過了end_time如果current_size group_size狀態(tài)變?yōu)?成功否則變?yōu)?失敗。3.4 訂單表 (order) 與訂單明細(xì)表 (order_item)考慮到一個訂單可能包含多個商品雖然團(tuán)購常見是單商品但設(shè)計上預(yù)留擴(kuò)展性我采用了主-明細(xì)結(jié)構(gòu)。訂單表記錄訂單總覽訂單明細(xì)表記錄具體商品。CREATE TABLE order ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 訂單ID, order_no varchar(32) NOT NULL COMMENT 訂單號唯一業(yè)務(wù)生成, user_id bigint(20) NOT NULL COMMENT 用戶ID, campaign_id bigint(20) DEFAULT NULL COMMENT 參與的團(tuán)購活動ID, total_amount decimal(10,2) NOT NULL COMMENT 訂單總金額, pay_amount decimal(10,2) NOT NULL COMMENT 實際支付金額, pay_type tinyint(4) DEFAULT NULL COMMENT 支付方式1-微信2-支付寶, status tinyint(4) NOT NULL DEFAULT 0 COMMENT 訂單狀態(tài)0-待支付1-已支付2-已發(fā)貨3-已完成4-已取消5-退款中6-已退款, delivery_info json DEFAULT NULL COMMENT 配送信息JSON包含收貨人、電話、地址等, pay_time datetime DEFAULT NULL COMMENT 支付時間, delivery_time datetime DEFAULT NULL COMMENT 發(fā)貨時間, end_time datetime DEFAULT NULL COMMENT 交易完成時間, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_order_no (order_no), KEY idx_user_status (user_id,status), KEY idx_campaign (campaign_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT訂單表;訂單號生成策略這是一個容易忽略的細(xì)節(jié)。我采用的方案是年月日時分秒6位隨機(jī)數(shù)用戶ID后4位例如202405201430259876541234。這樣既保證了唯一性又一定程度上包含了時間信息和用戶信息排查問題時比較方便??梢允褂肏utool的IdUtil或自定義工具類生成。4. 核心業(yè)務(wù)邏輯實現(xiàn)與代碼詳解有了清晰的數(shù)據(jù)結(jié)構(gòu)接下來就是實現(xiàn)核心業(yè)務(wù)邏輯。我將挑幾個最具代表性的功能點結(jié)合代碼講解其中的關(guān)鍵技術(shù)和避坑點。4.1 用戶認(rèn)證與JWT集成首先在pom.xml中引入Spring Security和JWT相關(guān)依賴。dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-security/artifactId /dependency dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt-api/artifactId version0.11.5/version /dependency dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt-impl/artifactId version0.11.5/version scoperuntime/scope /dependency dependency groupIdio.jsonwebtoken/groupId artifactIdjjwt-jackson/artifactId version0.11.5/version scoperuntime/scope /artifactId然后創(chuàng)建一個JwtUtil工具類負(fù)責(zé)Token的生成和解析。Component public class JwtUtil { Value(${jwt.secret}) // 從配置文件中讀取密鑰 private String secret; Value(${jwt.expiration}) // Token有效期如 7天 private Long expiration; // 生成Token public String generateToken(String username, Long userId, Integer userType) { MapString, Object claims new HashMap(); claims.put(userId, userId); claims.put(userType, userType); return Jwts.builder() .setClaims(claims) .setSubject(username) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() expiration * 1000)) .signWith(SignatureAlgorithm.HS512, secret) .compact(); } // 從Token中解析用戶名 public String getUsernameFromToken(String token) { return getClaimsFromToken(token).getSubject(); } // ... 其他解析方法如解析userId, userType // 驗證Token是否有效 public Boolean validateToken(String token, UserDetails userDetails) { final String username getUsernameFromToken(token); return (username.equals(userDetails.getUsername()) !isTokenExpired(token)); } private Boolean isTokenExpired(String token) { final Date expiration getExpirationDateFromToken(token); return expiration.before(new Date()); } }接著需要配置Spring Security。我創(chuàng)建了一個SecurityConfig類繼承WebSecurityConfigurerAdapterSpring Boot 2.7.x仍支持或?qū)崿F(xiàn)SecurityFilterChainBeanSpring Security 5.7推薦方式。這里展示后一種更現(xiàn)代的方式Configuration EnableWebSecurity public class SecurityConfig { Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http // 禁用CSRF因為我們是前后端分離使用JWT無狀態(tài)認(rèn)證 .csrf().disable() // 設(shè)置會話管理為無狀態(tài) .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() // 配置請求授權(quán)規(guī)則 .authorizeRequests() .antMatchers(/api/auth/login, /api/auth/register, /swagger-ui/**, /v3/api-docs/**).permitAll() // 登錄注冊和API文檔放行 .antMatchers(/api/admin/**).hasRole(ADMIN) // 管理員接口需要ADMIN角色 .anyRequest().authenticated() // 其他所有請求都需要認(rèn)證 .and() // 添加我們自定義的JWT過濾器 .addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class) // 處理異常如未認(rèn)證、權(quán)限不足 .exceptionHandling() .authenticationEntryPoint(new JwtAuthenticationEntryPoint()) .accessDeniedHandler(new JwtAccessDeniedHandler()); return http.build(); } Bean public JwtAuthenticationFilter jwtAuthenticationFilter() { return new JwtAuthenticationFilter(); } // 密碼加密器 Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }自定義的JwtAuthenticationFilter會攔截所有請求從Header中提取Token并進(jìn)行驗證如果有效則將用戶信息設(shè)置到Spring Security的上下文中供后續(xù)業(yè)務(wù)邏輯使用。踩坑實錄務(wù)必在Spring Security配置中放行Swagger相關(guān)的路徑/swagger-ui/**,/v3/api-docs/**否則本地調(diào)試時連API文檔都打不開。另外JwtAuthenticationEntryPoint和JwtAccessDeniedHandler需要自定義以返回統(tǒng)一的JSON格式錯誤信息而不是默認(rèn)的登錄頁或403頁面。4.2 團(tuán)購下單與庫存并發(fā)控制這是整個系統(tǒng)最核心、也最容易出問題的業(yè)務(wù)。用戶下單時需要檢查活動是否進(jìn)行中、庫存是否充足然后扣減庫存、創(chuàng)建訂單。在高并發(fā)場景下多個用戶同時購買最后一件商品會導(dǎo)致“超賣”。方案一數(shù)據(jù)庫樂觀鎖在商品表product中增加一個版本號字段version。更新庫存時帶上版本號作為條件。// Product實體類 public class Product { private Long id; private String name; private Integer stock; private Integer version; // 版本號 // ... getters and setters } // Service層更新庫存方法 Transactional public boolean reduceStock(Long productId, Integer quantity) { Product product productMapper.selectById(productId); if (product null || product.getStock() quantity) { throw new BusinessException(商品不存在或庫存不足); } // 使用MyBatis-Plus的UpdateWrapper在更新時檢查版本號 UpdateWrapperProduct updateWrapper new UpdateWrapper(); updateWrapper.eq(id, productId) .eq(version, product.getVersion()) // 樂觀鎖核心版本號必須匹配 .setSql(stock stock - quantity , version version 1); int rows productMapper.update(null, updateWrapper); return rows 0; // 如果rows0說明版本號不匹配更新失敗被其他線程搶先修改了 }在訂單創(chuàng)建邏輯中調(diào)用reduceStock如果返回false則拋出“庫存更新失敗請重試”的異常提示用戶重新下單。方案二Redis分布式鎖對于秒殺級別的超高并發(fā)數(shù)據(jù)庫樂觀鎖可能壓力較大??梢允褂肦edis的SETNX命令或Redisson客戶端實現(xiàn)分布式鎖確保同一時間只有一個線程能執(zhí)行扣減庫存的核心邏輯。public boolean reduceStockWithRedisLock(Long productId, Integer quantity) { String lockKey product_lock: productId; String requestId UUID.randomUUID().toString(); // 唯一標(biāo)識本次請求用于安全釋放鎖 try { // 嘗試獲取鎖設(shè)置過期時間防止死鎖 Boolean locked redisTemplate.opsForValue().setIfAbsent(lockKey, requestId, 10, TimeUnit.SECONDS); if (Boolean.TRUE.equals(locked)) { // 獲取鎖成功執(zhí)行庫存扣減 Product product productMapper.selectById(productId); if (product.getStock() quantity) { return false; } // 扣減庫存這里可以不用樂觀鎖因為鎖保證了串行化 product.setStock(product.getStock() - quantity); productMapper.updateById(product); return true; } else { // 獲取鎖失敗稍后重試或直接返回失敗 return false; } } finally { // 釋放鎖確保是同一個請求釋放的避免誤刪其他請求的鎖 if (requestId.equals(redisTemplate.opsForValue().get(lockKey))) { redisTemplate.delete(lockKey); } } }實操心得對于小區(qū)團(tuán)購這種場景并發(fā)量通常不會達(dá)到秒殺級別使用數(shù)據(jù)庫樂觀鎖是簡單有效的首選方案代碼清晰對數(shù)據(jù)庫壓力也相對可控。如果真遇到極端情況再考慮引入Redis分布式鎖。但無論用哪種方案一定要在業(yè)務(wù)層給用戶友好的提示比如“當(dāng)前購買人數(shù)過多請稍后再試”而不是直接拋出晦澀的異常。4.3 微信支付集成與回調(diào)處理集成第三方支付是電商系統(tǒng)的標(biāo)配。以微信支付JSAPI用于小程序或公眾號H5支付為例步驟大致如下配置商戶信息在application.yml中配置商戶號mchid、API密鑰apiV3Key、證書路徑等。統(tǒng)一下單用戶提交訂單后后端調(diào)用微信支付統(tǒng)一下單接口生成預(yù)支付交易會話標(biāo)識prepay_id。返回支付參數(shù)將prepay_id及其他必要參數(shù)如時間戳、隨機(jī)串、簽名按照前端要求小程序或H5的格式組裝好返回給前端。前端調(diào)起支付前端使用返回的參數(shù)調(diào)起微信支付界面。處理支付回調(diào)用戶支付成功后微信服務(wù)器會異步通知我們的后端一個特定的回調(diào)URL。這是最關(guān)鍵也是最容易出錯的一步。支付回調(diào)接口的實現(xiàn)要點驗證簽名必須使用微信支付提供的證書和算法驗證回調(diào)請求的簽名確保請求來自微信官方防止偽造支付成功通知。處理冪等性同一個支付訂單微信可能會多次發(fā)送回調(diào)。我們的接口必須保證即使收到重復(fù)通知業(yè)務(wù)邏輯也只執(zhí)行一次比如只將訂單狀態(tài)從“待支付”改為“已支付”一次??梢酝ㄟ^在數(shù)據(jù)庫中記錄微信支付訂單號transaction_id或使用Redis記錄已處理的通知ID來實現(xiàn)。異步處理驗證簽名和冪等性檢查通過后應(yīng)盡快返回SUCCESS的XML響應(yīng)給微信然后通過消息隊列或異步線程去執(zhí)行后續(xù)耗時的業(yè)務(wù)邏輯如更新訂單狀態(tài)、發(fā)送支付成功通知等避免因業(yè)務(wù)處理超時導(dǎo)致微信認(rèn)為回調(diào)失敗而重復(fù)通知。PostMapping(/wxpay/notify) public String wxPayNotify(HttpServletRequest request) throws Exception { // 1. 獲取請求體微信發(fā)送的XML數(shù)據(jù) String body HttpUtils.readData(request); // 2. 將XML轉(zhuǎn)換為Map并驗證簽名此處省略具體驗簽代碼需使用微信支付SDK MapString, String notifyMap WxPayUtil.xmlToMap(body); boolean signatureValid wxPayService.isSignatureValid(notifyMap); if (!signatureValid) { return WxPayUtil.mapToXml(Map.of(return_code, FAIL, return_msg, 簽名失敗)); } // 3. 處理業(yè)務(wù) String orderNo notifyMap.get(out_trade_no); // 我們的商戶訂單號 String transactionId notifyMap.get(transaction_id); // 微信支付訂單號 // 3.1 冪等性檢查查詢本地訂單判斷是否已處理過 Order order orderService.getByOrderNo(orderNo); if (order ! null order.getStatus().equals(OrderStatus.PAID.getCode())) { // 訂單已支付直接返回成功 return WxPayUtil.mapToXml(Map.of(return_code, SUCCESS, return_msg, OK)); } // 3.2 更新訂單狀態(tài)為已支付記錄微信支付單號等 boolean updateSuccess orderService.handlePaySuccess(orderNo, transactionId); if (updateSuccess) { // 3.3 可以在這里觸發(fā)異步事件如發(fā)送短信、更新團(tuán)購活動參團(tuán)人數(shù)等 eventPublisher.publishEvent(new OrderPaidEvent(this, orderNo)); return WxPayUtil.mapToXml(Map.of(return_code, SUCCESS, return_msg, OK)); } else { return WxPayUtil.mapToXml(Map.of(return_code, FAIL, return_msg, 處理失敗)); } }5. 后臺管理功能實現(xiàn)要點團(tuán)長管理員需要一個后臺管理界面來管理商品、活動、訂單和用戶。這里主要講后端API的設(shè)計。5.1 商品與活動管理商品和活動的增刪改查是基礎(chǔ)功能。需要注意的是上架一個團(tuán)購活動時必須進(jìn)行業(yè)務(wù)校驗關(guān)聯(lián)的商品必須存在且已上架?;顒拥拈_始時間必須晚于當(dāng)前時間?;顒拥慕Y(jié)束時間必須晚于開始時間。團(tuán)購價不能高于商品原價除非有特殊邏輯。如果活動進(jìn)行中或已結(jié)束則不允許修改核心信息如價格、成團(tuán)人數(shù)只能修改一些補充信息或提前結(jié)束活動。對于列表查詢通常需要支持分頁、按名稱搜索、按狀態(tài)篩選等。使用MyBatis-Plus的Page對象和QueryWrapper可以輕松實現(xiàn)。GetMapping(/admin/campaign/list) public ApiResultPageCampaignVO listCampaign(RequestParam(defaultValue 1) Integer pageNum, RequestParam(defaultValue 10) Integer pageSize, RequestParam(required false) String keyword, RequestParam(required false) Integer status) { PageCampaign page new Page(pageNum, pageSize); QueryWrapperCampaign queryWrapper new QueryWrapper(); queryWrapper.like(StringUtils.isNotBlank(keyword), title, keyword); queryWrapper.eq(status ! null, status, status); queryWrapper.orderByDesc(create_time); PageCampaign campaignPage campaignService.page(page, queryWrapper); // 將Campaign Page 轉(zhuǎn)換為 CampaignVO PageVO中可能包含商品名稱等關(guān)聯(lián)信息 PageCampaignVO voPage convertToVOPage(campaignPage); return ApiResult.success(voPage); }5.2 訂單管理與狀態(tài)流轉(zhuǎn)后臺需要能看到所有訂單并支持按訂單號、用戶、狀態(tài)等多維度篩選。更重要的功能是訂單狀態(tài)的強制操作比如發(fā)貨輸入物流單號將訂單狀態(tài)從“已支付”改為“已發(fā)貨”。取消訂單對于未支付的訂單可以手動關(guān)閉對于已支付的訂單需要走退款流程。處理退款對接微信/支付寶的退款接口并在退款成功后更新訂單狀態(tài)。這些操作都需要記錄操作日志方便后續(xù)追溯。可以設(shè)計一張order_operate_log表記錄訂單ID、操作類型、操作人、操作前狀態(tài)、操作后狀態(tài)、備注和時間。6. 系統(tǒng)部署與運維考量開發(fā)完成后如何讓系統(tǒng)穩(wěn)定運行起來我推薦使用Docker容器化部署簡單高效。6.1 使用Docker Compose一鍵部署編寫一個docker-compose.yml文件定義MySQL、Redis和應(yīng)用服務(wù)。version: 3.8 services: mysql: image: mysql:8.0 container_name: community-mysql environment: MYSQL_ROOT_PASSWORD: your_strong_password MYSQL_DATABASE: community_buy ports: - 3306:3306 volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf:/etc/mysql/conf.d restart: always redis: image: redis:7-alpine container_name: community-redis ports: - 6379:6379 volumes: - ./redis/data:/data restart: always app: build: . container_name: community-app depends_on: - mysql - redis ports: - 8080:8080 environment: - SPRING_PROFILES_ACTIVEprod - DB_HOSTmysql - REDIS_HOSTredis restart: always然后在項目根目錄創(chuàng)建DockerfileFROM openjdk:11-jre-slim VOLUME /tmp ARG JAR_FILEtarget/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT [java,-jar,/app.jar]在服務(wù)器上只需安裝好Docker和Docker Compose將項目Jar包和配置文件準(zhǔn)備好執(zhí)行docker-compose up -d整個服務(wù)棧就會啟動。6.2 配置文件與敏感信息管理切勿將數(shù)據(jù)庫密碼、支付密鑰等敏感信息硬編碼在代碼或application.yml中。Spring Boot支持多種配置方式生產(chǎn)環(huán)境配置使用application-prod.yml并通過環(huán)境變量SPRING_PROFILES_ACTIVEprod激活。敏感信息使用環(huán)境變量或?qū)iT的配置中心如阿里云ACMSpring Cloud Config。在docker-compose.yml中通過environment傳遞。# application-prod.yml 示例 spring: datasource: url: jdbc:mysql://${DB_HOST:localhost}:3306/community_buy?useUnicodetruecharacterEncodingutf-8useSSLfalseserverTimezoneAsia/Shanghai username: ${DB_USER:root} password: ${DB_PASSWORD:} # 從環(huán)境變量獲取 redis: host: ${REDIS_HOST:localhost} port: 6379 wx: pay: mchid: ${WX_MCHID} apiv3-key: ${WX_API_V3_KEY} # 從環(huán)境變量獲取6.3 日志與監(jiān)控日志使用Logback或Log4j2配置合理的日志級別和滾動策略。將日志文件掛載到宿主機(jī)便于查看。關(guān)鍵業(yè)務(wù)操作如支付回調(diào)、庫存扣減務(wù)必記錄INFO或WARN級別日志。健康檢查Spring Boot Actuator提供了/actuator/health端點可以集成到Docker的健康檢查或運維監(jiān)控平臺中。錯誤報警可以集成Sentinel或SkyWalking進(jìn)行鏈路追蹤和異常報警。對于小型項目至少應(yīng)該配置日志文件監(jiān)控當(dāng)出現(xiàn)大量ERROR日志時能及時通知。7. 開發(fā)與部署過程中的常見問題排查在實際開發(fā)和部署中我遇到了不少典型問題這里總結(jié)一下希望能幫你避坑。問題現(xiàn)象可能原因排查步驟與解決方案服務(wù)啟動報DataSource連接失敗1. 數(shù)據(jù)庫地址/端口錯誤。2. 數(shù)據(jù)庫未啟動。3. 用戶名密碼錯誤。4. 網(wǎng)絡(luò)不通Docker容器間。1. 檢查application.yml配置特別是生產(chǎn)環(huán)境配置文件是否激活。2. 使用docker ps或mysql -h host -u user -p手動連接測試。3. 在Docker Compose中確保服務(wù)依賴depends_on設(shè)置正確但注意它只控制啟動順序不保證數(shù)據(jù)庫已就緒。建議應(yīng)用啟動腳本中加入對數(shù)據(jù)庫的健康檢查重試機(jī)制。微信支付回調(diào)一直收不到或收到但簽名驗證失敗1. 回調(diào)URL未在微信商戶平臺正確配置或未備案。2. 服務(wù)器防火墻/安全組未開放對應(yīng)端口。3. 驗簽邏輯錯誤特別是APIv3密鑰或證書不對。4. 網(wǎng)絡(luò)問題導(dǎo)致微信無法訪問你的公網(wǎng)回調(diào)地址。1. 在微信支付后臺仔細(xì)檢查回調(diào)URL確保是https生產(chǎn)環(huán)境必須且可公網(wǎng)訪問。2. 使用curl或Postman模擬微信回調(diào)本地調(diào)試驗簽邏輯。3.務(wù)必使用微信支付平臺提供的證書工具重新下載證書并確保代碼中加載的證書路徑正確。APIv3密鑰和之前的API密鑰不同。下單時出現(xiàn)“庫存超賣”1. 未做并發(fā)控制。2. 樂觀鎖更新失敗后未給用戶明確提示。3. 緩存與數(shù)據(jù)庫庫存不一致。1. 確??蹨p庫存的操作是原子性的使用4.2節(jié)提到的樂觀鎖或分布式鎖。2. 在Service層捕獲樂觀鎖更新失敗異常返回明確的業(yè)務(wù)錯誤信息如“庫存不足請重新下單”。3. 如果使用了Redis緩存商品庫存需要保證緩存和數(shù)據(jù)庫的雙寫一致性更新數(shù)據(jù)庫后要刪除或更新緩存。前端請求API返回403或4011. 請求未攜帶Token或Token已過期。2. Token格式錯誤。3. 接口路徑被Spring Security攔截但用戶角色權(quán)限不足。1. 檢查前端請求頭Authorization是否正確格式Bearer your_jwt_token。2. 在JwtAuthenticationFilter中打印Token解析日志看是否拋出異常。3. 檢查SecurityConfig中的權(quán)限配置antMatchers().hasRole()是否與用戶實際角色匹配。使用MyBatis-Plus查詢結(jié)果字段為null1. 實體類屬性名與數(shù)據(jù)庫字段名未正確映射下劃線轉(zhuǎn)駝峰默認(rèn)開啟但特殊名稱可能不對。2. 查詢時未指定要查詢的列默認(rèn)查詢所有但可能有關(guān)聯(lián)字段未在SQL中體現(xiàn)。1. 在實體類字段上使用TableField注解指定數(shù)據(jù)庫列名如TableField(user_type)。2. 檢查是否使用了TableName注解指定表名。3. 對于復(fù)雜的聯(lián)表查詢建議使用自定義的XML映射文件或QueryWrapper手動構(gòu)建查詢SQL。最后再分享一個部署時的小技巧在docker-compose.yml中為應(yīng)用服務(wù)添加一個healthcheck配置讓Compose能判斷應(yīng)用是否真正啟動成功這比單純的depends_on更可靠。app: build: . ... healthcheck: test: [CMD, curl, -f, http://localhost:8080/actuator/health] interval: 30s timeout: 10s retries: 3 start_period: 40s這個項目從設(shè)計到實現(xiàn)再到部署上線幾乎涵蓋了中小型Java Web項目的全流程。過程中最大的體會是清晰的業(yè)務(wù)邊界劃分和穩(wěn)健的并發(fā)處理是后端系統(tǒng)的生命線。不要急于堆砌功能先把核心鏈路用戶-商品-活動-訂單-支付跑通、跑穩(wěn)。這個系統(tǒng)完全可以作為Spring Boot的進(jìn)階練手項目其中涉及的JWT認(rèn)證、樂觀鎖、支付集成、Docker部署等都是非常實用的技能點。你可以根據(jù)自己小區(qū)的實際需求在此基礎(chǔ)上增加更多功能比如拼團(tuán)提醒、團(tuán)長傭金統(tǒng)計、財務(wù)報表導(dǎo)出等讓它真正成為一個好用、耐用的社區(qū)工具。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品视频内谢女人| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 外国91| 少妇被c 黄 免费观看| 2024年最新色情网站在线观看 | 精品一区二区三区四区外站| 密乳AV免费观看| 另类视频在线| 午夜福利一区二区三区四区五区色婷婷| 国产精品黑人一区二区三区| 欧洲乱码一区二区| 中文字幕色AV| 久久久久久网址| 综合自拍| 国桃视频产巨乳精品一区二区在线| 黄色无码高清黄色无码网站| 日本天天吊| 人妻 欧美亚洲| 日韩A优精品在线观看| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 天天综合网网欲色| 激情五月综合网| 国产和美国毛片| 久久国产在线一区二区| 欧美少妇大量自拍视频在线观看| a啊啊啊啊啊啊啊啊一区二区| 成人午夜高潮av猛片| 国产精品三级视频网站| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 91福利网在线观看| 欧美 亚洲 综合 制服 另类| 亚洲高清欧美总合| 偷窥自拍亚洲天堂网爆| 91真人天天在线| 极品综合| 亚洲91射| 久9视频| 四虎在线免费视频| 久久久亚洲Av| 亚洲91网。| 久草免费在线视频| 大香蕉色十月| 国产v片在线免费观看| 啊啊啊啊啊啊啊好爽不要| 3PAV乱伦视频| 后入式在线免费观看60秒| 搞中出久久| 99青青草国产视频| 久久性爱大全| 深夜视频| 99久久这里只有精品| 97视频免费在线观看| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 久久欲| 久久亚洲不卡一区二区三区 | 超碰97爽| 午夜视频久久久久一区| 一二三区精品视频| 新版天堂中文资源8在线| 久久久久ab| 9丨亚洲一区二区在线| 亚洲综合有玛| 亚洲国产欧美中文永久| 麻豆三极片| 中国黑人三级片网站上区| 欧美精品成人在线播放| 亚洲无码一区成人免费午夜| 99操| 日本天天操| 欧中美三级一区二区三区| 3571色综合一区二区二区| 欧美成人免费在线观看| 蜜臀一二三| 日本在线一二| 中文字幕视频2区| 天天躁日日躁成人字幕aⅴ| 欧美亚洲se91| 97在线国产精品| 人人操人人操人人操人人操人人操人人人11.CM| 大但人体久久久久| 天天日天天射天天干| 亚洲操逼视频网站| 91精品啪在线观看国产城中村| 9999久久久| 330dv亚洲成年视频网| 俺去俺来也在线www| 精品无码秘 人妻一区二区| 久久九七| 日韩,欧美,中文在线| 99草精| 91美女视频在线| 久久伊人大香蕉| 国产精品黄色三级av| 人爽不卡视频| 又黄又硬又粗又长国产视频| 超碰 av 女人天堂| 嗯嗯嗯嗯啊啊啊好紧好大| 亚洲无线观看久久| 老鸭窝成人| 超碰综合色| 香蕉在线一区二区三区| www.av在线观看| 天天干人人乐| 久伊人网78| 91爱看| 蜜桃视频精品一区二区| 丁香五月成人| 久热无码| 婷婷久久五月天| 国产午夜无码片在线观看影视| 欧美综合第一页| 夫妻AV网站| 搞中出视频在线观看| 欧州色图区| 婷婷五月天网| 男人天堂婷婷五月天校园春色| av凤凰久久久| 亚洲精品乱码久久久久久蜜桃麻豆| 三级特黄60分钟播放| 日韩特级毛片免费观看全集| 啊啊啊啊啊啊在线观看| 偷拍亚洲情色| 国产精品97超碰| 9999亚洲精品| 激情第四色| 日本精品无码三级网站| 日韩欧美久久婷婷网站| 欧美色97| 亚洲色婷婷综合久久一区二区三区| 一本久久精品中文字| 超碰在线974| 欧美日不卡| 99久久久er直播网址| 九九九精品成人免费视频小说| 黑人娇小av在线播放| 久久久久久九九九九九| 精品无码欧美三级| 欧美日韩久久精品爱爱| 东北熟女91| 亚洲天天综合| 成人七区| 色综合色欲色综合色综合色综合| 五月丁香激情啪啪| 性欧美体内射精| 黄色成品网站| 欧美久久久| 夜夜夜夜爽| 欧美综合网1| 加勒比伊人综合| 欧美桃色网| 久久精品成人一区二区三区蜜臀| 欧美大的香蕉有线电视视频| 婷婷婷婷婷婷久久久久| 久久青青草原免费视频| 六月婷婷色综合| 性色avv| 啊啊啊com| 日韩天天本| 夜夜高潮夜夜爽国产伦精品| 男人天堂最新手机版在线青青草| 夜夜骑夜夜操| 99热精品在线| 老熟女熟妇| 欧美在线综合| 夜夜欢天天干| 精品久久久久久无码| 亚洲中文字幕熟女| 思思热在线视频免费| 国产精品探花视频| 神马午夜久久久| 国产精品97超碰| 91久久青青草原精品| 2018天天干在线视频| 九九色综合| 99在线精品观看99| 国产乱弄免费在线视频。| 蜜桃传媒视频第一区入口在线看| 无码高清国产AV| 激情六月天| 金典av| 麻豆精品.欧美精品.日韩精品.| 日本羞羞的视频在线播放| 亚洲偷拍自拍在线视频| 日日干夜夜骑| 黄骗免费网站| 99视频自拍| 色五月第四色| 伊人操| 韩国成人精品久久久免费看| 人妻天堂综合网| 久久一区,青青青青草视频在线播放| 97干综合网| 在线毛片片免费观看| 日韩操人| 狠久久| 国产女人和拘做爰视频 | 色月天AV导航| 亚洲久草AV色图| 国产精品成人无码a v毛片| 九月丁香| 亚洲人妻色图| 69少妇一区二区| 久久99国产综合精品女同| 日本高清一本二本免费不卡| 两性色网| 性交一区二区在线播放| 99这里只有精品国产| 久久精彩视频9| 综合第一页| 狠狠色婷婷7777久| 大逼色网站| 久久久成人国产精品无码| 一本久久精品中文字| 午夜视频黄| 久久中文字幕一区不卡| 99热超碰在线| 韩日欧亚a级| 一本大道不卡一二三区| 小骚逼被操的爽不爽| 91精品亚洲内射孕妇| 蜜桃中文字日产乱幕4区| 日日夜夜精品视频| 青青草日韩无码| 欧美色图电影| 综合色图亚洲欧美| 夜夜夜爽www精品视频| 亚洲精品视频在线| 欧美 亚洲精品首页| 色五月婷婷网| 国产亚洲深夜激情| 欧美色图偷拍另类| 蜜桃狠狠色伊人亚洲综合网站| 国产成人久久久精品免费AV| 亚洲欧洲日韩中文字幕一区| 亚洲有薄码区日本系列中文字幕| 91色交| 在线天堂999| 亚洲欧美日韩制服另类| 蜜臀th| 日欧操屄视频| 亚洲网站一区二区在线| 亚洲欧美日韩国产丝袜自拍中文| www.夜夜| 无码操逼视频一下| 性欧美| 欧美日韩m| 可以免费看黄片的视频| 欧美第五页| 99亚亚热| 久久亚洲国产成人| 少妇特黄一区二区三区| 亚洲天堂人妻一区二区| 天天综合91在线| 91狠狠综合| 久久国产精品熟女人妻| 亚洲老熟妇xxx| 人妻啪| 青青草原伊人网| 中文字暮97| 日韩一级性爱无码| 亚洲性高潮| 秋霞男人网| 天天干天天狼在线视频| 日本影视久久免费| 亚洲综合嫩| 青青草国产亚洲精品久久| 97摸视频| 日韩偷拍一区二区三区| 麻豆一区二区三区在线看| 老师充足的奶水小说| 五月天黄色激情视频| 欧亚三区动漫| 91久久久视| www.99热| 秋霞 色色| 日韩AV电影网站| 免费精品人妻一区二区三| 超碰在线免费一区二区三区| 91强在线播放| 亚洲 欧美 另类 综合 偷拍| 99欧美| 全免费a敌肛交毛片免费| 国产97亚洲| 欧美性五月| 大肉棒导航| 青青草吊丝| 午夜天堂精品久久久久91| 精品亚洲国产成人精品| 久久一二三四五六七八九区| 十八禁一区二区无码观看| 五月花婷婷| 亚洲精品aa久久伊人| 国内毛片国产欧美拍| 精品亚洲天堂| 久草在| 美女啊啊啊啊pc| 九九色影院| 欧美日韩性爱无码| 伦激情人妻另类人妻| 熟女91网| 亚洲国产精品久久久久婷婷老年| 91天美传媒在线| av操操不卡| 久久国产精品91| 97人人干人人操| 小视频国产| 97欧美在线| 欧美宗合网| 大逼色网站| 国产成人啪一区二区| 超碰97亚洲区| 91色人| 在线电影亚洲色图| 日本亚欧爱爱| 久久蜜桃一区二区| 欧美se综合| 亚洲激情视频| 国产Av超碰| 被男人添B超爽视频| 91精品免费| 欧洲亚洲天堂精品| 色哟哟精品1精品2| 久久久一区二区三区麻豆| 97爱爱官网| 久久久内射良家| 日韩干B| 精品视频一区二区| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 久久蜜桃一区二区| 天美91| 色色毛片| 操逼日批| 日韩成人大片在线观看| 久久怡红院| 日本曲间由美性生活片| 97精品久久久久久久| 欧美色日| 玖色av| 九七人妻在线| 亚洲国产精品成人久久蜜臀| 亚洲成人性爱网站在线播放| 最新日产中文在线麻豆| 美女诱惑1区2区| 91大胆欧美| 熟女自慰久久久| 国产精品九九| 欧美亚洲自拍另类人妻| 午夜爽爽爽在线观看永久入口姬片| 国产精品女生av| 5月婷婷6月六月丁香| 久久亚洲AV无码专区国产精品| 一块操欧美性爱| 99久久这里只有精品| 顶级少妇BT天堂| 国桃视频产巨乳精品一区二区在线| 不卡码视频| 久久人体一区二区| 美女天天干| 久久久亚洲熟妇熟女| 亚洲性爱电影| 日韩偷拍一区二区三区| www亚洲免费| 大香蕉av在线| 日本不卡中文| 国产精品福利视频播放| 日本精品一区三区| 天美精品一区二区三区四区在线观看| 青青在线视频免费| 亚洲欧美精品福利在线| 国产精品在线网站| 欧美翘臀视频网站一区二区三区| 丰满美女一级毛片在线播放| 亚洲精品久久久久久久蜜桃臀| 青青青操| 国产91美女视频| 一级@啪啪视频| 刺激性视频黄页| 97网站在线观看| a片在线播放| 伊人99热| 青女偷拍网| 美女尤物人人操| 超碰在线974| 免费看国产大AB| 国产中文字幕在线点播| 日本三级黄页| 久 久无码人妻AV| 亚洲AV无码成人精品久久| 熟女欧美日韩综合婷婷| 欧 美 自 拍 偷 拍| 爱射综合| 又粗又长又大国产不卡| 日韩人妻资源在线看| 青青久日| 中文字幕 国产 精品| 后入福利视频| 97福利视频| 亚洲精品1区| 91香蕉视频在线观看免费| 狠狠穞A片一區二區三區| 亚洲免费97免费| 另类图片欧美激情综合| 东北夫妻性偷拍| 亚洲图片激情小说| 日韩紧密久久| 四虎午夜影院| 快点操死我| 在线视频亚洲无码| 日本99一区二区| 日本操逼视频免费| 国产白领连续中出在线观看| 91被操| 欧美老妇综合网| 亚洲色人| 亚洲区限制级| 俺去啦俺来也久久综合| 99色婷婷中文字幕乱色| 每日更新AV| 色超碰综合| 日本五十路熟女一区二区| 美女骚尻视频| 久久国产视频性吧 | 1024亚洲中文字幕久在线看片你懂的 | 久草福利在线资源站| 97久久精品不卡| 天天天天天干夜夜夜夜夜操| 少妇久久久久久| 少妇69中文| 啪一啪免费视频| 骚妻少妇精品性色无码四色A V| 一区在线国产播放| 搡老女人老91二区| 欧美色图私拍91| 美国aaaaa一级黄片| 中文字幕av片| 亚洲国产精品久久久久婷婷青年| 一本色道综合久久欧美| 69人妻精品丰满熟女区| 久久精品店| 亚洲欧洲日本精品中文a∨| 色网1| 午夜人妻精品综合在线| 一级做a爰片久久毛片图片| 少好三P| 亚洲AV无码国产精品久久久久| 国产久久久久影院老熟女| 90后性网国产欧美| 无码高清少妇久久| 美美91成人国产精品欧美精品久久久久久久| 中文字幕丝袜国产第一页不卡| 国产中午字一暮区| 91丝袜激情在线| 色综合色欲色综合色综合色综合| 草草电影院| 免费99精品国产自在在线| 性欧美另类高清| 嗯啊抽插大香蕉网页| 精品在线78| 久久久穴999| 超碰人人草| 人妻丰满熟妇一区二区三| 德国一二三不卡| 婷婷亚洲综合| 在线观看AV片| 18啪啪手机免费性爱| 久久m| 观看免费区二区三区二| 久99热| 大香焦A片| 97精品一区二区三区免费| 熟妇高潮精品一区二区三区下载| 日韩97视频!在线| 欧美十八禁导航成人| 99色网| 欧美九九九| 久草精品视频| 成人热久久精品| 91久久精品国产| www色色com| 午夜寂寞欧美| 亚洲字幕一区二区| 天天爽夜夜爽夜夜爽精| 久久人| 日韩精品亚洲一二三| 亚洲国产青青| 麻豆久久久久久久久丝袜| 操操啪| 蜜乳AV色欲AVAV无码| 在线有码中文字幕| 中文字幕丰满人妻日本| 91热色| 综合天天。| 久久蜜桃综合网| 黄aaaaaaaaaaaaaaaaaa色网站| 好涩综合| 伊人久久AV诱惑悠悠| 国产日本顶级一区二区三区| 亚洲欧美激情小说| 精品人妻少妇| 欧美在线天堂| 亚洲色狠| 欧美日韩亚洲天堂| 综合熟妇一区二区三区| 日韩亚洲97| 99999精品成人| 亚洲成a人在线观看久| 强奸乱伦大香蕉| 岛国黄色短视频| 国产精品久久久久久片| 91黑人无码激情在线| 欧亚免费视频| 综合熟女| 婷婷五月天补不补| www.色婷婷| 极品极品色影院| 日韩成人性爱电影在线播放| 久99久视频| 日韩人妻少妇中文字幕| 九九成人精品| 人人澡综合涩| 中文字幕一区二区三区蜜桃视频| 啊啊啊水好多| 日韩成年人性爱视频| 久久性爱视频免费看| 亚洲囯产精品女人久久久| 国产精品乱码久久久久| 国产偷人伦激情在线观看| 操人人| 操逼片中文| 精品久热| 91l欧美在线| 日本久久久久久久久久| 国内精品久9| 日韩少妇无码| 人妻中文字幕精品无码| 99热这里是精品| 天天日夜夜爽| 97一区二区三区视频| rivers-china.com| 放黄片放3级黄片没穿衣服| 波多野结衣先锋影音| 色噜噜狠狠色综合日日| 熟女欧美日韩综合婷婷| 四虎在线视频| 伊人久久在线视频观看| 青娱乐久久艹| 国产激情在线观看| 天天做天天爱天天高潮| 亚洲第91页| 天天综合网在线91| 日韩精品国产一区二区| 六月丁丁香| 欧美亚洲高清不卡| 亚洲校园激情| 青草草免费网站av| 国产免费一区二区在线A片视频| 久久不卡一区二区| 啊啊啊啊啊啊啊在线| 成人线上超碰| 肉嘟嘟www视频在线观看高清| 五月丁香影院| 久久久少妇诱惑精品视频| 亚洲国产美女久久久久 | 久操操| 少妇天堂| 国产精品网址| 欧美日韩亚洲电影| 伊人性在线视频| 99热| 无码高清国产AV| 97超碰大| 欧美亚洲韩国视频十五区| 淮穴色AV| 久久美女国产| 亚洲有码视频二区| 五月天亚洲网| 人人搡人人肉久久精品| 精品一区二区三区最新| 色人久久| 一中国女人毛片水真多| julia中文字幕在线观看| 久久老子无码午夜伦不卡| 激情一区二区| 人妻第一页| 精品中文一区二区| 久草男人天堂| 青青草色情网站视频| 中文字幕av一区二区三区人妻少妇 | 亚洲色图一区二区三区| 高颜值美女口爆高潮浪叫| 在线观看A啊啊啊| 91 在线亚洲| 国产自偷自拍一区| 久操网无码在线| 国产高清精品一区二区三区毛片 | 国产女上位好爽在线| 亚洲精品视频在线播放| 日本在线视频导航| 日韩激情中文字幕有码| 乱伦av麻豆| 东北少妇高潮zzzz| 亲子敌伦对白在线播放| 美女十八禁| 91青青| 亚洲熟女av中文字幕| 亚洲综合一| 亚洲性感丝袜诱惑在线观看| 久久久天美| 久久99干一本高清| 91色夜| 乱伦熟女专区| 欧洲视频在线| 日韩偷拍一区二区三区| 色嗨嗨在线| 狠狠色狠狠色狠狠五月| 26uuu国产日韩综合在线观看| 亚洲第一免费视频| 在线无码操| 啪啪91| 欧美老妇综合网| 久操B网| 精品久久久久9999| 欧美韩日精品资源| 国产精品久久久久999| 麻豆一区二区AV天美| 婷婷伊人五月| 日本韩欧美在线播放a| 夜夜操二区| 国产亚卅97| 色五月激情AV在线| 神马麻豆福利院| 九九九久久久| 成片免费观看视频大全| 一区 欧美 日韩 麻豆| 国产综合久久久鬼色| 亚洲āv网址在线观看| 日本一区二区三区午夜观看| 老司机老司机午夜影院| 东北女人av| 亚洲天天影视色综合| 黑人粗大V S日韩女优视频| 97碰碰色| 思思在线免费视频| 日韩钢筋无码高清啾啾啾| 国产自偷| 欧美在线观看综合国产| 国产超碰国产97| 蜜桃午夜视频一区二区 | 囯戸精品高潮呻吟旡码| 999在线电影香蕉| 日日日日做夜夜夜夜做无码97| 亚洲在线欧美| 91久久精品蜜臀| 精品视频一区二区| 玖玖爱免费观看视频| 欧美老妇女内射网址| 日韩成年人性爱视频| 亚洲AV免费在线| 久久久国产护士丝袜美腿一| 亚洲日韩美国人妻| 色综合超碰超| 亚洲精品无码少妇久久| 精品十三区| 男人天堂.AB| 国产强奸无码乱伦| 插老姨肥穴| 波多野结衣之双飞调教在线播放 | 久久无码电影| 日韩电影免费网站麻豆视频| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 东京热激情视频一二三区| 婷婷激情四射| 91扒丝袜综合在线| 国产亚洲精品农村妇女| 欧美在线55555| 太久视频| 久热99999| 精品一区二区成人动漫| 天天噜| 96AV久久久| 黄色操人| 国产精品丝袜在线| 秋霞男人网| 天天色天天干天天爱| 熟妇精品juliaannAV| 伊人网综合在线视频| 亚洲成人在线资源| 天天综合网站| 亚洲日韩美国人妻| 不卡在线观看视频| 久久一二三四五六七八九区区| 色牛牛AV| 欧美国产精品| 青青草综合在线| 四虎884a| 日韩一级二级| 日韩欧美中文日韩欧美色| 欧美资源| 欧洲亚洲人妻无码久久三区四区| 亚洲限制级在线| www超碰| 亚洲图片激情小说| 东北老女人的激情视频| 国产1769在线| 亚洲人妻在线一区| 中文字幕人成乱码熟女香港| 欧美激情黑人| 午夜爽爽爽在线观看永久入口姬片| 麻豆天天躁天天揉揉AV| 五月丁香综合| 日本视频一区二区三区| 男女做爰猛烈动高潮A片免费应用| 中文字幕乱妇免费视频| 天天影视射综合网| 亚洲熟女乱色| 五月婷婷综合在线| 91Chinese在线| 国内三级自拍小视频在线观看| 欧美αv.com| 色黄污美女啪啪啪免费网站| 99热8| 亚洲熟女乱色一区二区三区久久久 | 欧美97色| 欧美中出| 国产在线视频二区| 黄色人人| 在线欧美69V免费观看视频| 亚洲 欧美 制服 另类 自拍| 天天操人人操狠狠插| 欧美日韩色| 欧美图片校园春色| 亚洲精品黑丝| 91色欧美| 久久中文字幕不卡人妻| 亚洲第2页| 日韩激情啪啪| 国产AV超爽| 国产极品美女高潮无套在线观看| 激情啪啪拍91| 国产怡红院| 好吊妞转入那个网| 一起草精品人妻| 超碰79人人乐| 91中文精品日韩欧美在线| 一区二区三区日韩欧美| 97久久精品国产| 亚洲www91| 夜夜综合| 亚洲 欧美 第一页| 一级黄色性爱裸体视频| 人人操人人插人人摸人人干| 久操凹凸视频| 久久国产视频性吧| a片亚洲一本通视频| 偷拍亚洲视频一区二区三区四区| 97天天操| 在线播放一级无码视频| 五月丁香啪| 天堂网 主播 亚洲| 色与欲影视天天看综合网| 亚洲黄色AV电影| 操逼片国产| 又黄又爽在线观看视频| 亚欧精品久久久久久久久久久| 99综合自拍| 夫妻天天操岛国视频| 999岛国大片| 免费人人搞97| 国内偷拍精品一区二区| 久久久久亚洲三级电影| 极品五月天噜噜| 99热婷婷一区二区三| 在线观看无码三级少妇| 91人妻尻屄视频| 久热精品色情| 欧美激情高清性猛交| 欧美专区日本专区| 大香蕉综合在线| 91少妇| 免费啪啪啪网站18岁| 欧美亚洲美少妇一区二区| 三级日韩一区二区三区| 天天影视综合网欧美精品| 久久人妻熟女一区二区| 婷婷性爱| 97精| 综合欧美色图| 亚洲国产欧美一区二区潘金莲| 97蜜桃综合| 97亚洲精品超碰| 日韩精品高清资源在线| 91社区伊人| 亚洲情色1区| 激情欧美97| 综合网,亚洲,欧美| 蜜臀久久99精品久久久久久-DVD原版全| 啊啊啊操一区| 人人操人人爽人人操人人| 综合激情97| 亚洲黄片免费在线播放| 老司机久久| 国产女同在线观看视频| 亚洲欧洲色情高清| 欧美大香蕉专区网| 综合天天网| 级做a爱无码性色永久免费| 曰韩香蕉97| 日本天天吊| 大二网站亚洲| 爱爱动态试试看6 0秒| 欧美不卡五十路| 丝袜狠狠草尤物 91| 中国一级操逼视频| 亚洲动态色图| 亚洲高清在线se| 九九综合久久| 肉动漫无遮挡h在线观看| 国产视频小说| 国色天香av| 黄色高清无码无码破解免费暗网 | 精品无码久久久久| 日韩三级久久久| 国产强奸超碰AV| 夜色综合| 91N综合网| 成人片视频| 91中文精品日韩欧美在线 | 国产精品香蕉热久久新品| 国产日本一区二区三区蜜臀在线观看| 国产成人精品一区| 啊啊啊好湿久久| 一本一道人妻久久一区二区三区 | 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 99在线视频播放| 一区二区三区在线资源| 性做久久久久久免费观看软件| 日韩av电影成人在线| 人人操人人色网| 人人澡人人干| 色眯眯av| 91女优在线观看| 久久99黄色卞西瓜| 日本超碰在线国产一区| 91中文在线| 精品久久99| 亚洲精品国产专区在线观看| 久久久久久久久久9| 欧美亚洲天天| 久久香蕉国产线看观看亚洲女人| 操操操操操操| 欧洲熟妇xxXx欧美老妇裸体 | 美女让帅哥通她小鸡鸡| 久久亚码| 美女让帅哥通她小鸡鸡| 天天拍天| 美女t无毒不卡不卡| 97超碰欧美精品| 日韩97超碰| 精品久| 99999精品| 不卡中文字幕aⅴ在线| 老外又粗又长一晚做五次| 欧美一级美片在线观看免费| 97色伦97色伦国产欧美| 99久久精品国产系列| 欧美亚洲| 国产精品无码久久久久2025| 操比国产| 麻豆天美国美国产| 久久伊人在线五区| 一区二区三区男女操逼黄色小电影| 色综合91| 久久日本熟妇熟色高清| 欧美精品三区| 久久久久极品| 激情小说图片亚洲首页| 日韩无码黄色片| 欧美日本中字另类在线| 高清无码 国产精品| 三级三级三级日本99| 91夜夜蜜桃臀1区2区3区| 人澡逼| 精品欧美日韩在线观看| 九九九国产| 日韩中文字幕视频| 成人三一级一片aaa| 久久国产99精品72福利| 欧美性五月| 囯戸精品高潮呻吟旡码| 色色五月婷婷| 久久精品日韩专区免费观看| 亚洲美女AV无码| 成人aⅴ一区二区三区| 久久国产精品91| 最新亚洲人成网站在线影院| 一起草av| 后入福利| 国产Av超碰| 爱爱动态120秒| 欧美色综合网| 色青青久久影视| 日韩99神马视频播放| 亚洲无992tv| 无码欧美有限公司| 搡老女人老91妇女老熟女| 中文字幕性感少妇av| 91天射| 久久久久夜夜夜夜| 人人操AV| 97干在线视频| 精品妇女一区二区三区| 青青久日| JULIA一区二区三区在线播放| 玖玖爱综合| 九九久久玖玖| 成人午夜无码视频| 夜夜夜爽www精品视频| 睡产熟女乱伦| 人妖欧美一区二区| 欧美麻豆成人同性GⅤ在线| 91亚洲丝袜| 国模精品一区二区三区苹果色戒| av橘色网站| 欧美亚洲天天| 国产白丝av| 岛国小电影| 久久春色| 亚洲日韩肥臀视频在线观看| 思思热国产高清| 操b网站亚洲无码| 亚洲无码久久久久久久| 亚洲少妇综合| 亚洲天堂东京热| 国产精品嫩草影院午夜两性| 九九九九免费高| 首页中文字幕中文字幕免费| 99热这里只有精品1| 四虎影库国产精品免费| 国模艳艳啪啪一区| av影片在线观看不卡| 蜜桃视频一区二区三区 | 牛牛aV| 少妇熟女视频一区二区三区| 91丨国产丨白浆| 粉嫩粉嫩一区性色AV片| 欧美草草高清日韩视频| 青青草日本中文字幕| 亚洲色啪| 人人做人人妻人人夜视频| 妇女一区二区三区| 高清不卡 中文 人妻| 插老姨肥穴| 综合熟女| 亚洲国产欧美中文永久| 男女啪啪网站免费视频| 欧中美三级一区二区三区| 330dv亚洲成年视频网| 亚洲色堂免费视频| 国产精品成人无码av| 日逼国产| 国产大学生口爆吞精合集| 家庭乱伦国产| 五月婷婷丁香六月丁香| 亚洲欧美91√| 婷婷另类小说| 91超级碰碰| www.色婷婷色综合| 人妻中文字幕日韩电影| 久久伊人最新网址视频| 东京热91| 婷婷丁香人妻| 超碰在线97国产| 日韩成人午夜精品久久高潮| 91色综合激情| 天天干天天爽| 亚洲男人的天堂AV| 亚洲熟妇丝袜在线观看| 久久国产99精品72福利| AV 少妇 人妻 偷拍| 欧美精品四区| 神马福利久草| 亚洲瓯美色图| 91老熟女老女人国产老太| 亚洲 欧美 小说| 久久婷婷欧美| 色天使AV天堂| 96麻豆精品一区二区三区| 久久大黄片| jizz啪啪| 极品色www影院| 欧美超碰96| 骚妻少妇精品性色无码四色A V| 欧美色网络| 新久久AV| 日韩另类色图| 无码操逼天堂| 在线观看一级α片刺激高潮视频| 97久久久久| 日本黄页视频在线观看| 五月丁香亭亭| 久久偷拍人| 夜夜爽夜夜操| 嗯啊抽插大香蕉网页| 五月丁香六月综合缴清无码| 手机在线中文字幕国产| 国产按摩一区二区三区| 久久这里只精品99re66图| 日本天堂网| 日韩av不卡在线看| 成人情色一区二区| 综合性视频99| 亚州色站 日韩电影| 欧美黑人性猛交91| 亚洲情色 自拍| 26UUU欧美激情一区二区| 欧美激情综合| 嗯嗯啊啊啊好爽| 亚欧国产无码精品在线| 欧美久久草熟女| 色婷婷网| 综合大香蕉美。| 亚洲AV性爱电影| 熟女欧美日韩综合婷婷| 国产亚洲美日韩Aⅴ中文字幕无码成人| 97电影院超碰| 亚洲人久久久久日| 人妻激情偷乱视频一区二区三区 | 人摸人人操人| 亚洲综合69| 免费的很黄很污的全部视频| 国产少妇高潮| 很很热性爱视频| 舔人妻中文免费视频| av在线资源| 99999亚洲| 亚州操操穴网| 高清在线不卡一区二区 视频| 97超级久久强资源| 日韩激情电影中文字幕| 国产夜夜操| 精品无码不卡视频| 美女天天干| 五月激情影院| 欧美一区二区三区互相| 国产热av| 97干在线看| 亚洲一级性爱视频免费看| 久肏视频字幕| 天天综合91在线| 天天懆天天日| 91麻豆天美国产欧美高潮| 亚洲少妇色| av网页一区二区三区| 东京热91| 色情亚洲日本成人| 国产偷拍自拍在线视频| 欧美伊人电影| 美女AV一区二区| 色婷婷激情| 粉嫩粉嫩一区性色AV片| 欧美97av| 精品乱码久久久久| 色99色| 欧美午夜视频| 污到发麻的视频 国产| 91性高| 操逼片国产| 91啪啪| 国产精品一区在线播放| 蜜臀久久在线视频| 精品视频123区小说区| 操逼操逼逼操操逼91| 久久久久久亚洲Av无码精| 国内毛片四区| 欧美在线视频观看一二三四区高清| 人人爽天天爽| 99热这里只有精| 久操操| 综合网色| 午夜福利成人免费视频| 青娱乐国产精品| 逼操网站| 日韩性爱视频在线免费观看| 69视频入口| 超碰午夜| 黑人美精品 A片| 日韩人妻有码免费视频| 三级AV入口| 日韩偷拍一区二区三区| 成人97人人超碰人人| 翔田千里Av在线| 国产野战露脸在线播放| 亚洲综合另类小说色区亚洲成av人片在www| 丰满人妻一区二区三区色-百度| 加勒比海色香蕉婷婷| 99re在线| 午夜男女爽爽爽影院视频| 五月丁香黄色网| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 亚洲自拍天堂| 自拍大香蕉乱插| 岛园激情| 大香蕉97久久| 观看免费区二区三区二| 夜夜人妻爽| 精品人妻一区二区三区夜夜| 国产精品色约约| 外国免费性情大片| 四虎国产精品永久在线囯在线| 亚洲电影中字一区二区| 亚洲天堂一区二区久久| 成年女人黄网站| 99热免费| 国产美女激情| chaopen97久久| 夜夜欧美 | 69XX一中文字幕人妻91| 国产色精品午夜大片| 超碰免费在线| 色 亚洲 91| JuliaAnn丝袜熟女系列| 中文字幕一区二区日韩网| av九九| av东京热男人的天堂| 91熟女视频| 青娱乐日韩无码| 国产熟女精品区| 亚洲色天| 日韩成人免费电影| 九七毛片九九毛片| 国产日韩精品suv| 亚洲麻豆精品二区三区| 亚州综合色图| 1769国内精品视频| 亚洲午夜免费狠狠干| 后入式999| 国产久久成人| www.久久超碰| 国产欧美亚洲精品a第2页| 蜜臀亚洲综合一二三四区| 亚洲学生妹高清av| 亚洲色吧网| 超碰九区| 屌色在线97视频| 男生通女生屁股| 一区二区三区精品久久| 96久久久精品| 91成人在线免费视频| 色综合久久夜色精品国产天堂| 91最新综合| 日本啊啊啊啊啊视频| 96精品久久久久久久久久| 欧美 亚洲 综合 制服| 9丨久久九九九 | aaa亚无码专区| 久久111| 免费观看国产小粉嫩喷水精品午| 97色五月天完| 亚洲网站一区二区在线| 超碰亚洲欧美日韩无|