久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

Spring Boot寵物領(lǐng)養(yǎng)救助平臺(tái)開發(fā)全指南:從表設(shè)計(jì)、狀態(tài)流轉(zhuǎn)到部署排查

Spring Boot寵物領(lǐng)養(yǎng)救助平臺(tái)開發(fā)全指南:從表設(shè)計(jì)、狀態(tài)流轉(zhuǎn)到部署排查 做 Java 后端開發(fā)的人應(yīng)該都見過或者寫過寵物領(lǐng)養(yǎng)救助平臺(tái)這類項(xiàng)目。基于 Java Spring Boot 的寵物領(lǐng)養(yǎng)救助系統(tǒng)核心是把寵物發(fā)布、領(lǐng)養(yǎng)申請(qǐng)、救助登記、后臺(tái)審核這些事串成一條完整業(yè)務(wù)鏈而不是簡單堆幾個(gè)增刪改查頁面。這套項(xiàng)目對(duì)剛接觸 Spring Boot 的人特別合適也能幫準(zhǔn)備做課程設(shè)計(jì)或畢業(yè)設(shè)計(jì)的人少走彎路。我陸續(xù)看過幾套類似源碼很多代碼思路大同小異這篇文章把這類項(xiàng)目從需求、表結(jié)構(gòu)、后端實(shí)現(xiàn)到部署排查一條線講清楚。如果你手頭已經(jīng)有一套源碼文檔運(yùn)行視頻講解視頻配合這篇來理解效果會(huì)好很多。1. 先搞清楚平臺(tái)要給誰用需求拆解與模塊設(shè)計(jì)很多同學(xué)拿到這種項(xiàng)目第一反應(yīng)就是趕緊把數(shù)據(jù)庫導(dǎo)進(jìn)去、把后端跑起來結(jié)果看頁面時(shí)才發(fā)現(xiàn)“不知道這個(gè)按鈕對(duì)應(yīng)哪段代碼”。所以我不建議急著啟動(dòng)先把需求盤一遍。所謂寵物領(lǐng)養(yǎng)救助平臺(tái)表面上是在做寵物信息管理實(shí)際上是在做兩條業(yè)務(wù)線。第一條是領(lǐng)養(yǎng)線機(jī)構(gòu)或個(gè)人發(fā)布待領(lǐng)養(yǎng)寵物普通用戶瀏覽、申請(qǐng)、等待審核審核通過后完成領(lǐng)養(yǎng)。第二條是救助線發(fā)現(xiàn)流浪或受傷寵物的人發(fā)布求助信息救助站或志愿者接單平臺(tái)記錄救助進(jìn)度和結(jié)果。兩條線都會(huì)落到用戶、寵物、申請(qǐng)、救助記錄這些核心數(shù)據(jù)上所以數(shù)據(jù)庫設(shè)計(jì)必須圍繞這幾類實(shí)體展開。1.1 三類用戶畫像與業(yè)務(wù)場景最常見的用戶角色有三種。普通用戶是平臺(tái)的主要使用者主要做四件事注冊(cè)登錄、瀏覽寵物、提交領(lǐng)養(yǎng)申請(qǐng)、查看自己的申請(qǐng)進(jìn)度。救助站管理員是內(nèi)容維護(hù)者負(fù)責(zé)發(fā)布待領(lǐng)養(yǎng)寵物、上傳寵物照片、審核領(lǐng)養(yǎng)申請(qǐng)、登記救助記錄。平臺(tái)超級(jí)管理員則負(fù)責(zé)用戶管理、內(nèi)容下架、統(tǒng)計(jì)報(bào)表等更高權(quán)限的操作。舉一個(gè)典型場景某用戶在馬路上發(fā)現(xiàn)一只被遺棄的小貓先拍照發(fā)布一條救助信息救助站接手后給小貓做體檢再把小貓的檔案生成寵物信息并標(biāo)記為“待領(lǐng)養(yǎng)”。這時(shí)另一位用戶看到小貓信息覺得合適就提交領(lǐng)養(yǎng)申請(qǐng)。管理員在后臺(tái)看到這條申請(qǐng)核對(duì)養(yǎng)寵條件和家庭情況審核通過后寵物狀態(tài)自動(dòng)變成“已領(lǐng)養(yǎng)”。這個(gè)過程中救助信息、寵物信息、申請(qǐng)記錄是分離的但又通過用戶和寵物建立關(guān)聯(lián)。這套流程想通了代碼結(jié)構(gòu)也就不容易跑偏。1.2 功能模塊到底要拆成幾塊按業(yè)務(wù)場景拆整個(gè)系統(tǒng)可以分成五個(gè)核心模塊用戶認(rèn)證模塊注冊(cè)、登錄、個(gè)人資料、JWT Token 管理。寵物信息模塊寵物列表、詳情、分類篩選、發(fā)布、圖片上傳、狀態(tài)管理。領(lǐng)養(yǎng)申請(qǐng)模塊提交申請(qǐng)、取消申請(qǐng)、后臺(tái)審核、領(lǐng)養(yǎng)記錄查詢。救助模塊發(fā)布求助、救助進(jìn)度更新、救助記錄展示。后臺(tái)管理模塊用戶管理、寵物審核、申請(qǐng)審核、救助信息管理、數(shù)據(jù)統(tǒng)計(jì)。救助模塊容易被人忽略很多實(shí)現(xiàn)只是把它做成了靜態(tài)新聞公告。實(shí)際上救助記錄和領(lǐng)養(yǎng)申請(qǐng)是兩套完全不同的狀態(tài)流救助記錄關(guān)注“是否已有人接手、救助進(jìn)展到哪一步”領(lǐng)養(yǎng)申請(qǐng)關(guān)注“是否通過審核、寵物是否完成領(lǐng)養(yǎng)”。如果強(qiáng)行合在同一張表里后面寫狀態(tài)判斷時(shí)會(huì)很痛苦。1.3 為什么采用 Spring Boot 單體分層架構(gòu)第一次接觸這類項(xiàng)目的人常問既然技術(shù)棧里有 Spring Boot、MyBatis、Redis、Vue為什么不做成微服務(wù)我的看法是這種校園項(xiàng)目、課程設(shè)計(jì)或者中小型平臺(tái)用單體分層架構(gòu)是性價(jià)比最高的選擇。微服務(wù)的好處是模塊隔離和獨(dú)立擴(kuò)展但代價(jià)是服務(wù)注冊(cè)、配置中心、分布式事務(wù)、鏈路追蹤這些額外復(fù)雜度。寵物領(lǐng)養(yǎng)平臺(tái)的用戶量、業(yè)務(wù)復(fù)雜度完全沒到需要拆分的地步單體應(yīng)用部署簡單、調(diào)試方便一個(gè) Spring Boot 進(jìn)程就能把后端全部跑起來。再加上 Spring Boot 本身自帶自動(dòng)配置、內(nèi)嵌 Tomcat、眾多 Starter配合 MyBatis-Plus 做數(shù)據(jù)訪問幾天時(shí)間就能把骨架搭完。分層結(jié)構(gòu)也足夠清晰Controller 接收請(qǐng)求Service 處理業(yè)務(wù)Mapper 訪問數(shù)據(jù)庫Entity 映射表結(jié)構(gòu)。先用單體把業(yè)務(wù)邏輯想清楚比一上來就追新架構(gòu)靠譜得多。2. 數(shù)據(jù)庫設(shè)計(jì)狀態(tài)字段定好了后面少寫很多改動(dòng)表結(jié)構(gòu)設(shè)計(jì)是這類項(xiàng)目最容易決定后期工作量的地方。我每次拿到一套源碼不會(huì)先看代碼而是先打開 SQL 文件看三張核心表寵物表、領(lǐng)養(yǎng)申請(qǐng)表、用戶表。這幾張表的結(jié)構(gòu)設(shè)計(jì)基本能反映整個(gè)項(xiàng)目的質(zhì)量。2.1 核心表結(jié)構(gòu)與字段說明一套完整但不過度設(shè)計(jì)的表結(jié)構(gòu)通常包括下面這些表表名主要作用關(guān)鍵字段user普通用戶和管理員id, username, password, phone, avatar, user_type, statuspet寵物信息id, pet_name, breed, age, sex, city, cover_image, description, publisher_id, statusadoption_application領(lǐng)養(yǎng)申請(qǐng)id, pet_id, user_id, applicant_name, phone, address, reason, status, audit_remarkrescue_record救助記錄id, title, address, description, images, contact_phone, status, create_timeadmin管理員賬號(hào)id, username, password, rolenotice平臺(tái)公告id, title, content, create_time寵物表里的 publisher_id 關(guān)聯(lián) user 表表示這條寵物信息是誰發(fā)布的。adoption_application 表通過 pet_id 和 user_id 把申請(qǐng)人和寵物關(guān)聯(lián)起來后臺(tái)審核時(shí)只要依據(jù)這兩個(gè)外鍵關(guān)系去更新狀態(tài)即可。表字段不一定要多豪華重點(diǎn)是能支撐狀態(tài)流轉(zhuǎn)并且保證之后加字段不傷筋動(dòng)骨。2.2 狀態(tài)字段與業(yè)務(wù)狀態(tài)流轉(zhuǎn)狀態(tài)字段是整個(gè)項(xiàng)目里最容易寫錯(cuò)邏輯的地方。我會(huì)在數(shù)據(jù)庫里把狀態(tài)都定義成 tinyint并用注釋寫明含義避免代碼里到處是魔法數(shù)字。寵物表的狀態(tài)建議這樣設(shè)計(jì)status含義0待審核1待領(lǐng)養(yǎng)2已領(lǐng)養(yǎng)3已下架領(lǐng)養(yǎng)申請(qǐng)表的狀態(tài)建議這樣設(shè)計(jì)status含義0待審核1已通過2已拒絕狀態(tài)流轉(zhuǎn)的核心規(guī)則是管理員審核通過寵物發(fā)布后寵物從 0 變?yōu)?1用戶提交領(lǐng)養(yǎng)申請(qǐng)后申請(qǐng)記錄為 0管理員審核申請(qǐng)通過后申請(qǐng)變?yōu)?1同時(shí)寵物表從 1 變?yōu)?2如果審核拒絕申請(qǐng)變?yōu)?2寵物繼續(xù)保持在 1等待下一位申請(qǐng)者。這里有一個(gè)很常見的坑同一只寵物可能有多條待審核申請(qǐng)如果管理員通過了其中一條另外幾條申請(qǐng)應(yīng)該自動(dòng)變成已拒絕或已取消否則就會(huì)造成同一只寵物被“重復(fù)領(lǐng)養(yǎng)”。很多初級(jí)項(xiàng)目沒有處理這個(gè)邏輯導(dǎo)致寵物狀態(tài)已經(jīng)變成 2其他申請(qǐng)還是待審核狀態(tài)。處理方式很簡單在領(lǐng)養(yǎng)申請(qǐng)審核通過的代碼里額外更新同寵物下所有狀態(tài)為 0 的申請(qǐng)。2.3 外鍵、索引與刪除策略的取舍很多教材里強(qiáng)調(diào)外鍵約束但真實(shí)項(xiàng)目里我一般不建議加物理外鍵。物理外鍵會(huì)讓插入、刪除順序變得很嚴(yán)格比如先刪寵物還是先刪申請(qǐng)一旦順序反了就會(huì)報(bào)錯(cuò)而且系統(tǒng)后期拆分或遷移數(shù)據(jù)時(shí)物理外鍵還會(huì)成為負(fù)擔(dān)。正確做法是在 Java 代碼里通過 Service 層保證數(shù)據(jù)一致性只在表字段上建普通索引。需要重點(diǎn)關(guān)注的索引有三個(gè)pet 表的 status 和 city 聯(lián)合索引adoption_application 表的 pet_id 和 user_id 聯(lián)合索引rescue_record 表的 status 索引。這些字段都是查詢和篩選的高頻條件。刪除策略上不太建議直接物理刪除寵物信息。用戶已經(jīng)提交過申請(qǐng)且申請(qǐng)記錄里關(guān)聯(lián)了寵物 id如果寵物被物理刪除后臺(tái)查看歷史申請(qǐng)時(shí)會(huì)變成空數(shù)據(jù)。更好的做法是用邏輯刪除給表加一個(gè) deleted 字段查詢時(shí)統(tǒng)一過濾?;蛘吒唵我稽c(diǎn)直接用 status3已下架來替代刪除既保留數(shù)據(jù)又方便用戶申訴和后臺(tái)追蹤。3. 后端功能實(shí)現(xiàn)從登錄到領(lǐng)養(yǎng)審核的完整鏈路后端代碼看起來模塊很多但真正撐起業(yè)務(wù)核心的只有幾個(gè)部分統(tǒng)一返回結(jié)構(gòu)、登錄鑒權(quán)、文件上傳、領(lǐng)養(yǎng)審核、列表查詢。把這五塊吃透項(xiàng)目的骨架就明白了。3.1 統(tǒng)一返回體、異常處理與分層約定前后端聯(lián)調(diào)最容易出現(xiàn)的問題就是接口返回格式不統(tǒng)一。今天返回{data: xxx}明天返回{result: xxx}前端寫起來非常痛苦。所以項(xiàng)目里必須有一個(gè)統(tǒng)一返回體。Data public class ResultT { private Integer code; private String msg; private T data; public static T ResultT ok(T data) { ResultT r new Result(); r.code 200; r.msg ok; r.data data; return r; } public static T ResultT fail(Integer code, String msg) { ResultT r new Result(); r.code code; r.msg msg; return r; } }配合一個(gè)全局異常處理器可以把業(yè)務(wù)異常和技術(shù)異常統(tǒng)一攔截。比如用戶提交領(lǐng)養(yǎng)申請(qǐng)時(shí)寵物已經(jīng)不存在Service 層直接拋出BusinessException由RestControllerAdvice統(tǒng)一轉(zhuǎn)成Result.fail(400, e.getMessage())。這樣 Controller 層就不用每個(gè)方法都寫 try-catch代碼會(huì)干凈很多。分層時(shí)記住一條紅線Controller 不寫業(yè)務(wù)邏輯只做參數(shù)接收和結(jié)果轉(zhuǎn)換Service 不做 SQL 拼接只調(diào) Mapper 方法復(fù)雜查詢才在 Mapper XML 里寫 SQL。3.2 JWT 登錄鑒權(quán)與密碼處理HTTP 接口本身是無狀態(tài)的登錄之后怎么知道調(diào)用者是誰主流做法就是 JWT。用戶登錄成功后后端生成一個(gè) token 返回給前端前端在后續(xù)請(qǐng)求的 Header 里帶上Authorization: token后端通過攔截器解析 token 得到用戶 id 和角色。String token Jwts.builder() .setSubject(user.getId().toString()) .claim(username, user.getUsername()) .setExpiration(new Date(System.currentTimeMillis() 1000 * 60 * 60 * 24 * 7)) .signWith(SignatureAlgorithm.HS256, secretKey) .compact();攔截器里需要做三件事讀取 Header 里的 token解析 token 是否過期把解析出的用戶信息放到當(dāng)前請(qǐng)求上下文中。注意放行登錄、注冊(cè)、寵物列表這些公開接口不要一棍子把所有接口都攔掉否則前端在未登錄狀態(tài)連首頁都打不開。密碼處理這塊不管項(xiàng)目復(fù)雜度多高都不要存明文。至少要用 MD5 加鹽更好的是用 BCrypt。加鹽的目的是防止彩虹表直接反推BCrypt 則自帶鹽值和強(qiáng)度參數(shù)安全性更高。3.3 寵物發(fā)布、圖片上傳與靜態(tài)資源映射寵物信息里圖片是剛需上傳接口要解決的問題有三個(gè)文件存到哪里、怎么防止文件名沖突、前端怎么訪問到這張圖。我比較推薦的做法是把文件保存到本機(jī)某個(gè)業(yè)務(wù)目錄比如項(xiàng)目根目錄下的upload/文件夾文件名用 UUID 重命名數(shù)據(jù)庫只存相對(duì)路徑。這樣數(shù)據(jù)庫和磁盤文件不會(huì)因?yàn)橹孛ハ喔采w而且未來如果要遷移到云存儲(chǔ)只需要改動(dòng)上傳方法數(shù)據(jù)庫字段不用變。PostMapping(/upload) public ResultString upload(RequestParam(file) MultipartFile file) { if (file.isEmpty()) { return Result.fail(400, 文件不能為空); } String originalFilename file.getOriginalFilename(); String suffix originalFilename ! null ? originalFilename.substring(originalFilename.lastIndexOf(.)) : .jpg; String fileName UUID.randomUUID() suffix; Path targetPath Paths.get(uploadDir).resolve(fileName); file.transferTo(targetPath); return Result.ok(/uploads/ fileName); }上傳之后還要配置靜態(tài)資源映射否則/uploads/xxx.jpg會(huì)直接 404。Configuration public class WebMvcConfig implements WebMvcConfigurer { Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/uploads/**) .addResourceLocations(file: uploadDir /); } }這里有個(gè)細(xì)節(jié)uploadDir最好用絕對(duì)路徑并且提前創(chuàng)建目錄。很多人用相對(duì)路徑結(jié)果在 IDE 里啟動(dòng)正常打成 jar 包后路徑就變了圖片全部丟失。3.4 領(lǐng)養(yǎng)申請(qǐng)與后臺(tái)審核的事務(wù)實(shí)現(xiàn)領(lǐng)養(yǎng)審核是整個(gè)系統(tǒng)里最需要寫事務(wù)的地方。它的核心邏輯是更新申請(qǐng)的審核狀態(tài)如果審核通過還要同步更新寵物狀態(tài)。這兩步必須在一個(gè)事務(wù)里完成否則可能出現(xiàn)申請(qǐng)已通過但寵物還是待領(lǐng)養(yǎng)的情況。Transactional(rollbackFor Exception.class) public void auditAdoption(Long applicationId, Integer auditStatus, String remark) { AdoptionApplication app adoptionApplicationMapper.selectById(applicationId); if (app null || app.getStatus() ! 0) { throw new BusinessException(申請(qǐng)不存在或已處理); } app.setStatus(auditStatus); app.setAuditRemark(remark); app.setAuditTime(LocalDateTime.now()); adoptionApplicationMapper.updateById(app); if (auditStatus 1) { Pet pet petMapper.selectById(app.getPetId()); pet.setStatus(2); petMapper.updateById(pet); // 同一寵物其他待審核申請(qǐng)自動(dòng)置為已拒絕 LambdaUpdateWrapperAdoptionApplication updateWrapper new LambdaUpdateWrapper(); updateWrapper.eq(AdoptionApplication::getPetId, app.getPetId()) .eq(AdoptionApplication::getStatus, 0) .set(AdoptionApplication::getStatus, 2) .set(AdoptionApplication::getAuditRemark, 該寵物已被領(lǐng)養(yǎng)); adoptionApplicationMapper.update(null, updateWrapper); } }為什么老項(xiàng)目會(huì)在這里出問題最常見的原因是把Transactional加在 Controller 方法上或者在同類的另一個(gè)方法里直接調(diào)用結(jié)果事務(wù)沒有生效。正確玩法是把事務(wù)加在 Service 實(shí)現(xiàn)類的 public 方法上并且保證異常能被 Spring 捕獲。如果方法內(nèi)部自己 try-catch 把異常吞掉Spring 是不會(huì)回滾的。3.5 列表篩選和分頁查詢的常規(guī)寫法寵物列表頁是用戶第一眼看到的東西接口要支持分頁還要支持按城市、品種、狀態(tài)篩選。用 MyBatis-Plus 的LambdaQueryWrapper可以寫得很清晰不需要在 XML 里拼 SQL。PagePet page petMapper.selectPage( new Page(pageNum, pageSize), new LambdaQueryWrapperPet() .eq(StringUtils.isNotBlank(city), Pet::getCity, city) .like(StringUtils.isNotBlank(breed), Pet::getBreed, breed) .eq(Pet::getStatus, 1) .orderByDesc(Pet::getCreateTime) );使用 LambdaQueryWrapper 的好處有兩個(gè)一是字段名用方法引用不會(huì)寫錯(cuò)列名二是條件對(duì)象是StringUtils.isNotBlank當(dāng)參數(shù)為空時(shí)這段條件自動(dòng)拼不上避免了 SQL 注入風(fēng)險(xiǎn)。分頁對(duì)象自帶 total、current、pages 這些字段前端直接展示即可。特別注意如果有多個(gè)篩選條件一定不要在 Java 代碼里字符串拼接 SQL這是項(xiàng)目里的高危行為。4. 前端頁面與接口聯(lián)調(diào)別只盯著后端代碼很多人的注意力全放在后端結(jié)果啟動(dòng)項(xiàng)目后發(fā)現(xiàn)頁面白屏、接口 404。前端和后端是配合關(guān)系哪怕源碼里已經(jīng)有現(xiàn)成頁面也得知道每個(gè)頁面在調(diào)哪個(gè)接口。4.1 用戶端和管理端的頁面劃分用戶端重點(diǎn)看六個(gè)頁面首頁寵物列表、寵物詳情頁、領(lǐng)養(yǎng)申請(qǐng)頁、救助信息發(fā)布頁、個(gè)人中心、登錄注冊(cè)頁。管理端重點(diǎn)看寵物管理、領(lǐng)養(yǎng)審核、救助管理、用戶管理、數(shù)據(jù)統(tǒng)計(jì)。每個(gè)管理頁面背后基本都是一個(gè)分頁列表接口加上一個(gè)新增加、修改、刪除接口。如果前端是 Vue 單頁應(yīng)用核心在路由配置和請(qǐng)求封裝。路由對(duì)應(yīng)頁面請(qǐng)求封裝統(tǒng)一處理 token 注入和返回體解析。如果前端是簡單模板頁面那更要注意表單提交的字段名和后端實(shí)體字段是否一致。不一致是最常見的聯(lián)調(diào)問題比如后端字段叫phone前端提交的是tel后臺(tái)直接收到 null。4.2 接口路徑和返回格式約定接口設(shè)計(jì)建議統(tǒng)一 RESTful 風(fēng)格方便前后端記憶方法路徑說明POST/api/user/register用戶注冊(cè)POST/api/user/login用戶登錄GET/api/pet/list寵物分頁列表GET/api/pet/detail/{id}寵物詳情POST/api/adoption/apply提交領(lǐng)養(yǎng)申請(qǐng)POST/api/admin/adoption/audit審核領(lǐng)養(yǎng)申請(qǐng)GET/api/rescue/list救助列表POST/api/upload圖片上傳鑒權(quán)規(guī)則上普通用戶接口要求帶 token管理員接口還要校驗(yàn)角色。攔截器在進(jìn)入 Controller 之前把角色信息解析出來如果普通用戶訪問 admin 接口直接返回 403。這樣權(quán)限判斷不會(huì)散落到每個(gè)業(yè)務(wù)方法里。4.3 聯(lián)調(diào)時(shí)最容易出問題的幾個(gè)位置第一個(gè)是跨域。前端跑在 5173 或 8081后端跑在 8080瀏覽器默認(rèn)會(huì)攔截跨域請(qǐng)求。后端需要配置 CorsFilter 或者實(shí)現(xiàn)WebMvcConfigurer的addCorsMappings。第二個(gè)是日期格式。Java 的LocalDateTime默認(rèn)序列化出來是一串?dāng)?shù)組前端根本沒法用要配置 Jackson 的日期格式。第三個(gè)是文件路徑。前端拿到的圖片地址是不是完整 URL能不能直接放進(jìn) img 標(biāo)簽這些都要提前約定好。5. 本地部署運(yùn)行拿到源碼后從0跑起來的完整步驟我不建議拿到項(xiàng)目就直接點(diǎn)啟動(dòng)按鈕因?yàn)榇蟾怕蕰?huì)因?yàn)榄h(huán)境問題報(bào)一堆錯(cuò)。先按順序做好環(huán)境確認(rèn)和配置修改整個(gè)過程會(huì)順暢很多。5.1 環(huán)境版本與安裝注意點(diǎn)不同源碼用到的基礎(chǔ)版本差異很大先看項(xiàng)目的 pom.xml 和前端 package.json 再動(dòng)手組件推薦版本說明JDK1.8 或 11Spring Boot 2.x 用 1.8 最穩(wěn)Maven3.6 以上管理后端依賴MySQL5.7 或 8.05.7 兼容性最好Redis5.0 以上如果項(xiàng)目引用了 Redis 依賴才需要Node.js14 或 16前端 Vue 項(xiàng)目構(gòu)建用IDEIntelliJ IDEA直接導(dǎo)入 Maven 工程有個(gè)小技巧啟動(dòng)前先檢查 pom.xml 里是否引用了 Redis、RabbitMQ 這類中間件如果引用了本地環(huán)境沒有啟動(dòng)對(duì)應(yīng)服務(wù)后端會(huì)直接啟動(dòng)失敗。確認(rèn)依賴都齊全后再進(jìn)入下一步。5.2 修改配置文件的核心地方后端核心配置集中在 application.yml主要改數(shù)據(jù)庫連接和文件上傳路徑。server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/pet_adoption?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver servlet: multipart: max-file-size: 10MB max-request-size: 20MB mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml configuration: map-underscore-to-camel-case: true這里要注意三個(gè)細(xì)節(jié)。serverTimezoneAsia/Shanghai不寫MySQL 8 下經(jīng)常報(bào)時(shí)間連接錯(cuò)誤。map-underscore-to-camel-case必須開否則數(shù)據(jù)庫里的create_time映射不到 Java 的createTime。文件上傳大小限制默認(rèn)只有 1MB寵物圖片稍微大一點(diǎn)就會(huì)被攔所以手動(dòng)放大到 10MB。前端項(xiàng)目的接口地址也要看一眼如果寫死了localhost:8080本地運(yùn)行沒問題如果寫的是測(cè)試服務(wù)器地址必須改成后端實(shí)際地址。5.3 啟動(dòng)驗(yàn)證順序按照下面的順序操作基本不會(huì)出現(xiàn)“卡住看不懂”的情況。第一步用 Navicat 或命令行創(chuàng)建數(shù)據(jù)庫然后把項(xiàng)目提供的 SQL 文件導(dǎo)入。導(dǎo)入后點(diǎn)開 pet 表看一眼確認(rèn)有數(shù)據(jù)還是空表。第二步修改 application.yml 里的賬號(hào)密碼保證能連上剛才創(chuàng)建的庫。第三步如果 pom.xml 里有 Redis啟動(dòng)本地 Redis 服務(wù)。第四步運(yùn)行 Spring Boot 啟動(dòng)類看到 “Started Application in x seconds” 才說明后端起來了。第五步啟動(dòng)前端執(zhí)行 npm install 和 npm run serve瀏覽器打開頁面。第六步隨便注冊(cè)一個(gè)賬號(hào)走一遍發(fā)布寵物到申請(qǐng)領(lǐng)養(yǎng)的流程確認(rèn)狀態(tài)流轉(zhuǎn)正常。這一步不要省。很多項(xiàng)目表面能啟動(dòng)但實(shí)際業(yè)務(wù)鏈路是斷的早期發(fā)現(xiàn)總比寫代碼寫到一半再排查強(qiáng)。6. 常見問題排查與避坑實(shí)錄這部分是我覺得最值錢的內(nèi)容。項(xiàng)目運(yùn)行不起來、頁面數(shù)據(jù)不對(duì)90% 的原因就集中在下面這些點(diǎn)。6.1 高頻報(bào)錯(cuò)速查表現(xiàn)象可能原因處理方法Application 啟動(dòng)時(shí)報(bào)數(shù)據(jù)源錯(cuò)誤數(shù)據(jù)庫沒建、賬號(hào)密碼錯(cuò)、URL 寫錯(cuò)先確認(rèn)數(shù)據(jù)庫連接是否能 ping 通再檢查 yml 配置訪問頁面白屏 404前端接口地址寫錯(cuò)、后端 context-path 不一致查看瀏覽器 Network確認(rèn)請(qǐng)求有沒有發(fā)到后端圖片上傳后訪問 404沒有配置靜態(tài)資源映射或 uploadDir 路徑不對(duì)檢查addResourceHandlers是否生效接口報(bào) 401 或 403token 沒傳、token 過期、角色權(quán)限不足查看請(qǐng)求 Header 是否有 AuthorizationInvalid bound statementMapper 接口和 XML 文件沒對(duì)應(yīng)上檢查mapper-locations和 namespace時(shí)間字段返回?cái)?shù)字?jǐn)?shù)組LocalDateTime 序列化問題配置 Jackson JavaTimeModule 和日期格式Redis連接失敗Redis 服務(wù)未啟動(dòng)或地址配置錯(cuò)誤啟動(dòng) Redis確認(rèn)端口中文亂碼數(shù)據(jù)庫字符集不是 utf8mb4重新建庫時(shí)指定 utf8mb46.2 一套通用的排查思路遇到問題不要只盯著瀏覽器報(bào)錯(cuò)我自己通常按這三步走。第一步看控制臺(tái)日志。后端啟動(dòng)失敗時(shí)先看第一個(gè)異常類型而不是最后一行看不懂的 Caused by 開端。日志最前面的異常類名幾乎能直接指向問題方向比如ClassNotFoundException就是缺依賴CannotCreateTransactionException就是數(shù)據(jù)庫連接出問題。第二步確認(rèn)基礎(chǔ)環(huán)境。數(shù)據(jù)庫能不能連上、端口有沒有被占用、前端代理有沒有配置這些問題用最快的手動(dòng)操作驗(yàn)證一遍比花半小時(shí)看代碼更有效。第三步還原操作路徑。把出問題的接口調(diào)用鏈走一遍看是前端沒發(fā)請(qǐng)求還是后端收到了但返回異常還是數(shù)據(jù)庫里數(shù)據(jù)狀態(tài)不對(duì)。前端 Network 面板、后端日志、數(shù)據(jù)庫三個(gè)對(duì)照著看很快就能定位。6.3 幾個(gè)項(xiàng)目里容易忽略的細(xì)節(jié)事務(wù)異常被吞掉是最隱蔽的坑。Service 方法加了Transactional里面卻自己 try-catch 了異常代碼看起來不報(bào)錯(cuò)但數(shù)據(jù)寫到一半就斷了最難受。事務(wù)方法里的異常一定要往上拋交給全局異常處理器處理。文件上傳路徑不要用相對(duì)路徑。相對(duì)路徑在 IDE 里跑和打成 jar 跑工作目錄不一樣圖片一會(huì)兒有、一會(huì)兒沒有。建議代碼里用配置屬性動(dòng)態(tài)指定絕對(duì)路徑或者臨時(shí)用System.getProperty(user.dir)拼一個(gè)項(xiàng)目運(yùn)行目錄。領(lǐng)養(yǎng)申請(qǐng)并發(fā)的問題建議盡早考慮。同一只寵物如果被兩個(gè)人同時(shí)提交申請(qǐng)并且管理員同時(shí)審核可能出現(xiàn)兩個(gè)審核操作都把寵物狀態(tài)改成 2 的臟讀。嚴(yán)謹(jǐn)一點(diǎn)的做法是在審核方法里用樂觀鎖比如在 pet 表加 version 字段更新時(shí)校驗(yàn)版本號(hào)或者最簡單地在審核前用select ... for update鎖住寵物記錄。7. 二次開發(fā)擴(kuò)展讓系統(tǒng)從“能跑”變成“好用”能把一套現(xiàn)成的寵物領(lǐng)養(yǎng)救助平臺(tái)跑起來只能算完成了第一步。真正拉開差距的是你在這個(gè)基礎(chǔ)上加了什么、改了什么。7.1 建議優(yōu)先加的功能如果要在這個(gè)項(xiàng)目上做二次開發(fā)我強(qiáng)烈建議先加寵物健康檔案。寵物領(lǐng)養(yǎng)不是商品交易領(lǐng)養(yǎng)人很關(guān)心寵物疫苗、驅(qū)蟲、絕育情況。新建一張 pet_health_record 表關(guān)聯(lián) pet_id記錄疫苗名稱、接種時(shí)間、下次接種日期頁面放在寵物詳情里會(huì)讓系統(tǒng)完整度立刻上一個(gè)檔次。第二個(gè)建議加領(lǐng)養(yǎng)回訪。很多救助站會(huì)要求領(lǐng)養(yǎng)人定期反饋寵物近況用一個(gè)回訪任務(wù)表加上定時(shí)任務(wù)到時(shí)間自動(dòng)生成回訪工單管理員跟進(jìn)后記錄結(jié)果。這個(gè)功能很貼合實(shí)際業(yè)務(wù)也是面試時(shí)能拿出來講的亮點(diǎn)。第三個(gè)建議加在線協(xié)商功能。用戶在提交申請(qǐng)前常想和救助站溝通一下寵物性格、領(lǐng)養(yǎng)條件用 WebSocket 做一個(gè)簡單聊天室比反復(fù)刷新列表和打電話體驗(yàn)好得多。7.2 代碼層可以做的優(yōu)化業(yè)務(wù)之外代碼層有幾個(gè)值得優(yōu)化的點(diǎn)。列表接口可以把寵物信息和圖片分離減少大字段查詢熱點(diǎn)數(shù)據(jù)用 Redis 做緩存比如首頁推薦寵物列表一分鐘更新一次就夠了接口返回值不要直接返回?cái)?shù)據(jù)庫實(shí)體因?yàn)閷?shí)體里的密碼、手機(jī)號(hào)等敏感字段可能被前端看到建議補(bǔ)一層 DTO。數(shù)據(jù)庫這塊可以把救助記錄的類型、寵物品種這些重復(fù)性高的字段改成字典表減少維護(hù)成本。接口層可以補(bǔ)充參數(shù)校驗(yàn)注解比如手機(jī)號(hào)格式、申請(qǐng)理由長度避免前端繞過頁面直接調(diào)接口。7.3 關(guān)于學(xué)習(xí)這類項(xiàng)目的一點(diǎn)個(gè)人體會(huì)我拿到一套新項(xiàng)目習(xí)慣是“倒著學(xué)”。先看 SQL 文件里的表結(jié)構(gòu)把狀態(tài)字段和關(guān)聯(lián)字段畫出來再打開講解視頻按模塊跳著看重點(diǎn)看領(lǐng)養(yǎng)審核、文件上傳、權(quán)限攔截這幾個(gè)核心環(huán)節(jié)最后自己動(dòng)手改一個(gè)小需求比如給寵物表加一個(gè)“是否已絕育”字段從前端表單到后端接口到數(shù)據(jù)庫全鏈路改一遍。這樣做的好處是你不是被動(dòng)地把代碼看了一遍而是真正理解了每個(gè)模塊的來龍去脈。后面再遇到類似的項(xiàng)目哪怕表名不同核心邏輯也都能一眼看穿。這套寵物領(lǐng)養(yǎng)救助平臺(tái)系統(tǒng)價(jià)值不只是“能跑”。你看懂了狀態(tài)流轉(zhuǎn)、事務(wù)控制、文件上傳、權(quán)限攔截這幾個(gè)關(guān)鍵點(diǎn)再去做任何后臺(tái)管理系統(tǒng)都會(huì)順手很多。最后提醒一句拿到配套的文檔和講解視頻后先定位目錄再動(dòng)手改代碼這個(gè)順序能幫你省下大把試錯(cuò)時(shí)間。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产第11页| 狠狠图片青青草| 亚洲熟女av中文字幕| 激情文学网伊人| 中文字幕丰满人妻日本| 97色操| 中文字幕版| 怡红院一区二区熟女人妻| 国内伊人久久久久久网站视频| 丁香婷婷激情五月天无毒不卡| 久草免费在线一区二区| 国产日韩欧美操逼视频| 亚洲97成人在线观看| 久久风骚城市| 久久久日本电影| 无码人妻丰满熟妇区毛片| 97视频网站在线观看| 福利伊人玖玖国产| 国产黄色影片在线观看| 国产亚洲福利第一页丝袜| 亚洲AV永久无码精品成人调教 | 在线观看视频91| 99热成人| 一起草av| 激情综合婷婷| 黑人无码一区二区| 亚洲综合另类小说色区亚洲成av人片在www | 九一屌逼| 99蜜桃臀亚洲成人在线观看| 男人的天堂在线| 熟女网站最新| 国产精品天干天干综合网麻豆| 五月天久久久| 婷婷五月天补不补| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 亚洲男人天堂2| 97 九色| 丰满人妻一区二区三区四| 操碰97| 另类小说五月天| 国产精品无码AV网站| 国产精品久久久久亚洲av| 操国产逼| 91精品人妻偷情| 校园春色综合网| 美女啊啊啊啊啊| 99这里只有精品| 九九九草| 国产丁香精品露脸视频 | 人人看人人摸人人色| 操逼片国产| 思思热免费在线视频| 欧美极品美女aaaaaa级黄片| 激情小说图片亚洲首页| 亚洲五码一区二区三区| 欧亚洲精品有视频| 日欧美色| 亚精品无码毛片一区二区三区| 亚洲大胆人体av| AV色五月天| 国产丰满熟夫69mpp| 啊啊啊在线观看免费视频| 加勒比综合九九99视频在线播放| 日韩人人精品| 一区二区三区免费视频入口| 中文人妻av高清一区| 在线播放免费av福利片| 欧美丰满熟妇XXXX性ppX人交| 在线观看日韩av不卡| 激情婷婷丁香| 亚洲AV无码久久精品蜜桃小说| 加勒比av官网在线| 人人么人人操| 蜜桃久久一区二区三区| 亚洲的天堂网| 麻豆视频一区二区| 色婷视频| 大肉棒导航| 激情四射婷婷六月天| 啊啊啊 在线| 操国产高清| 欧美一区二区观看在线| 久热69九色熟妇97| 精品久操| 中文字幕奈奈美被公侵犯| 美女自卫慰黄网站免费| 物尤视频一区二区| 精品99999| 入口操逼网站| 大香蕉欧美伊| 国产一区在线播放| 中文字幕aⅴ在线视频| WWW4虎| 久久久精| 精品中文字幕一区二区| 色制服丝袜夫妻av一区| 69一区二区三区 | 18岁禁 茉莉成人久久| 狠狠躁天天躁日日躁97| 国产亚洲精品A在线观看下载| 999日韩中文精品观看视频。| 性色中出| 美女性91| 欧美一级A片在线看视频性色| 99爱久久视频频| 好爽要喷了| 2017人人操,人人摸| 强乱老妇中文字幕| 91欧美性| 国产风韵犹存熟妇三区| 国产又黄又粗的视频| 激情五月丁香五月| 997色在线| 少妇熟女1区2区3区| 亚洲熟妇图片| 2019天天干| 日本在线视频导航| 久久精品日韩专区免费观看| 干婷婷综合网| 亚洲?V高清一区二区三区尤物| 色色婷| 情色大香蕉| 日韩黄色成人性爱| 97网站在线观看| 日韩乱伦影音先锋| 97chaopengongkai| 92福利社视频| 亚洲AV秘无码一区..| 无码一区二区三区四区五区六区七区八区九区十区视频 | 亚洲三级网址久久最新| 欧美亚洲自拍另类人妻| 久久9精品视频| 无码久久亚洲高清,| 91蜜臀熟女| 波多野结衣AV无码一区| 色好看av| 国产精品无码久久久久2025| 久湿久久| 丁香五月性| 亚洲资源站| 亚洲丝袜二区| 免费a v| 97超碰免费人人性爱| 丰满岳乱妇一区二区三区| 97精品视频网站| 色网在线视频观看免费| 高清不卡 中文 人妻| 亚州AV无码国产精品| 婷婷10月天青娱乐| 国精综合一二三区影视| 91小视频| 97视频网站| 麻豆福利视频导航| 秋霞免费AV| 狠狠97| 色蜜AV| 天天爽夜夜爽夜夜爽精| 天天爱综合网| 午夜天堂网| 婷婷丁香五月天亚洲天堂网| 亚洲日韩天堂| 日本精品九九九| 人妻少妇精品一区二区三区| 亚洲精品官网在线观看| 天天射夜夜骑| 免费视频观看60秒| 神马影院午夜福利久久久| 人妻少妇av在线观看| 女生久久网| 中文字幕乱碼在线| 91久久久久免| 午夜一区二区三区国产| 午夜传煤十二区精品| 精品人妻一区二区三区-国产精品| 中文人妻av高清一区| 97亚洲色图| 粉嫩AV一区夜夜嗨| 欧美成人色| 丁香五月婷婷色| 欧美日韩*字幕一区| 午夜啊啊| 人妻熟女一区二区| 神马久久69| baisiav| 人妻精品视频一区二区| 亚欧无码在线| 久操操AV电影| AV乱伦专区| 综合色区偷拍| 久久久精品九| 91激情综合| 超碰97资源中文字幕| 国产成人精品亚洲日本| 成人夜夜爽| 国产精品一级毛片不卡视| 亚洲在线网站| 男女啪啪啪18禁网站| 男人天堂2030| 色香天天| www欧美91| 日本黄色精品| 东京热综合久久一区二区| 亚春色色| 欧日韩一二三f区| 中文精品少妇天堂| 久久少妇人妻| 国产精品第二页| 丝袜综合色图| a人欧美综合天堂麻豆| 亚州情色j区| 国产精品三级视频网站| 丰满人妻av一区二区三区| 天综合网欧美| 97超碰欧美精品| 夜夜嗨TV| 大香蕉www.超碰| 久久↗↗| 男女激烈网站最新| 国产一级特黄大片处女| 九九精品99| 欧美呦呦性爱| 青草草免费网站av| 激情抓乳插进去啪啪啪日韩| 亚洲 欧美 手机在线观看| 人妻-91porn| 色噜噜狠狠色综合日日| 91大学精品激情戏| 日本不卡三级网在线播放| 人妻天天操天天爽视频免费| 蜜桃臀 后入 一区 二区 三区 在线| 裸体美女免费看网站青草| 国产精品久久久无码AV网站| 欧美传媒| 丝袜美腿制服人妻二区中文字幕| 四虎影院成年人片| 超91综合网| 麻豆视频test| 99国产精品免费| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 十八禁视频网站| 女人被添高潮免费视频| 污啪啪啪视频| 啊啊啊不要啊啊受不了了视频在线 | 九九九九日本| 91精品少妇搡搡搡| 人妻精品一区二区| 激情小说图片亚洲首页| 全球成人中文在线| 性色中出| 综合色区偷拍| 岛国色情视频在线观看| 女人的久久久| 日本性一区| 亚洲超碰97| 亚欧高清在线| 夜夜国产一区| 国产高清成人免费视频| 怡红院一区二区熟女人妻| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 尤物视频偷拍免费| 最新三级网址| 久久久久久中文字幕中文字幕最新| 国产十八禁视频| 野狼福利社区| 综合一区中亚洲国产成人综合精品 | 五月天综合网| 性色高清..……| a片自拍直播视频| 欧美啪啪女女| 国产精品一区二区后入| 国产91av在线播放| 97干com| 欲香欲色综合天天伊人| 探花一区在线| 高清不卡 中文 人妻| 中文字幕黄片在线| 后入 亚洲 美女 射| 欧美性高潮| 91足交| 91在线丝袜视频| 亚洲精品97| 色综合九九| 国产av色网| 少妇无码av专区线| 超碰天天操你比| 96精品久久久久久久久久| 国产粉嫩出水在线播放| 日日做夜狠狠爱欧美黑人| 国语精品av| 在线播放中文字幕| 日韩天天本| 最近2018中文字幕在线高清第一页| 91精品国产高清久久久久久,亚洲成人 | 久久黄黄| 中日韩免费看男女操逼大全| 天天摸,夜夜摸| 天天影视网色欲色香| 国产精品午夜福利亚洲综合网| av一区二区三区 中文| 亚洲欧美91√| 久久久久久国产手机AV| 久草精品一区| 人人妻人射| 久久久久亚洲精品| 久久久国产成人一区二区三区在线| 亚洲天堂另类小说男人| 国产h小视频在线观看免费| 久久久亚洲高清不打码| 制服少妇欧美| 岛国毛片手机在线观看| 亚洲色图第一页| 精品久久久久av影院| 色五月激情AV在线| 国产三区免费在线观看| 五月开心久久AV官网| 7777奇米影视久久| 97超级欧美| 操我无码| 91中文字幕| 蜜桃色色网站视频三区| 干超碰碰熟女| 精品91摸| 国产极品一区二区三区三州| 97国产|免费| 天天操夜夜操| 香蕉国产精品麻豆亚洲欧美日韩 | 人妻久久一区二区三区| 日本不卡卡一区| 成人蜜乳小视频网站| 中文字幕加勒比海高清无码免费视频| 国产久久成人| 一区超碰一区| 中亚精品极乱| 最新av中文字幕高清| 综合网欧| 成人日韩欧美| 免费人成在线观看网站品爱网| 视频二区熟女人妻| 日本久久精品| 国产精品盗摄 偷窥盗摄| 超碰地址97| 1禁看欧美黄片免费看| 亚州,欧美在线| 男人夜色天堂ss| 曰韩操B| 哑洲在线| 夜草欧美| 精品人妻一区二区三区-国产| 人人做,人人操,人人摸| 99AV| 欧美日韩成人在线| 十八禁的黄污污免费网站| 日韩精品人妻中文字幕不卡乱码| 亚洲免费精品一区| 成年人一级黄色毛片大全在线观看| 久久久久久久久999| 欧美亚洲AN| 淫乱图区 | 婷婷亚洲五月***久久| 亚洲人妻久久| 97中文综合| 日日摸日日碰| 亚洲色9| 婷婷五月激情综合| 国产亚洲精品久久久久小 | 丁香五月天激情网站| 午夜小电影在线插入淫高潮| 天天日天天干少妇日| 成人精品一区二区三区| 夜夜嗨一区二区| 欧美性爱十八禁| www.91理论| 美女被啪到深处抽搐视频| 久色99999| 按摩中文字幕| 久久国产视频专区一二三| 午夜.DJ高清在线观看免费7| 男同专区一区二区三区在线| 欧洲精品欧洲精品| 99久久9| 国产精品小视频一区二区三区| 亚洲精品国产无码高清| 伊人国产成人av网站| 女上位精品在线| 嗯嗯啊好大| 国产夜夜操| 涩五月婷婷| 天天干夜夜操网| 天天干夜夜操网| 亚洲免费成人在线高清无码视频| 啊啊啊在线观看| 国产999精品久久久| 伊人久久亚洲色欲综合网站| 青青草狠狠撸| 美女爽爽爽刺痛洞洞| 欧美91精彩| 91oumei| 国产成人网| 天天干人妇| 日本 欧美 国产一区| 激情视频网址| 久久久久深夜无码| 秋霞福利网| 国产视频大全| 大香蕉中文在线| 国产精品网址| 9色国产精品一区粉嫩| 97精品久久| 人人做天天爱| 操B视频日韩无码| 日韩在线一区高清在线| 黄色av网站在线播放| 在线岛国新天堂8| 中文字幕AV乱伦| 日日日日做夜夜夜夜无码| 中文字幕aⅴ在线视频| 欧美日韩操逼动图| 日本久久99| 天天干天天爽| 91在线丝袜视频| 色五月激情AV在线| 91成人精品| 欧美色图 色综合图| 久久夜夜| 91精品丝袜在线观看| 亚洲欧美精品91| 美女露胸露奶头| 亚洲色图加勒比| 智利AV在线网| 一级AV性爱| 国产吞精a级片激情电影| 91是天天| 99re这里只有精品2| 亚洲蜜臀视频精品久久| 极品色| 91精品久久久久五月天精品| 人妻-91porn| 十八禁网站在线| 美女毛片999| 欧美在线干| 国产熟女精品一区二区| 密臀AV在线| 青青草华人在线欧美在线| 日韩少妇无码| 99热欧美| 啊啊啊啊啊啊啊网址在线观看| 一本一道久久综合久久| 国产99精品一区二区三区免费| 99色视频| 欧美日韩国产精品久久色婷婷| 激情综合网激情综合| 91人人臊| 久久大陆| 亚洲电影中字一区二区| www99热| 91处女在线视频| 国产强奸AV在线| 国产超碰人人操| 97久久精品国产| 97精品网| 日本精品一区三区| 欧美激情 亚洲色图| 国产野战露脸在线播放| 久久天天躁日日躁狠狠躁| 91精品人妻一品二品三品| 久久无码成人| 五月天综合网| 天天爱天天操| 国产热RE99久久6国产精品首| 91亚州欧美| 福利视频香蕉免费一区二区在线| 去干网最新版| 激情文学亚洲| 五月天婷精品激情| 超碰 国产熟女精品一区| 美女熟妇色| 久久av色| 偷拍偷窥与盗摄视频专区| 亚洲影视综合网| 欧美三级偷拍| 丁香婷婷久久| 97精品免费| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 国产亚洲一黄| 日韩精品人妻中文字有码在线| 国产亚洲精品美女久久久| 麻豆九九九| 人妻少妇久久中文字幕一区二区 麻豆 | 欧美劲爆第一页| 久99久视频| 99精品综合久久久久五月天| 99热91| 国产精品噜噜噜日日日| 五月丁香| 欧美亚洲情色| 10000部十八禁看电影| 色网站导航大全| 欧美97在线观看| 热无码中文亚洲H一道本一区二区| 又摸又舔在线观看网站| 国产成人手机视频激情| 精品制服美女中文一区二区三区| 日本一区二区做爱的视频| 我爱操| 欧美在线干| 午夜啪| 国产一区二区三区,在线观看观看| 偷拍亚洲熟女视频播放| 伊色久人大在线| 亚洲 欧美 中文 日韩超碰| 女沟厕偷窥piss小便| 亚洲欧美另类少妇精品| 一起草精品人妻| 亚州性色| 绑缚麻绳人妻寝取完整版| 精品人妻av在线播放| 欧美丝袜中文字幕07在线| 殴美,日韩国产伦精品| 色哟哟 日韩精品| 欧美国产一区二区三区麻豆传媒| 精品国产一级久久| 超碰精品日韩欧美国产| 亚州欧美总和| 在线女人91| 搡老女人老妇女AAA一VU麻豆| 青青草中出视频| 欧美色三级片91| 亚洲**2021在线观看| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚洲天堂资源| 91久久久视| 天天日天天舔天天喷天天射| 日韩精品中文字幕一| 丰满少妇一区二区三区免费看| 伊人久久亚洲中文字幕不卡| 色婷婷亚洲婷婷| 鸡巴插逼视频| 波多野结衣AV无码一区| 999国产精品999久久久久久| 亚洲免费97免费| 99自拍B亚洲| 性爱av网站| 国产亚洲深夜激情| 尤物网站91| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | com 首页 18岁 禁区 女优 免费 精选 同城| 久热色情精品| 91日本在线观看| 国产成年精品高清在线观看91| 啪啪视频免费在线观看| 精品国产乱码久久久| 久干网| 另类综合另类| 97超碰jingpin| 欧美一区二区观看在线| 超碰免费人妻人人| 日欧操屄| 九九九免费视频| 妇女一区二区三区| 欧美精品系列| 91丝袜人妻| 91热色| 91色色综合| 欧亚日韩综合精品国产| 一区二区三区国产在线播放| 大香蕉中文在线| 成人情色综合网| 97亚洲自在精品在线观看| 精品一区二区三区四区外站| 久久久久久九九九九-美女久久久久久久-成人AV| 91超碰人人| 天天摸,夜夜摸| 91操操| 国产伦精品一区二区三区在线观| 欧美色婷婷| 另类视频在线| 五月婷婷影院| 婷婷丁香五月综合| 欧美性爱97超碰| 日韩亚洲美州欧洲综三区一品在线| 麻豆国产免费影片| 亚洲性综合9| 精品四五区| 亚洲天堂人妻一区二区| 高清不卡一二三区视频......| 天天干2019| 欧洲射精91| 91精品国产乱码| 中文字幕久久亚州无码| 五月天人妻综合| 少妇一区二区三区| 99久久无码| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 成人精品视频| 久艹视频在线| 思思久热在线精品66| 欧美性爱18观看| 久久毛卡| 精品视频日日夜夜| 欧亚日韩三区| 亚洲不卡一| 女沟厕偷窥piss小便| 无码 黑人一区二区三区| 伊人网综合在线视频| www欧美性爱| 宅男午夜在线视频| 色综合99999| 国产精品九九九| 中文字幕精品一区欧美| 97伊人超碰| 欧美激情亚洲| 91艹B视频| 欧美婷婷| 亚洲麻豆18发?| 日本操逼视频免费| 精品区国产区一区二区三区| 91新在线欧美| 97中文字幕一区| 日韩一级久久毛片| 99热官网| 精国久久一区二区三区98| 风间由美日韩欧美久久| 精品美女久久久久| 猛交交| 亚洲熟女少妇免费视频| 麻豆天美传媒毛片| 黄片免费久久久久久久| 日韩乱码Av| 欧美性巨大╳╳╳╳╳高跟鞋| 五毛骚逼极品美女怕怕| 日韩乱伦影音先锋| 美女诱惑一区| 美女毛片999| 日本三级黄页| 熟女这里只有精品6| 色色香蕉| 啪啪综合网| 伊人国产视频| 五月天婷婷激情| 欧洲黄色网| 96一区二区三区| 丝袜综合色图| 激情五月激情综合网| 亚洲一卡二卡在线免费| 600国产精品视频| 97色视频在线| 国人欧美精品一区二区| 亚洲无码 国产无码| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 精品久久視頻在线| 福利视频一区二区微拍| 中文字幕第2页| 人人妻天天做天天爽| 亚洲91网。| 婷婷伊人一区| 特污免视频| 99这里只有精品| 色情乱伦AV| 成人 日本A片无码8888| 欧美日韩黄片精品在线| 国产 亚洲 一二三四| 男人天堂东京热| 国产精品乱码久久| 国产后入清纯| 色婷婷日韩精品一区二区三区| 天天干人人乐| 91成人亚洲色图| 亚洲综合嫩| 97在线视频免费观看| 国语少妇精| 97综合久久| 97亚洲欧美| 国产精品爆乳懂色蜜乳| 少妇特黄一区二区三区| 爽爽淫人网| 欧美一二三区四五区| 96国产污污污丝袜| 九九人妻| 久热一区二区| 自拍偷拍亚洲熟女妇人精品| 亚洲无码?第一页| 欧美性爱在线无码| 国产女人成人精品视频| 精品网站9999| 欧美日韩理论一区| 色婷婷A V一二三四区麻豆综合| 欧美综合网站999| 国产传媒午夜理伦精品| 人人操AV| 天天操福利视频综合网站| 夜夜躁狠狠躁日日躁av| 岛国在线一区二区三区| 六月婷激情福利天堂69| 久久久久九九九九九| 98人妻精品一区二区色欲| 人人摸人人摸人人干| 操屄不卡视频| 欧美久久久| 国产午夜精品理论片一二三区区| 夜嗨影院| 欧洲小说色图视频另类| 国产精品九九九| 蜜臀久久在线视频| 久区视频| 97在线免费看| 久久人妻视频| 一级性爱啪啪视频| 亚州欧美综合| 日韩有码专区| 国产67194| 久久久久久中文| 青草草免费网站av| 亚洲人成色9999精品久久| 久久风骚城市| 五月丁香影院| 国产精品伦理| 丁香五月影院| 91精品国产91久久青草| 超碰日本97美女人妻人人玩人人爱| 四季av一区二区凹凸精品小说| 亚洲第一无码播放立川理惠| 大香交| 操美女高潮抽搐白浆| nuu12国产麻豆精品| 国产精品一区二区 尿失禁| 欧美色图小说综合| 五月天开心网| 免费av在线播放二区| 毛片视频白嫩| 亚洲精品天堂久久A∨51成人漫| 青娱乐大香蕉| 国产呦精品一区二区三区下载| 蜜臀久久99精品久久久久电影| 久久精品国产亚洲AV无码做| 久久久久幕乱码| 人妻啊啊人妻啊| 先锋激情∨在线视频播放| 91性| 人妻日日夜夜精品| 国模少妇一区二区三区| 亚洲激情视频| 人人澡人人弄| 亚洲色图超碰在线| 2019久久久久久久久福利| 超碰美国| 久久精品成人| 天天综合欧美综合| 看看小穴| 涩五月婷婷| 思思热国产在线视频| 大香蕉久| 久久产精品一区二区三区电影| 久久精品男人的天堂| 伊色综合天堂色97| 9久久精品| 人人插人人搞人人操| 久久久亚洲Av| 亚洲一曲日韩精品| AⅤ片水多多| 久久透逼视频| 1级黄色夫妻对换性交免费看| 男女啊啊啊| 另类天堂| 97爱爱爱| 日韩精品在线放| 在线综合 亚洲 欧美中文字幕| 日韩中文字幕2020| 成人小电影网站tex| 97人妻碰碰中文无码久热丝袜| 亚洲性刺激| 男人的天堂 在线一区| 啊啊啊啊啊好多水| 美女黄网| 93人人操人人| 欧美日韩国产在线| 天天综合网久久ww| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 一区二区三区看视频| 91熟女网| 人人贴人人摸| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 操b在线观看| 亚洲欧美高清无码| 欧美另类精品xxxx| 国产呦精品一区二区三区下载| 婷婷五月丁香五月| 久久av色| 男人的天堂一区| 国产成人无码网站在线视频| 欧美日韩 强奸乱伦| 你操综合| 日韩欧美麻豆 | 日本大片日本一区二区免费高清| 伊人色综合超碰| 99热婷婷一区二区三| 97无码视频在线播放| 亚洲激情网| 熟女一区二区三区| 免费一二区| 人人爱操| 欧美激情一| 人妻啪| 18一区二区三区| 亚洲天天自拍| 日本视频在线观看污污污| 夜夜高潮夜夜爽| 欧美天天综合在线| 久久性爱视频| 97色综合中文网| 五月激情啪啪| 激情五月天校园春色网| 成人精品一区二区91毛片不卡| 国产伦精品一区二区三区视频女| 亚洲中文sv| 九九伊人网| 中文字幕99999| 天天看综合网| 九九天堂| 精品一级毛片在线观看| 日韩黄片视频试看| 亚洲色性| 人摸人人操人| 天堂亚洲精品| 丁香六月婷婷久久综合| 亚洲欧美97√| 亚洲人成色9999精品久久| 久久一区二区蜜桃| 色爱综合网欧美| 欧美色视频在线| 91青青在线| 免费看污网站| 日本一级婬片试看三分钟| 日本高清一本二本免费不卡| 男女真人网18| 人妻性爱一区二区| AV色图| 亚洲欧洲小说图片视频| 免费αV在线视频| 亚州国产成人精品女人久久| 男人精品天堂一区| 日韩精品永久在线观看| 夜色97| 免费看污网站| 九九在线精品| 午夜激情成人在线观看| 欧亚日韩中文在线| 乱子伦一区二区三区国产精品| 日本色色色色色视频| 欧美后入| 欧洲综合色图| 欧美成人精品一区二区男人蜜臀| 夜夜操二区| 激情网色| 2018天天日天天日| 久久久久久久性爱| 精品少妇一区二区| 日韩色女精品| 人妻黑丝袜电影| 天天天乱色综合全| 丝袜狠狠草尤物人妻av91| 久久精品国产精品亚洲艾通辽熟妇 | 91爱看| 国产又大又粗又长视频在线| 伊人久久综合影院| 国产在线综合网| 蜜桃狠狠色伊人亚洲综合网站| 欧美色图片色哟哟| 亚洲欧美综合图片| 日产成人久久| 日韩欧美天堂| 天天碰久久入| 欧美 亚洲 在线| 91欧美综合| 96精品久久久久久久久久| 天天干嫩逼网| 色综合V| 乳欲人妻办公室奶水| 激情视屏国产乱伦强奸| 操比国产| 91色女| 国内毛片欧美香蕉精品| 日韩91网| 日韩精品字幕| 久久riav中文精品| 亚洲乱熟女一区二区三区大香蕉| 99人人干| 肉丝中文无码高清| 国产激情综合五月久久| 欧美综合娱乐久久| 一级岛国大片| 国产成人精品日本视频| 国产九月婷婷| 久婷婷一区| 97色操| 欧美另类精品xxxx| 九九AV| 欧美天堂第二区| 亚洲天堂久久久久久粉红视频| 午夜一区| 碰超人人在线一区二区三区| 午夜美女诱惑电源网| 亚洲啪啪视频一区二区| 真实高潮91| 亚洲天堂精品日韩电影| 在线性黄高清免费视频| 五十路熟女工口| 测评在线观看AV| 思思热在线视频精品| 97欧美久久久久久久| 国产精品亚洲无码| 成 人 影视 一区 二区 三区 四区 | 色欧洲| 99这里只有精品| 自拍欧美| 老熟女乱伦片| 综合激情97 | 国产日韩无码一区二区三区久久区| 久久香蕉网| 黄页av| 天天综合网一91网| 久久人妻| 亚洲欧洲偷拍一区| 毛片一区二区| 国产精品女同| 亚州一区二区| 天天影视激情欧美| 日本免费人成视频播放120秒| 国产偷仑| 午夜无遮挡男女啪啪视频| 熟妇人妻一区二区三在线| 人人操人人操人人人操| 天天躁夜夜躁狠狠躁AV| 亚洲国产精品久久久久久久久久| 国产精品诱惑| 老女人老91妇女老热女| 日韩探花精品在线视频| 992视频一区| 亚洲五区熟女| 久久五月视频| 日本国产欧美一区三区二区| 干B| AV色天香在线| 嫩草影院在线观看精品| 亚洲色图欧美| 91男同| 九九九九九九亚洲| 欧美日韩国内不卡| 在线毛片片免费观看| 96精品久久久| av东京热男人的天堂| 国产在线76页| 5278欧美一区二区三区| 亚洲欧美色图小说| 超碰99re| 亚洲色图8| 97网址97| 久久综合女优| 欧美 青青草| 日本在线不卡v二区| 日韩av无码网站| 97天天摸天天爽| 黑人性欧美| 男人的天堂com| 久热这里只有精品9| 午夜美女福利视频| 欧美日韩99| 熟女人妻一区二区三区| 综合网97| 91色伦| 欧美综合网站999| 九九九九热只有精品| 少妇熟女视频一区二区三区| 亚洲AV无码久久精品蜜桃小说| 亚洲 图片 综合91| 台湾佬中文娱乐自偷自拍| 啊啊啊com| 欧美后进式| 美女黄页| 亚洲情色图片区| 人妻五十路在线| 97日韩欧美亚洲| 女人综合网| 波多野结衣被操50分钟免费视频 | 久久九九99| 黄页18禁| 亚洲日韩欧美一区二区| 大但人体久久久久| 诱惑网综合| 91人精品妻入口| 久久东京国产精品视频| 天天综合网站| 330Dv国产女人终合视频极品人与兽| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 中文字幕青青草| 久操免费电影| 被窝影院午夜看片无码| 91欧美情色| 久久久久亚洲三级电影| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 亚洲AV色图| 84YTCOM性无码| 另类小色呦| 男人天堂久久日韩| 天天综合色图| 国产尤物AV尤物在线观看不卡| 91oumei| 超碰偷拍| 国产精品久久久久中文字幕| 九九九久久久久| 97色碰| 91亚·色| 在线观看不卡一区二区三区| 夜夜一区二区| 久久久无码视频| www.狠狠| 亚洲欧洲日韩中文字幕一区| 日本操BAV| 亚洲天堂一区二区| 五月天婷婷影院| 超碰97伊人| 久久人妻四季| 69视频入口| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 国产欧美日韩女同性恋ww喷水精品| 亚洲中文sv| 九九在线精品| 中国AV美女| 狠狠爱夜夜干| 九九在线视频| 国产色产精品在线观看| 伊人操操| 岛国片在线观看视频亚洲| 四虎精品永久在线观看| 国产精品一区人妻精品阁在线| 超碰97人妻在线| 龙兴卡官方查询| 涩五月婷婷| 男人天堂新在线| 中文字幕人妻色偷偷久久皮 | 91久久久久| 亚洲有码 视频一区| 北约熟女超碰| 国产成人五月天丁香花| 久草精品一区| 丁香色色网| 亚洲精品影视老司机| 久久东京热成人| 一区 欧美 日韩 麻豆| 超碰在线成人| 熟妇xxxxx性春色| 成年无码动漫av片无尽在线 | 男人天堂日日夜夜| 98色网| 色婷婷成人| 天天操天天舔| 中文字幕亚韩| 欧美日韩电影成人在线| 2017大香蕉国产精品久久| 日本操大逼| 亚洲图片日本AⅤ欧美在线| 91黄站| 欧美综合网A| 国产综合久| 91精品国产一区三一| 欧美亚洲清纯| 91天天综合在线观看| 91美女视频电影| 人妻少妇无码| 久久久91福利姬| 亚洲成人精品久久久| 亚洲天堂另类小说男人| 神马福利久草| 超碰中文字幕人妻草一区| 四季AV综合网址| 欧美亚洲高清不卡| 干B| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美精品1区2区3区| A片三级无码| A V少妇特黄三级| 欧美熟妇乱码在线一区| 欧美无圣光在线| 蜜臀无码一区二区| 天堂综合网| 亚欧免费观看视频| 在线国产福利网址导航| 国产精品无码AV网站| 国产精品女同| 欧美与日韩97| 变态另类专区| 久久午夜色播影院免费高清| 中文字幕人妻丝袜乱一区三区| 国内亚洲高清无码| 人人爱人人操人人性| 国产精品青青草| 涩涩久久精品| 国产精品人妻无码久久久老鸭窝| 亚洲国产精品成人综合| 超碰人人色| 欧美 日韩 另类 亚洲| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久操网视频| 青青草日本无码| 精品综合久久久久久97| 大香蕉伊人75| 国产又大又硬又长又粗| 蜜色网色哟哟| 香蕉99秘 一区精品蜜桃臀| 亚洲精品国产无码高清| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产专区路线| 91操熟女| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久一二三四不卡 | 中文字暮97| 91操熟女视频| 精品国产三级av韩国在线| 99热精品在线| 丝袜综合网| 大鸡巴久久久| 天天日天天干少妇日| 国产久久一区二区午夜| 51一区二区三区| 久热这里| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 中文字幕精品一区二区精| 偷拍亚洲高清图片| 日本操逼视频导航| 日日干夜夜欢| 99人人干| 亚洲男人天堂AV| 日日AV加勒比| 日韩人妻 中文字幕| 亚洲丝袜二区在线| 亚洲色婷婷| 人妻丰满熟妇一区二区三| 少妇精品久久久| 骚逼高潮久久精品| 玖玖爱在线视频免费观看| 9久精品视频在线观看| 亚洲中文一区二区三区视频| 欧洲精品二区| 日韩99神马视频片| 午夜男女爽爽爽在线视频| 成人怡红院| 9997se| 天天日日本| 激情综合五月| 蜜乳av一区二区| 中文字幕丰满人妻日本| 91性感网站| 精品99999久久久久久| 免费簧片在线观看| 国产无码高清操逼视频| 亚洲欧美97| 一本久久久精品| 亚洲婷婷五月天| 国产午夜无码片在线观看影视 | 影音先锋乱伦资源| 不卡六六在线91|