欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
五月天大香蕉| 丁香五月色播中文在线播放| 丁香五月成人| 黄色激情五月天| 99∨VTV| www色婷婷久久综合久色| 色婷婷六月| 播播网色播播| 天天综合亚洲| 色情婷婷。| 综合色色婷婷| 99er精品视频| 亚洲色色色色| 狠狠色性| 人人干天天舔| 91热在线| 欧美天堂久久| 亚洲AV另类| 激情内射人妻1区2区3区| 婷婷色在线视频| 五月丁香六月婷婷中文版| 99热碰碰| 丁香久久九九99| 国产成人片| 丁香五月香蕉| 香蕉国产2013| www.精品99| 搡BBBB搡BBB搡18 | 99久热在线精品| 色婷婷五月天不卡| 亚洲激情97五月天| 激情五月狠狠| 五月丁香亚洲综合| 色五月在线观看| 六月丁香婷婷网| 久久伦乱| 色九月婷婷综合| 秋霞少妇毛片| 婷婷七月丁香色色| 五月丁香婷婷激情影院欧美| 欧美色碰| 9热精品| 丁香婷婷婷婷十二月在线观看视频| 无码99| 九九色影视| 噜噜吧天天爱| 欧美性爱一区| 9l视频自拍9l九色成人| 九九色逼| 久久人妻精品| 国产五月视频| 成人AV片播放| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 开心五月婷婷在线视频免费观看| 夜夜做天天爽| 色婷婷丁香五月综合| 天天操天天爽天天爱| 国产99美少妇| 少妇高潮一区二区三区99欧美| 中文字幕,综合,91| 久久久久激情网| 噜噜五月天综合| 色综合99色| 超碰色热| 91oumei| 久草婷婷在线| 婷婷亚洲久久| 99色色网| 米奇激情婷婷| 26uuu亚洲| 亚洲综合激情五月| 伊人色综合久久久| 久久草大香蕉| 久草 tingting| 亚洲无码猫咪| 五月天成人综合| 91久久精品视频| 欧美婷婷综合网| 六月丁香啪| 婷五月天| 婷婷六月丁香在线| 日韩在线五月天婷婷| 色色色国产| 婷婷五月六月| www.激情五月| 97干资源在线观看| 大香蕉婷婷五月天| 这里只有精品视频在线看| 开心激情站婷婷五月天| 99在线视频资源| 99在线观看| www久久久| 午夜成人片400| 91久女| 99热99草97| 久操大| 五月天综合久久| 五月色婷婷综合色| 五月天狠狠干| 99久久性爱| 中文字幕丰满孑伦无码专区| 五月丁香五月丁香五月丁香五月丁香91| 日逼影音先锋男人资源站| 9视频在线成人网站| 亚洲AV久久久久久久久久久久久久久久 | 思思视频这里是精品| 婷婷精品在线| 丁香婷婷性爱| 激情五月天婷婷播播久久综合91| 9|人妻人人操| 亚洲精品网址| 五月激情丁香五月宗合| 久久婷婷综合基地| 激情综合五月丁香六月婷婷| 婷婷色亚洲| 另类国产综合| 天堂AV三级| 午夜成人网站在线观看| 综久久久| 婷婷伊人综合| 五月色情婷婷| 99久免费视频| 日本人人草草| 激情综合在线观看| 99精品视频在线观看免费| 久月婷婷| 99热国产这里只有| tingtingzonghewang| 亚洲第一色色色色| 狠狠狠人妻| wWw色五月| 性爱AV天堂| 久久99网站| 色丁香久久| 色色色国产| 91九色国产| 99热免费| 在线观看中文字幕| 最近中文字幕大全免费版在线 | 五月丁香色停停啪啪啪| 日本久久极品| 激情综合网址| 99精品视频免费在线播放| 玖玖99免费视频| 色综合中文色综合网| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 啪啪一区| 麻豆AV一区二区三区| CHINESE熟女老女人HD视频| 午夜少妇在线观看视频| 丁香五月综合网| 综合久久十| 91在线人| 大香蕉婷婷丁香天堂AV| 五月丁香999| 狠狠操在线视频| 欧美综合激情五月| 99色| 99热精品在线| 青草视频在线观看视频| 99精彩视频在线观看| 亚洲第二AV| 开心五月婷婷婷美女| 天天综合网91| 另类综合国产| 碰碰91| www.夜夜| 国产精品A片在线| 色九月婷婷综合| 中文字幕在线免费观看视频| 国产精产国品一二三在观看| 操日视频| 婷婷六月网| 五月丁香在线综合| 五月天另类激情在线| 亚洲精品又粗又大又爽A片| 丁香五月亚洲综合丝袜| 大香蕉婷婷久久| 色色影院aaaav| 99热这里只有精品国产精品| 91丨九色丨东北熟女| 亚洲精品国产A久久久久久| 色播激情婷婷| 再綫Av免费視品| 五月婷婷花| 日日干夜夜干| 91中文狠狠综合| 97超级操操| 91欧美| 婷婷五月天激情亚洲小说| 五月丁香偷拍| 99只有精品| 男妓跪趴把舌头伸进我的嘴巴| 蒲京久久无码视频| 久久亚洲A| 99热这里只有免费精品| 久久久中文| 丁香,开心成人,久久| 射久久丁香五月| 婷婷丁香视频在线观看免费| 久re热视频| 天天操天天曰| 色五月婷婷av| 色婷婷狠狠18yy| 影音先锋一区二区三区| 99无吗| 99热一区| 骚五月婷婷| 九九草热在线观看| 99色在线视频| 亚洲黄色精品| 婷婷伊人网| 99热这里只有精品8| 9热成人在线视频| 久久人人九九| 亚洲综合激情五月久久| 久久综合五月天激情小说网站| 伊人婷婷大香蕉| 狠狠色 综合色区| 五月在线| 99艹精品在线观看| 日夜夜天天| 激情久久五月天| 婷婷五月丁香色色| 再綫Av免费視品| 色五月亚洲| 亚洲中文字幕在线观看| 色五月天.con| 日本操碰碰| 1级欧美日韩| 丁香蜜臀黄色婷婷五月天| 午夜丁香婷婷| 色五月激情问网站| 激情综合六月| 91丨九色丨首页| 都市激情蜜桃婷婷五月天| 狠狠干在线| 午夜]香婷婷深深爱| 五月丁香啪啪| 天搞天天天天天| 青青草轻轻操| 超碰在线99热| 99精色| 六月婷婷色综合| 99ri精品在线| 天堂色婷婷| 9久热在线精品| 人人射av| 无码91中文字幕| 国产色丁香| 91久久人人操| 91一起操| 色综合区| 色噜噜狠噜噜视频| 亚洲成人va| 久久激情五月| 丁香五月婷婷Av| 欧美成人AAA片一区国产精品 | 天天爽成人综合网站| yw国产AV| 激情小说色五月| 九九久久综合| www.婷婷.com| 色五月丁香婷婷久草| 美女100%露全身无挡网站| 第四色大香蕉| 69精品人人人人人人| 激情内射人妻1区2区3区| 激情久久久久久久久| 天天干天天干天天干天天干天天干天天| 婷婷六月天天| 九九人人自拍| 在线不卡AC| 丁香五月天.com| 思思热99在线| 久久婷婷五月草视频| 噜噜狠狠| 色婷婷影院| 2015WWW永久免费观看播放| ..真实国产乱子伦毛片| 少妇AB又爽又紧无码网站| 成人AV免费观看| 第四色五月天| 日本五月天激情| 狠狠久综合| 色五月婷婷少妇人妻| 草草操操| 六月丁香色色色| 国产SUV精品一区二区6| 免费无码毛片一区二区A片| 九九视频这里只有精品| 五月婷婷中文字幕| 久久久久人妻精品| 激情99| 99热最新| 99精品网| 亚洲情综合五月天| 91色综合网站在线| 超级碰 久久9| 激情丁香五月AV| 91女人18毛片水多国产| 婷婷久久婷婷色五月| www.夜夜爱.com| 丁香五月狠狠在线观看| 婷婷五月综合免费在线| 99色嘟嘟精品网站| 超碰成人AV| 日韩av网站在线观看| 91综合在线观看首页| 亚洲色区17| 色噜噜丁香| 狠狠色丁香乆乆| 久久性爱网| 大香蕉久久视频久久视频| 五月Huangsewang| 亚洲精品久久久无码| 久久思思热| 思思久久99热只有频精品66| 人人操婷婷| 亚洲123区高清入口| 国产毛片精品一区二区色欲黄A片| 国产精自产拍久久久久久蜜 | www.激情| 2050人人操免费工开爱| 婷婷丁香五月,狠狠综合| 色人妻五月| 欧美丁香婷婷五月天| 五月激情婷婷播播开心| 激情五月天婷婷丁香| 亚洲天堂久久| 97干在线免费| 成人AV在线电影| 天天舔夜夜操www com| 亚洲mm色| 婷婷五月天天爽| 97人人草| av在线婷婷| 五月丁香色停停啪啪啪| 五月婷婷偷拍| 新激情五月天色播| 超碰激情网| 另类小说五月天| Av狠狠色丁香婷| 青青日韩| 婷婷久久免费看| 狠狠狠狠狠操| av在线观看免费| 亚洲操操操| 色都都狠狠色都都色综合色| 第四色婷婷日本| 久久成人天| 婷婷综合激情| 成人做爰A片免费看视频| 99色人| 久久婷网| 婷婷五月天亚洲综合| 99色热视频| 五月婷婷六月天| 99在线爽| 91dy.av| 国产亚洲色婷婷久久99精品91| 思思热在线播放| 97luluse| 综合激情五月四射婷婷| 夜夜爱网站| 97色色婷婷| 国产婷伊人| www999日韩精品| www.伊人天堂偷偷婷婷| 激情另类综合| 久久99免费视频网站| 欧美一级色| 夜夜操,天天撸| www.婷婷五月天.com| 91精品久| 五月综合六月丁| 操碰99| 国产成人精品一区二三区熟女在线| 九九久久污| 99热久只有精品首页| 另类婷婷丁香| 成人精品在线观看| 99九无网码| 色婷婷色五月综合| 白人荫道BBWBBB大荫道| 五月婷五月婷伊人伊人五月婷| 久久九九热视频| 96精品成人无码A片观看金桔| 色婷婷a| 激情网婷婷婷| 精品香蕉99久久久久网站 | 亚洲 在线 性爱| 67194成I人在线观看线路1| 伊综合蕉| 五月亭亭六月激情| 九九久久99| 丁香婷色| 美女妹子后射视频网站在线观看| www.91av.com| 色久五月| 五月综合色| 操操天堂| 91热在线| 九月丁香亭亭| aa久久| 20253AV| 五月天小说激情| 99操视频| 婷婷六月综合在线| 五月天激情国产综合婷婷婷| 亚洲av成人电影在线观看| 丁香五月成人在线| 久操香蕉| 免费观看欧美成人AA片爱我多深| 久久久久久久久18久久| 武汉美女啪啪视频免费一级片| AA丁香综合激情| 日韩无码专区| 欧美在线干| 婷婷激情六月视频| 婷婷丁香成人五月天| 日韩1区2区| 无码AV免费精品一区二区三区 | 亚洲黄色精品| 伊人激情啪啪| 亚洲第一综合| 狠狠做五月婷婷| 九九亚洲| 开心五月色婷婷综合开心网| 微拍92| 这里有精品2| 男人的天堂在线婷婷| 伊人婷婷色激情丁香| 国产AV一区二区三区日韩| 99区视频| 丁香五月婷婷啪啪视频| 综合网亚洲| 懂色av蜜臀av粉嫩av永陈冠希| 激情五月天开心| 射久久丁香五月| 五月丁香成年黄色| 五月丁香| 婷婷六月视频| www.激情| 婷婷五月天伊人在线| 色五月婷婷在线| 亚洲无码播放| 极品少妇高潮啪啪AV无码| 天天婷婷天天| 大地9中文在线观看免费高清| 丁香五月婷婷六月婷| 国产小精品| 久久久五月婷婷| txt五月激情四射网综合俺也来了| 提提热五月天婷婷| 欧美婷婷丁香五月| 开心五月网 | 欧美激情五月| 黄网在线观看免费| 九九精品热| 久久机只有这里精品| 久久黄色片| 欧州色色| 色婷婷综合久色AV五色最新| 五月开心网| 五月丁香成人| 成人综合视频在线| 丁香婷婷综合激情五月色| 色欲资源网| 中文字幕,综合,91| 国产精品18久久久| 99riAV国产精品视频| 丁香九月婷| 黄色成人网站在线播放| 五月天婷婷久久综合| 婷婷之玖玖| 99爱视频在线观看| 色播婷婷五月天| 色婷婷亚洲| 激情五月婷婷综合秋霞| 91操熟女| 亚洲亚洲亚洲AAAAAA| 国产免费AV在线| 日本视频欧美观看免费| 久操福利| 丁香五月AV综合激情| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 欧美日韩成人高清在线| 久久成人性爱| 色娸娸综合网| 爆乳熟女-区二区三区| 免费在线a| 超碰99在线| 青青福利网| 亚洲在线操| 婷婷香蕉精品| 午夜做爱影院| 五月亭亭六月激情| 中文字幕AV在线播放| 综合欧美五月婷婷| www.婷婷| 97AV在线视频| 五月开心激情| 狠狠色婷婷六月激情网| 六月婷婷网| www.9797国产| 操碰99在线视频观看| 天天爽天天| 综合aV在线| 青青草成人网| 综合久久综合久久| 久久久免费精彩视频| 影音先锋 91工厂| 丁香五月性| 99啪在线| 丁香五月 无码| 日本色婷婷| 色99在线视频| 波多野结衣AV无码Porn| 激情婷婷色五月| 日本五月丁香| 99爱免费在线观看| 激情图片亚洲| 欧美日韩成人在线| 99热日韩| 久久大香蕉同僚| 日韩AV中文字幕在线| 婷婷伊人久久无码色五月| 五月丁香婷婷成人网| 另类激情五月在线视频欧美| 日韩色五月| 99热只有这里才是精品| 思思热在线视频99| 中文字幕 久久9999| 婷婷激情五月综合丁香社| 色色色色色色色色网站| 天天色播| 99热这里有精品| 亚洲午夜av| 99精品视频偷拍| 99久久久久久www| 色婷婷五月天久久| 99在线热视频| 开心色五月天久久久久久久| 天天操天天国产三级片处女学生妹| 亚洲无码成人性爰网| 六月激情网| 亚洲性爱99| 婷婷综合五月| 五月综合婷婷网| 色噜噜狠狠色综合日日| 五五月丁香花激情综合网| 激情婷婷六月天| 性爱先锋AV| 亚洲超碰在线| 丁香五月婷婷成人综合| 中文字幕成人| 九九视频这里是精品五月| 色狠狠综合| 免费黄色片子| 色婷青青| 91亚洲免费片| 色欲五月婷婷| 婷婷第六色| 色小说婷婷五月天天天| 欧美婷婷五月天综合| 激情五月天小说视频| 日韩操逼小电影| 九九这里都是精品| 婷婷99中文字幕| 成人丁香五月| 播丁香五月婷婷欧美| 日噜噜色| www.五月婷婷久久.com| 天天日日人| 噜噜噜精品欧美成人在线观看| 女人天堂 AV| 天天做天天爱天天玩| 天天操婷婷| 三级黄网站| 风流少妇A片一区二区蜜桃| 爱99干99| 日本3级片一区2区| 婷婷色色狠狠| 色五月丁香伊人五月| 4438激情网| 日韩操人| 丁香五月婷婷亚洲天堂| 婷婷五月综合在线| 婷婷五月天论坛| 思思久久精品| 9999三级片| 中文不卡一二三区| 日韩AAAAA| 五月丁香六月婷婷中文版| 99热在线里有精品| 去色色五月天| caop在线视频| 五月婷婷亚洲天堂激情在线| 超碰在线50| 久久在线人妻| 色色五月天网站| 天天干天天拍| 热久久视频99| 欧美天堂久久| 爽tv | 五月丁香六月情| 97热视频| 色插人人| 大香蕉九九| 艾小青av| 超碰人人操人人干| 91久久久久| 99日本黄站| 亚洲视频在线观看99| 日本在线观看aaa 99| 五月天综合在线| 欧美激情-区二区三区| 亚洲综合婷婷五月| 国产av天天插天天操天天爽| 色五月激情综合网| 五月天激情www| 欧美成人无码高清一区二区三区| 婷婷五月天你懂的| 黄色片区子| 96色婷婷| 日韩999| 综合五月丁香六月婷婷| 久久久久久久久久91| 日韩精品AV一区二区三区| 婷婷五月天久久| 思思视频这里是精品| 色婷亚洲| 婷婷六月天国产综合| 激情色色| 激情五月天影院| 久久久婷丁香五月| 久久激情视频99| 人妻在线网站| 综合欧美五月婷婷| 丁香在线视频| 色色色在线观看| 五月色婷婷在线观看| 五月婷免费视频| 五月婷婷色欲| 另类在线| 99热免费在线| www.婷婷五月天| 这里只有精品视频99| 色婷婷在线视频久| 婷婷五月天成人网| 欧美啪啪五月天| 六月五月天婷婷涩播在线| 日日操夜夜爽| 久热综合| 夜夜操夜夜操| 日韩精品二三区| 99视频在线观看欧| 国产在线6| 国产成人综合网| 97人人爱人人操| 丁香五月 无码| 狠狠婷婷综合| 51精品国自产在线| 五月丁香久久| 香蕉综合网| 五月婷婷AV| 天天操B| Av九九| 五月天堂色色| 99综合成人视频在线观看| 日韩色色色色| 欧美三9久九观看| 婷婷五月天伊人| 激情五月五月婷婷| 亚洲色99| 另类激情综合| 激情五月天网站| 777色色色| 亚洲操操| 九九無妻| 婷婷五月天成人网| 亚洲精品大片| 人妻中文在线| 五月丁香啪啪啪| 日韩成人精品中文字幕| 激情综合五月婷婷| 亚洲无AV在线中文字幕| 亚洲情综合五月天| 五月婷婷六月激情| 亚洲天堂色| 九九色黄色| 91在线观看www| 九九激情视频| 98永久精品| 任我鲁这里有精品视频| 99热免费精品| 大香蕉久久伊人婷婷五月丁香| 99在线精品视频免费| 五月激情网站| www.久久久.com| 色10月婷婷视频| 激情五月天在线免费美女视频| 色五月成人在线| 五月激情五月婷婷五月天在线| 色情五月天首页| 99热这里只有精品无码| 五月天激情www| 超碰国产在线观看| 丁香花色色网| 国产精品美女| 国产成人AV| 亚洲黄网在线| 亚洲啪啪精品| 猫咪伊人久久| 久久色在线视频| 熟女五月天久久综合| 五月丁香六月花| 婷婷伊人网| 99啪| 婷婷色网| 97亚洲视频在线| 人人操人| 五月丁香色| 99色看这里只有精品| 深爱五月天天| 99热这里只有精品55| 97资源碰碰| 99ER热精品视频| 日韩不卡123| 综合99久久天天综合| 婷婷色亚洲| 婷婷色Av| 丁香六月激情| 夜夜夜叫天天天做| 青草激情综合| 99热日| 99自拍视频在线| 99爱在线| 亚洲激情在线| 婷婷六月婷婷| 日日噜噜夜夜狠狠久久丁香六月| 五月色亚洲| 日本久久色| 色婷精品91| 五月丁香 久久久| 五月婷婷之婷婷| 9久久精品| 婷色影院| 日韩欧美颜射| 五月六月激情| 激情五月六月婷婷| 丁香五月激情五月色综合| 97碰在线| 亚洲激情电影五月天色婷婷丁香一起草| 另类综合婷婷五月天欧美视频| 色欲久久综合| 丁香五月婷婷免费视频| 五月丁香性爱| 欧美日韩AAA| www.激情五月| 亚洲色色五月| 99热在线中文字幕| 激情五月丁香六月综合AVXXXX| 99热这里只有精品9| 欧美精品A片一区在线观看| 激情的五月婷婷蜜桃| 色婷婷五月天在线观看| 日本不卡高字幕在线2019| 五月丁香色婷婷色| 欧美久久婷婷| 高清无码网址| 91免费看片| 思思热99在线视频| AV九九| 操97免费超级视频| 操啊操av| 9+1视频网址| 五月婷啪啪| 在线A色| 五月天色婷婷综合| 成人AV中文字幕| 五月天婷婷丁香蜜桃91| 国产精品美女久久久久AV超清| Av在线资源| 秋霞学生妹一二级| 色婷婷久久综合| 男女av免费看| 丁香五月另类小说在线阅读| 激情婷婷色色| 婷婷色五月天色| 五月天电影网| 少妇熟女视频一区二区三区| 人人操91| 丁香五月激情综合| 亚洲视频码| 小视频一区 | a免费在线| 99热99思午夜精品| 久久婷五月天| 色婷婷五月在线| 五月精品免费XXX| 大香蕉九九| 青青.com| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 久久久香| 永久免费一区二区三区| 亚城区在线| 久草丁香婷婷1024| 激情综合色五月六月婷婷| 色噜噜狠狠色综无码久久合欧美| 久大香蕉| 丁香婷五月天开心六月| 激情婷婷网| 丁香五月六月婷婷怡红院| 色婷婷综合久久| 五月丁香久久| 五月丁香六月成人| 五月天激情小说| 色五月婷婷中文字幕| AA久久| 色婷婷激情| 五月天婷婷伊人| 日本九婷婷| 综合 蜜月 婷婷| 激情五月六月婷婷| 婷婷五月日本| 六月丁香激情网| www.9色色色| 五月天婷婷在线播放免费| 五月激情综合网婷婷| 99久久综合精品五月天| 色综合99无码| 五月丁香六月婷婷视频| 日本三级色| 26uuu亚洲| 97人妻碰碰碰碰碰久久久久久| 色亚洲欧洲| 久9热视频在线| 婷婷六月视频| 五月婷久久综合| 婷婷五月天伊人网| 玖玖激情网| 4438激情网| 青青草原亚洲天堂| 色五月婷婷影院| 九九99在线观看视频| 五月激情小说| 丁香五月深爱五月婷婷| 亚洲六月婷婷| 99热超| 六月份天丁香婷婷| 91seav| 五月天婷婷影院| 色亚洲中文| 丁香综合| 五月丁香成人视频| 色域五月婷婷丁香| 激情五月婷婷视频一区二区三区| 天堂爱爱| 熟妇高潮一区av| 六月婷婷在线| 精品女人九九九| 99激情视频| 五月丁香婷婷无码中文| 97在线观视频免费观看| 婷婷开心久久| 日本一级特黄大片AAAAA级| 97热这里精品在线视频| 亚洲性受XXXX五月丁香| 丰满少妇猛烈A片免费看观看| 激情校园 亚洲| 色综合久久8| 色99热| 可以免费看av网站| 男女激情久久| 久超超碰| 草美女在线观看视频在线播放 | 婷婷丁香五月欧美人| 亚洲精品中文字幕成人片| 色色色国产| 五月丁六月香av| 综合激情九月婷婷,激情综合婷婷中文字| 亚洲婷婷欧美婷婷| 国产精品久久久久9999小说| 丁香六月天之亚州热女| 五月天婷婷网站888| 激情久久久| www.日韩艹| 午夜成人在线免费视频| www.狠狠操| 看国产探花操逼三级片| 99热这里只有精品1025| 亚洲情综合五月天| 思思re视频在线| 婷婷丁香五月色偷偷| 免费黄色片子| 色综合久久88色综合天天| 99热99这里有免费的精品| 婷婷色资源| 亚洲激情视频在线观看| 综合激情五月丁香9999久久精| 九久九精品| 超碰人人色| 五月天激情婷婷小说| 亚洲在线综合| 九九热9| 深夜男女福利刺激影院一区完整| 天天碰天天插天天操| 激情綜合網址| 老妇六区| 97碰免费视频在线| 激情网五月婷婷| 99久久亚洲精品视频| 丁香五月欧美婷婷| 日日夜夜狠狠| 丁香五月天激情综合| 色婷婷丁香五月高清在线| 综合色色综合| 国产午夜成人免费看片无遮挡| 91凹凸在线| 色婷婷九月综合| 亚洲AV第二区国产精品| 中文字幕网伦射乱中文| 日本人妻A片成人免费看片| 婷婷综合色五月天| 国产永久一二一起草| 久9草在线观看视频| 激情五月综合亚洲另类| 干一干xxxx| 丁香激情婷婷网| 这里有精品99| 97色永久免费视频| 亚洲色区17| 国精产品一区一区三区免费视频 | 婷婷五月天丁香综合网| 五月丁香网站| 婷婷色在线观看| 五月天婷婷成人网| 亚洲六月色| 五月花亭亭| 亚洲爱爱无码婷婷色五月| 天天色视频| 久久久91| 91成人电影| 夜夜躁爽日日| 九九久久网| 99热99干| 伊人色综在线| 九九久久综合网站| 97深爱伊人综合| 色婷婷丁香六月| 综合色图区| 狠狠爱婷婷| 99久免费视频| 色停停影院五月天| 碰碰人人人| 丁香五月天啪啪| 91久久色| 国产激情综合五月久久| 婷婷五月天激情综合深爱激情 | 99久久精| av色婷婷| 成人五月天丁香婷| 9久久精品视频| 超碰丁香五月| 狠狠狠狠草草| 99热综合在线观看| 欧美成人在线观看| 天天做天天爱天天高潮| 婷婷五月激情中文字幕| 亚洲成人在线播放| 免费观看亚洲AV片| 五月天丁香网站| 九九色播五月丁香| 99精品无码| 99精品在线观看视频| 激情丁香五月天图片| 婷婷五月天激情在线| 66精品成人免费网站在线观看| 丁香亚洲婷婷五月| 森林影视大全,最好看的2019年视频 | 思思热99热| 五月婷婷六月天| 99色在线观看视频| 另类激情五月| 久久99婷婷| XX色综合| 亚洲精品久久久久AV无码| 欧美性猛交99久久久久99按摩| 欧美色男人网站| 97超级碰| 欧美精品A片一区在线观看| 97色色综合| 亚洲精品无码久久| www.狠狠操.co m| 激情婷婷丁香五月| 色五狠狠| 中文成人在线| 婷婷久久综合| 天堂成人A片永久免费网站| 爽tv | 九月婷婷综合在线| 色女人久久| 另类的婷婷| 在线观看玖玖资源免费观看| 激情五月,婷婷五月,丁香五月| 亚洲激情综合| 色情综合网| 欧美性色A片免费免费观看的| 草草色情综合网| 98色丁香五月婷婷综合网| 九九热中文| 欧美va国产va| 五月婷婷六月丁香色| 在线观看亚洲视频影院| 婷婷五月天影院| 91色综合网站在线| 日熟女| 天天操天天插| 天天干天天日蜜臀av| 99热丁香五月| 激情五月综合视频| 五月激情五月婷婷五月天在线| 成人免费高清在线播放| 婷婷精品视频| 91 久热| 草一草avb| 天天粽合合合合| 激情综合网五月婷婷| 丁香五月天啪啪| 另类丁香五月天区图| 色五月色图| 五月丁香激情婷婷综合字幕| 国产视频婷婷| 五月丁香偷拍| 丁香五月熟女| 亚洲va欧美| 天天操天天爱天天玩| www久久艹| 最新AV在线观看| 夜夜夜天天操| 天天色,天天日,天天做| 久久伊人五月天| 色婷插| 激情性爱五月| 99亚洲欧洲| 91久久综合亚洲鲁鲁五月天| 97丨九色丨国产丨PORNY| 九九色院| 五月丁香色播| 久操人妻| 七七色综合| 欧美群妇大交乱婬网| 婷婷五月在线播放| 99热这里只有精品9| 中日韩狠狠色| 激情婷婷丁香色情五月天| 综合激情在线| 99欧美精品99日本精品| 在线婷婷| 思思热精品在线视频| 可以看的av| 97色在线观看视频| 六月天丁婷婷| 丁香五月婷婷基地| 超碰97久久| 六月婷婷色宗合| 色婷婷影视| 婷五月天六| 蜜臀av无码久久久久久久久| 丁香五月天.com| 综合久久十三| 综合综合色色| 欧美影院婷婷| 五月天久草| 日日干干天天干| 天天操天天曰| 91在线视频综合| 思思热久久爱| 婷婷五月天成人网| 丁香五月欧美成人| 5五月综合网亚洲| 丁香色婷婷色手机免费在线| 人人草公开操| 丁香婷婷六月天| 伊人丁香五月婷婷潮吹| 99色1| 任你爽视频| 色五月天丁香| 伊人五月天| 99热99日天天干| 五月天激情婷婷五月天久久| 色屌丝中文字幕| 日韩人妻无码精品| 99在线观看精品视频| 久草x色在线观看99 | 五月天久久婷婷| 中文字幕综合| 天天插天天爽| 亚洲国产成人AV在线| 精品色色网| 无码人妻少妇色欲AV一区二区| 丁香五月激情婷婷| 强伦轩人妻一区二区电影| 色99免费视频中文| 婷婷五月天堂一本在线| 国产精产国品一二三在观看 | 久久五月综合| 婷婷丁香花五月天| 欧美色99| 97婷婷在线| 99视频在线| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 色婷网| 超碰在线观看9| 人人摸人人| 热996精品在线观看| 婷婷色狠狠| 99福利视频导航| 性生活久久人妻| 久久无码成人| 天插天啪天啪天啪| 日本少妇裸体做爰高潮片| 久久亚洲精品成人无码网站导航| 久久综合五月| 99久久婷婷国产综合精品青桔| 91久久1118| 欧美三级欧美一级| 九九热中文| 97热视频| 亚洲激情婷婷| 五月份婷婷| 超碰99热| 国产在线6| 三男玩一女三A片| 另类丁香五月天区图| 99年操人人爽| 五月丁香婷婷中文网| 综合五月激情| 色色色色av色色色色| 色婷婷五月综合色婷婷| 五月叮香啪| 9久久久| 五月天丁香成人社| 丁香五月色色| 婷婷综合视频| xx色综合| 色九四色| 丁香色婷婷| 啪啪六月婷婷| 色播综合| 青青夜夜狠狠夜夜狠狠| 99国产精品白浆在线观看免费| 人妻久久久久久久久| 色婷婷狠狠久久综合五月| 这里只有精品1| 色偷偷色婷婷| 99爱视频免费| 日韩五月天婷婷| 久久性都花花世界成人免费视频| 色婷婷婷婷| 99re视频在线播放| 婷婷五月天久久| 五月婷色丁香| 婷五月天| 久久久ww| 丁香六月婷婷缴情欧美| 成人在线观看精品| 五月婷婷六月丁香色| 色婷婷a v| 激情丁香五月| 天天综合亚洲综合| 天天爱天天操| 五月婷婷五月天| 激情丁香五月激情婷婷| WWW.五月com| 亚洲成人无码网站| WWW,色五月| 色色婷婷综合| 五月天综合色| 婷婷综合| 9热网站| 俺去也五月| 国产激情久久久| 韩国中文字幕91| 五月色丁香| 高潮毛片遮挡费高一百度| 68热超碰在线| 9l视频自拍9l九色9l成人| 亚洲综合视频天天精品| 五月丁香久久激情综合| 91碰碰视频| 开心五月婷婷六月丁香| 五月天婷婷色色首页| 操91| 久久久久人妻中文| 翔田千里 50岁 无码| 无码少妇高潮喷水A片免费| 成人开心五月天| 色色五月天婷婷| 久久国产成人9999久久久久| 色五月激情综合| 无码日本精品XXXXXXXXX | 快色t v在线入口| 日本久久婷婷| 成人国产网站在线免费看| 综合色影院| 四虎婷婷五月天| www.com亚洲网站在线免费| 丁香五月色情| 五月天国产| 99小精品| 香蕉网久久| 中文字幕有多少字| 99久久久久久| 五月色天五月色| 五月色色色| 婷婷五月天丁香综合网| 99久热| 79色色色色| 五月丁香激情综合啪| 欧美激情久| 成人无码精品1区2区3区免费看| 99色精品| 亚洲综合色五月| 日韩成人精品中文字幕| 久久久久五月丁香| 日日日日日| 婷婷九月亚洲| 极品五月天| 婷丁五月| 国产精品操| 高清免费在线视频| www.夜夜操| www.婷婷亚洲基地| 久久久久久久合一狠狠做深爱 | 色五月婷婷老师| 丁香五月天堂网| 激情五月婷婷啪啪| 99碰碰| 五月天停婷基地| 色和综合网| 99在线精品视频| 九色七七| 丁香五月激情啪啪| 五月丁香婷婷激情| 久热婷婷| 啪色综合| 久久九九99.www| 欧美性色A片免费免费观看的| 五月婷色色| 精品人妻一区二区| 天天色综合网吨吧| 九九视频这里是精品五月| 亚洲天堂爱爱| 久久嘟嘟丁香| AV操一操| 91妻人人爽人人看片| 五月丁香大香蕉| 色优久久| 婷婷欧美综合| www.99热| 激情综合网五月激情网| 丁香九月婷婷色| 99热这里只有精品96|