99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

SpringBoot教育培訓辦公系統(tǒng):業(yè)務建模到權限實戰(zhàn)

SpringBoot教育培訓辦公系統(tǒng):業(yè)務建模到權限實戰(zhàn) 剛拿到“基于Springboot教育培訓辦公系統(tǒng)【附源碼文檔】”這個標題的時候我第一反應是這不就是每個計算機專業(yè)學生都繞不開的經典畢設方向么。但仔細想想市面上這類項目雖然多真正能講清楚“為什么這么設計”的卻沒幾個。如果你是正在選畢設題目、準備找工作的應屆生或者想給自家小培訓機構做套管理系統(tǒng)的開發(fā)者這個標題背后其實藏著一整套很成熟的信息化管理方案。它不單單是一個SpringBoot練手項目而是一個完整的業(yè)務閉環(huán)課程怎么排、學員怎么管、課時怎么記、審批怎么走、數據報表怎么出。我見過太多人做這類系統(tǒng)的時候上來就建表寫接口做到最后發(fā)現業(yè)務邏輯擰成一團亂麻。這篇就把我實際開發(fā)這類系統(tǒng)時踩過的坑、做出的取舍、還有那些文檔里從來不寫清楚的細節(jié)一次講透。1. 教育培訓機構到底需要什么樣的辦公系統(tǒng)1.1 別急著敲代碼先理清業(yè)務場景很多人拿到題目就急著搭環(huán)境、建項目這是做管理系統(tǒng)的大忌。教育培訓辦公系統(tǒng)這個標題拆解下來其實是三個詞的組合教育課程與教學、培訓招生與班級、辦公流程與審批。這三塊業(yè)務的用戶角色、數據模型、操作流程完全不同硬塞在一起肯定會出問題。從實際業(yè)務角度看一個典型的培訓結構大致是這樣運轉的市場部門招來咨詢的學員銷售或教務人員把學員安排進一個班級班級關聯著某位老師、某個教室、某個固定的上課時間。學員上課要記考勤、記課時消耗課后要產生課后反饋。老師的工資往往和課時掛鉤財務要按課時結算。再加上日常的請假申請、調課申請、物資報修、通知公告發(fā)布這些零散的事情如果沒有一套系統(tǒng)管理靠Excel和微信群遲早要亂套。我開發(fā)的時候第一步不是寫代碼而是把所有的線下流程都畫了一遍。這個階段最重要的產出物就是那張權限-角色矩陣表。系統(tǒng)里至少有三種角色管理員、教務老師、授課老師。有些場景下還有財務和學員賬號。每種角色能看哪些菜單、能操作哪些數據必須在動手前明確下來。否則等代碼寫完了再改權限體系那個痛苦程度不亞于重寫。1.2 功能模塊拆解從課程到財務的一張網把一個籠統(tǒng)的“辦公系統(tǒng)”拆成具體可落地的功能模塊我習慣用一張表來完成需求收斂模塊核心業(yè)務關鍵數據面向角色課程管理課程創(chuàng)建、上下架、課程分類課程名稱、封面、價格、課時數管理員、教務排課管理班級排課、教室分配、調課申請班級、教師、教室、時間教務學員管理學員檔案、報名記錄、課時賬戶姓名、手機號、剩余課時教務、財務教師管理教師檔案、授課課表、課時統(tǒng)計教師信息、授課班次管理員、教師報名中心咨詢記錄、試聽安排、正式報名意向狀態(tài)、跟進記錄教務審批中心請假、調課、報修、離職交接流程類型、當前節(jié)點、審批人全員財務統(tǒng)計課消統(tǒng)計、教師工資核算、營收報表課時單價、消課數量財務、管理員系統(tǒng)管理用戶、角色、菜單、操作日志賬號、角色編碼管理員這份清單的價值在于每一行都是一個獨立的開發(fā)迭代單元。你可以先做課程和學員再順著報名和排課把業(yè)務串起來最后補上審批和財務統(tǒng)計。模塊之間的接口在最初設計時就預留好后期開發(fā)會順暢很多。1.3 需求邊界怎么收斂MVP思維的實戰(zhàn)意義其實這個系統(tǒng)能做的遠不止上面這些模塊。比如線上選課、直播課堂、自動排課算法這些都是“加分項”。但作為畢設或者第一版辦公系統(tǒng)最重要的是先跑通一個最小可用閉環(huán)創(chuàng)建一個課程 → 排一個班級 → 錄入一個學員 → 完成一次報名 → 上一節(jié)課消一次課時 → 財務統(tǒng)計數據。我在實際開發(fā)中見過很多失敗的案例都是因為在做第一版的時候追求大而全把自動排課算法、在線支付都框了進來結果核心的報名、消課邏輯反而沒做好。管理系統(tǒng)的核心永遠是數據的準確性和操作的便捷性。先把MVP跑通讓數據能在各個模塊之間順暢流轉后面再慢慢疊加功能這是做業(yè)務系統(tǒng)最穩(wěn)的路線。2. 技術棧選型為什么是SpringBoot MyBatis-Plus Vue2.1 后端SpringBoot不是唯一答案但它是正確答案SpringBoot在這個領域幾乎成了標準答案。原因不復雜它把SSM時代那些繁瑣的XML配置全部收編了讓開發(fā)者能把更多精力放在業(yè)務邏輯上。配合MyBatis-Plus單表CRUD幾乎不用寫SQL分頁查詢一行注解就能搞定這在課程列表、學員列表這類純展示型接口里能省掉大量重復勞動。關于版本選型我建議SpringBoot 2.7.x配合JDK1.8或者SpringBoot 3.2.x配合JDK17。如果你是第一次接觸這類項目強烈推薦前者。原因很現實網上的教程、博客、踩坑記錄絕大多數是基于JDK8的遇到問題能找到現成答案。JDK17配合新版SpringBoot雖然性能更好但其間的兼容性坑比如某些老版本依賴在JDK17下直接跑不起來會讓你在排查環(huán)境問題上消耗大量精力。項目的包結構我建議按這個方向組織com.example.education ├── common // 通用返回、異常處理、工具類 ├── config // 配置類安全、跨域、攔截器 ├── controller // 接口層只做參數接收和結果返回 ├── service // 業(yè)務層核心邏輯 ├── mapper // 數據庫訪問層 ├── entity // 數據庫實體 ├── dto // 前端交互數據傳輸對象 ├── vo // 視圖返回對象 └── utils // JWT、日期處理、Excel導入導出這種分層結構不是憑空定的它的核心邏輯是依賴單向流動Controller依賴ServiceService依賴Mapper每一層只做自己該做的事。尤其是DTO和Entity分離這一點很多新手不理解。我舉個例子新增學員的時候前端傳過來的字段可能有“確認密碼”“驗證碼”這些字段在數據庫的學員表里根本沒有如果用Entity去接前端參數這些字段就會報錯或者污染實體類。用DTO隔離前端參數、用Entity對應數據庫字段、用VO控制返回內容分開之后每個類的職責都特別清晰改起來也不怕牽一發(fā)動全身。2.2 前端Vue3 Element Plus為什么是黃金搭檔前端這塊Vue3配合Element Plus是最穩(wěn)妥的選擇。Element Plus里已經封裝好了表格、表單、彈窗、樹形控件、日期選擇器這些后臺系統(tǒng)的高頻組件幾乎不需要額外寫樣式。加上Vue Router做菜單路由跳轉Pinia做全局用戶狀態(tài)存儲Axios統(tǒng)一處理請求和響應攔截前端整個骨架就很清晰了。關于前端項目的結構Vite Vue3 Pinia Vue Router Axios是現在的主流搭配。開發(fā)的時候我習慣用npm run dev啟動本地開發(fā)服務器接口代理到后端8080端口這樣可以實現前后端分離開發(fā)后端接口寫好一個前端就聯調一個不用等全部做完了再對接。一個實用的小技巧是請求攔截器和響應攔截器要提前寫好。請求攔截器里統(tǒng)一附加token響應攔截器里統(tǒng)一處理業(yè)務碼。比如后端返回401就自動跳回登錄頁返回500就彈出錯誤提示。這套機制是所有管理系統(tǒng)的基座越早落地越好否則你在每一個接口里都要寫一遍錯誤處理代碼冗余量會非常難看。2.3 為什么不選微服務、為什么用RBAC權限模型經常有人問為什么不用Dubbo、Spring Cloud那一套答案很樸素一個培訓機構的辦公系統(tǒng)用戶量撐死幾百上千人用微服務拆開只會徒增麻煩。服務拆分、注冊中心、配置中心、鏈路追蹤每一樣都是額外的運維負擔這個體量完全用不上。權限這塊我更推薦RBAC基于角色的訪問控制模型。它的核心就五個字用戶掛在角色上角色掛在權限上。開發(fā)的時候數據庫中會準備三張核心表用戶表、角色表、權限表再加上用戶角色關聯表、角色權限關聯表這兩張中間表。登錄時把用戶擁有的權限集合查出來存到Redis里訪問接口的時候通過Spring Security的過濾器判斷當前用戶是否有對應權限標識比如“system:user:add”。這套機制的好處是靈活——新來了一個“助教”角色只需要在角色表里配一下權限不需要改代碼。缺點當然也有每次修改角色權限都要重新登錄才生效但在實際使用中這個問題完全可接受。3. 數據庫設計先畫好表再寫代碼3.1 核心表結構解析五張最關鍵的表教育培訓系統(tǒng)里我認為最核心的表是這五張課程表、班級表、學員表、報名表、課時流水表。這五張表串起了機構最核心的業(yè)務輪子。課程表管理“賣什么”字段至少包含課程名稱、課程分類、總課時數、課程單價、封面圖URL、課程介紹、狀態(tài)上架/下架。班級表管理“怎么教”字段至少包含班級名稱、關聯課程ID、授課老師ID、教室位置、開課日期、上課時間段、最大人數、當前人數。學員表管理“誰在學”字段至少包含姓名、手機號、性別、年齡、來源渠道、備注。報名表管理“交易關系”字段至少包含學員ID、班級ID、報名時間、繳費金額、支付方式、報名狀態(tài)。課時流水表管理“消耗記錄”字段至少包含學員ID、班級ID、上課日期、消耗課時數、操作人ID。這幾張表之間怎么關聯直接決定了系統(tǒng)的數據流轉是否順暢。我畫表的時候會專門畫一張簡易的關系圖課程表1對多關聯班級表班級表1對多關聯報名表學員表1對多關聯報名表報名表和班級表聯合決定了課時流水表的生成口徑。這里最關鍵的一個業(yè)務問題是一個學員報了多個班級每個班級的課時是獨立計量的所以課時流水必須同時記錄學員ID和班級ID不能只記學員ID。這個細節(jié)你要是做漏了后面統(tǒng)計課時余額的時候絕對會出大問題。3.2 狀態(tài)機讓數據流轉不出錯業(yè)務流程里那些“狀態(tài)”字段新手最容易隨便定。一個報名狀態(tài)有人用0和1有人用字符串“已報名”“已退費”到了統(tǒng)計的時候各種判斷條件寫得到處都是改一個狀態(tài)就要全項目搜索。我的建議是提前定義狀態(tài)字典并且用常量類集中管理。比如排課狀態(tài)可以定義為狀態(tài)碼含義操作0待開課班級已創(chuàng)建未到首次上課時間1開課中當前時間在排課時間段內2已結課所有課時已消耗完3已停課因故暫停需要管理員介入審批場景更明顯一個調課申請從“待審批”到“已通過”或“已駁回”就是一個典型的流程狀態(tài)機。如果數據庫里隨意存儲狀態(tài)業(yè)務流程的約束就會失控。比如一個已經被駁回的申請理論上不應該允許再次通過但數據庫層面如果沒有約束就會出現邏輯漏洞。我的經驗是每個狀態(tài)流轉的觸發(fā)動作必須由后端代碼嚴格校驗比如“調課申請”這個流程只有當當前狀態(tài)是待審批時審批通過操作才被允許執(zhí)行。下面是我常用的狀態(tài)流轉示例代碼/** * 審批狀態(tài)流轉待審批 - 已通過 / 已駁回 * 這是最基礎的狀態(tài)機控制核心思路是先查狀態(tài)再改狀態(tài) * 并且在更新SQL中加入狀態(tài)作為條件防止并發(fā)問題。 */ public void approve(Long applyId, Integer status) { Apply apply applyMapper.selectById(applyId); // 前置校驗只有待審批狀態(tài)才能進行審批操作 if (apply.getStatus() ! ApplyStatus.PENDING) { throw new BizException(當前狀態(tài)不允許審批操作); } // 用 status 作為更新條件防止并發(fā)場景下的重復審批 int rows applyMapper.updateStatus(applyId, ApplyStatus.PENDING, status); if (rows 0) { throw new BizException(該申請已被處理請勿重復操作); } }這段代碼里最關鍵的是updateStatus這個SQLUPDATE apply SET status #{newStatus} WHERE id #{id} AND status #{oldStatus}。只有舊狀態(tài)匹配時才會更新成功這就是樂觀鎖的思路。雖然一個管理系統(tǒng)的并發(fā)量不會太高但這樣寫以后狀態(tài)絕對不會被非法的操作弄亂。3.3 數據庫設計的坑與補救方案再說三個我實際開發(fā)中遇到的坑。第一個坑是把價格設計成整數類型。培訓機構的課時單價動輒幾十到幾百元還經常有“9.9元體驗課”用整數類型存價格意味著精確到元但如果你存的是折扣價或者涉及金額計算分以下的精度問題就會暴露。MySQL里應該用DECIMAL(10,2)Java里用BigDecimal。用double或者float算錢在金額累加和比較時會出現精度漂移財務對賬的時候就麻煩了。第二個坑是軟刪除和唯一索引沖突。學員表里手機號本來應該是唯一的但如果你做了物理刪除那退費的學員再報名時就可以重新插入一條這時候唯一索引沒問題。但如果你做的是邏輯刪除is_deleted 0/1那被刪除的學員記錄還在表里再次報名插入同一手機號時唯一索引直接拒絕插入。解決方案有兩個一是允許同一個手機號有多條記錄查詢時過濾is_deleted0二是把唯一索引改成聯合字段比如手機號刪除狀態(tài)但這種方式在MyBatis-Plus里實現起來比較別扭。最簡單粗暴的方案是給手機號加一個隨機后綴再刪除比如13800000000_del_20240101這樣既保留了歷史記錄又不影響唯一索引。第三個坑是沒有created_by和updated_by字段。管理系統(tǒng)幾乎所有表格的數據都需要追蹤是誰創(chuàng)建的、誰修改的。很多人做畢設的時候表結構里只有創(chuàng)建時間、修改時間沒有操作人。等后期做“操作日志”或者“數據審計”的時候才發(fā)現要返工。我的建議是每一張業(yè)務表都統(tǒng)一加上create_time、update_time、create_by、update_by這四個基礎字段用MyBatis-Plus的自動填充功能統(tǒng)一維護省心很多。4. 核心模塊實戰(zhàn)從登錄到排課的完整鏈路4.1 登錄鑒權JWT Spring Security的實現要點登錄模塊是所有管理系統(tǒng)的門戶也是安全問題的重災區(qū)。這里我選擇的是JWTJSON Web Token配合Spring Security的方案核心思路是用戶登錄成功后后端生成一個token返回給前端前端后續(xù)每次請求都在Header里帶上這個token后端通過過濾器驗證token的合法性并解析出用戶身份。// JWT工具類核心方法生成token public String generateToken(Long userId, String username, ListString roles) { MapString, Object claims new HashMap(); claims.put(userId, userId); claims.put(username, username); claims.put(roles, roles); return Jwts.builder() .setClaims(claims) .setExpiration(new Date(System.currentTimeMillis() 7 * 24 * 60 * 60 * 1000)) .signWith(SignatureAlgorithm.HS256, SECRET_KEY) .compact(); }這段代碼里token有效期設了7天。實際開發(fā)中你會發(fā)現JWT的有效期不能設太長也不能太短。太長了用戶改了密碼之后老token還能繼續(xù)用有安全隱患太短了用戶操作到一半就提示登錄過期體驗極差。我的習慣是普通登錄接口簽發(fā)7天有效期token用戶修改密碼后強制要求重新登錄。如果你還想做得更完善可以引入Refresh Token機制但作為辦公管理系統(tǒng)這套機制已經足夠。Spring Security配置的核心是放行登錄接口攔截其他接口。具體做法是自定義一個JwtAuthenticationFilter繼承OncePerRequestFilter在過濾器中解析token并設置SecurityContext。配置類里要改的地方主要有三處SecurityFilterChain中放行哪些URL登錄、注冊、驗證碼、ExceptionHandler統(tǒng)一處理未登錄返回401、密碼加密用BCryptPasswordEncoder。這里有個實操中的細節(jié)前端路由守衛(wèi)和后端攔截要配合好。前端在路由跳轉時檢查本地有沒有token沒有就強制回登錄頁后端在接口返回401時讓前端自動清理本地token并跳轉。這兩個環(huán)節(jié)都要做否則會出現前端頁面看得見、接口卻全部401的尷尬情況。4.2 課程與排課模塊一節(jié)課是怎么被管理起來的課程創(chuàng)建是整套系統(tǒng)的起點。管理員在課程管理頁面創(chuàng)建一門課填寫課程名稱、分類、課時數、原價與售價上傳封面圖狀態(tài)默認是“未上架”。此時數據庫中只多了一條課程記錄還不會產生任何業(yè)務流轉。管理員把這個課程關聯到一個班級指定授課老師和上課時間課程才開始有實際意義。班級和排課是這個模塊的難點。比如一個月薪過萬的培訓班每周六上午9點到12點上課一共上16次課。這樣一個班級在系統(tǒng)里怎么落地我的做法是班級表存基礎信息課程ID、教師ID、開始日期、周幾上課、開始時間、結束時間、總課時數每次上課記錄單獨放在“上課記錄表”里。/** * 根據班級排課規(guī)則生成具體上課記錄 * 這里面有一個很容易被忽略的業(yè)務問題節(jié)假日是否停課 */ public void generateClassSessions(Long classId, LocalDate startDate, Integer weekday, LocalTime startTime, LocalTime endTime, Integer totalSessions) { ListClassSession sessions new ArrayList(); LocalDate date startDate; int count 0; while (count totalSessions) { DayOfWeek dayOfWeek date.getDayOfWeek(); if (dayOfWeek.getValue() weekday) { // 排除節(jié)假日這里調用一個系統(tǒng)配置表來判斷 if (!isHoliday(date)) { ClassSession session new ClassSession(); session.setClassId(classId); session.setSessionDate(date); session.setStartTime(startTime); session.setEndTime(endTime); session.setStatus(SessionStatus.NOT_STARTED); sessions.add(session); count; } } date date.plusDays(1); } classSessionMapper.batchInsert(sessions); }這段代碼把“每周六上課”的具體日期全部算出來。另外一個重點是上課記錄表與班級狀態(tài)聯動如果班級被停課或結課了對應的上課記錄狀態(tài)也要跟著變。這里的思路是“生成記錄但不自動鎖定”上課記錄的真正狀態(tài)是由“是否已點名”決定的。老師可以在上課記錄上操作“開始上課”這時候系統(tǒng)自動刷新班級狀態(tài)為“開課中”然后進行點名、記錄考勤。4.3 報名與學員管理事務邊界要抓住報名是整個系統(tǒng)里最需要小心操作的場景——它同時涉及學員數據、班級人數、財務數據、課時賬戶四個方面的變更。在Spring中一個方法需要加上Transactional事務注解保證要么全部成功、要么全部回滾。事務的邊界我用一個例子來說明。學員報名流程包含以下步驟新增學員記錄如果學員不存在 → 修改班級當前人數 1 → 新增報名記錄 → 根據繳費金額增加學員的課時余額 → 寫入操作日志。這五個操作里任何一步失敗前面已經執(zhí)行成功的步驟也必須回滾。否則就會出現“班級人數增加了但報名記錄沒有生成”或者“繳費金額收到了但學員課時沒到賬”的慘案。這段邏輯里其實還有一個業(yè)務判斷容易踩坑同一個學員重復報名同一個班級。按照正常業(yè)務流程學員不允許重復報名同一個班。但是如果你只靠前端按鈕的“禁用”來控制用戶直接調接口就能繞過。后端必須寫校驗邏輯查報名表里是否存在該學員ID 該班級ID 狀態(tài)為有效的記錄。Transactional(rollbackFor Exception.class) public void enrollStudent(EnrollDTO dto) { // 1. 校驗學員是否存在不存在則創(chuàng)建 // 2. 校驗班級人數是否已滿 // 3. 校驗是否重復報名學員ID 班級ID 未退費 int count enrollMapper.countByStudentAndClass(dto.getStudentId(), dto.getClassId(), 0); if (count 0) { throw new BizException(該學員已報名此班級請勿重復報名); } // 4. 新增報名記錄 修改班級人數 增加課時余額 寫日志 }課時余額的統(tǒng)計邏輯也需要想清楚。簡單方案是報名的同時給學員賬戶扣一筆錢、加課時數然后每次上課消耗課時時做減法。但這種方式在退費、轉班、贈送課時等場景里容易出混亂所以我在設計時多建了一張“課時流水表”報名時插入一條“充值時”的流水上課扣課時時插入一條“消耗”的流水學員當前剩余課時數就是充值與消耗之和。這樣后續(xù)出財務審計報表的時候每一筆課時變動都有來源可追溯。4.4 辦公審批模塊一個通用審批流程怎么落地很多用戶看到“辦公系統(tǒng)”就會自然地期待OA審批功能。但培訓機構場景下的審批往往比想象中簡單無非是請假申請、調課申請、退費申請、采購申請。基于這個現實我設計了一個比較輕量的通用審批數據結構。審批主表id、申請類型請假/調課/退費、申請人ID、申請原因、當前節(jié)點、狀態(tài)待審批/通過/駁回/撤回 審批記錄表id、審批單ID、審批人ID、審批結論通過/駁回、審批意見、審批時間這里的核心設計是審批流支持多級審批。比如采購申請可能就要“教務主管審批 → 校長終審”兩步。我的做法是審批訂單的“當前節(jié)點”不是存一個固定數字而是通過一個approval_flow_config配置表動態(tài)算出。每一級審批通過后當前節(jié)點 1直到達到最終節(jié)點后整體狀態(tài)變?yōu)椤耙淹ㄟ^”。這個方案靈活度高不同審批類型可以配置不同層級的審批流程。調課申請是這個模塊里邏輯最重的場景。它本質上是一個“修改班級上課時間”的申請審批通過后要自動清理舊的排課記錄并生成新的上課記錄。這類聯動操作可以放在審批通過后的回調方法里public void onApprovePass(String applyType, Long bizId) { switch (applyType) { case SCHEDULE_CHANGE: // 獲取舊排課規(guī)則清空原有上課記錄生成新的上課記錄 regenerateSessions(bizId); break; case REFUND: // 計算應退金額生成紅沖流水關閉報名狀態(tài)班級人數減一 processRefund(bizId); break; // 其他審批類型... } }這個回調方法的設計讓審批模塊和業(yè)務模塊解耦了審批模塊只需要管理“審批單”的狀態(tài)流轉至于審批通過之后要做什么交給對應業(yè)務模塊自己處理。這種方式在代碼層面雖然看起來多了一次switch判斷但整個系統(tǒng)的擴展性會好很多。以后要加一種新審批類型只需要在審批配置表中配置然后在回調方法里新增一個case即可。4.5 文件上傳頭像、課程封面與導入模板教育培訓系統(tǒng)里的文件上傳主要有三類用戶頭像、課程封面、Excel導入學員信息。最穩(wěn)妥的做法是后端接收文件 → 保存到本地磁盤 → 返回可訪問URL。開發(fā)時我通常把文件存儲路徑配置成可外部訪問的靜態(tài)資源目錄。簡單版實現在SpringBoot里只需做兩件事第一在application.yml里配置上傳文件大小限制和存儲目錄第二寫一個文件上傳的Controller方法用MultipartFile接收文件并調用transferTo()保存。spring: servlet: multipart: max-file-size: 10MB max-request-size: 20MB custom: upload-path: /data/files/ access-path: /files/**代碼里再重寫WebMvcConfigurer把這個上傳目錄映射成靜態(tài)資源路徑Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/files/**) .addResourceLocations(file: uploadPath); }這個方案的特點就是簡單、零依賴適合學習和測試場景。但如果你要部署到生產環(huán)境或者云服務器上把文件直接存在應用服務器本地是有隱患的磁盤滿了沒人知道、服務重啟的遷移麻煩。我的經驗是開發(fā)階段先用本地存儲等上線前再替換為對象存儲服務。我在代碼里預留了接口上傳服務先定義一個接口本地存儲和云存儲各自實現這樣切換時只改一行配置就行。這個設計雖然在一開始多花了一點時間但后面省了很多事。5. 實操過程如何把項目跑起來5.1 快速部署后端前端數據庫的一鍵式啟動文檔里說的“附源碼文檔”指的是一套完整可運行的代碼和配套說明。但拿到源碼后能不能跑起來又是另一回事。我見過太多人卡在環(huán)境配置這一步了。這里我把最關鍵的啟動步驟梳理一下。后端啟動步驟導入數據庫腳本通常是一個.sql文件→ 修改application.yml里的數據庫賬號密碼 → 啟動Redis如果項目用到→ 啟動SpringBoot應用確認8080端口無沖突 → 用Swagger或者接口文檔做一次冒煙測試比如調用登錄接口。前端啟動步驟安裝Node.js建議16版本→ 進入前端目錄執(zhí)行npm install→ 修改.env.development里的接口代理地址 → 執(zhí)行npm run dev→ 瀏覽器訪問前端頁面。所謂“能跑起來”最低標準就是打開頁面 → 用管理員賬號登錄 → 能正常瀏覽菜單 → 能創(chuàng)建一個課程 → 能新增一個學員 → 能退出登錄。只要這五個操作全部走通說明代碼沒有大問題可以開始進行二次開發(fā)。這里提示一個常見問題數據庫初始化時很多同學發(fā)現執(zhí)行.sql腳本時報錯提示表不存在。這多半是因為腳本里的SQL語句包含了建庫語句CREATE DATABASE而你當前位置已經在其他數據庫下執(zhí)行導致的。解決很簡單腳本文件開頭如果有USE xxx語句先手動執(zhí)行它切換數據庫再執(zhí)行后面的單詞。另一種更穩(wěn)妥的方式是先在數據庫管理工具里創(chuàng)建一個空庫然后選擇“運行SQL文件”導入腳本。5.2 改造指南如何把項目變成你自己的畢設拿到一套源碼之后真正要面對的挑戰(zhàn)是——怎么把它變成有自己的特色、能過查重、能上講臺答辯的項目。我的看法是與其糾結“怎么隱藏源碼來源”不如花時間做一次有深度的業(yè)務改造。改造方向一般從這三個角度切入第一個方向是業(yè)務流程拓展。比如原始系統(tǒng)學員報名后需要人工確認到賬你可以做成“報名成功后自動生成電子合同和發(fā)票申請”原始系統(tǒng)只能按“每節(jié)課消耗固定課時”你可以改成“支持按分鐘計費的自習室模式”。這些改造不是換個名字而是真實地改變了數據結構和業(yè)務邏輯答辯的時候你能說得清楚每一步。第二個方向是功能增強。比如在課時消耗模塊增加“課程到期自動提醒”用Spring的定時任務每天掃描即將結課的班級并給教務人員發(fā)送站內通知?;蛘呓o課程增加“試聽次數限制”每個學員對同一課程只能試聽一次防止薅羊毛。這類功能獨立性強新增幾張表或者在已有表上增加字段就行不破壞原有的代碼結構。第三個方向是數據分析與可視化。給系統(tǒng)配上ECharts圖表把“每月報名人數趨勢”“課程類別占比”“教師課時量對比”做成直觀的儀表盤頁面。這里的工作量集中在聚合查詢SQL上比如SELECT DATE_FORMAT(create_time,%Y-%m) AS month, COUNT(*) FROM enroll WHERE ... GROUP BY month。這種改造既好看又容易講還能體現你的數據庫查詢能力。5.3 文檔結構一份完整技術文檔應該怎么寫很多同學只看重代碼忽略了文檔。但畢設或者開源項目的評分中文檔占的比重遠比想象中高。一份合格的工程技術文檔至少應該包含以下內容項目背景與意義用兩三百字說明為什么要做這個系統(tǒng)解決了什么實際問題需求分析功能需求、非功能需求性能、安全、易用性技術選型及理由為什么用SpringBoot、為什么用Vue、為什么用MySQL每個選擇要寫出對比和取舍數據庫設計ER圖可以用表格代替 每張表的核心字段說明 關鍵表之間的關聯關系系統(tǒng)詳細設計模塊劃分、核心流程畫文字描述版流程圖、接口列表系統(tǒng)測試至少列出10條核心測試用例覆蓋登錄、報名、審批等關鍵業(yè)務路徑項目總結完成度、不足與改進方向寫文檔有一個小技巧先寫接口文檔再寫詳細設計最后寫需求分析。原因是接口定義了你到底做了什么寫起來最順手根據接口可以反推設計邏輯需求分析是給外行看的內容放在最后寫反而更容易寫出高度。6. 常見問題與排查技巧實錄6.1 這六大坑我替你先踩了一遍做這類項目有幾個高頻問題基本每個開發(fā)者都會遇到。我把最常見的整理成一張表格方便對照排查問題現象根本原因解決方案啟動后端口被占用8080端口已被其他程序使用命令行執(zhí)行netstat -ano前端調接口報404接口代理配置錯誤檢查vue.config.js里的proxy配置target是否指向后端地址登錄后接口返回403Spring Security攔截了預檢請求在SecurityConfig中放行OPTIONS請求并配置CorsConfigurationSource允許跨域上傳圖片無法預覽靜態(tài)資源映射路徑配錯檢查配置類中addResourceHandlers的路徑是否與/files/**匹配且uploadPath以file:開頭數據庫表名或字段名報錯表名與MySQL保留字沖突使用反引號包裹表名或者在實體類上用TableName指定表名前端編譯時提示模塊找不到npm install安裝不完整刪除node_modules目錄后執(zhí)行npm install重新安裝這里重點說下第一個問題“端口被占用”。很多人開發(fā)時同時開了好幾個項目8080端口經常被占用。查占用進程最直觀的方法是Windows下執(zhí)行netstat -aon | findstr :8080記住最后一列的PID然后執(zhí)行taskkill /PID {PID} /F結束進程。Mac系統(tǒng)就簡單一些執(zhí)行l(wèi)sof -i :8080找到進程后kill -9 {PID}。不過更推薦的做法是每個項目都在application.yml里配置不同的端口比如這個項目用8080另一個用8081避免端口沖突。6.2 登錄環(huán)節(jié)的隱藏坑BCrypt密碼校驗失敗如果登錄報了Encoded password does not look like BCrypt這個錯原因基本只有一個數據庫里的密碼字段不是BCrypt格式。Spring Security的BCryptPasswordEncoder要求數據庫中存儲的密碼必須是{bcrypt}前綴加哈希值的形式或者至少是$2a$開頭的BCrypt哈希串。如果你在導入數據的時候直接把明文密碼“123456”寫進了數據庫BCrypt校驗的時候就會報這個錯。最簡單的解決辦法是寫一個臨時的數據初始化接口給需要登錄的用戶統(tǒng)一生成BCrypt加密的密碼public static void main(String[] args) { BCryptPasswordEncoder encoder new BCryptPasswordEncoder(); System.out.println(encoder.encode(123456)); }把這個輸出寫入數據庫的密碼字段然后用“123456”去登錄就正常了。另外提醒一句線上系統(tǒng)一定不要用弱密碼但開發(fā)階段用一個統(tǒng)一測試密碼很方便真正部署的時候記得改掉。6.3 部署上線注意的四個細節(jié)本地開發(fā)跑通之后真實部署還會有一些差異。如果你打算把這個系統(tǒng)部署到服務器上下面幾個細節(jié)值得提前考慮第一數據庫備份策略。培訓機構的數據是身家性命務必配置自動備份。最簡單的方案是Linux服務器上用crontab定時執(zhí)行mysqldump備份文件保留最近7天再配合云服務商的對象存儲定期異地上傳。第二HTTPS證書。如果系統(tǒng)需要公網訪問最好一開始就申請免費SSL證書配置上。原因很簡單瀏覽器對HTTP的限制越來越多而且用戶密碼在明文HTTP下傳輸非常危險。免費的證書現在很多部署也只要十幾分鐘。第三日志收集與監(jiān)控。生產環(huán)境沒有日志就是睜眼瞎。SpringBoot默認集成了Logback建議配置按日期和大小滾動分割日志文件保留日志目錄讓出問題的時候能搜索。有條件的話接入一個簡單的監(jiān)控告警比如磁盤空間不足、服務宕機自動恢復能省掉很多半夜出問題的痛苦。第四前端部署方式。Vue項目打包后生成的是純靜態(tài)文件可以放在Nginx里直接跑。這個環(huán)節(jié)里最容易出錯的是前端路由刷新404的問題因為Vue Router的history模式在Nginx下默認找不到對應的后端路由必須在Nginx的配置文件里加try_files $uri $uri/ /index.html;。針對這個問題如果你不熟悉Nginx配置可以先用hash模式跑路由等有余力了再切history模式。6.4 加分細節(jié)如何在答辯和演示中脫穎而出先說一個別人不一定告訴你的點評委或者用戶最關心的往往不是你實現了多少功能而是你是否理解每一個功能為什么這么做。所以答辯前建議把“刪除學員時數據如何處理”“審批駁回后流程怎么走”“課時消耗如何統(tǒng)計”這類業(yè)務細節(jié)的代碼過一遍做到能給外行講明白的程度。另外一個增加印象分的實操細節(jié)是數據填充。答辯演示之前先在數據庫里填充一批看起來真實的模擬數據比如30名學員、20門課程、帶各種狀態(tài)的審批單若干。演示的時候操作不會顯得空截圖素材也好看。這個步驟可以提前寫一個DataInitializer類在項目啟動時自動檢測數據量并插入模擬數據做完之后你會發(fā)現整個系統(tǒng)的頁面質感完全不一樣。7. 最后再分享兩個我自己用著很舒服的設計細節(jié)第一個是統(tǒng)一返回體R對象的規(guī)范。我從第一行業(yè)務代碼開始就堅持所有接口返回統(tǒng)一的JSON結構{ code: 200, message: 操作成功, data: {} }有人說這樣做有點死板但實際開發(fā)中統(tǒng)一返回體最大的好處是——前端可以在響應攔截器里一次性處理所有接口的報錯邏輯。不管是登錄過期、參數異常、還是服務器異常只要code不是200前端統(tǒng)一彈出message提示完全不需要在每個接口里重復寫一遍。這種做法讓長期維護變得異常輕松。第二個是時間字段的統(tǒng)一處理。MySQL中時間存儲建議用datetimeJava實體中用LocalDateTime前端交互時用時間戳。這三個轉換很容易埋坑MySQL的datetime用字符串傳輸給前端前端解析會出現時區(qū)偏差的問題后端返回LocalDateTime給前端如果沒配置全局格式化又會變成一串難看的數組。我的解決方案是在SpringBoot中配置全局的Jackson時間格式化spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8配合在實體類的LocalDateTime字段上加JsonFormat(pattern yyyy-MM-dd HH:mm:ss)注解。這樣整個系統(tǒng)的所有時間顯示都是統(tǒng)一的“2024-06-01 14:30:00”格式前端不用做任何額外處理。這個小細節(jié)讓我在聯調階段省了不少溝通成本。做這類系統(tǒng)我最真實的感受是管理系統(tǒng)的復雜度不在技術而在業(yè)務。把培訓機構線下那些瑣碎的流程梳理清楚用數據結構去表達它們之間的關聯再通過接口把操作串起來整個系統(tǒng)的骨架就立住了。技術上的東西反而很成熟框架選對了剩下的就是耐心和細致。如果你正在做或者打算做一個類似的教育辦公系統(tǒng)我的建議是別貪多先把課程、班級、學員、報名這一條主鏈路跑通再去擴展審批、統(tǒng)計那些外圍功能。一條鏈路打通之后你自然就明白哪些地方需要優(yōu)化、哪些功能值得擴展了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丰满少妇猛烈A片免费看观看| 婷婷五月丁香综合网| 67194成I人在线观看线路1| 五月丁香色综合| 五月婷婷激情四季| 亚洲不卡欧洲| 婷婷久久天堂网| 天天弄天天操| 99性感视频| 婷婷五月成人| 色婷婷成人网| 激情五月天社区| 这里只有精品日韩精品| 天花AV无码| 久久人人九九| 九九精品免费| 婷婷永久在线| 天天日天天添| 六月丁香啪啪啪| 国自产拍偷拍精品啪啪一区二区| 99热精品在这里| 天天激情视频| 欧美极品999| 91男人资源站| 婷婷激情五月| 九色亚洲| 九九色综合| 久久久久人妻中文| 91啪啪视频| 99精品综合在线| 天天日天天干天天操| 色色色视频免费无码| 一起草av在线观看| 91亚洲天堂| 无码AV免费精品一区二区三区| 天堂草在线观| 激情激情激情网| 五月婷婷综合热| 五月婷婷丁香大陆免费| 九九色影院| 碰碰碰91| 人人干99| 桃色Av色哟哟| 综合激情综合啪啪| 激情五月丁香综合网站 | 精品国产AV色一区二区深夜久久| 思思热视频在线观看| 色噜噜狠噜噜视频| 啪啪 综合网| 九九婷婷五月天| 五月激情丁香| 欧美成人网99网| 九九婷婷五月天影视| site:pzdcoin.com| 超碰在线观看9| 久热精品在看| 五月婷婷av| 99狠狠操一| 91seAV| 99精品网| 四川BBB搡BBB爽爽视频| 热99色| 日本强伦片中文字幕免费看| ai97re99一本| 婷婷丁香五月激情密臀av| 婷婷9月天| 九热视频| 五月婷婷丁香日韩在线| 美女91一起草| 色欲五月婷婷| 亚洲性天天| jiujiu无码五区| 青青草婷婷综合五月| 天天擼久久擼在线| 99在线资源| 九九aV| 激情六月婷婷| 色色色五月| 九九青草热| 综合久久9| 天天色·欧美| 人人射人人高潮| 丁香五月婷婷偷拍| av国产精品| 91精品91久久久久77777| 操97在线观看| 欧美内射AA| 99热这里只有精品亚洲| 五月天婷婷在线播放| 国产精品国产| 久久99最新地址| 色色丁香色五月| 色久女| 99惹| 影音先锋噜一噜| 五月激情综合网| 色9999综合久久| 九九色播五月丁香| 激情五月天色婷婷综合| 亚洲色婷婷五月天| 影音先锋偷偷色男人站| 开心综合激情综合| 99热这里是精品| 久婷婷视平| www.99热这里精品| 激情久久天天| 久久九九色| 色综色网| 另类色视频| av性爱网站| 婷婷导航| 久久婷婷五月综合色奶水99啪| 婷婷五月天激情综合婷婷五月天激情综合| 97超碰人人操| 91亚洲免费片| 台湾佬天天日丁香婷婷五月天| WWW,五月| 日韩婷久| 五月天婷婷丁香社区| www色色com| 激情6月| 97热视频| 丁香五月成人社区| 亚洲黄色操逼| 夜夜操夜夜姧| 九九视频在线观看视频6 | 91在线操| 丁香五月偷拍| 99资源人人| 欧美噜噜久久久XXX| 五月激情婷婷丁香天堂| 99久99久| 五月天操逼激情| ww久久| 九九热这里只有精品31| 大地资源色婷婷视频在线| 日韩高清久久| 亚洲色网络| 亚洲亚洲人成综合网络| 欧美va视频不用播放器的va视频网| 91午夜激情| 九九视频在线观看视频6| 日本系列_4页_777FP| wwwwww.色| 五月激情小说| 亚洲小视频免费播放| 五月的色婷婷高潮| 亚洲国产网站| 四月丁香五月婷婷久久| 丁香久久九九99| 久久成人天| 五月天伊人| 丁香六月啪啪啪| 天天噜| 99在线小视频| 久久精品性爱| 碰人人操| 激情久久久久久| 五月婷婷亚洲色图| 综合婷婷都市激情| 香焦网五月天| 久久色情| 蜜臀av无码久久久久久久久| www.狠狠操| 久久伊人大香蕉| 美女网黄| 天天爽在线视频| 天天肏在线观看| 百度4399有码精品V在线观看| 婷婷五点亚洲| 久久综合播放| www九九热| 激情五月婷黄版| 色五月开心久久网| 五月丁香激情综合网| 婷综合六月| 婷婷五月天激情基地| 亚洲182在线观看| 激情美女五月天激情在线| 国产精品天天狠天天看| 丁香六月天色婷婷| 看逼中文字幕| 五月天婷婷色| 欧美毛片www| 91肏肏肏| 五月婷婷丁香五月 | 欧美韩国日本| 这里只有精品9| 97超喷视频在线观看| 女人天堂 AV| 91伦| 99色在线视频| 玖玖九九99| 久久六月婷婷| 九九热免费视频| 久久婷狠狠色| 99热在线观看| 色激情五月天| 五月婷婷久久开心网| 免费观看全黄做爰的视频| 丁香色啪综合| 亚洲av网址| 91干在线| 五月丁香婷婷激情久久| 国产精品国产| 激情99| site:publishdd.com| 99热免费18| 五月天国产| 91狠狠综合网| 久久综合26p| 淑女丝袜bi操逼123| 秋霞AV淫| 琪琪布丁香社区激情五月天| 国产avapp 网| 国产一区男女| 五月天丁香综合| 婷婷五月天成人网| 五月婷婷视频| 欧美毛片www| 激情五月狠狠喔| 国产激情AV| 激情综合网,五月| 婷婷久久天堂网| www.婷婷五月| 五月天激情网开心网| 亚洲视频二区| 亚洲啪啪精品| 成人无码髙潮喷水A片| 橾逼网| 91性高潮久久久久久久久| 熟妇人妻中文字幕无码老熟妇| 亚洲精品激情| 五月天婷婷在看| 色原狠狠综合| 色五月激情五月| 丁香婷婷色情| 五月丁香在线看| 噜噜噜噜婷婷五月天| 丁香婷婷五月综合欧美另类| 日韩中文欧美| 九九九热精品| 思思热视频| 婷婷四月 成人 狠狠干| 日本熟妇精品99| av免费在线观看0| 久久激情五月婷婷| 激情婷婷五月| 五月婷婷激情综合av| 五月天激情站| 思思99热这里只有精品| 天天搞天天色综合| 丁香五月www| 亚洲亚洲人成综合网络| 狠狠香婷婷五月| 成人va在线| 99热这里是精品| 久久色五月天| 日日撸夜夜操| 99在线精品免费视频| 久久久久久天天日天天爱| 97色婷婷在线观看| 久久中国毛毛片爱久久| 丁香花综合永久入口| 婷婷五月影院| av色色国产| www,超碰| 天天爽天天爽| www.日本91| 五月丁香花激情综合网| 色色色欧美色色| 97色色色视屏| 777久久综合视频| 色啪网| 91超级碰在线视频| 丁香五月激情网| 超级97碰碰| 日韩丁香涩| 五月香婷婷| 久久五月天婷婷| 人人色婷婷| 婷婷五月伦理网站| 小视频久久久aaa| 久久婷婷操| 亚洲激情 久久| 色很很96| 激情五月综合色婷婷| 开心婷婷中文字慕| WWW.激情| 最新五月天婷婷影| 刘玥精品一区| 亚洲激情| 日韩在线9| 玖玖在线| 高清无码.com| 国产综合激情五月久久| 中文字幕性爱丰满| 综合久久五月天| 五月情婷婷| 亚洲aV写真天天综合网久久| 色五月涩涩婷婷| 婷婷六月色| 丁香激情五月| 激情五月天色色网| 国产一级视频a| 亚洲深喉aV| 人与禽A片啪啪| 亚洲精品无AMM毛片| 91久久精品国产91性色TV| 青草青草视频2免费观看| 嫩BBB搡BBBB榛BBBB| 99超超碰| 97人人操com| 操日本三片99| 激情桃色网 | 亚洲色图在线视频| 激情婷婷五月天| 亚洲日本激情| 精品国产va久久久| 五月丁香亭亭操逼| 丁香六月啪啪| 中文字幕成人日韩| 五月婷婷狠狠干| 成人色五月天婷婷| 伊人五月婷| 五月伊人婷婷999| 国产av基地| 超碰国产在线| 精品草原久久视频| www.超碰| 九月色婷婷婷| 99视频在线| www.色窝| 99色色| 99爱精品| 殴美97色| 亚洲精品乱码久久久久久按摩观| 九九精品视频在线6| 99视频网址| 五月天婷婷基地| 91夫妻网站九色| 伊人久久综合| 婷婷久久夜| 五月激情婷婷在线| 久久九九99| 婷婷九月久久| 五月天婷婷综合久久| 五月婷婷免费视频| 天天天干夜夜夜操| 天啪色| AV堂狠狠干| 亚洲激情精品| 久热91| 超碰免费观看| 99热在线99| 日韩AAAAA| 开心激情综合| 亚洲AV无码影院| www.91.com处女在线直播| 色天天综合| 97精品综合| ztEJj| 日本天天操| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 毛片网站谁有| 六月婷婷色| 熟女人妻一区二区三区免费看| 91xxxx九色| 性婷婷| 97色天堂| 婷婷激情综合色五月久久91| 久久A热| 九九99在线免费在线观看视频| 色www99| 丁香五月天无码AV| 1024操逼视频| 亚洲国产成人AV在线| 在线VA视频| 久99久热| 色香久久| 99A片| 99re热视频这里只精品| 最新日本A片| 成人在线视频一区| 黄色91在线观看| 开心五月色婷| 少妇人妻人伦A片| 99热9| 玖玖婷婷色五月| 亚洲av另类在线观看| Av狠狠色丁香婷| 五月天丁香网站| 一本九九色| 五月天激情小说婷婷基地| 五月丁香啪啪啪| 久婷婷色| 亚洲婷婷基地| 中文字幕av在线| 日本爆乳片手机在线播放| 国产综合网在线| 国产XXXX搡XXXXX搡麻豆| 精品久久二6| 色五月成人| 超碰在线观看9| 色日本五月天| 开心五月婷婷综合在线精品素人| 五月婷婷激情五月| 婷婷五月综合啪| 亚洲成人婷婷| 九九re视频在线视频| 人妻无码精品一区| 人人叉久| 91久久九久久九久久九久久九久久 | 天天色视频| 99色免费在线观看| 美国十月色婷婷在线观看| 婷婷五月a| 91婷婷五月天嫩女| 991精品在线视频| 玖玖婷婷色五月| 久久久A级视频| 桃色五月天| 亚洲AV免费国产电影| 天天操天天操天天操天天操天天操 | wwwC0maV五月花| 秋霞少妇AV网站| 伊人婷婷激情| 色婷婷四虎| 国产精品A片| 色婷婷狠狠久久综合五月 | 五月婷婷综合丁香视频| 99狠狠操一| 色色五月天丁香婷婷| 中文字幕,综合,91| 婷婷五月天堂| A√天堂网在线| 日日做A爰片久久毛片A片英语| 婷婷婷狠狠| 激情婷婷五月色| 久久五月婷综合| 日日夜夜爽| 国产在线aaa片一区二区99| 97久久香草精品视频| 激情网五月天| 五月情涩综合婷婷| 女人天堂久久| 婷婷操逼| 色婷婷丁香五月综合| 综合久久六月| 日日色综合| 南京搡BBBB搡BBBB| 婷婷玖玖丁香| 天天干,夜夜爽| 99热大片| 五月婷婷激情久久| 风流少妇A片一区二区蜜桃 | 婷婷色在线视频| se99视频| 五月婷婷五月天亚洲无码| 97超级操操| 天天日天天干天天操| 六月婷婷日| 在线超碰91| 天天狠狠夜夜狠狠2023| 婷婷丁香综合| 丁香九月婷婷| 九九色黄色| 亚洲另类电影| 天天操天天日天天操| 五月丁香激情怕怕| 色六月 婷婷| 97人妻碰碰碰久久香蕉| 91大屁股| 五月天婷婷xxx| 天天综合网~91| 色五月成人| 狠狠狠狠操| 91无码视频| 久久婷婷五月综合色欧美| 影音先锋91| 狠狠999| 激情图片久久| 人人人人人人人草| 婷婷五月天影院| 婷婷五月天久草在线| 丁香五月婷婷啪| 久草xx性爱视频| 色婷婷基地| 婷婷六月偷拍| 91精品久久久久久综合五月天| 婷婷九月丁香| 伊人狠狠操| 婷婷丁香五月天哟啪| 五月婷婷9| 中字幕视频在线永久在线观看免费 | 亚洲丁香五月天视频| 亚洲人人96@| 99爱爱网| 9久操| 国产午夜精品AV一区二区麻豆| AV在线观看网站| 另类激情网| 婷婷丁香色五月天久久88| 婷婷色中文| 天天日日| 婷婷五月激情基地| 亚洲无AV在线中文字幕| 操人91| 久久精品婷婷| 久久婷婷色色| 婷婷综合成人| 亚洲另类视频| 日韩爱操视频| www.99成人视频| 黄色99网| 激情综合网,五月| 五月开心婷婷极品激情| 99热播放| 五月丁香六月婷| 久久婷视频| 五月丁香A∨在线| www天堂99| 99免费超碰在线| 婷婷伊人| 这里有精品| 91一起操| 五月天激情国产综合婷婷婷| 五月婷婷激情综合| 97精品综合| 五月天啪啪啪| 99操视频| 天天日天天色| 性爱视频久久| 久久久亚洲精品一区二区三区浴池 | 五月丁香啪啪激情| 五月婷六月丁| 六月丁香婷婷五月| 亚洲第一第二网站| 99re6久热只有精品6在线直播| 丁香五月六月婷婷怡红院| 99日韩网站| 九九综合久久| 天天综合网在线| 狠狠操狠狠插| 婷婷四色五月| 99这里有精品| 麻豆AV一区二区三区| 人人插操| 九九热内射| 亚州精品成人片| 五月花激情网| 激情婷婷色色| 久久亚洲色导航| 五月天婷婷开心| 99热视精品| 婷婷激情五月综合| 97在线/亚洲| 91久热| 色色热| 亚洲激情四射色| 色碰97| www.射伊蕉婷婷| 色婷网| 热的国产,热的综合,热的有码| 天天色天天干天天插| 丁香五月欧美色综合| 99热这里精品| 丁香五月影院| 婷婷丁香中文字幕| 天天肏天天肏天天肏| 超碰在线人妻| 丁香婷婷久久老熟女综合网| 婷婷色六月| 99热这里有精力| 亚洲日韩乱码一区二区三区四区| 亚洲成人av在线观看| 色娸娸综合网| WWW五月天| 人人爱国产| 激情婷婷五月天| 乱精品一区字幕二区| 大香蕉啪啪啪啪啪啪| www.色五月.com| 色播五月丁香婷婷| 成人色图情色成人网 www.5b5b5bcom 五月天 | 欧美成人无码高清一区二区三区| 五月丁香欧美在线| 亚洲第一成人无码A片| 嫩草AV久久伊人妇女超级A | 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 婷婷丁香色情五月天| 激情床戏| 牛牛澡牛牛爽| 激情综合婷婷| 婷婷五月花西瓜| 丁香六月激情综合| 大香蕉天堂色| 日本www五月婷婷| 天天骑天天操| 无码日本精品XXXXXXXXX | 91精品丝袜久久久久久久久粉嫩| 第四色五月激情网| 99久久精品国产色欲| 欧洲电影在线观看免费版英语版| 99riAv1国产在线观看| 久久这里只有精品网| 97热这里精品在线视频| 亚洲一级 片内射网站在线观看| 欧美熟女99| 婷婷丁香综合| 蜜桃人妻无码AV天堂三区 | 婷婷亚洲影院| 亚洲色网址| 99热亚洲| 91色婷婷综合久久中文字幕二区| www.深爱激情| 日韩无码专区| 亚洲另类婷婷五月丁香在线播放| www.yw色| 九九九九无码| 五月婷婷伊人久久| 色情综合网| 欧洲亚洲免费视频9| 婷婷五月美女直播| 狠狠爱青青草| 日本丁香五月婷婷| 五月叮香啪| 色九亚洲| 国精产品一区一区三区有限公司杨 | 大香蕉久热| 丁香五月色欲| 亚洲中文AV| 婷婷丁香水多多视频| 色噜噜狠狠色综合日日| 亚洲 视频 导航 一区| 色婷五月天激情| 秋霞少妇AV网站| 欧美久久五月婷婷| 狠狠色丁香| 婷婷丁香五月天哟啪| 五月婷婷激情| 9精品在线| 婷婷综合视频| 啪啪操操| 久久婷网| 五月天天堂久久| 无码99| 婷婷综合干| 99热日韩| 99欧美三级视频| 深爱五月日韩| 96色婷婷| 五月天久久婷婷| 热久久这里只有三级视频| 我要看激情五月天| 97在线天堂| 婷婷色网站| 婷婷丁香五月在线观看91| 呦呦视频无码播放| 久久久91精品| 五月丁香在线综合| 久草丁香婷婷五月天婷| 日本久久人| 五月丁香啪啪综合| 婷婷激情社区| 久久精品国产色| 久久在线视频免费观看| www,婷婷五月天,com| 热99色| 色婷婷婷婷五月天| 五月丁香激情综合啪啪| 自拍偷窥99热| 精品无码av丁香五月激情| 婷婷五月天成人网| 日日狠夜夜狠| 9 1在线视频| 天天综合网91| 亚洲综合视频天天精品| 成人国产欧美大片一区| 色婷婷六月天在线| 第四色五月婷婷| 91色色色| 视色网在线播放| 99热人人艹| 99精品免费| www久| 五月天色婷婷av| 丁香婷婷综合激情五月色| 小视频一区 | 五月婷婷激情综合| 欧美成人精品一区二区 | 色婷婷很很丝袜| 思思久久精品| 天天激情5月天亚洲| 丰满人妻妇伦又伦精品国产 | 5月丁香美女影院| 色综合99| 五月天天丁香婷婷在线中| 日韩av手机在线观看| 停婷丁五月在线| 天天爱天天做天天日| 日韩精品视频中文字幕| 超碰不卡在线| 久久婷婷五月综合激情国产| 美国天天操无码| 久久丁香五月| 岛国AV网站| 色狠狠综合| www.91av.com| 综合99久久| 26uuu亚洲色| 丁香婷婷综合激情五月色| 香蕉婷婷| 无码99| 丁香久色| 欧美三级欧美一级| 五月色情精品| 久久婷婷五月天| 岛国AV网| 久久亚洲网| 99在线热视频| 中文字幕婷婷9月天| 日本三级中国三级99| 天天日人人爽| 五月婷婷另类| 丁香五月综合久久综合| 少妇高潮呻吟A片免费看软件| 九月色婷婷综合| 99秘 在线| 操操碰| 五月花激情网| 久久99最新地址| 欧美人妻一区二区| 婷婷五月天视频| 六月丁香婷婷尤物| 中文精品久久久久人妻不| 人人妻人人澡人人爽| 91紱請| 夜夜撸日日操| AA久久| 婷婷五月花丁香| 色天天狠狠干| 久er免费视频| 五月婷婷色啪| 狠狠狠狠草草| 91av传媒高清在线视频网| 99热9| 久热这里| 夜夜骑夜夜撸| 婷婷视频在线| 青青草六月丁香| 九九蜜臀精品| 婷婷综合网站| 免费婷婷| 丝袜激情网| 婷婷五月激情综合啪啪| 97爱艹婷婷开心丁香激情综合| www.五月天| 婷婷五月天黄色| www.婷婷六月天| 天天日夜夜拍| 激情深爱五月| 婷婷色五月综合| 人人舔天天| 九九热思思热| 日韩六十路91性交电影| 九九热10| 六月丁香五月激情亚洲AV| 99日韩| 久久多色| av在线免费播放| AA久久| 丁香婷婷色九月| 狠狠爱五月婷婷| 大香蕉欧美在线| www.com色播五月天| 九九热99精品| 99热99草97| 99久高清视频| 日本黄色精品| 精品亚洲国产成AV人片传媒| 人人操女人| 激情爱爱网站| 五月婷婷六月天| www超碰| 天天日天天舔天天摸| 欧美日韩一a.无| 丁香五月天在线视频| eeuus五月婷| 色另类五月天| 国产一级婬片毛片| 色色综合视频| 爱草人视频| 91人操| wwwss在线观看| 五月婷婷六月色| 午夜少妇在线观看视频| 人人爽网| 亚洲AV永久无码影院黑人| 大香蕉伊在| 久久 婷婷 五月天| 五月婷婷激情综合在线| 97色五月天| 精品草原久久视频| www.色婷婷.com| 大香蕉五月天婷婷| 亚洲综合在线视频| 99久久超级| 七月激情六月婷婷综合在线播放| 日本97在线| 人妻操逼视频。| 色人五月婷婷| 26uuu精品国产| 强伦轩人妻一区二区电影| 久久五月丁香| 香蕉AV777XXX色综合一区| 色色草97| 亚洲av网站| 一本道综合网| 日韩AAAAAAAAAAA片| 五月婷婷中文字幕| 日本激情综合| 日本久久性| 五五月丁香花激情综合网| 五月婷婷欲色| 玖玖在线| 少妇被躁爽到高潮无码文| 一级韩国产精品毛| 99久久综合网| 天天干天天色天天干| 99激情| 八戒青柠影视剧在线观看| 色婷婷小视频| 成人片在线播放| 综合五月天天天天天五月| 国产色色视频| 人妻少妇色综合| 午夜激情久久| 天天综合久久| 婷婷亚洲五月| 91欧美| 97碰在线免费观看| 亚洲激情无码久久| 欧美成人va| 另类少妇人与禽zOZZ0性伦| 无码色综合| 情婷婷五月天在线| 九九99热| 丁香五月狠狠在线观看| 狠狠色丁香| 99热精品在这里| 亚洲中文字幕在线观看| 99超级碰碰| 色五月婷婷啪啪五月| 五月停亭六月,六月停亭的英语 | 人人爱国产| 亚洲国产网址| 热这里只有精| 日本啪啪天堂| 欧美婷婷综合| http://www.lingjunshare.com/| 五月丁香婷婷基地| 日本A片一区| 美臀自射自家人妻| 免费观看亚洲AV片| 色色色五月天激情资源| 丁香五月婷婷呀| 免费亚洲婷婷中文字幕| 婷婷丁香婷婷97| 五月人妻婷婷| 色99在线观看| 99日精品视频| 五月天婷婷爱| av免费在线看不卡无毒| 亭亭玉立国色天香| 影音先锋一区| se.久久视频在线观看| 婷婷五月天激情综合深爱| 久久这里都是精品| 狠狠第四色| 五月丁香六月欧美综合网站| 五月丁香本色在线观看| 26uuu淫色| 天天色播| 色色免费网站| 欧美日韩成人在线观看| 色婷婷亚洲在线观看| 天天爽综合| 亚洲妇女熟BBW| 在线va网站| 欧美激情综合| 91人妻人人做人碰人人爽九色| 五月婷婷六月情| 婷婷六月久久| 激情99在线视频| 97碰碰久久| 玖玖精品资源| 国产AV一区二区三区日韩| 精品久久人妻热| 五月丁香六月| 婷婷综合另类小说| 久久丁香五月天| 9久精品视频| 婷婷月综合| 五月天综合久久丁香91| 丁香六月激情综合| 伊人婷婷五月天av| 五月 激情视频| 98永久精品| 亚洲人人操| 91狠狠色丁香| 五月天激情久久| 五月丁香综合激情网| 国产亚洲精品久久一区二区三区| 亚洲成人中心| 亚洲AV综合网| 五月婷网| 伊人五月综合网| 噜噜色五月| 影音先锋女人AA鲁色资源 | 婷婷久久五月天| 中文人妻主播久久| 七七婷婷综合| 五月婷丁香亚洲| 五月丁香激情综合网官网| 亚洲六月色| av线电影| 五月天婷婷av| 五月开心婷婷极品激情| 婷婷五月成人| 六月色色婷婷| 51精品国内探花| 婷婷五月天视频| 91se在线视频| 99热在线观看| 亚洲五月天综合| 超碰人人插| 婷婷社区五月天| 91丨九色丨白浆秘| www.色婷婷| 99 频99热国里只有精品| 亚洲亚洲人成综合网络| 色播五月丁香| 色综合视频| 99热首页| 五月婷婷婷婷婷婷艺术| 狠狠久久婷| 综合婷婷久久| 丁香婷婷偷拍| 5Www色5夜| 色噜噜97视频在线观看| 婷婷欧美偷拍综合| 久久ri精品| 玖玖婷婷色五月| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 婷婷五月深爱五月| 六月婷欧美| 色情五月婷婷| 久久婷婷五月综合色和| 婷婷九九| 日韩中文字幕| 丁香五月成人网| 亚洲综合视频天天精品| 碰碰碰97国产| av色婷婷| 丁香五月婷婷激情123| 婷婷久久在线| 成片免费观看视频大全| 狠狠色婷婷777| 日本色婷婷| 五月激情综合婷婷| 99操视频| 久99久热只有精品国产99| 国产AV不卡福利| 国产一级片| 九九热这里| 婷婷伊人无码| 极品九九九九九九| 久久香蕉网| 激情五月天偷拍综合网| 亚洲美女婷婷五月天| 九九九九九九九九九九九九九国产精品 | 五五月丁香花激情综合网| 九九色插| 99色在线| 婷婷性福五月天| 婷婷五月丁香在线观看| 亚洲综合另类| 色五月亚洲| 丁香五月成人| 夜夜干夜夜操| 天天爽,天天操。| 99爽视频| 91色色色视频| 亚洲精品色| 99热在线看片| 久久九九99亚洲国产久精综合| 色色色国产| 艹色18p| 一本道在线电影| 亚洲第一成人无码A片| 男人的天堂五月丁香| 丁香色六月婷婷| 美女精品一级不卡视频| 综合五月激情| 99噜噜噜在线播放| 丁香六月久久| 久久婷婷五月免费视频| 五月婷婷成人w| 99er6免费视频热播| 久久久A级视频| 亚洲狠狠终合停停终合| 丁香五月成人| 久久9视频欧美| 深爱婷婷网| 亭亭五月天黑人2014| 夜夜操夜夜爽| 99熟女| 久久99精品久久久久久噜噜| 殴美97色| 五月伊人91| 欧美综合丁香网| 九九aV| 97热在线精品| 久久大香蕉伊人| 色天使久久综合| 中文字幕有多少字| 99久久99久久综合| 久久综合99| 黄色三级日本| 97干视频在线| 天天天在线观看| 日日爽日日| 丁香五月,激情五月,深爱五月| 五月婷婷久久综合| 噜综合| 26UUU| 婷婷六月色| 日本99久久| 色婷婷中文在线| 久久婷婷丁香五月宗合| 9热在线视频| 丁香香蕉婷婷| 成人网页在线观看| 久热爱大香蕉在线蜜臀悦色| #NAME?| 婷婷天堂综合网| 99热伊人综合| 91九色 熟| 涩涩激情五月婷婷| 强奸幻女毛片| 人妻中文字幕精品| 色原狠狠综合| 亚洲超级碰| 九九色色色| 久久久久亚洲AV成人无码电影| 99精品久久久久| 一本久道综合99| 99在线观看视频| 久草婷婷| 久久性爱视频免费| 五月天激情婷婷五月天久久| 丁香五月天五码婷婷| 久久这里只有精品无码| 开心五月婷| 婷婷色五月色| 成人免费在线电影| 91婷婷丁香| 狠狠操综合| 激情综合网,婷婷五月天| 五月天婷婷成人资源站| 91久久久久久久91| 97性视频| 国产日产成人亚洲欧美国产VA| 欧美婷婷六月丁香综合色连续高潮抽搐| 五月天色播网| 亚洲婷婷婷| 亚洲第一精品成人999久久精品| 九热视频| 六月婷婷综合激情| 开心五月网 | 可以直接看的av网站| 九九久久视频| 五月天综合| 91超级碰碰碰| 国产成人精品一区二区三区视频 | 婷婷色影院| 天天狠狠综合精区| 欧美日韩中国| 99精品热| 99热这里有精品24| 久久精品视频在这里有| 情色五月天网站| 九九黄色网| 国av网| 五月丁香婷婷激情影院欧美| 丁香五月婷婷啪啪| 五月婷婷中文网| 色狠狠婷婷| 五月天六月色| 精品热九九| 婷婷丁香九月| 五月丁香网站在线播放| 丁香婷婷影院| 五月天婷婷社区| www日本熟妇99在线视频| 五月天婷综合| yazhou seshipin| 成年人丁香五月| 婷婷激情综合| 4438全国最大视频成人网站在线观看| 91色综合网| 激情影院免费视频婷婷五月天| 五月色综合网| 激情五月天婷婷| 天色色综合网| 99综合视频在线| 婷婷五月天综合中文| 色色色国产| 综合久久五| 99久久久免费| 日日夜夜综合| 久久久免费精彩视频| 狠狠爱丁香婷| 亚洲中文丁香| 婷婷五月天在线视频网站| 人人摸人人干| 伊人玖玖网| 精品99爱免费视频在线观看| WWW,五月| 日韩熟女啪啪视频| 人人操99| 欧美黄色AA片哗啦啦啦| 五月丁香影院| 91日日日| 丁香六月婷婷姐网| 婷婷在线精品| 丁香激情五月| 五月天激情婷婷丁香| 色色99| www.久久婷婷| 这里只有精品久| av狠狠操| 婷婷久久影院| av人人操| 免费观看的av| AV在线中文| 久久婷婷五月天蜜桃| 国产亚洲精品久久久久苍井松| 色婷婷免费观看| 99热6色| 韩日另类| 天天看片日日夜夜| 亚洲网视屏| 日本一级大片| 开心五月综合| 嫩草AV久久伊人妇女超级A| 九九色影视| 99综合网| 九月婷婷激情久久| 天天摸日日舔狠狠添婷婷婷| 99色在线视频| 国产欧美第五十五页| 天天日综合| 色色五月天 亚洲| 亚洲日韩26uuu| 亚洲操操| 丁香色情五月综合激情| 97婷婷狠狠| 99热碰碰| 天天透天天爱| 色级婷婷| 九一99| 337久久| 国产 码在线成人网站| 婷婷五月天熟妇| 色婷婷色久综| 丁香五月大香蕉| 五月丁香成人网| 伊人久久婷婷| 99日在线视频| 大香蕉天堂| 色天使色婷婷| 日熟女| 婷婷五月色图| 99精品国产在热久久婷婷| 久九九热| WWW.桔色成人.COM| 久久99久久久| 色婷婷小说网| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 色五月欧美| 六月丁香五月激情婷婷| 99九九视频| www.91色| 热热久久99| AA丁香综合激情| 激情涩播| 99在线视频播放| 678五月丁香亚洲综合| 激情婷婷五月天丁香| 婷香五月激情视频| 婷婷激情丁香六月| 涩五月婷婷| 久热伊人91| www久久99| 五月天婷婷高清无码| 五月色婷婷中文字幕| 男人操女人高潮91视频| 久久久久久久久99精品| 婷婷五月天,影院| 9九色首页| 人妻丰满精品一区二区A片| 97色色色| 婷婷五月情色| 先锋资源91| 色色欧美色色色| 丁香婷婷五月六月久久| 人人干AV| 综合五月婷婷| 中文字幕综合色| 日日日日日| 激情五月丁香亭亭| 一本久久亚洲五月婷婷| 91婷婷丁香五月| 五月美女婷婷风骚| 久久婷婷视频| 99视频在线精品免费观看2| 天天玩天天摸| 五月婷免费视频| 国产毛片精品一区二区色欲黄A片| 超碰国产在线观看| 欧美97p| 婷婷五月小说色综合| 久久 中文 日本| 成人无码髙潮喷水A片| 久婷婷婷| av操一操| 五月深爱婷婷| 色综合激情| 日日噜噜久久婷婷五月天| 嫩草AV久久伊人妇女超级A| 99人碰碰碰| 狠狠干无码| 色综合久久天天综合网| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 激情久久久久久久久久| 激情五月婷婷啪啪| 99色在线观看| 色五月大| 亚洲色99综合天堂| 99热在线播放| 激情综合婷婷| 五月丁香六月婷婷色日| 婷婷成人小说综合| 人妻性爱| 五月婷婷丁香| 九九综合网色全集| 人妻免费网站| 亚洲精品久久久无码| 久热超碰| 婷婷五月综合网| 五月丁香六月情| 99思思热只有在这里看 | 久久人妻少妇嫩草AV| 成人在线99|