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

ARTICLE DETAIL

資訊詳情

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

Spring Boot月度績(jī)效考核系統(tǒng)源碼解析與二次開發(fā)實(shí)戰(zhàn)

Spring Boot月度績(jī)效考核系統(tǒng)源碼解析與二次開發(fā)實(shí)戰(zhàn) 簡(jiǎn)介這是一套面向高校畢業(yè)設(shè)計(jì)與中小企業(yè)人事管理實(shí)踐的Spring Boot企業(yè)級(jí)應(yīng)用源碼聚焦月度員工績(jī)效考核全流程數(shù)字化管理旨在減輕HR事務(wù)性負(fù)擔(dān)、提升考核效率與數(shù)據(jù)支撐能力。資源包共383個(gè)文件含90個(gè)Java后端核心類、38個(gè)Vue前端組件、161個(gè)SVG圖標(biāo)資源以及SQL建庫腳本、YML配置、BAT啟動(dòng)腳本等完整工程要素總大小8.89MB結(jié)構(gòu)清晰前后端分離明確適合作為Java全棧開發(fā)學(xué)習(xí)范例或快速二次開發(fā)基礎(chǔ)。已有290人下載學(xué)習(xí)涵蓋管理員與員工雙角色權(quán)限體系完整實(shí)現(xiàn)員工信息維護(hù)、多維度績(jī)效指標(biāo)配置、月度打分錄入、自動(dòng)統(tǒng)計(jì)分析及年度數(shù)據(jù)導(dǎo)出功能配套PPT匯報(bào)文檔與數(shù)據(jù)庫設(shè)計(jì)說明可直接部署運(yùn)行并支撐年底評(píng)優(yōu)決策。拿到源碼別急著跑先把這套SpringBoot月度績(jī)效考核系統(tǒng)的家底摸清楚前陣子在一個(gè)技術(shù)群里看到有人分享了一份“springboot月度員工績(jī)效考核管理系統(tǒng)源碼.rar”壓縮包正好我最近在幫朋友公司做人資部門的數(shù)字化改造就下載下來研究了一下。這套系統(tǒng)算是比較典型的Spring Boot單體應(yīng)用核心功能圍繞“月度績(jī)效考核”展開覆蓋了員工檔案、考核計(jì)劃、指標(biāo)打分、結(jié)果統(tǒng)計(jì)這幾個(gè)主線。無論你是剛學(xué)Spring Boot的初學(xué)者還是想找一套能直接改改用的內(nèi)部管理系統(tǒng)的開發(fā)者這套源碼都有值得拆解的地方。先說結(jié)論它不是一個(gè)花里胡哨的大項(xiàng)目但勝在結(jié)構(gòu)干凈、功能閉環(huán)完整非常適合拿來學(xué)習(xí)Spring Boot MyBatis MySQL這套經(jīng)典組合也適合在此基礎(chǔ)上做二次開發(fā)。這篇文章我會(huì)從源碼結(jié)構(gòu)、數(shù)據(jù)庫設(shè)計(jì)、核心業(yè)務(wù)實(shí)現(xiàn)、部署運(yùn)行到二次開發(fā)改造點(diǎn)完整地復(fù)盤一遍我的實(shí)操過程順便把踩過的坑和排查思路也寫出來。1. 整體架構(gòu)與源碼設(shè)計(jì)思路拆解1.1 技術(shù)棧選型為什么是Spring Boot這套組合打開壓縮包之后第一件事不是急著跑起來而是先看pom.xml。這套系統(tǒng)的主技術(shù)棧是Spring Boot 2.x MyBatis MySQL前端用的是Thymeleaf模板引擎配合Bootstrap和jQuery。這個(gè)選型放在今天看可能不夠“時(shí)髦”沒有前后端分離、沒有Vue、沒有微服務(wù)但它恰恰是很多中小企業(yè)內(nèi)部系統(tǒng)最穩(wěn)妥的選擇。為什么這么說因?yàn)榭?jī)效考核這種系統(tǒng)使用場(chǎng)景是公司內(nèi)網(wǎng)或者云服務(wù)器部署并發(fā)量不大用戶量可能就是幾十到幾百人業(yè)務(wù)邏輯卻特別瑣碎涉及多角色、多狀態(tài)流轉(zhuǎn)。Spring Boot Thymeleaf這種服務(wù)端渲染模式天然適合這類場(chǎng)景——頁面直接由后端渲染不用考慮跨域、Token鑒權(quán)、前端構(gòu)建這些復(fù)雜問題一套代碼全搞定部署就是一個(gè)jar包維護(hù)成本極低。我看過太多人一上來就上Spring Cloud Vue前后端分離最后發(fā)現(xiàn)光是被權(quán)限和跨域折磨就夠喝一壺的。這個(gè)項(xiàng)目的選型思路是一個(gè)很好的提醒技術(shù)選型永遠(yuǎn)是為業(yè)務(wù)場(chǎng)景服務(wù)的不是越新越好、越復(fù)雜越好。1.2 源碼目錄結(jié)構(gòu)一眼看清各層職責(zé)解壓之后進(jìn)入項(xiàng)目根目錄src/main/java下的包結(jié)構(gòu)是這樣的com.example.performance ├── controller # 控制層接收請(qǐng)求、參數(shù)校驗(yàn)、返回視圖或JSON ├── service # 業(yè)務(wù)層封裝核心業(yè)務(wù)邏輯 │ └── impl # 業(yè)務(wù)實(shí)現(xiàn)類 ├── mapper # MyBatis數(shù)據(jù)訪問層接口 ├── entity # 實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫表結(jié)構(gòu) ├── common # 公共模塊統(tǒng)一返回結(jié)果、分頁對(duì)象、常量、工具類 ├── config # 配置類攔截器、WebMvc配置等 └── interceptor # 登錄攔截器一眼掃下來這是一個(gè)非常標(biāo)準(zhǔn)的“Controller-Service-Mapper”三層架構(gòu)。沒有過度設(shè)計(jì)沒有花哨的DTO/VO分層數(shù)據(jù)庫的實(shí)體類直接復(fù)用為業(yè)務(wù)對(duì)象。對(duì)于這類管理系統(tǒng)來說這種簡(jiǎn)單的分層反而是優(yōu)點(diǎn)新人上手快出問題也好排查。我不知道你有沒有見過那種把一個(gè)簡(jiǎn)單的CRUD項(xiàng)目強(qiáng)行分成五六層、每層之間還要用MapStruct轉(zhuǎn)換一遍的代碼維護(hù)起來是真的痛苦。resources目錄下也有值得關(guān)注的結(jié)構(gòu)resources/ ├── application.yml # 核心配置文件 ├── mapper/ # MyBatis XML映射文件 ├── static/ # 靜態(tài)資源CSS、JS、圖片 ├── templates/ # Thymeleaf模板頁面 │ ├── login.html # 登錄頁 │ ├── index.html # 主框架頁 │ ├── employee/ # 員工管理相關(guān)頁面 │ ├── assess/ # 考核管理相關(guān)頁面 │ └── system/ # 系統(tǒng)管理相關(guān)頁面 └── sql/ └── performance.sql # 數(shù)據(jù)庫初始化腳本看到有sql目錄的那一刻我是比較安心的說明作者至少考慮到了“拿到源碼的人要能跑起來”這件事。很多所謂的源碼根本不帶數(shù)據(jù)庫腳本或者是讓你自己去網(wǎng)上找這是非常糟糕的體驗(yàn)。1.3 三層架構(gòu)之外登錄攔截和權(quán)限控制是怎么做的一個(gè)管理系統(tǒng)最基礎(chǔ)也最核心的安全需求就是登錄認(rèn)證。這套系統(tǒng)沒有引入Spring Security或Shiro這類重量級(jí)框架而是自己寫了一個(gè)攔截器HandlerInterceptor來實(shí)現(xiàn)登錄校驗(yàn)。打開interceptor包下的LoginInterceptor類核心邏輯大致是從Session中獲取當(dāng)前登錄用戶如果為空就重定向到登錄頁面否則放行。Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session request.getSession(); UserEntity user (UserEntity) session.getAttribute(loginUser); if (user null) { response.sendRedirect(/login); return false; } // 如果是管理員訪問管理頁面還需要校驗(yàn)角色 return true; }然后通過WebMvcConfigurer注冊(cè)這個(gè)攔截器并配置放行路徑比如登錄接口、靜態(tài)資源等。這個(gè)設(shè)計(jì)雖然簡(jiǎn)單但夠用——前提是你部署在內(nèi)網(wǎng)環(huán)境。如果你打算把它部署到公網(wǎng)我還是建議至少引入一個(gè)輕量的權(quán)限框架或者基于Spring Security做二次封裝畢竟自研攔截器在密碼加密、Session固定防護(hù)、CSRF等方面都存在一定的安全短板。這里算是這套系統(tǒng)的一個(gè)明顯局限后面講二次開發(fā)時(shí)我會(huì)再展開。2. 數(shù)據(jù)庫設(shè)計(jì)與核心實(shí)體關(guān)系解析2.1 五張核心表撐起一個(gè)考核閉環(huán)打開sql/performance.sql里面一共創(chuàng)建了5張表按功能劃分如下表名功能說明核心字段舉例sys_user用戶表保存登錄賬號(hào)和員工基本信息id, username, password, real_name, dept_id, rolesys_dept部門表維護(hù)組織架構(gòu)id, dept_name, parent_idassess_plan考核計(jì)劃表每個(gè)月發(fā)起一次考核時(shí)創(chuàng)建id, plan_name, assess_month, status, create_timeassess_item考核指標(biāo)表維護(hù)可選擇的考核項(xiàng)目id, item_name, item_type, score_limitassess_record考核記錄表記錄每個(gè)員工每個(gè)計(jì)劃下的各項(xiàng)得分id, plan_id, user_id, item_id, score, remark, assessor_id其中assess_record是最核心的表它通過plan_id關(guān)聯(lián)到某一次月度考核計(jì)劃通過user_id關(guān)聯(lián)到被考核員工通過item_id關(guān)聯(lián)到具體的考核指標(biāo)再由assessor_id記錄是誰打的分?jǐn)?shù)。可以看出它采用的是“一行記錄一個(gè)員工在某個(gè)指標(biāo)上的得分”這種明細(xì)型設(shè)計(jì)而不是把得分拼成逗號(hào)分隔的字符串塞進(jìn)一個(gè)字段。這個(gè)設(shè)計(jì)我很欣賞因?yàn)樗WC了后續(xù)統(tǒng)計(jì)的靈活性——比如你要算某個(gè)員工某月各指標(biāo)的平均分或者按部門匯總一條SQL就能搞定不需要拆字符串。2.2 用戶表的角色設(shè)計(jì)一個(gè)字段區(qū)分三種身份sys_user表里有一個(gè)role字段用來區(qū)分系統(tǒng)使用者的身份。這套系統(tǒng)里主要存在三種角色員工employee可以查看自己的考核結(jié)果參加自評(píng)考核專員/管理員admin創(chuàng)建考核計(jì)劃、維護(hù)考核指標(biāo)、打分、查看所有報(bào)表部門主管manager管理本部門員工對(duì)本部門員工進(jìn)行考核打分這種用單一字段區(qū)分角色的做法在小型系統(tǒng)里很常見好處是簡(jiǎn)單直白壞處是如果角色數(shù)量變多、權(quán)限粒度變細(xì)之后這個(gè)字段就撐不住了。如果你的業(yè)務(wù)需求是“每個(gè)角色能訪問不同的菜單、頁面、按鈕”我建議后面升級(jí)成RBAC基于角色的訪問控制模型加上角色表和權(quán)限表。這個(gè)后面二次開發(fā)部分我會(huì)詳細(xì)說怎么改。2.3 數(shù)據(jù)庫設(shè)計(jì)里最容易被忽略的地方我在看建表SQL的時(shí)候注意到一個(gè)細(xì)節(jié)整份腳本里只有PRIMARY KEY幾乎沒有建任何外鍵約束。這其實(shí)是一個(gè)有意識(shí)的取舍——外鍵會(huì)降低寫入性能而且會(huì)讓邏輯刪除、批量導(dǎo)入這些操作變得非常麻煩。在真實(shí)的業(yè)務(wù)系統(tǒng)里外鍵約束通常靠應(yīng)用層代碼來保證而不是靠數(shù)據(jù)庫。這個(gè)習(xí)慣在阿里和大部分一線大廠的開發(fā)規(guī)范里是明確推薦的。所以在這套源碼里你會(huì)看到查詢數(shù)據(jù)時(shí)都是手動(dòng)JOIN關(guān)聯(lián)表而不是依賴外鍵自動(dòng)關(guān)聯(lián)千萬別覺得這是“偷懶”這恰恰是行業(yè)里通行的做法。另一個(gè)要注意的是為了演示方便員工表里直接用明文存了密碼字段本例演示數(shù)據(jù)是123456之類的。真實(shí)環(huán)境里千萬不要這么干至少要加一層BCrypt或MD5加鹽哈希后面我在安全改造那一節(jié)會(huì)重點(diǎn)說。3. 核心功能模塊與月度考核流程的完整實(shí)現(xiàn)3.1 月度考核的業(yè)務(wù)閉環(huán)是怎樣的我花了兩個(gè)晚上把這套系統(tǒng)的代碼從頭到尾讀了一遍發(fā)現(xiàn)它的業(yè)務(wù)邏輯是完全圍繞“月度考核”這條時(shí)間線設(shè)計(jì)的。一個(gè)完整的月度考核周期大致如下管理員創(chuàng)建考核計(jì)劃比如“2025年5月績(jī)效考核”指定考核月份、考核狀態(tài)草稿/進(jìn)行中/已結(jié)束維護(hù)考核指標(biāo)管理員預(yù)先配置好考核項(xiàng)比如“工作完成度限100分”、“團(tuán)隊(duì)協(xié)作限50分”、“遵守紀(jì)律限50分”逐人打分部門主管或考核專員進(jìn)入打分頁面選擇某個(gè)考核計(jì)劃再選擇某個(gè)員工逐項(xiàng)填寫分?jǐn)?shù)和評(píng)語結(jié)果查看員工登錄后可以查看自己的各項(xiàng)得分、總分和評(píng)語管理員可以按部門、按考核月份匯總統(tǒng)計(jì)這個(gè)流程本身不復(fù)雜但它的核心價(jià)值在于“閉環(huán)”——從建計(jì)劃到打分再到查看結(jié)果所有環(huán)節(jié)都是貫通的沒有斷點(diǎn)。這也是評(píng)價(jià)一套管理系統(tǒng)到底好不好用的關(guān)鍵標(biāo)準(zhǔn)。很多半成品的源碼問題恰恰出在這里能添加員工、能添加指標(biāo)但打分和報(bào)表對(duì)不上或者數(shù)據(jù)流斷裂使用者還得線下用Excel補(bǔ)賬。3.2 打分功能的前后端聯(lián)動(dòng)實(shí)現(xiàn)打分功能是整個(gè)系統(tǒng)里交互最復(fù)雜的一個(gè)頁面。我具體看一下實(shí)現(xiàn)方式。前端是一個(gè)HTML表單頁面templates/assess/score.html頁面里用Thymeleaf遍歷當(dāng)前員工的考核指標(biāo)列表每個(gè)指標(biāo)對(duì)應(yīng)一個(gè)input輸入框用來填分?jǐn)?shù)。提交后通過AJAX將整個(gè)表單序列化后POST到后端接口。后端接收的Controller代碼如下PostMapping(/assess/record/save) ResponseBody public Result saveAssessRecord(RequestBody ListAssessRecordSaveDTO recordList) { // 參數(shù)校驗(yàn)分?jǐn)?shù)不能超過指標(biāo)滿分、指標(biāo)ID不能為空等 // 批量保存或更新考核記錄 assessRecordService.saveOrUpdateBatch(recordList); return Result.success(); }這里我注意到一個(gè)設(shè)計(jì)細(xì)節(jié)后端接口接收的是一個(gè)List對(duì)象而不是傳統(tǒng)的Form表單提交。這意味著前端使用了AJAX JSON序列化的方式提交數(shù)據(jù)每次保存考核結(jié)果只發(fā)一次請(qǐng)求而不是每項(xiàng)指標(biāo)發(fā)一次性能上更優(yōu)體驗(yàn)上也更穩(wěn)定。前端用jQuery實(shí)現(xiàn)的序列化大致長這樣var records []; $(.assess-item).each(function () { records.push({ planId: $(#planId).val(), userId: $(#userId).val(), itemId: $(this).data(item-id), score: $(this).val(), remark: $(this).find(.remark-input).val() }); }); $.ajax({ url: /assess/record/save, type: POST, contentType: application/json, data: JSON.stringify(records), success: function (res) { if (res.code 200) { alert(保存成功); } } });這種批量提交的方式比那種“保存一個(gè)指標(biāo)刷新一次頁面”的原始做法體驗(yàn)好太多了。我在做類似系統(tǒng)時(shí)也一直是這么設(shè)計(jì)的特別是考核指標(biāo)通常在5到10項(xiàng)之間批量提交一次搞定不產(chǎn)生中間態(tài)數(shù)據(jù)出問題也好回滾。3.3 考核結(jié)果的匯總統(tǒng)計(jì)一條SQL代替一堆Java循環(huán)考核系統(tǒng)的終極大頭是“統(tǒng)計(jì)結(jié)果”。很多新手寫統(tǒng)計(jì)功能時(shí)習(xí)慣在Java代碼里把數(shù)據(jù)全查出來然后用一層層for循環(huán)去遍歷、累加、分類。這種做法在小數(shù)據(jù)量下問題不大但數(shù)據(jù)一多性能就難看而且代碼極其臃腫。這套系統(tǒng)的統(tǒng)計(jì)實(shí)現(xiàn)走的是正確路線在Mapper層的XML里寫好聚合SQL直接讓MySQL完成數(shù)學(xué)運(yùn)算。我挑一段比較有代表性的匯總SQL給你看select idselectMonthlyReport resultTypemap SELECT u.real_name, d.dept_name, r.plan_id, SUM(r.score) AS total_score, AVG(r.score) AS avg_score FROM assess_record r LEFT JOIN sys_user u ON r.user_id u.id LEFT JOIN sys_dept d ON u.dept_id d.id WHERE r.plan_id #{planId} GROUP BY r.user_id, u.real_name, d.dept_name, r.plan_id ORDER BY total_score DESC /select這條SQL做的事情是傳入一個(gè)考核計(jì)劃ID按員工分組算出每個(gè)人的總分和平均分同時(shí)把部門名稱帶出來最后按總分降序排列。整個(gè)考核報(bào)表的核心邏輯就這么幾行SQL搞定了。這就是為什么我說數(shù)據(jù)庫設(shè)計(jì)的時(shí)候“一行一條指標(biāo)得分”的明細(xì)表結(jié)構(gòu)特別重要——它讓所有統(tǒng)計(jì)需求都變成了純粹的SQL練習(xí)而不是Java代碼的噩夢(mèng)。3.4 分頁查詢和搜索最容易被做成災(zāi)難的地方員工列表和考核記錄列表都涉及分頁。這套系統(tǒng)用的是MyBatis自帶的分頁插件PageHelper在Controller里調(diào)用PageHelper.startPage()然后緊接著執(zhí)行Mapper查詢PageHelper會(huì)自動(dòng)幫你在SQL后面拼接LIMIT語句。用法看起來很簡(jiǎn)單但有幾個(gè)坑是必須注意的。PageHelper在分頁時(shí)startPage()后必須緊跟第一條Mapper查詢語句如果你在中間插入了任何其他的數(shù)據(jù)庫查詢操作分頁就會(huì)作用到錯(cuò)誤的SQL上。另外如果有多個(gè)查詢操作要分頁必須每次查詢前重新調(diào)用startPage()而不是只用一次。我見過不少從這套源碼做二次開發(fā)的同行改著改著發(fā)現(xiàn)列表數(shù)據(jù)不對(duì)多半就是踩了這個(gè)坑。這里分享一個(gè)排查技巧開啟MyBatis的SQL日志輸出看控制臺(tái)實(shí)際打印的SQL里L(fēng)IMIT是拼接在哪條語句上的一目了然。# application.yml 中開啟SQL日志 logging: level: com.example.performance.mapper: debug4. 從源碼到運(yùn)行完整部署與配置指南4.1 環(huán)境準(zhǔn)備到底需要哪些東西要把這套系統(tǒng)跑起來你需要準(zhǔn)備以下環(huán)境JDK 8或11建議用JDK 8兼容性最穩(wěn)Maven 3.6用于依賴下載和打包MySQL 5.7或8.0建議8.0字符集選utf8mb4IDE推薦IDEA社區(qū)版就夠用有一個(gè)比較高頻的問題我提前說如果你本機(jī)裝的是Spring Boot 3.x版本直接打開這個(gè)項(xiàng)目大概率會(huì)報(bào)錯(cuò)因?yàn)镾pring Boot 2.x和3.x在底層有大量API變動(dòng)代碼里很多寫法是不兼容的。所以請(qǐng)先確認(rèn)你的JDK版本和這個(gè)項(xiàng)目聲明的Spring Boot版本是匹配的。項(xiàng)目用的Spring Boot 2.3.x或2.4.xJDK 8完全夠用不要一上來就拿JDK 17去跑舊項(xiàng)目那樣你會(huì)多出很多折騰的時(shí)間。4.2 初始化數(shù)據(jù)庫和修改配置文件第一步先創(chuàng)建一個(gè)名為performance的數(shù)據(jù)庫字符集選擇utf8mb4然后導(dǎo)入項(xiàng)目自帶的SQL腳本這樣表和數(shù)據(jù)就都有了。具體步驟是在MySQL中執(zhí)行下面的SQL指令也可以用Navicat或DBeaver可視化導(dǎo)入這里我給你命令行版本mysql -u root -p # 輸入密碼后進(jìn)入MySQL控制臺(tái) CREATE DATABASE performance DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE performance; SOURCE /你的解壓路徑/src/main/resources/sql/performance.sql;SQL執(zhí)行完之后打開application.yml這里有兩處必須改成你自己的實(shí)際配置MySQL連接地址和賬號(hào)密碼。spring: datasource: url: jdbc:mysql://localhost:3306/performance?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver這里我強(qiáng)烈建議你把serverTimezone顯式指定為Asia/Shanghai然后把useSSL設(shè)為false。前者是因?yàn)镸ySQL 8.0默認(rèn)時(shí)區(qū)是UTC不指定的話你插入的時(shí)間會(huì)跟本地時(shí)間差8個(gè)小時(shí)后者是因?yàn)楸镜亻_發(fā)環(huán)境的SSL證書不受信任開啟會(huì)連不上數(shù)據(jù)庫。4.3 直接啟動(dòng)與打jar包兩種運(yùn)行方式在IDE里打開項(xiàng)目后等Maven把依賴下載完找到主啟動(dòng)類——通常是SpringBootApplication注解修飾的那個(gè)類直接右鍵Run即可。啟動(dòng)成功后瀏覽器訪問 http://localhost:8080/login 就能看到登錄頁。如果你要在服務(wù)器上部署推薦用Maven打成jar包再運(yùn)行。在項(xiàng)目根目錄執(zhí)行mvn clean package -DskipTests打包完成后target目錄下會(huì)生成一個(gè)performance-0.0.1-SNAPSHOT.jar文件。上傳到服務(wù)器執(zhí)行java -jar performance-0.0.1-SNAPSHOT.jar --spring.profiles.activeprod如果服務(wù)器內(nèi)存比較緊張比如只有1G加一個(gè)JVM參數(shù)來控制堆內(nèi)存java -Xms256m -Xmx512m -jar performance-0.0.1-SNAPSHOT.jar-Xms是初始堆大小-Xmx是最大堆大小。這種內(nèi)部管理系統(tǒng)給512MB綽綽有余不需要傻乎乎地給服務(wù)器默認(rèn)的默認(rèn)值機(jī)器內(nèi)存多大就給多大太浪費(fèi)資源。4.4 第一次登錄進(jìn)去應(yīng)該先檢查什么跑起來之后先用SQL腳本里內(nèi)置的管理員賬號(hào)登錄不同源碼account不同一般在SQL的INSERT語句里有或者README里會(huì)寫。登錄進(jìn)入系統(tǒng)后我建議你按下面這個(gè)順序做一次“冒煙測(cè)試”進(jìn)入“員工管理”確認(rèn)列表能顯示出來嘗試新增一名員工進(jìn)入“考核管理”創(chuàng)建一個(gè)當(dāng)月考核計(jì)劃給該計(jì)劃配置考核指標(biāo)進(jìn)行打分然后查看報(bào)表確認(rèn)統(tǒng)計(jì)結(jié)果無誤退出登錄用員工賬號(hào)登錄確認(rèn)能查到自己的考核結(jié)果如果在某一步卡住了這篇文章后面第五部分會(huì)給出常見的坑和排查方法可以直接跳過去對(duì)照。5. 常見問題與排查技巧實(shí)錄5.1 啟動(dòng)失敗端口被占用怎么辦Spring Boot默認(rèn)端口是8080如果你本機(jī)已經(jīng)跑了別的項(xiàng)目占用了8080啟動(dòng)會(huì)直接報(bào)“Port 8080 was already in use”。最快的解決辦法是換端口在application.yml里加一行server: port: 8081或者啟動(dòng)時(shí)臨時(shí)指定java -jar performance-0.0.1-SNAPSHOT.jar --server.port8081Windows下排查端口占用可以用netstat -ano | findstr 8080找到PID后到任務(wù)管理器里結(jié)束對(duì)應(yīng)進(jìn)程。Linux下則是lsof -i:8080。這屬于開發(fā)基本功不多說了。5.2 數(shù)據(jù)庫連接報(bào)錯(cuò)Access denied或Communications link failure這兩個(gè)報(bào)錯(cuò)分別對(duì)應(yīng)兩種不同的原因。Access denied說明用戶名或密碼不對(duì)去application.yml里核對(duì)就行。Communications link failure一般是網(wǎng)絡(luò)層面連不上數(shù)據(jù)庫排查順序是MySQL服務(wù)有沒有啟動(dòng)Linux下systemctl status mysqldWindows下看服務(wù)列表數(shù)據(jù)庫地址和端口對(duì)不對(duì)默認(rèn)是localhost:3306如果是遠(yuǎn)程數(shù)據(jù)庫檢查防火墻有沒有放行3306端口5.3 頁面能打開但列表數(shù)據(jù)為空先看SQL日志這是我調(diào)試這套系統(tǒng)時(shí)最常遇到的問題。頁面能打開說明前端模板和Controller路由是通的但列表不顯示數(shù)據(jù)大概率是SQL查詢沒匹配到數(shù)據(jù)。這時(shí)候不要憑感覺猜直接把MyBatis的SQL日志打開前面配置過logging.level刷新頁面看看控制臺(tái)打印的SQL拼接出來的WHERE條件是什么。我遇到過的好幾個(gè)案例都是因?yàn)榭己嗽路輦鞯氖?025-05而數(shù)據(jù)庫里存的是2025年5月格式對(duì)不上查出來結(jié)果集為空。要特別留意月份、日期這類字段的前后端格式一致性。5.4 上線后的性能問題每月考核日系統(tǒng)變慢怎么辦這套系統(tǒng)在幾十人規(guī)模下完全沒問題但如果你的公司有幾百上千人每月考核那幾天系統(tǒng)明顯變卡主要是assess_record表的數(shù)據(jù)量迅速膨脹。而且如果表上沒有索引按plan_id過濾都會(huì)變成全表掃描。解決辦法是在核心查詢字段上建索引ALTER TABLE assess_record ADD INDEX idx_plan_user (plan_id, user_id); ALTER TABLE assess_record ADD INDEX idx_plan_item (plan_id, item_id);這兩個(gè)索引覆蓋了報(bào)表查詢和打分查詢的幾乎所有場(chǎng)景。加了之后數(shù)據(jù)量幾十萬級(jí)別內(nèi)你基本不會(huì)察覺性能變化。千萬別一開始就上什么緩存中間件、讀寫分離那叫過度設(shè)計(jì)。先看能不能用索引、SQL優(yōu)化解決90%的問題到這里就結(jié)束了。5.5 日志排查遇到500錯(cuò)誤怎么查根因一旦出500Spring Boot會(huì)默認(rèn)返回一個(gè)簡(jiǎn)陋的錯(cuò)誤頁面甚至只有一行“Whitelabel Error Page”如果不看日志你根本不知道發(fā)生了什么。這時(shí)候你要去找啟動(dòng)項(xiàng)目的那個(gè)控制臺(tái)窗口在日志里找到“ERROR”級(jí)別的信息那個(gè)帶異常堆棧的就是根因。最常見的幾個(gè)500原因我順手列一下報(bào)錯(cuò)關(guān)鍵字原因快速解決NullPointerException某個(gè)對(duì)象為null通常是查詢結(jié)果為空檢查數(shù)據(jù)庫有沒有對(duì)應(yīng)數(shù)據(jù)BadSqlGrammarExceptionSQL語法有問題把SQL復(fù)制到數(shù)據(jù)庫中執(zhí)行測(cè)試DuplicateKeyException主鍵或唯一鍵沖突檢查是否重復(fù)插入數(shù)據(jù)ClassNotFoundException依賴缺失檢查pom.xml相關(guān)依賴是否引入6. 基于這套源碼的二次開發(fā)實(shí)戰(zhàn)建議6.1 需求一把明文密碼改成加密存儲(chǔ)這是任何系統(tǒng)上公網(wǎng)前必須做的一項(xiàng)改造?,F(xiàn)在sys_user表里的password字段存的是明文一旦數(shù)據(jù)庫泄露所有登錄賬號(hào)全部暴露非常危險(xiǎn)。推薦使用Spring Security自帶的BCryptPasswordEncoder來做。改造步驟不復(fù)雜注冊(cè)一個(gè)Bean然后在保存用戶和校驗(yàn)登錄時(shí)都用它來加密/校驗(yàn)密碼。Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } // 保存用戶時(shí) user.setPassword(passwordEncoder.encode(user.getPassword())); // 登錄校驗(yàn)時(shí) if (!passwordEncoder.matches(rawPassword, user.getPassword())) { throw new RuntimeException(用戶名或密碼錯(cuò)誤); }BCrypt算法的特點(diǎn)是每次加密結(jié)果都不同但是matches方法可以校驗(yàn)。它自帶鹽值比簡(jiǎn)單MD5安全一個(gè)量級(jí)。這個(gè)改造需要同步處理已有數(shù)據(jù)——?dú)v史用戶的明文密碼需要提供一個(gè)批量重置或者讓用戶走一遍“忘記密碼”流程這是上線前需要規(guī)劃好的。6.2 需求二把考核明細(xì)導(dǎo)出為Excel企業(yè)內(nèi)部系統(tǒng)幾乎都逃不過“導(dǎo)出報(bào)表”的需求。這套源碼目前沒有導(dǎo)出功能但改造起來比較容易。推薦引入EasyExcel阿里出品性能好封裝也簡(jiǎn)單。加依賴后在查詢到resultList的地方直接調(diào)用EasyExcel的write方法即可dependency groupIdcom.alibaba/groupId artifactIdeasyexcel/artifactId version3.3.2/version /dependency然后通過一個(gè)Controller接口把結(jié)果集寫入HttpServletResponseGetMapping(/assess/export) public void export(HttpServletResponse response, Long planId) throws IOException { ListMapString, Object dataList assessRecordService.selectMonthlyReport(planId); response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); response.setCharacterEncoding(utf-8); String fileName URLEncoder.encode(月度考核報(bào)表, UTF-8).replaceAll(\\, %20); response.setHeader(Content-disposition, attachment;filename*utf-8 fileName .xlsx); ExcelWriter writer EasyExcel.write(response.getOutputStream()).build(); WriteSheet sheet EasyExcel.writerSheet(考核結(jié)果).head(ReportHead.class).build(); writer.write(dataList, sheet); writer.finish(); }上面代碼里需要你自定義ReportHead這個(gè)類用ExcelProperty注解標(biāo)注列頭和對(duì)應(yīng)的字段名。核心思路就兩步查數(shù)據(jù)、寫Excel前端頁面加一個(gè)“導(dǎo)出”按鈕window.open跳轉(zhuǎn)到這個(gè)接口就能下載文件。6.3 需求三從單角色升級(jí)為RBAC權(quán)限模型如果你需要細(xì)粒度控制“誰能看哪個(gè)頁面、誰能點(diǎn)哪個(gè)按鈕”當(dāng)前這個(gè)簡(jiǎn)單的role字段就不夠用了。升級(jí)方案是引入標(biāo)準(zhǔn)的RBAC五表模型用戶表、角色表、菜單表、用戶-角色關(guān)聯(lián)表、角色-菜單關(guān)聯(lián)表。改造過程大致是建角色表sys_roleid, role_name, role_code, remark建菜單表sys_menuid, menu_name, parent_id, url, perms建關(guān)聯(lián)表sys_user_role、sys_role_menu用戶登錄后加載用戶的所有角色以及這些角色擁有的菜單權(quán)限前端根據(jù)權(quán)限動(dòng)態(tài)渲染菜單后端在攔截器里校驗(yàn)請(qǐng)求URL是否有權(quán)限訪問這個(gè)改造工程量不小但如果你的公司組織結(jié)構(gòu)比較正規(guī)、崗位類型多這一步早晚要做。我個(gè)人的建議是功能還沒上線前就先把這套權(quán)限骨架搭好不要等到有200個(gè)用戶的時(shí)候再改那時(shí)候返工成本就大了。6.4 需求四增加一個(gè)簡(jiǎn)單的通知提醒功能每個(gè)月考核開始的時(shí)候能不能自動(dòng)給員工發(fā)消息提醒很多人在二次開發(fā)時(shí)都會(huì)想到這個(gè)需求。最簡(jiǎn)單的方案是在系統(tǒng)內(nèi)增加一張message表然后管理員創(chuàng)建考核計(jì)劃時(shí)自動(dòng)給所有員工插入一條“您有新的月度考核待確認(rèn)”的消息記錄。員工登錄后在首頁頭部顯示未讀消息數(shù)量。CREATE TABLE sys_message ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, title VARCHAR(255) NOT NULL, content TEXT, status TINYINT DEFAULT 0 COMMENT 0-未讀 1-已讀, create_time DATETIME DEFAULT CURRENT_TIMESTAMP );在創(chuàng)建計(jì)劃的Service邏輯里查一次所有正常狀態(tài)的員工列表循環(huán)插入消息即可。這種方案不需要引入消息隊(duì)列也不依賴郵件服務(wù)是最符合系統(tǒng)當(dāng)前體量的做法。6.5 需求五把考核周期從月度擴(kuò)展到季度或年度這套系統(tǒng)雖然叫“月度績(jī)效考核”但考勤周期完全被assess_plan表里的assess_month字段存的是2025-05這樣的值決定了。如果你想支持季度考核、半年度考核甚至自定義周期核心改動(dòng)點(diǎn)有兩個(gè)一是assess_plan表增加一個(gè)period_type字段比如MONTH、QUARTER、YEAR、CUSTOM二是新增一個(gè)period_name字段存“2025年第一季度”這樣的可讀名稱。前端頁面的“考核月份”下拉框可以改成“考核周期”選擇器。后端查詢報(bào)表時(shí)不再按月份等值過濾而是按plan_id過濾——這個(gè)不用改因?yàn)樗袛?shù)據(jù)都已經(jīng)掛在具體的plan上了。這樣改造下來對(duì)已有數(shù)據(jù)完全沒有破壞性舊數(shù)據(jù)依然能按原月度計(jì)劃查詢。7. 我對(duì)這套源碼的真實(shí)評(píng)價(jià)與使用建議整套源碼看下來我的總體感受是這是一個(gè)典型的“能上線、能使用、適合學(xué)習(xí)”的中小型管理系統(tǒng)項(xiàng)目代碼風(fēng)格整體偏向?qū)嵱弥髁x沒有太多花哨的炫技但業(yè)務(wù)閉環(huán)做得很完整。它最大的價(jià)值在于完整展示了“員工-部門-考核計(jì)劃-考核指標(biāo)-考核記錄-統(tǒng)計(jì)報(bào)表”這條完整的數(shù)據(jù)鏈以及圍繞這條鏈展開的增刪改查操作。對(duì)于正在學(xué)Spring Boot的開發(fā)新人來說跟著它過一遍等于把一個(gè)真實(shí)項(xiàng)目的全貌摸了一遍。如果你準(zhǔn)備拿這套源碼做二次開發(fā)我建議你按這個(gè)優(yōu)先級(jí)來先補(bǔ)基礎(chǔ)安全密碼加密、SQL注入檢查再按實(shí)際業(yè)務(wù)調(diào)整考核流程評(píng)分規(guī)則、自評(píng)環(huán)節(jié)最后再考慮UI美化或前后端分離重構(gòu)。不要一上來就推倒重寫很多人都有過這種沖動(dòng)但最后往往會(huì)發(fā)現(xiàn)需求文檔還沒敲定代碼已經(jīng)重寫三遍了。另外有一個(gè)比較有用的建議把這些源碼放到你的簡(jiǎn)歷項(xiàng)目里時(shí)不要只寫“開發(fā)了員工考核管理系統(tǒng)”而是寫清楚你在里面做的事。比如“設(shè)計(jì)了基于RBAC的權(quán)限模型”、“使用EasyExcel實(shí)現(xiàn)了考核報(bào)表導(dǎo)出”、“通過索引優(yōu)化將月度考核報(bào)表查詢耗時(shí)從2秒降到200毫秒”——這幾句話比“熟悉Spring Boot開發(fā)”有說服力得多。這套源碼對(duì)你真正的價(jià)值是它給了你一個(gè)起步的骨架但你能走多遠(yuǎn)取決于你在它上面花了多少心思去做真正有技術(shù)含量的改造。從我個(gè)人經(jīng)驗(yàn)來講類似這樣一套系統(tǒng)你從頭到尾獨(dú)立敲一遍比看十篇教程都管用。尤其是當(dāng)你第一次把整個(gè)流程從數(shù)據(jù)庫建表一直跑到線上部署的時(shí)候你對(duì)Spring Boot和MySQL的理解會(huì)產(chǎn)生一個(gè)質(zhì)的飛躍。這套源碼就是很好的訓(xùn)練素材希望你能好好用起來。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月天天天色| 青草视频在线播放| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 天堂va久久久噜噜噜久久Va| 九九五月天| 66久久视频在线| 久草婷婷在线| 五月天色综合| www.丁香五月| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 五月丁香婷婷五月色| 综合五月激情网| 色玖玖玖| 色婷婷AV久久| 久久人妻熟女一区二区| 激情五月天婷婷丁香| 日本九九九九| 丁香六月激情综合| 思思热AV| 婷婷日日夜夜| 性99网站| 精品人妻伦| 色婷婷狠狠18yy| 久婷婷| 激情综合亚洲| 九月婷婷色色| 亚洲婷婷激情综合激情999精品| 99精在线| 欧美25p| 综合五月网| 夜夜躁狠狠| 97五月天婷婷综合激情网| 久久激情网| 婷婷深爱五月丁香网| 丁香激情久久| 中文无码婷婷| 九九九九国产| 超碰在线人妻| 成人做爰A片免费看网站找不到了| 色综合色色色色色色综合| 五月天播播中文字幕| 婷婷舔| 色琪琪一综合久久激情五月视频| 激情五月综合久久| 91碰操| 丁香五月性| 激情久久久久久久久久| 久热AA| 色五月婷婷色五月| 人妻久久久久久久 | 成人av观看| 91精品久久久久久77777| 五月天色婷婷综合| 夜夜做天天爽| 就去涩涩丁香五月天| 久久婷婷综合网| 99久久天堂婷婷| A片试看120分钟做受图片| 久久网日本| 色欲午夜无码久久久久久张津瑜 | 五月天婷婷中文字幕在线播放| 六月五月丁香五月欧美| 99色色热| 久久婷婷青草五月天| 天天肏夜夜肏| 五月丁香亭亭成人电影| 99热99干| av久热| 五月婷婷丁香大陆免费| 五月丁香网站| 狼人伊人天堂| 1024婷婷综合久久五月天| 天天肏天天肏天天肏| 九九久久污| sewuyuetingtingiii| av一区二区电影免费在线观看| 五婷婷综合网| 日韩AV片| 久久精品66| 天天爽天天爽天天爽天天爽天天爽| 天天激情5月天亚洲| 五月天无码| 激情六月五月婷婷综合网| 狠狠狠人妻| 热99视频| 色噜噜狠狠色综合成人99| 991精品在线视频| 九九热精品| 色婷婷先锋| www色色色com| 韩国97天堂| 五月天激情日色在线| 久久婷婷六月综合综合| 丁香五月亭亭六月综合激情网| www.狠狠色.com| av性爱在线| www色中色综合| aaaaaa片| 夜夜骑福利资源| 五月天成人综合| 爆乳熟妇一区二区三区爆乳照片| 精品少妇人妻AV无码专区偷人| 九九爱精品网站| 五月Huangsewang| 亚洲av午夜精品一区二区| 97久人人| 人人人人人人人草| 99热在线观看免费精品| 综合色色五月| 激情网战码亚洲A| 这里都是精品99| 操日本人妻视频| 色五月五月天色婷婷色五月| 中字幕视频在线永久在线观看免费 | 婷婷伊人久久| 99久久婷婷国产综合精品草原| 色亚洲视频| 开心激情播播五月天| 人人操91| 六月丁香啪| 噜一噜免费视频| 天天日天天日天天搞| 欧美性猛交99久久久99| 色久一| 一区视频网站| 操操操Av| 久热精品免费视频4| 99ri国产| 久热 91| 97久久婷婷色| 国产精品蜜臀99| 亚欧州精品视频| www.丁香六月婷婷久久天堂影院.con| 久久网日本| 激情综合色婷婷啪啪六月天| 狠狠精品干练久久久无码中文字幕 | 四色AVwww| 99∨VTV| 97色色婷婷五月天| 免费看欧美成人A片无码 | 丁香五月亚洲激情婷婷射| 久狠日av| 综合 蜜月 婷婷| 26UUU亚洲欧美| 五月丁香777| 久99婷婷色综合| 97操在线视频| 色情五月婷婷| 婷婷丁香视频在线观看免费| 99热久| 成人免费高清在线播放| 99啪啪网| 97热视频| 26uuu国产| 五月婷婷激情久久| 九九热欧美| 停停六月 综合| 五月网网站| 婷婷五月天AV| 伊人六月无码视频| 伊人婷婷大香蕉在线| 夜夜躁狠狠| 大香蕉网站,大香蕉综合| 久久五月天丁香花| 婷婷五月天网址| 激情五月天福利| 婷婷视频在线| 亚洲一级AV在线免费播放| 亚洲bt丁香五月天婷婷激情小说| 五月综合激情图片| 婷婷色啪| 日日噜狠狠色综| 99久久网站| sesesesezonghe| 激情五月婷婷| 婷婷五日b| 色婷婷9| 91九色精品| 国产综合婷婷| 五月丁香激情五月天| 五月丁香综合| 青青草日本亚洲| 99九九精品视频推荐| 嫩草AV久久伊人妇女超级a| 丁香五月性爱| 五月色丁香视频精品| 丰满人妻妇伦又伦精品国产| 99热这里只有精品2| 丁香影院五月综合| 久久久五月天| 成人色色视频| www.色9| 狠狠综合| 五月激情婷婷女| 国产特黄色精品一区二区三区精品无广告| 精品女人九九九| 午夜丁香综合婷婷| 97热91| 欧洲免费视频色| 久久综合66| 欧美成人色婷婷| 日本97在线| 五月丁香激情综合啪啪| 综合xx网| 97资源碰碰在线| 99热99精品| 五月丁香六月激情综合网| 99热这里只有精品99| 99在线国| 26uuu欧美日韩| 99在线免费视频| 五月亭亭综合五码| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 直接看的AV| 91精品又长又大又粗又爽又猛| 天天干夜夜想| 六月份天丁香婷婷| 五月天婷婷永久免费视频| 激情视频综合| 色综合婷婷99| 操碰91| 亚洲va欧洲va国产va不卡| 中文字幕AV网址| 成人国产欧美大片一区| 亚洲精品视频在线播放| 五月天婷婷丁香| 熟女色专区| 久久这里只有精品视频15| 日本不卡中文字幕| 欧美色小说婷婷| 丁香五月婷婷亚洲另类| 五月丁香啪| 欧美丁香五月| 婷婷丁香五月亚洲免费| 天天操天天操| www.主妇. com| 日韩AV中文字幕在线| 婷婷五月天综合久久| 丁香五月婷婷激情123| yazhochengrenavwang| 久久久久久人妻| 99re8这里只有精品99re8热视频| 五月天社区狠狠| 六月色日韩| www.五月丁香| 91丁香| 五月激情四射网站| 国产成人精品一区二区三区视频 | 97人碰人操| 大香蕉伊人久久| 天天做好综合色| 丁香五月98| 操婷婷基地| 色啪久 | 大香蕉丁香婷婷| 99久久综合网| 色综合久久44| 超碰人人在线| 成人AV中文字幕| 天天爽免费视频| 开心五月婷婷激情网| 色狠狠狠干| 国产ava| 免费超碰在线| 99玖玖在线视频| 涩五月丝袜婷婷| 天天日天天久久青青| 久久XX| 直接看的AV| 色色色999| 九九热10| 五月婷婷自拍| 殴美综合激情五月天免费视频| 久机视频这只有精品| 再綫Av免费視品| 天天干,天天操,天天射| 最新av在线观看| 一本久道综合99| 中文字幕丰满人妻无码专区| 9精品在线| 日韩欧美一道四区中文字幕| 丁香五月色五月| 久久五月天视频| 色女人久久| 天堂久久婷婷| 热的五码久久精品| 丁香蜜臀黄色婷婷五月天| 激情五月天啪啪| 啪啪婷婷五月天激情| 91九色在线观看免费| 婷婷狠狠狠爱| www。五月天激情| 久久97| 六月婷婷五月丁香首页| 97五月天婷婷| 丁香五月网址| 亚洲第一成人无码A片| 七月丁香五月婷婷在线| 五月天丁香婷婷社区| 五月丁香av中文| 丁香五月亚洲AV| 日日干夜夜撸夜夜骑 | 成人在线视频一区| 五月婷婷深深爱| 综合久久婷婷99| 性爱网六月丁香| 久久网日本| 激情美女五月天| 99视频色在线观看| 99re思思精品视频在线观看| 激情综合五月婷婷| 国产人妻777人伦精品HD| www.99riav99| 婷婷久久性爱| 婷激情五月| 丁香五月激情网| 大香网伊人久久综合| 六月婷婷色色网| 大香蕉久热| 深爱激情五月天色婷婷| 婷婷五月大香蕉| av中文在线| 九九久久腿| 伊人久久婷| 久久99久久99精品免视看婷婷| 99色在线视频| 精品一区二区三区四区五区六区| 永久热91| 色五月丁香一区在线| 色偷偷色婷婷| 深爱五月激情五月| 婷婷五月中文字幕| 婷婷五月天综合中文| 五月婷婷久久大香蕉| 疯狂做受XXXX高潮A片| 天堂综合久| 久久五月婷综合网| 九九色精品| 超级碰 久久9| 婷婷五月天激情亚洲小说| 五月婷婷天堂| 91xxxx九色| 91色在线| 久婷五月| 91ncom.色| 色五月天电影| 九九热九九| 丁香五月综合AV在线| 无码少妇高潮喷水A片免费| 天天综合91入口| 99热国产| 99综合| 热99一二三| 天堂婷婷五月色| 97人人干人人操| 六月综合婷婷开心伊人| 五月婷婷,六月丁香| 成人无码髙潮喷水A片| 久久婷婷网| 五月天啪啪啪| 九九色黄色| 五月的丁香六月的婷婷| 天天做天天爱天天爽| 插逼综合网| 婷婷五月天成人网| 五月丁香婷婷久久| 激情五月婷婷五月| 婷婷五月丁香影院| 嫩草AV久久伊人妇女超级A| 色五月网址| 色丁香五月婷婷| 色婷婷综合综合网| 国产亚洲在线观看| 天天操无码| 991国产精选视频在线播放下载| 葵花AV在线| 五月婷婷开心综合| 久久宗合影| 亭亭五月丁香五月天激情| 大香蕉丁香婷婷| 色播五月天天| 丁香五月天成人| 思思热在线精品视频网站| www.狠狠| 99热99这里免费的精品| 超碰婷婷色| 91人人爽狠狠狠| 激情综合一| 99热综合色图| 五月天桃色深爱网| 欧美激情五月天婷婷| 狠狠色综合网| 五月天快乐开心激情网| 日日综合网| 国产熟女大叫受不了| 天天看A片| 99er这里只有精品视频| se色婷婷视频| 婷婷五月天成人| 超碰com| 狠狠五月天| 99热这里精| 色婷大香蕉| 九色无码| 色婷綜合网| 97人人操人| 午夜婷婷久久| 色婷婷五月天天天做| 任你弄在线视频免费| ss99热| 激情婷婷黄色五月| 欧美在线视频99| 婷婷五月精品在线| 91九色在线观看免费| 午夜爱爱网站| 婷五月丁香俺| 99成人| 色色97丁香婷婷五月天| 九九热最新地址| 99操视频| 婷婷色情 | 日韩aaaaa| 丁香六月婷婷综合色| 九月婷婷在线视频| 99热首页| 丁香五月天电影| 五月婷婷天堂| 激情五月成年| 九色无码| 婷婷激情五月天在线| 五月婷婷狠狠干| 婷婷婷狠狠| 婷婷五月天另类网站| 五月丁香亭亭操逼| 久久久精品免费啪啪国| 人妻AV在线| 婷婷五月天首页| 超碰在线视屏| 任你干嘛免费视频播放| 婷婷大香焦| 日本狠狠色| av在线激情| 五月天久久色| 欧洲色| 狠狠色噜噜狠狠狠888| 思思久ren热| 中文字幕,综合,91| AV网址大全在| 成人网在线观看视频| 五月丁香啪啪啪| 激情五月六月婷婷| www.av骚货| 美女天天艹人人爽| 婷婷五月亚洲综合| 天天摸天天肏| 亚洲精品另类| 超碰99热精品在线| 少妇性按摩无码中文A片| 色综合久久天天综合网| 影音先锋91| 停停五月丁香| 日本久久爱| 92国产福利| 98热精品| 日韩在线一级| 婷婷五月色播| 五月丁香婷婷深深爱| 久久婷婷五月综合色丁香| 婷婷欧美色| 最新日韩久热免费视频看看| 激情熟女网| 婷婷天天五月天| 九色视频九色九色91jiuseshipin| 婷婷五月在线观看| 九九精品视频在线观看| 中文字幕久久一区二区三区| 五月天电影网| 色五月天成人| 五月丁香婷婷婷激情爱爱| 天天干狠狠操| 色婷婷裸体色性在线| 激情美女五月天激情在线| 丁香五月婷婷色五月| 99热这里只有精品国产免费| 色婷婷六月综合| 伊人五月久久| 噜噜国产| 久热91| 深爱婷婷网| 亚洲色色在线| 婷婷五月天伊人网在线观看视频| 婷婷五六月丁香| 日本女va| 色五月成人在线| 色丁香五月婷婷在线| 午夜婷婷五月天| 六月综合在线| 99自拍网| 99操| 9久久狠狠的| 亚洲成人免费电影| 亚洲精品字幕| 婷婷五月天97干| 97碰碰草| 五月婷在线影院| 久综合| 开心婷婷五月激情网小说| 亚洲成色综合网站免费观看| 夜夜操天天爽| 亚洲网视屏| 欧美日韩99| 久久久一级AAA| 婷婷五月六月| 91视频一起草| 色插综合网| 激情五月,激情综合网| 亭亭玉月丁香| 五月天激情国产综合婷婷婷| 91色性感五月婷婷丁香| 九九精品热播| 中文无码精品一区二区三区| 99精品偷自拍| 久草 tingting| 色噜噜狠狠色综合网| 久色成人| 99玖玖免费视频| 最近中文字幕2019视频1| 色欲色香综合网站| 日韩AV在线影片| 99热在线精品观看| 国产婷婷五月天| 亚洲在线操| 99久久99综合| aaa丁香五月天| 色播激情五月天| 成人综合网站| 91ncom.色| 丁香五月亚洲| 免费无码毛片一区二区A片| 久久99精品久久久久久青青AR| 五月开心六月婷婷在线播放网站| 综合啪啪| 日本欧美啪啪| 99只有这里是精品| 久久久婷婷婷| 激情深爱婷婷网| 五月综合色| 玖玖婷婷免费| 狠狠va| 99久久久久| 9999热在线观看| 亚洲五月天综合| 97色婷| 99热精品10| 亚洲久热无码| 变态 另类 在线| 99热这里都是精品| 色色丁香五月天| XX色综合| 免费啪啪啪网站| 可似看的AV| 欧美激情综合五月色丁香| 97自拍视频在线| 日韩综合久| 色色色色色九九九九九| 国际国外精品欧洲南美洲专区无码不卡| 天天操天天插| 播五月婷婷开心| 另类专区在线观看| 欧美 日韩 成人在线| 久久这里只有精品99| 99日视频在线| 天天综合网站| 精品网站:999WWW| 夜夜爽天天干| 久综合4| 影音先锋人妻出差| 中文AⅤ大全| www五月天激情com| 99热人人操人人操| 天天做天天要天天爽| 国产精品久久久久久久久久免费| 九九精品丁香花| 色综合久久88色综合中文字幕| 99网| 色欲资源网| 九九99精品视品| 日本激情五月| 变态另类色图 | 婷婷亚洲在线| 青青色com久久| 成人色色视频| 91丨九色丨熟女丰满| 日本婷婷| 色啪影院| 欧美性猛交 XXXX 乱大交| 丁香久色| 99色日本| 九九综合| 这里只有精品69| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 久操婷婷| 99视频精品8| 婷婷五月精品| 婷婷99热| 伊人丁香花综合影院| 狠狠色噜噜狠狠狠狠狠色综合久久| 久热这里只有精品99re| www.五月天色色色| 伊人婷婷五月天av| a毛片二逼wwwwwwwwww| 超碰99资源站| 欧美va亚洲va| 色八戒操婷婷| 婷婷五月天影院| 狠狠操天天日| 五月丁香黄色| 亚洲精品国产A久久久久久| 99精彩视频在线观看| 超碰人人99| 欧美这里只有精品| 99视频网| 五月五婷婷网| 青青久久大香蕉| 五月婷婷深深爱| 婷婷五月天堂一本在线| 久99热| 97啪在线观看视频| 天天色色天天| 夜夜骑夜夜撸| 五月婷婷内射网| 九月婷婷在线观看| BBWCUCKOLD精品熟妇| 另类激情综合| 九九成人精品| 级情九色| 亚洲色图在线视频| 99热色精品| 青青夜夜狠狠夜夜狠狠| 婷婷99狠狠躁天天躁中文| 国产精产国品一二三在观看| 丁香五月综合婷婷| 婷婷五月情天| 五月丁香 久久久| 五月婷婷偷拍| 亚洲韩国日产综合AV| 另类少妇人与禽zOZZ0性伦| 亭亭玉月丁香| 九九热视频思思| 丁香五月激情综合| 超碰在线国产| 色欲久久久久久综合网综合网| 成人国产欧美大片一区| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 久久九九99桃花视频| 少妇搡BBBB搡BBB搡毛茸茸| 在线观看中文字幕| 猫咪伊人久久| 五月丁香六月情| 美女主播野战视步页| 久热9| 午夜成人天堂久久无码日韩久久| 热99热久| 97碰碰九九视频| 亚洲精品乱码久久久久99| 在线婷婷| 99热99干| 色色丁香婷婷| 丁香五月网址| 婷婷丁香成人五月天| 97婷婷狠狠久久综合9色| 99久久综合狠狠综合久久| 五月香婷婷| 丁香六月综合激情| 午夜精品人妻无码一区二区三区| av在线资源| 激情五月天婷婷| 亚洲五月天婷婷| 91九色精品女同系列| 成功精品影院| 亚洲婷婷丁香| 无码人妻激情| 99热这里只有精品55| 日韩色色视频| 亚洲色婷婷| 五月婷婷六月丁香| 级人人91| 丁香五月婷婷综合91| 综合网网欲色| 国产成人AV在线播放| 香蕉国产2013| 天天舔天天插天天爱| 中文网AV| 天天操九九插| 免费亚洲成人电影AV| 欧美日韩成人在线网| 天天搞天天色综合| 大香蕉手机视频| 婷婷五月丁香基| 97色伦另类图片小说视频 | www.zbzhongsen.com| 99精品一二三四视频| 亚洲av成人在线| 亚洲五月天婷婷| 欧美性做爰大片免费看办公室| 夜精品无码A片一区二区蜜桃| 色色欧美色色色| 香蕉久久国产AV一区二区| 五月天色色色网| 五月丁香婷婷激情影院欧美| 成人噜噜网| 亚洲激情五月婷婷日日| 人人摸人人| 久9热| 精品一二三区久久AAA片| 五月天社区| 99热人人操人人操| 91久久1118| 天干干夜夜操| 99亚洲色色| 97碰| 少妇性BBB搡BBB爽爽爽电影| 久操大屁股女人av| 美臀自射自家人妻| 天天日夜夜曹| 久久午夜理论| 色婷五月天| 熟妇人妻中文字幕无码老熟妇| 久久综合最新网址| 五月天婷婷基地| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 99热99极品观看| 2025中文在线视频字幕免费观看| 丁香色五月婷婷| 精品久久久人妻| 综合超碰熟| 狠狠色噜噜狠狠色噜噜噜999| 伊人五月成人| 丁香五月天堂网| 91免费看片| 99热这里有精品2| 丁香花五月天激情| 丁香五月婷婷老师网站| 婷婷五月天va| 成片免费播放| 丁香五月 激情文学| 久热 91| 五月婷综合| 91久久99久久91熟女精品| 久久99日本精品视频免费观看| 久99| 国产激情av| 97成人操| 国产麻豆视频| 天天干,天天舔| 亚洲天堂啪啪| 丁香九月综合在线| 久久99久久99精品免视看婷婷| 99久久网站| 97久人人| 婷婷五月天美女21p| 色婷婷性爱网| 丁香五月天av| 天天操夜夜操| 五月丁香在线视频观看| 日日夜夜爽| 婷婷五月精品| 日日激情网| 最近免费中文字幕大全高清大全1| 婷婷激情中文综合| 综合色五月| 操碰久| 天天日夜夜拍| 亚洲天堂九九九| 丁香激情婷婷网| 四川BBB搡BBB爽爽视频| 日本va欧美va欧美va精品| 免费婷婷| www.99久久久| av在线免费播放| 国产操碰| 九九AV| 日本人妻A片成人免费看片| 99免费热视频| 亚洲无码www| 99精品免费视频| 香蕉中文在线| 九九精品热| 亚洲啪啪啪啪| 综合久久99| 色香欲综合| 亚洲中文无码成人| 亚洲精品又粗又大又爽A片| 天天搽天天射| 激情网 久久| 午夜无码精品色综合久久| 久久黄色片| 五月丁香婷婷无码中文| 色色色色欧美| 色色五月婷婷丁香| 变态另类色图 | 综合一区二区三区| 激情六月婷婷| 婷婷伊人网| 婷婷亚洲综合| 九草性爱| 五月天婷婷色小说| 久热A片| 五月婷婷 激情五月| 成人色图情色成人网 www.5b5b5bcom 五月天 | 97五月天| 俺去也五月天婷婷| 91人人操| 色婷婷久久| 在线五月色播| 六月激情网| 激情久久久久久| 激情丁香婷婷六月天| 色婷青青| 五月天偷拍| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 五月激情视频| 天天爽综合| 激情五月天婷婷色色色色色色色色色色色 | 中文字幕在线资源| 99re在线播放| 五月六月丁香激情| 国产午夜精品一区二区| 人人干人人看| 5月婷婷五月天| 影视av久久久噜噜噜噜噜三级| 国产小精品| 亚洲另类视频| 欧洲永久精品| 婷婷爱五月| 思思热在线| 99热这里只有精品18| 久久综合影院| 国产偷人爽久久久久久老妇APP| 丁香五月电影| 五月天亚洲最大成人| 91色欲综合| 五月婷婷激情网| 色综合九九| 丁香婷婷色五月| 五月天激情开心网| 亚洲AV成人精品日韩在线播放| av操B网站| AA丁香综合激情| 色色哒五月婷婷六月丁香| 狠狠艹狠狠艹| WWW·色色色·COM| 江苏少妇性BBB搡BBB爽爽爽| 免费看欧美成人A片无码| 97色伦另类图片小说视频 | 欧美日韩国产一二区| 97色色色| 99热这里有精品| 久色中文| 99这里的视频都是精品| 天天色99| 免費观看aV在线网址| 日本三级中国三级99人妇网站| 色五月av| 日日日影院| 五月婷庭丁香在线| 久久激情五月| 六月婷色| 久久9RE热视频精品98| www久视频com| 99久视频| 亚洲激情综| www.成人婷婷综合| 婷婷五月天视频小说| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 激情五月天综合婷婷网| 国产在线另类五月婷婷| 色婷婷丁香六月| 天天操夜夜爽天天操| 91婷婷色| 97碰人人操| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 天天日日天天| 金桔一区二区ab地址| 狠狠五月激情丁香六月| 亚洲啪啪网| 婷婷九月丁香天堂丁香天堂| 亚州第一黄网| 中文字幕免费高清电视剧| 五月丁香六月激情欧美综合| 五月婷婷偷拍| 久久久久激情网| 婷婷久久丁香五月| 亚洲网站999| 日日夜夜干| 欧美性爱一区| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 久久久A级视频| 色婷婷av综合网| tingtingseav| 婷婷福利影院| 日韩无码性爱| 黄色一极大片| 午夜丁香六月婷| 精品99在线| 中文精品在| 日本三级日本三级三级人妇四虎| 日韩成人综合网| 操碰97| 婷婷免费精品视频| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 狠狠人人| 成人精品99| 五月婷婷在线播放| 婷婷六月天激情| 色色丁香婷婷| 丁香六月婷婷色XXXXX| 性色五月天| 亚洲亚洲人成综合网络| 七月丁香婷婷 色色| 成人免费超碰| 强伦轩人妻一区二区电影| www,色婷婷| 久久激情视频| 台湾佬天天日丁香婷婷五月天| 国产色五月| 激情六月天婷婷| 日韩人妻无码专区| 婷婷伊人綜合中文字幕| 青草视频在线播放| 丁香五月激情综合婷综| 色综合九九| 六月激情婷婷色| 丁香五月a| 97人人操| 国产精产国品一二三在观看| 九 九九九AV| 天天日夜夜欢| 色色色精品无码区| 丁香五月六月综合欧美| 欧美在线干| 99久久网站| 九九精品婷| 色综合激情| 开心五月激情站| 婷婷色操| 99色| 丁香五月婷婷99| 99热精品网| 九九热在线视频观看| 五月婷在线视频免费看| www.天天干| 五月婷婷久久爱| 欧美性久| a v色婷婷| 综合伊人久久| 97夫妻超碰| 大香蕉99| 色婷婷先锋| 99色热| 国内久久婷婷| 99热国品免费| 深爱激情五月天| 欧美 日韩 人妻 高清 中文| 婷婷丁香先锋资源网站| tingting五月天亚洲| 婷婷丁香五月天激情| 五月激情小说| 日本久久婷婷| 婷婷五月丁香综合人妻| 丁香激情网| 亚洲va久久久噜噜噜久久天堂| 久久99婷婷| 思思热在线精品视频| 中文人妻AV久久人妻18| 黄网在线观看免费| 亚洲色婷婷五月| 六月婷婷色综合| 一级二级色大片| 国产婷婷五月天| 欧美日韩91| 欧美日韩成人在线观看| 综合色激情| 性做久久久久久久免费看| www.久操| 久热只有这里精品| 色色婷婷丁香| 99热18| 先锋资源婷婷| www.婷婷五月.com| 天天日夜夜操五月| 开心激情站| 人妻激情综合| 国产精品电影网| 日本一区二区三区精品视频| 久热91| 538任你爽| 婷婷色六月| 这里有精品2| 亚洲av| 五月天婷五月天综合网在线观| 欧美精品18| 激情综合婷婷| 啪啪99| 丁香五月区| 天天弄天天操| 婷久久久| 五月婷婷欲色| 人妻日日日| 99热精品一| 丁香六月婷婷色XXXX| 五月丁香六月激情综合啪啪| 激情五月天婷婷| 99惹在线精品免费观看| 九九热最新| 亚洲婷婷视频| 九九av| 色一区高清| 狠狠干综合| 日本3级片偷拍网站| 久草性爱| 五月丁香激情四射综合| 九九热只有精品| 中文字幕永久在线| 激情五月天 婷婷| www。狠狠干。com| 天天综合精品| 婷婷五月天深爱| 色五月激情五月| 五月天婷婷影院影院| 新激情婷婷| 色五月婷婷内射| 久久9视频| 国产99视频永久免费| 99视频| 五月激情偷拍| 人妻中文字幕网| 激情网五月天| 狠狠操综合| 亚洲天堂色色| 9999热这里只有精品| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 狠狠草在线观看| 丁香午月AV中文字幕| 丁香五月五月婷婷欧美大香蕉| 欧洲高清免费久久| 婷婷激情97| 五月丁香婷中文| 色婷婷黄色网络| 色99综合色88| 久色视频| 色欲av伊人久久大香线蕉影院 | 巴基斯坦粉嫩无码视频| 日韩av网站在线观看| 操操啪| 精品福利911| 欧美婷婷丁香社区在线播放| 玖玖资源在线视频| 99在线视频精品| www.9操| 夜夜骑夜夜操| 久久婷婷六月天| 91久女| 五月丁香激情婷婷| 99热精品一区| 亚洲狠狠婷婷| 激情五月婷婷| 丁香五月Av| 97福利视频| 久久久久久婷| 久久久www| 五月婷婷综合潮喷| 9久久婷婷国产综合精品性色| 丁香五月激情综合| 99re这里只有| www.激情五月天.com| 色99婷婷五月天| 久热91| 欧洲亚洲激情五月天在线| 婷婷色丁香五月| 五月日韩中文字幕| 亚洲中文av| 思思久久99热只有频精品66| 涩涩婷婷五月| 专区无日本视频高清8| 婷婷五月天激情免费在线观看| 综合激情伊人影视在线| 青青草99re| 精品人妻伦一二三区久久| 99视频精品在线| 色五月涩涩婷婷蜜桃| 久9无码视频| 色吧婷婷五月亚洲| 日本99久久| 99热爆在线| 涩综合网| 五月丁香六月激情啪| 丁香五月婷婷亚洲色图| 极品少妇婷婷五月| 国产肥白大熟妇BBBB视频| 成人婷婷| 色五XX| 色综合色综合色综合高潮| 五月丁香婷婷激情影院欧美| 九九色黄色| 八戒青柠影视剧在线观看| 五月天成人手机在线视频| 少妇激情基地| 99热插| www.99免费视频| 人与禽A片啪啪| 五月综合色| 天天色图| 激情五月天婷婷五月天| 伊人五月天婷婷| 99爱这里只有精品| 99成人网一区| 免费国产视频| 99久久精品国产色欲| 亚洲欧洲中文日韩久久AV乱码| 美女五月天| 五月天操逼网| 丁香五月天论坛| 亚洲中文字幕AV在线| www 五月天 com| 丁香五月婷婷色五月| 九九综合色| 另类在线| 99久久婷婷| 久久综合九九| 日本不卡中文字幕| 久久婷婷综合网| 91久久五月天| 亚洲视频久久| 婷婷五月娱乐在线| 激情五月天天| 婷婷色网址| 日韩99无码| 亚洲中文字幕翔田千里| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 婷婷色中文字幕| 99超级碰免费视频| 九九久久五月天| www.99热视频| 综合网五月| 91精品久久久久久77777| 日韩色色视频| 激情亚洲婷婷| 亚洲无码11| 玖玖午夜视频| 日日干天天爽| 九九在线视频| 免费观看全黄做爰的视频| 麻豆WWWCOM内射软件| 99日热在线视频| 4399精品一区二区| 4399在线观看免费高清黄色视频| 丁香五月婷婷Av| 狠狠爱综合| 99五月丁香丁| 婷婷啪啪| 丁香五月婷婷婷婷欧美综合| 婷婷五月天成人娱乐| 99热这里只有国产精品| 六月狠狠综合| 99熟女啪啪视频| 久久久久久久97| 色婷婷丁香A片区毛片区女人区| 嫩草AV久久伊人妇女超级A| 色九月综合| 婷婷丁香视频| 97成人丁香婷婷| 婷婷舔| 开心激情五月天网| 色综合久久88色综合天天99| 丁香五月婷婷啪啪| 九月丁香八月婷婷加勒比| 丁香五月婷婷色情综合| 婷婷婷婷婷开心无码播放| 99a级片| 韩国真做片在线观看| 欧美精品狠狠色丁香婷婷| 国产精典视频在线观看| 婷婷97狠狠干| 综合在线色婷婷| 天天插天天插天天插天天插| 丁香婷婷天堂| 久久久欧美精品sm网站| 色综合天天网| 综合五月丁香六月婷婷| 欧美25p| 99re8热精品免费视频| 色婷婷操逼| 婷婷五月天com| 色婷婷综合久久久久| 嫩草AV久久伊人妇女超级A| 日本理论久久| 精a品a视a频| 狠狠搞狠狠操| 久热91| 99在线热视频| 欧美美女国产日韩一区二区久| 草五月| 免费观看的av| 99日精品视频| 天天综合干| 91人人网| 91在线观看九区| 色六月丁香婷婷啪啪啪| 色婷婷五月综合网| 激情五月婷婷| 人人妻人人澡人人爽| 综合色五月天| 婷婷综合97| 艹色18p| 成人片久久网站| 9999三级片| 无码碰碰| 五月熟妇婷婷久久| 精品99在线| 伊人影院久久网| 激情综合五月天| 五月丁香六月色| 久久婷婷视频| 欧美精品啪啪| 六月丁香婷婷综合色播| 五月天婷婷网站888| 人人摸人人操人人爱| 婷婷激情综合网| 操操自拍| 色婷小说| 伊人五月天婷婷| www.狠狠| 国产亚洲99久久精品| 第五色婷婷| 青青操日本摸摸看看| 激情五月天在线| 97香蕉碰碰人妻国产欧美| 综合色网站| 五月天国产| 国产免费一区二区三州老师F1……| 婷婷五月成人有| 粉嫩av蜜桃av蜜臀av| 玖玖五月| 狠狠色噜噜狠狠| 亚洲成人精品三区| 这里只有精彩视| 内射干少妇亚洲69XXX| 亚洲中文无码成人| 欧美激情综合| 久久9久| 久久免费操| 久久激情天堂| 日本成人噜噜噜| 久久久久婷| 99自拍视频网站| 久久亚洲天堂| 九色 在线| 六月婷婷激情| 综合伊人久久| 激情综合网五月天| 五月天婷婷色色网| 99精品在线观看| 亚洲成人AV在线播放| 亚州操人在线视频| 91综合在线|