亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

SpringBoot+Vue前后端分離物資管理系統(tǒng)源碼詳解與部署實踐

SpringBoot+Vue前后端分離物資管理系統(tǒng)源碼詳解與部署實踐 前幾天把一套物資綜合管理系統(tǒng)重新整理了一遍從后端接口到前端頁面再到數(shù)據(jù)庫腳本全部跑通之后打包成了一份可以直接運行的源碼。這套東西不是那種只有幾個空殼頁面的演示項目而是把企業(yè)里物資管理的真實流程都做了進去物資分類、入庫登記、庫存查詢、領(lǐng)用審批、出庫記錄、統(tǒng)計報表該有的模塊基本都齊了。技術(shù)棧是SpringBoot做后端接口Vue做前端頁面MySQL存數(shù)據(jù)典型的前后端分離結(jié)構(gòu)。今天把整個項目的設(shè)計思路、核心實現(xiàn)、運行步驟和踩坑記錄完整梳理出來希望能幫到正在做類似系統(tǒng)或者打算拿這種項目練手的朋友。這套源碼特別適合三類人一是正在準備畢業(yè)設(shè)計的學生拿來改改就能用二是剛學完SpringBoot和Vue、想看一個完整真實項目長什么樣的初學者三是公司內(nèi)部確實需要一套輕量級物資管理工具、但不想買商業(yè)軟件的運維或開發(fā)人員。比起那些只貼出幾個核心代碼片段、根本跑不起來的教程源碼這一套最大的特點就是開箱即用。下面我會從架構(gòu)拆解、后端設(shè)計、前端實現(xiàn)、數(shù)據(jù)庫腳本、運行步驟和問題排查這幾個維度一層層講透。1. 項目整體設(shè)計與架構(gòu)拆解1.1 這套系統(tǒng)到底解決了什么問題先說說物資管理這個場景。很多中小型公司或者學校、事業(yè)單位物資管理還停留在Excel表格加微信群的階段。入庫登記靠手寫領(lǐng)用物資靠口頭招呼月底盤點發(fā)現(xiàn)庫存對不上新來的同事不知道倉庫里到底有什么。這些零散的痛點聚在一起就是物資管理系統(tǒng)存在的理由。一個完整的物資管理系統(tǒng)核心閉環(huán)就三條線物資進來、庫存放量、物資出去。再往里拆就是物資的入庫單管理、庫存臺賬管理、領(lǐng)用申請與審批、出庫登記以及圍繞這些數(shù)據(jù)產(chǎn)生的統(tǒng)計報表。這套源碼正是按照這條主線來組織的沒有堆砌多余的社交功能、審批流引擎之類的重東西業(yè)務(wù)邊界很克制這對中小規(guī)模場景反而是優(yōu)勢。1.2 為什么選SpringBoot加Vue加MySQL這個組合先說后端。SpringBoot在這個領(lǐng)域已經(jīng)成為事實標準它解決的核心痛點是Spring傳統(tǒng)項目中那些繁瑣的XML配置、依賴管理沖突和部署流程。使用SpringBoot之后一個內(nèi)嵌的Tomcat、一套起步依賴、一個Application主類就能把后端服務(wù)跑起來這對維護和二次開發(fā)來說非常友好。前端選Vue的原因也很實在。Vue的數(shù)據(jù)雙向綁定和組件化開發(fā)特別適合管理后臺這類表單密集、列表密集、交互狀態(tài)多的頁面。填一個入庫表單時校驗規(guī)則要即時反饋查庫存時表格列要動態(tài)隱藏這些用jQuery那套手動操作DOM的方式來做代碼量會膨脹幾倍。Vue的響應(yīng)式數(shù)據(jù)模型天然匹配這類需求。再加上Element UI這類成熟組件庫表格、彈窗、表單校驗、分頁組件直接拿來用開發(fā)效率高很多。MySQL就更不用說了開源、穩(wěn)定、普及率高不管是本機部署還是上云都有大量現(xiàn)成經(jīng)驗可參考。這套系統(tǒng)沒有用到Redis做緩存也沒有引入消息隊列全部依賴MySQL的關(guān)系型事務(wù)能力小團隊的運維成本可以壓到非常低??赡苡腥藭枮槭裁床挥酶餍械那昂蠖朔蛛x之外的單體架構(gòu)或者微服務(wù)架構(gòu)。這么看物資管理系統(tǒng)的用戶量級通常就是幾十到幾百人并發(fā)不高事務(wù)復雜度中等單體應(yīng)用配合前后端分離已經(jīng)是性價比最高的方案了。引入微服務(wù)只會增加運維負擔沒有任何實際收益。技術(shù)選型不是越新越好是匹配場景才叫好。1.3 源碼的工程結(jié)構(gòu)一覽拿到源碼之后整個項目分兩個大目錄后端back-end或者叫server前端front-end或者叫web。我這邊習慣把后端命名為server、前端命名為ui方便區(qū)分。后端的工程結(jié)構(gòu)按Maven標準劃分你可能會看到這樣的布局server ├── src/main/java/com/example/wms │ ├── controller # 接收HTTP請求返回Result結(jié)果 │ ├── service # 業(yè)務(wù)邏輯層接口加實現(xiàn)類 │ ├── mapper # MyBatis的Mapper接口對應(yīng)XML或注解SQL │ ├── entity # 數(shù)據(jù)庫實體類 │ ├── dto # 前端傳輸對象用于參數(shù)接收與結(jié)果封裝 │ ├── config # 配置類跨域、攔截器、WebMvc配置 │ ├── common # 統(tǒng)一返回體、異常處理、工具類 │ └── WmsApplication.java # SpringBoot啟動類 └── src/main/resources ├── application.yml # 數(shù)據(jù)源、端口、MyBatis配置 └── mapper # MyBatis XML文件前端的結(jié)構(gòu)就是標準的Vue工程ui ├── src │ ├── api # 按模塊封裝的接口請求 │ ├── assets # 靜態(tài)資源 │ ├── components # 公共組件分頁、彈窗等 │ ├── router # 路由配置與守衛(wèi) │ ├── store # Vuex狀態(tài)管理token、用戶信息 │ ├── views # 頁面登錄、物資、入庫、領(lǐng)用、統(tǒng)計等 │ ├── App.vue │ └── main.js ├── package.json └── vue.config.js # 開發(fā)服務(wù)器與代理配置這套結(jié)構(gòu)的優(yōu)點是職責清晰前端頁面找不到數(shù)據(jù)就去api目錄找接口后端接口出問題就去service層看邏輯排查問題路徑非常直接。2. 后端核心模塊設(shè)計與實現(xiàn)解析2.1 統(tǒng)一返回體與全局異常處理為什么是必需品后端接口不可能只返回數(shù)據(jù)本身還得告訴前端這次請求成功沒有、如果失敗了是哪一類問題、提示信息應(yīng)該怎么展示。如果每個接口都自己拼返回值前端每個請求都要單獨做異常判斷代碼就亂套了。這套源碼里定義了一個Result類結(jié)構(gòu)大概是這樣的public class ResultT { private Integer code; // 200成功500業(yè)務(wù)失敗401未登錄取 private String message; // 提示信息 private T data; // 業(yè)務(wù)數(shù)據(jù) }所有Controller統(tǒng)一返回Result對象成功就Result.success(data)業(yè)務(wù)校驗不通過就Result.error(庫存不足)。前端拿到響應(yīng)之后先看code再取data邏輯非常統(tǒng)一。這里有個關(guān)鍵設(shè)計業(yè)務(wù)異常和系統(tǒng)異常要分開處理。我見過很多項目把系統(tǒng)異常直接拋到前端用戶看到一堆OOM的堆棧信息這個體驗是非常糟糕的。配合一個全局異常處理器RestControllerAdvice把系統(tǒng)異常統(tǒng)一轉(zhuǎn)換成系統(tǒng)繁忙請稍后再試把業(yè)務(wù)異常直接帶入提示信息這才是正經(jīng)做法。這套源碼里已經(jīng)把這一層做完了不需要你再自己去補。2.2 登錄認證怎么做的為什么選這種方案企業(yè)系統(tǒng)基本都需要登錄物資管理系統(tǒng)也不例外。管理員難道要管庫存和用戶權(quán)限普通員工只能申請領(lǐng)用物資這個身份區(qū)分在數(shù)據(jù)庫層面就要體現(xiàn)出來。登錄認證這塊源碼采用的是Token加攔截器的方式而不是傳統(tǒng)Session方案。每次用戶登錄成功后后端生成一個Token可以是UUID也可以是用JWT加密生成把用戶ID和角色信息寫進Token里然后返回給前端。前端存在localStorage中每次請求在Header里帶上后端攔截器解析Token、讀取用戶身份。為什么不直接用Session因為前后端分離之后前端和后端往往不在同一個域名和端口下Session的Cookie跨域策略處理起來很麻煩。Token的方式天然支持跨域而且無狀態(tài)后端重啟也不會把用戶的登錄狀態(tài)沖掉這對本地開發(fā)和上線部署都省心很多。密碼存儲是個老生常談但必須強調(diào)的點。源碼里不會對密碼明文存儲用的是BCrypt加密也就是SpringSecurity自帶的那套加密工具。每次校驗時把前端傳過來的明文密碼和數(shù)據(jù)庫里存的加密密碼做匹配而不是直接拼接SQL比對字符串。如果你拿到別的源碼發(fā)現(xiàn)密碼字段是明文請一定不要直接上線使用。2.3 核心業(yè)務(wù)表與接口設(shè)計思路物資管理系統(tǒng)的核心表通常是這幾張物資分類表、物資信息表或者叫物資檔案表、入庫單主表加明細表、領(lǐng)用單主表加明細表以及系統(tǒng)用戶表。拿入庫單來舉例一張入庫單需要記錄單號、經(jīng)手人、入庫時間、供應(yīng)商如果是采購入庫、備注這是一條主表記錄。入庫單下面可能同時包含多種物資每種物資入庫數(shù)量不同所以還需要一張明細表來存這次入庫了幾種物資、每種是多少。這種主表加明細表的設(shè)計在進銷存系統(tǒng)里極其常見也是物資管理系統(tǒng)的地基。接口設(shè)計上用的是RESTful風格各業(yè)務(wù)模塊的路徑劃分很清楚模塊接口路徑說明登錄認證POST /api/auth/login登錄并返回Token物資分類GET/POST/PUT/DELETE /api/category分類的增刪改查物資檔案GET/POST/PUT/DELETE /api/material物資信息的維護入庫管理POST /api/stock/in創(chuàng)建入庫單并更新庫存領(lǐng)用管理POST /api/stock/out創(chuàng)建領(lǐng)用單并扣減庫存庫存查詢GET /api/stock/list分頁查詢各物資的當前庫存統(tǒng)計報表GET /api/report/summary匯總?cè)霂炝?、出庫量、庫存余額這種按業(yè)務(wù)模塊切分接口的好處是擴展性好。比如后面要加一個報廢功能那就增加一個/api/stock/scrap接口和現(xiàn)有的入庫、領(lǐng)用并列不會影響已經(jīng)穩(wěn)定的邏輯。加一個小提醒入庫和領(lǐng)用接口在源碼中都用事務(wù)Transactional包裹因為建單和改庫存必須同時成功或同時失敗。這一步如果沒做事務(wù)極端情況下會出現(xiàn)單據(jù)創(chuàng)建成功但庫存沒加上去的情況對業(yè)務(wù)來說就是重大數(shù)據(jù)事故。2.4 Mapper層與SQL的一些細節(jié)心得持久層這塊源碼用的是MyBatis而且建議直接用MyBatis-Plus來跑省去大量寫單表CRUD的重復勞動。為什么要這么選因為物資管理系統(tǒng)里有大量的單表分頁查詢、條件過濾、增刪改查這些邏輯幾乎一模一樣的代碼用MyBatis-Plus的BaseMapper可以直接繼承現(xiàn)成的通用方法代碼量能減掉三分之一還多。報表類SQL是繞不開的坎。比如統(tǒng)計每種物資的累計入庫量、累計出庫量和當前庫存SQL思路是用分組聚合加條件匯總SELECT material_id, SUM(CASE WHEN type IN THEN quantity ELSE 0 END) AS total_in, SUM(CASE WHEN type OUT THEN quantity ELSE 0 END) AS total_out, SUM(CASE WHEN type IN THEN quantity ELSE -quantity END) AS current_stock FROM stock_record GROUP BY material_id這里有一個容易踩的坑庫存字段到底用int還是decimal。如果物資按個、箱、瓶這類整數(shù)單位計算數(shù)量字段用int就夠了不要用decimal因為decimal會引入精度問題后臺對賬會非常痛苦。但如果是金額、單價這類字段必須用decimal不能圖省事用doubledouble的浮點誤差在累加、匯總后會被無限放大。這個設(shè)計決策在前面的表結(jié)構(gòu)里就要定好不然后期改字段類型代價很大。3. 前端Vue工程核心實現(xiàn)解析3.1 前端工程初始化與頁面布局前端工程初始化用的Vue CLI或者Vite都行源碼里基于Vue的組件化機制搭建了一整套管理后臺布局左側(cè)是菜單欄物資管理、入庫管理、領(lǐng)用管理、系統(tǒng)管理之類的入口頂部是用戶信息和退出按鈕中間的內(nèi)容區(qū)用來承載各個頁面。這種布局是所有管理系統(tǒng)的標配用戶進入系統(tǒng)不用額外學習成本。組件庫這塊建議使用Element UI對應(yīng)Vue2或者Element Plus對應(yīng)Vue3。像物資信息表格、入庫單的彈窗表單、領(lǐng)用明細的級聯(lián)選擇器這些組件都有現(xiàn)成的封裝直接按文檔配置就好。這套源碼里應(yīng)該已經(jīng)做了一部分組件的二次封裝比如分頁組件、搜索表單組件目的是為了減少頁面之間的重復代碼。拿到源碼后你可以看一下components目錄下的封裝情況理解別人封裝組件的思路比自己從零開始寫要省力得多。3.2 路由權(quán)限控制到底怎么回事權(quán)限控制是前端設(shè)計里比較微妙的部分。常見的誤區(qū)是我只要把側(cè)邊欄菜單隱藏起來用戶就看不到?jīng)]權(quán)限的頁面了。這其實只是個花架子真正地控制在前端要配合路由守衛(wèi)在后端要配合接口權(quán)限校驗。前端路由守衛(wèi)的典型邏輯是router.beforeEach((to, from, next) { const token localStorage.getItem(token); if (!token to.path ! /login) { next(/login); // 沒登錄只能去登錄頁 } else { next(); // 已登錄放行 } });這套源碼里在路由層面做了基本的Token守衛(wèi)同時在菜單渲染層面根據(jù)用戶角色動態(tài)顯示或隱藏入口。注意前端的權(quán)限控制只是用戶體驗的一部分真正的數(shù)據(jù)安全還得靠后端接口校驗比如刪除物資檔案的接口必須判斷當前用戶是否是管理員。把安全寄托在前端頁面隱藏上這是非常危險的想法。3.3 Axios封裝與前后端聯(lián)調(diào)的細節(jié)前端的異步請求庫基本都是Axios但直接在每個頁面里調(diào)用this.$http.post容易導致代碼重復。更規(guī)范的做法是統(tǒng)一封裝一個Request實例把公共邏輯都做在攔截器里。源碼里的大致做法如下// api/request.js import axios from axios; const request axios.create({ baseURL: process.env.VUE_APP_BASE_URL || /api, timeout: 10000 }); // 請求攔截器統(tǒng)一帶上token request.interceptors.request.use(config { const token localStorage.getItem(token); if (token) { config.headers[Authorization] Bearer token; } return config; }); // 響應(yīng)攔截器統(tǒng)一處理業(yè)務(wù)code碼 request.interceptors.response.use( response { const res response.data; if (res.code ! 200) { // 彈錯誤提示并拋出異常中斷后續(xù)操作 return Promise.reject(new Error(res.message)); } return res.data; }, error { // 處理HTTP層錯誤比如401跳登錄、500提示系統(tǒng)錯誤 return Promise.reject(error); } ); export default request;這套封裝方案幾乎適用于所有管理后臺項目。把錯誤提示統(tǒng)一放在攔截器里處理頁面里直接await調(diào)用接口拿數(shù)據(jù)就行大幅減少頁面級的重復try-catch。跨域問題在本地開發(fā)時幾乎必現(xiàn)。前端跑在8080端口后端跑在8080端口通過Axios直接訪問時瀏覽器的同源策略會攔下跨域請求。最省事的本地跨域方案不用后端加CORS注解而是在vue.config.js里配置代理轉(zhuǎn)發(fā)所有/api開頭請求都被Vue的devServer轉(zhuǎn)發(fā)到localhost:8088瀏覽器視角下就沒有跨域概念了。部署到生產(chǎn)環(huán)境時則用Nginx把前端的靜態(tài)資源和后端的/api路徑配置到同一個域名下從根源上消除跨域。3.4 核心頁面的交互邏輯拆解前端頁面的核心交互可以分成三類表單操作、列表查詢、信息反饋。拿入庫管理頁面來說用戶點擊新增入庫彈出表單選擇物資、填數(shù)量、填供應(yīng)商、填備注提交后調(diào)用后端入庫接口成功后刷新庫存列表。這里最值得關(guān)注的是物資選擇器的設(shè)計。如果是一次入庫多種物資那頁面就需要一個動態(tài)表格點一次添加一行就增加一條物資明細行每一行都能選擇物資和填數(shù)量。這個交互模式在Vue里用數(shù)組循環(huán)渲染就好。el-table :dataorderItems el-table-column label物資 template #default{ row } el-select v-modelrow.materialId filterable placeholder請選擇物資 el-option v-form in materialList :keym.id :labelm.name :valuem.id / /el-select /template /el-table-column el-table-column label數(shù)量 template #default{ row } el-input-number v-modelrow.quantity :min1 / /template /el-table-column /el-table這種動態(tài)明細行的交互看似簡單但涉及一個要點新增行時需要給每行一個唯一標識可以用時間戳拼隨機數(shù)方便Vue對行的增刪進行追蹤避免刪錯行。這類細節(jié)就是經(jīng)驗積累出來的文檔上很少會寫。4. MySQL數(shù)據(jù)庫設(shè)計與初始化腳本要點4.1 核心表結(jié)構(gòu)設(shè)計與字段類型心得數(shù)據(jù)庫是這套系統(tǒng)最持久的部分。前端頁面可以換后端接口可以重構(gòu)但表結(jié)構(gòu)一旦跑偏改起來的成本極高。所以建表的時候一定要想清楚。用戶表的核心字段就是id、用戶名、密碼BCrypt加密后的字符串、真實姓名、角色admin/user、創(chuàng)建時間。物資檔案表的字段相對多一些物資編碼、物資名稱、分類ID、規(guī)格型號、單位、單價、備注、創(chuàng)建時間。庫存表可以是單獨的一張表也可以直接依賴庫存匯總視圖但更清晰的做法是維護一張庫存表每次出入庫后更新對應(yīng)物資的庫存值。這里分享一個字段命名和類型的經(jīng)驗。主鍵統(tǒng)一用bigint自增或者雪花ID邏輯刪除字段用deleted0未刪1已刪不要物理刪除記錄創(chuàng)建時間和更新時間用datetime不要用timestamp因為timestamp的取值范圍到2038年就過期了雖然日常開發(fā)用不到那么遠但一旦數(shù)據(jù)量大起來會非常麻煩。數(shù)量字段用int金額字段用decimal(10,2)文本字段用varchar并設(shè)置合理長度不要圖省事全部用texttext字段的索引和查詢性能都很差。4.2 初始化SQL腳本為什么是直接運行的關(guān)鍵這套源碼能直接運行很大程度上要歸功于初始化腳本設(shè)計得當。你的源碼包里應(yīng)該有一個database目錄里面放著init.sql內(nèi)容包含建庫語句、建表語句、默認管理員賬號的插入語句以及一小批演示數(shù)據(jù)。為了避免首次運行報數(shù)據(jù)庫不存在腳本開頭一般會有CREATE DATABASE IF NOT EXISTS wms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE wms;然后是一個一個的CREATE TABLE IF NOT EXISTS。這里要特別提醒的是字符集和排序規(guī)則必須統(tǒng)一。utf8mb4相比utf8多出來的部分是能夠正確存儲emoji和生僻字的而且它的索引兼容性更好。很多人在本地跑通后放到服務(wù)器上出現(xiàn)亂碼絕大多數(shù)原因是建庫時用了utf8不是utf8mb4連接字符串也沒指定字符集前端頁面本身是UTF-8編碼三方一交叉中文就變成問號了。這套腳本里已經(jīng)把字符集預設(shè)好你執(zhí)行的時候不要手賤去改成默認值。4.3 SpringBoot數(shù)據(jù)源配置的幾個關(guān)鍵點后端application.yml里的數(shù)據(jù)源配置是整個項目能跑起來的生命線。核心配置包括server: port: 8088 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/wms?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 你的數(shù)據(jù)庫密碼 mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml type-aliases-package: com.example.wms.entity這里最少有三個坑。第一url中必須帶serverTimezone參數(shù)否則高版本MySQL驅(qū)動會報時區(qū)相關(guān)的異常各種奇奇怪怪的時間錯亂問題也會隨之而來。第二MySQL的驅(qū)動類名在新老版本中不一樣舊版是com.mysql.jdbc.Driver新版是com.mysql.cj.jdbc.Driver用老配置去連新版驅(qū)動會直接報ClassNotFound。第三application.yml里寫的數(shù)據(jù)庫密碼是模板占位符還是實際密碼要分清楚。源碼如果提交到公開倉庫一般會把真實密碼改成你本地要設(shè)置的密碼或者用${WMS_DB_PASSWORD}環(huán)境變量占位的方式。你本地運行時需要把這個值改成你自己的MySQL密碼否則啟動會一直報連接拒絕這是新手最容易卡住的地方。5. 本地直接運行的完整操作步驟5.1 環(huán)境準備到底需要哪些工具和版本根據(jù)我的實踐經(jīng)驗一套穩(wěn)妥的組合是這樣的軟件推薦版本說明JDK1.8或11大多數(shù)SpringBoot項目基于Java 8版本太新也可能編譯報錯Maven3.6及以上用IDEA內(nèi)置Maven也行Node.js14或16或18要看你這邊Vue是哪個版本Vue2一般建議16Vue3建議18MySQL5.7或8.05.7很穩(wěn)8.0要注意默認加密規(guī)則差異IDEA2021以上社區(qū)版就夠用這里有個最常見的版本坑JDK版本太高而項目是老語法寫的編譯會遇到一堆問題。如果你的源碼寫的是Java 8的語法用JDK 17打開可能直接報編譯錯誤。優(yōu)先按照源碼README里注明的版本組合來準備環(huán)境。沒有任何環(huán)境適配能力的直接運行是不存在的所以看到源碼包里帶README先讀它比看代碼事半功倍。5.2 數(shù)據(jù)庫初始化實操從新建庫到執(zhí)行腳本第一步連上你的本地MySQL??梢杂妹钚幸部梢杂肗avicat如果已有就順手不建議為了跑項目特意去破解工具命令行那幾條命令足夠用。命令行方式創(chuàng)建一個數(shù)據(jù)庫并執(zhí)行腳本mysql -u root -p # 輸入密碼后 source /你的路徑/init.sql;執(zhí)行成功后查看數(shù)據(jù)庫是否建出來了SHOW DATABASES; USE wms; SHOW TABLES;正常情況下你會看到用戶表、物資表、入庫表、領(lǐng)用表等至少五六張表并且可以驗證默認管理員賬號是否存在SELECT * FROM sys_user;這里建議不要修改init.sql里的初始化數(shù)據(jù)。默認管理員賬號一般就是admin密碼可能是admin123或者123456你先拿這個賬號登錄成功之后再進系統(tǒng)到用戶管理里改密碼。直接改腳本容易造成后面的數(shù)據(jù)關(guān)聯(lián)問題。5.3 后端項目啟動步驟與日志識別打開IDEAFile - Open選擇server目錄等待Maven把依賴都下載完。下載過程中如果網(wǎng)絡(luò)比較慢記得在Maven的settings.xml里配置國內(nèi)鏡像源比如阿里云鏡像這個細節(jié)能幫你省下大量等待時間。直接找到啟動類就是在com.example.wms包下的xxxApplication類類上標注SpringBootApplication。右鍵運行這個主類控制臺開始刷日志。等到出現(xiàn)類似下面的日志時就說明后端啟動成功了Tomcat started on port(s): 8088 (http) with context path Started WmsApplication in 5.231 seconds看到Started關(guān)鍵字的日志后可以先測試一下接口是否通了。瀏覽器訪問一個健康的接口地址比如http://localhost:8088/api/auth/login能返回JSON數(shù)據(jù)或者401之類的響應(yīng)就說明后端沒問題。如果啟動過程報錯先定位到最頂層的異常原因不要被下面幾百行堆棧嚇到九成以上是你在4.3小結(jié)里列出的那幾個原因。5.4 前端項目啟動步驟與瀏覽器訪問打開前端項目同樣用IDEA或者直接在終端里進入ui目錄。首次運行需要安裝依賴npm install如果npm install的速度無法忍受可以采用國內(nèi)源npm config set registry https://registry.npmmirror.com然后啟動開發(fā)服務(wù)器npm run serve看到這樣的日志就說明前端跑通了App running at: - Local: http://localhost:8080/ 編譯成功瀏覽器打開http://localhost:8080正常會跳轉(zhuǎn)到登錄頁面輸入默認管理員賬號密碼登錄成功后就能看到一個帶側(cè)邊欄的物資管理后臺。到這里整套系統(tǒng)就算完全跑起來了??梢栽谙到y(tǒng)里試著創(chuàng)建一條物資分類、錄入一份入庫單、然后發(fā)起一個領(lǐng)用申請把整個流程走一遍你會對這個系統(tǒng)以及它背后的技術(shù)架構(gòu)有一個完整的感知。5.5 前后端聯(lián)調(diào)配置核對清單如果頁面打開了但登錄一直轉(zhuǎn)圈或者提示請求失敗先不要懷疑代碼先檢查聯(lián)調(diào)配置。我整理了一份排查清單后端是否已經(jīng)啟動端口是否是8088日志里有沒有Started標記。前端請求的baseURL是否指向正確。開發(fā)環(huán)境一般是通過代理轉(zhuǎn)發(fā)所以看vue.config.js里devServer.proxy配置是否正確。數(shù)據(jù)庫里的用戶賬號密碼是否真的存在檢查sys_user表內(nèi)容。瀏覽器F12打開Network面板看登錄請求是否返回了Respones。如果是404檢查后端Controller的路徑和前端api文件里的路徑是否一致。做完這四項檢查90%以上的聯(lián)調(diào)問題都能解決。剩下的基本就是代碼本身需要調(diào)試的問題了。6. 常見問題與排查技巧實錄6.1 問題速查表上線運行和本地開發(fā)中常見的問題我整理了一張表每個問題基本都遇到過對應(yīng)的解決方式也是經(jīng)過驗證的現(xiàn)象根本原因排查與解決辦法后端啟動報數(shù)據(jù)庫連接失敗MySQL沒開、密碼錯誤、數(shù)據(jù)庫不存在確認mysql服務(wù)已啟動檢查application.yml密碼確認init.sql已執(zhí)行npm install報錯Node版本過高或過低、網(wǎng)絡(luò)不通查看報錯提示切換到推薦Node版本換國內(nèi)npm鏡像源登錄后頁面一直在轉(zhuǎn)圈前端請求沒到后端確認后端端口啟動成功檢查代理配置用F12看請求是否404頁面能打開但驗證碼不顯示驗證碼接口被攔截器攔截后端加白名單把驗證碼接口排除在登錄攔截之外后端啟動報時區(qū)錯誤MySQL連接串沒加serverTimezone按4.3節(jié)的url加上serverTimezoneAsia/Shanghai前端打包后部署到服務(wù)器刷新頁面404前端路由用history模式Nginx配置try_files $uri $uri/ /index.html6.2 幾個值得反復強調(diào)的避坑指南第一不要在源碼上直接改數(shù)據(jù)庫密碼并提交到公開倉庫。即使是在學習階段也應(yīng)該養(yǎng)成把敏感配置從代碼里剝離的習慣。數(shù)據(jù)庫密碼、密鑰這類東西要么放在環(huán)境變量里要么放在獨立的配置文件中并加入gitignore。第二錄入領(lǐng)用單時一定要先驗證庫存夠不夠。后端在扣減庫存前必須做一次判斷當前庫存是否大于等于本次領(lǐng)用數(shù)量。如果不夠直接返回業(yè)務(wù)異常庫存不足。這個判斷不能只依賴前端表單校驗因為用戶完全可以繞過前端直接調(diào)接口。第三不要輕易刪除歷史出入庫記錄。如果你需要調(diào)整某筆錯誤的入庫或領(lǐng)用比較穩(wěn)妥的做法是新增一條與之相反的沖抵記錄比如多入庫了10個就再登記一條出庫10而不是直接delete原始記錄。保留完整的流水是進銷存系統(tǒng)的審計底線一旦刪除后期對賬基本無法挽回。第四做報表查詢的時候盡量不要在頁面加載時把所有數(shù)據(jù)全查出來。數(shù)據(jù)量小的時候感覺不出來等到幾十萬條記錄的時候瀏覽器會直接卡死。無論是庫存列表還是出入庫明細都要分頁查詢后端用MyBatis-Plus自帶的分頁插件就行。表格分頁在前端是標配但很多人初學時會漏掉這一步。6.3 接手陌生源碼時的快速上手方法論如果這套源碼不是你自己從零寫的拿到手的第一時間不要急著跑代碼。我自己的習慣是先看三樣東西README文件、init.sql腳本和application.yml配置。README會告訴你作者聲明的環(huán)境要求和運行步驟init.sql讓你知道數(shù)據(jù)庫里有哪些表和初始數(shù)據(jù)application.yml讓你了解端口、數(shù)據(jù)源和可能的外部依賴。這三樣東西看完你心里對項目的全貌就有了七成把握。接下來再去看代碼優(yōu)先看Controller層把所有接口在腦子里過一遍知道這個系統(tǒng)提供了哪些能力。然后再看Service層把核心業(yè)務(wù)邏輯入庫、庫存扣減整理一遍。最后再看前端頁面長什么樣和接口一一對應(yīng)。這個順序是從外到內(nèi)的比直接一頭扎進細節(jié)要高效得多。7. 這套源碼后續(xù)還能怎么擴展這套系統(tǒng)當前的功能已經(jīng)能解決日常物資管理需求但距離大型企業(yè)級系統(tǒng)還有一段路。如果后面有時間我會在這個基礎(chǔ)上逐步做一些擴展。給幾個我看好且實踐過的方向供拿到源碼的朋友參考。第一個方向是引入對象存儲來做附件管理。現(xiàn)在的物資系統(tǒng)里入庫單常常需要關(guān)聯(lián)采購合同、質(zhì)檢報告、物資照片這些附件。這些二進制文件放在數(shù)據(jù)庫里不合適最有性價比的方式是接入MinIO或者云對象存儲。把附件的訪問路徑存到數(shù)據(jù)庫文件本身放到對象存儲這是企業(yè)系統(tǒng)的常規(guī)操作。庫表設(shè)計上也只需要增加附件表、在入庫單主表加一個附件關(guān)聯(lián)字段。第二個方向是增加消息通知能力。當員工提交了領(lǐng)用申請管理員需要及時審批目前如果管理員不在系統(tǒng)里這個申請就晾在那里。接入消息通知之后申請?zhí)峤粫r自動給管理員推送一個站內(nèi)信或者企業(yè)微信消息管理效率會提升很多。極簡的情況下可以用WebSocket做站內(nèi)通知不需要引入完整的工作流引擎。第三個方向是報表增強。當前系統(tǒng)有基本的出入庫匯總但業(yè)務(wù)負責人往往需要看到更多維度的數(shù)據(jù)一個月內(nèi)各分類物資的領(lǐng)取趨勢、不同部門或員工領(lǐng)用物資的排行、庫存周轉(zhuǎn)率等。這些場景非常適合接ECharts圖表庫前端畫折線圖、柱狀圖、餅圖后端寫對應(yīng)的分組聚合SQL。視覺效果一旦做出來系統(tǒng)的完成度會有質(zhì)的提升。第四個方向是接口文檔自動化。如果你準備把這個項目作為多人協(xié)作的起點手動維護接口文檔很容易過時。建議接入Knife4j或者SpringDoc讓后端啟動后自動生成接口文檔頁面前端照著文檔聯(lián)調(diào)減少溝通成本。最后說點實操中的個人體會這套系統(tǒng)我前后帶過不少同學跑通過最大的坑從來都不是代碼本身的邏輯而是環(huán)境不一致帶來的各種幺蛾子。比如有人MySQL用了8.0有人用了5.7兩個版本在驅(qū)動連接時表現(xiàn)就是不一樣再比如有人Node裝的是20跑Vue2老項目直接報OpenSSL錯誤換成Node16就好了。所以真的建議拿到源碼后第一步先看README把環(huán)境對齊了再動手很多源碼有問題跑不起來的結(jié)論其實都是環(huán)境問題。另外很多初學者拿到這種源碼之后喜歡到處復制代碼把每個文件都打開一遍看不懂就慌。實際上你不用急著全部看懂先把系統(tǒng)跑起來從用戶視角在界面上點一遍對系統(tǒng)有了真實感受之后再帶著這個功能是怎么實現(xiàn)的這樣的問題去看代碼理解效率會高很多。這套物資綜合管理系統(tǒng)拿來練手還是做基礎(chǔ)二次開發(fā)都很合適。后面我會繼續(xù)整理一些針對性更強的拆解文章比如把某一條入庫流程從前端到后端到數(shù)據(jù)庫的完整數(shù)據(jù)流串講一遍或者講講報表模塊里的SQL優(yōu)化有興趣的朋友可以繼續(xù)關(guān)注。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久婷婷电影网| 成人性爱av| 操逼视频免费日韩无码| 亚洲资源一区| 青青草色情网站视频| 久久久久久久国产a∨| 尤物视频偷拍免费| 99r九九| 色翁荡息又大又硬又粗又爽| 亚洲欧美综合网| 日日骚 av| 久久久久密| 成人小说视频在线精品欧美| 日本精品免费一区二区三区四区| 99久久综合| 日本操逼视频不卡直接放| 精彩久久中文| 亚州久久9| 99xav| 大胆91| 免费强奸av| 91久久九九精品国产综合| 四虎精品永久在线观看| 亚洲老司机123专区| 麻豆久久视频在线地址| 天天综合色电影| 超碰在线国产| 成人av动漫在线观看| 又大又长又粗又爽又黄| 五月婷网站| 操逼视频免费日韩无码| 国产精品免费日韩| 四虎影视永久在线免费| 欧美黄色大片在线观看| 日韩中文字幕人妻视频| 日日操丁香五月天| 91丨熟女丨丰满熟女| 香蕉热人人精品| 91久久免费视频互動交流| 78久久| 天啪| 亚洲人妻在线一区| 黄片在线免费在线观看| 男女一级A片大黄,一进一出| 人人摸人人干| 欧美专区在线| 美女主播色欲91抠b在线播放| 亚州少妇| 欧美久久婷婷| 国产天天噜一噜久久久| 五月天伊人网| 欧美岛国精品在线观看| 日本国产欧美高清在线| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 91日韩网站| 久久久久久人体| 97操b| 亚洲天堂男| 91欧美色| 国产三级资源在线观看| 黄片直播三级黄片两女一男| 午夜丁香| 日韩ab网 | 免费人成毛片乱码| 日本高清_区二区三区 | 果冻传媒A片一二三区| 国内外毛片在线观看| 97超碰欧美手机在线| 熟妇一区二区| 2019天天干天天操| 久久久九97| 丝袜综合色图| 欧美色图亚洲色,麻豆| 精品黄色电影| 乱欲一区二区| 亚州精人品大香蕉| 欧亚 另类 久| 18禁中文字幕| 91国产精品熟女| 欧美韩国你懂得在线| 中文在线视频| 无码操逼视频一下| 啊啊啊啊一区| 好舒服视频| 欧美的精品的视频| 日本一级婬片试看三分钟| 婷婷色色五月| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 色色99| 玖玖资源中文字幕制服丝袜| 色狠狠一区二区三区香蕉| 91爱| 性做久久久久久免费观看软件| 国产欧美日韩在线观看麻豆传媒公司 | 欧美 亚洲 另类 综合| 天天色综合影视网| 免费的很黄很污的全部视频| 亚洲精品蜜桃久久久一区二区三区| 日本欧美色| 好吊色综合| 91超级碰| 在线观看啊啊啊啊啊| 久久性爱视频99| www.狠狠操| 欧美天天在线| 五十路三级片| 91网站视频在线观看| 日韩有码专区| 日本超碰在线国产一区| 亚洲熟女综合一区二区| 日韩午夜啪啪视频| 精品无码产区一区二| 亚洲精品一二牛牛| 男女打扑克高清网站| 小说区 图片区色 综合区| 少妇3P性爱自拍| 中文字幕在线观看网页| 久久大| 日本色婷婷| 天天干嫩逼网| 精品久久久无码| 国产97av| 91精品91久久久中77777| 99热精品在线观看| 超碰精品在线| 天美传媒AV在线| 国产亚洲在线观看| 老熟女网站| 五月丁香色综合| 久久久三区二区一区| 加勒比在线视频一区二区三区| 情色av电影| 九九综合九九综合| 乱理日韩中文| 久久美女国产| 97精品一区| 67914亚洲精品| 婷婷伊人五月| 91久久久老司机| 26uuu欧美日韩| 区自美91| 中文字幕黑人大片| 成人免费性爱视视| 91爱欧美| 自拍盗摄一区| 日韩av影片在线观看| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲高清欧美总合| 欧美色偷拍| CCYY草草影院地址入口| 激情情色五月天| 狠狠爱综合| 9久精品| 九九久久国产精品| 在线精品福利免费播放| 三上悠亚在线毛片91| 欧洲乱码一区二区| 六十路日本| 欧美高清第一页| 日韩午夜国产| 久久久国产三级黄色片| 青娱乐亚洲自拍| 97Ai亚洲| 男人的天堂日韩| 操一区| 欧洲黄色网| 伊人久久亚洲色欲综合网站| 超碰激情808| 亚洲av综合色区图片亚洲| 99这里只有精品| 91久久国产综合久久| 91人妻精华帖| 男人久久天堂| 亚洲 欧美 色图| 四虎免费看黄| 日本曲间由美性生活片| 在线无码操| 亚洲欧美天堂| 91精品导航| 天美欧美国产| 亭亭在线资源| 欧美综合 站| 婷婷色一区| 国产女人91精品嗷嗷嗷嗷| 蜜臀99久久| 视频在线97| 精品视频97| 亚洲男人的天堂亚洲| av最新免费中文字幕| 欧美色图20p| 夜夜黄| 欧美一级专区免费大片 | 日韩免费中文字幕视频| 国产精品夜夜| 中文字幕第95页| 少妇天堂网络| 青青操在线亚洲视频观看欧美在线 | 色噜噜狠狠色综无码久久合欧美| 日本123区操B视频| 亚洲午夜福利在线影院| 中文字幕中文字幕一区二区| 日韩亚洲中文字幕在线| 成年人一级黄色毛片大全在线观看| 欧美日韩97| 91黑人狂躁丰满熟妇| 亚洲情色 无码专区| 99色日| 欧美页片| 久久綜合很很很| 中文字幕精品丝袜| 天堂日本亚洲欧美| 久久av网| 黑丝日韩av丝袜av| 岛国999| 330dv亚洲成年视频网| 99热这里只有精| 久久久一级| 99免费在线视频| 色婷婷99| 九九九久千久久激情蜜桃在线看| 天天综和| 五月天久久婷婷亚洲| 欧美爆操91| 婷婷五月天久久精品视频一区二区三区 | 亚洲情色1区| 欧洲Au麻豆| 青青草在线视频人人想人人上| 亚洲图片 91| 久久国色天香香蕉| 色九九综合AV| 超碰色综合| 久久中文字幕一区不卡| 亚洲一级性爱视频免费看| 日本成人电影资源网| 亚洲性爱无码乱伦av| 亚洲操逼网| 国产最新AV| 精品无吗久久| 日本欧美m v精品网站加| 激情婷婷丁香| 999999精品| 在线观看一级α片刺激高潮视频| 亚洲91在线播放影院| 插日本熟女视频| 天天爽夜夜操| 国产亚洲欧洲在线观看| 97资源站国产精品| 色哟哟 日韩精品| 翔田千里一区二区三区奶水| 看日韩美女二区三区免费操逼视频| 老女人爆菊| 97超碰免费人人性爱| 超碰视97中文| 一级性爱视频免费观看| 91丨熟女丨丰满熟女| 激情综合五月| 91亚洲欧美综合高清在线| 久久激情四射婷婷丁香五月天| 91国模| 中文字幕一二区二三区人妻专区| 六月丁香啪啪| 91影视亚洲| 九九久久玖玖| 亚洲中文字幕精品久久久久久直播| 六九九九| 人妻另类| 国产h片在线观看视频| 青青草密桃在线播放| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 麻豆熟妇乱妇熟色A片在线看| 国产91影院| 午夜寂寞欧美| 中亚黄色三级大片 | 国产农村妇女精品1区二区| 国产欧洲精品亚洲午夜拍精品| 日本天天干天天操一区| 操逼逼无码| 精产国品一区二三产品| 国产精品久久久啊| 丁香六月婷婷久久综合| 91狠狠狠| 国产精品久久成人免费| 亚洲综合性网址| 欧美男人天堂| 精品久久視頻在线| 蜜桃天美传媒AV一区二区三区| 欧美性爱日韩高清| 亚洲AO在线| 国产精品96| 六月激情婷婷| 欧美色图片色哟哟| 天天做日日做天天欢。| 色麻豆AV| 亚洲日韩美女中文字幕乱| 综合网欧| 欧美国产欧美在线观看| 丝袜高跟澳门91视频| 日韩亚洲精品一区二区| 欧美色图 人妻| 国产狂喷潮在线精品| 国产成人资源| 国产午夜福利专区综合| 天天弄欧美| 天天影视色香欲综合网小说| 婷婷五月天久久精品视频一区二区三区 | 精品午夜福利| 四虎 精品 WWW| 国产精品白丝| 一区中文字幕二区日韩| 亚洲国产成人7777| 国产天美传媒精品| 亚洲欧洲精品视频发布| 国产2.3.4区| 丁香五月色| 99精品九九九九九九| 国产免费永久精品无码| 亚洲无码日韩电影| 五月天丁香欧洲日韩| 超碰78| 久久久久久久久久久久黄色| 黄页视频网站野外| 亚洲精品电影| 毛片17S| 日韩乱伦AⅤ| 亚洲91网站| 国产精品老师| 26uuu最新| 亚洲男人的天堂AV| 九九aV| 伊人久久AV诱惑悠悠| 天无日色综合| 欧美一级国产一级| 农村少妇久久久久久久| yazhousetuoumei| 亚洲一区二区中文字幕| 91网站18禁| 欧美精品偷拍| 长长久久免费视频| 激情五月天插| 69视频入口| 久久久精品一区二区| 激情五月天网| 色就色综合| 欧美日韩人妻精品系列一区二区三区| 黑丝少妇麻豆| 国产激情久久| 3d成人精品一区二区| 1024精品在线| 操淫穴亚洲五月丁香 | 97久久精品不卡| 亚洲中文字幕噜噜噜久久久| 狼狼色丁香久久婷婷综合五月| 俺去啦自拍| 亚洲 欧美 中文 日韩超碰| www.久久最新地址| 国产亚洲性生活视频播放| 青青青草原| 欧洲精品一区二区三区| 青青草中文-久久青草精品一区二区三 | 久久精品国产免费观看99| 999综合网| 欧洲中文字幕| 啊啊啊啊啊啊在线观看| 久久久九97| 中日韩久久久免费看| 一区二区娱乐网站| 久热在线精品免费观看| 97国产精品一区| 嗯嗯啊好大| 一区久久久二区| 激情五月天色色| 日本视频一区二区三区| 五月天久久综合网| 东京热一区二区中文字幕| 天天热精品| 97超碰在线资源网站| 欧洲无码一区二区| 日韩三级一区| 高清无码网址| 五月开心久久AV官网| 日韩女优中文字幕| 精品久久久久久亚洲| 日韩女模中文造逼| 视频分类 国内精品| 综合久久久久久久综合网| av网站国产主播在线| 亚洲人天堂| 日夜精品| 东北女人无套内谢视频| 少妇综合| 人人干人人操人人爱| A 天堂| 神马九九| 嫩草在线视频| 青娱乐国产精品| 激情国产乱伦Av| 97色婷婷| 亚洲同性aV综合| 久久香蕉国产线看观看亚洲女人| 呻吟 欧美 日本 中出| 亚洲国产中文字幕| 大香蕉淫人| 亚洲se91| 在线播放成人高清免费视频| 精品九九国产无码| www.91理论| 日本3级一区二区免费 | 在线天堂999| 嫩草 人人网精品| a片亚洲一本通视频| 久久人妻少妇| 免费视频97| 成人五月天丁香激情综合| a'v在线资源| 一区二区三区免费视频入口| 欧美午夜一区二区三区| 激情五月天网站| 久久综合18p| 性爱AV天堂| 久久久91福利姬| 日夜精品| 久久美女国产| 熟女丰满人妻一区| 九九九九免费视频| 欧美色图第一页| 大香蕉www.超碰| 大香蕉520| oumeisetu综合| 美美91成人国产精品欧美精品久久久久久久| 男人的天堂2000| 新怡红院| 一类av片在线看| www.99热| 日本加勒比无码专区一二三| 绯色一区二区三区不卡少妇| 激情视屏国产乱伦强奸| 日韩影片中文字幕一区二区三区| 欧美亚州色的图| 五十路熟女人妻一区二区三区四区五| 日韩性爱毛片操骚逼| www久| 青娱乐大香蕉| 四虎影视精品| 亚欧高清在线| 日影院久久婷婷夜夜网| 亚洲人成在线放东京热| 成人网址在线观看| 久久草视频污视频| 国产粉嫩蜜臀av一区二区三区| 最近2019中文字幕国语免费版| 久久精品人体AV| 免费a v| 國產尤物AV尤物在線觀看| 九九热男人天堂| 欧美后入式| 欧美日产国产在线成人第一区| 天美AV片| 天天操妹子| 国产极品美女高潮无套在线观看| 99青青草国产视频| 久久在线观看免费视频| 淫淫总合网| 国内毛片四区| 亚洲中文字幕三级在线| 亚洲男人天堂视频| 日欧亚洲二三区大片不卡| 91麻豆天美传媒HD| 操屄日韩| wwe 天天干.com| 91在线欧美| 五月丁香六月| 屁股久久久久久| 99re视频在线观看这里只有精品| 精品日日人妻| 男人的天堂不卡一区二区| 97欧美日韩精品| 97碰在线视频| 免费视频97| 91在线免费观看处女| 九九九热| 人妻社区男人天堂| 黄色视频60分钟| 欧美 日韩 另类 亚洲| 欧美国产欧美在线观看| 涩涩久久精品| 操逼网免费无码视频| 亚洲中文字幕久久无码精品| 色色色999| 色妇综合网| 色综合中文字幕不卡| 中国农村熟妇毛片视频| 蜜屁Av| 偷窥自拍A片| 97欧美日韩| 综精品久久久aaaa| 久久久久久国产精品免费网站| 粉嫩久久久极品| 国产亚洲精品自在线亚洲情侣| 久久9久久| 午夜福利久久久噜久噜久久综合| 亚洲另类小说卡通动漫| 亚洲日精品| 日韩欧美亚洲国产日韩| 欧美的性爱网站免费| 97就爱干| 1区2区3区在线视频| 日韩亚洲精品一区二区| 亚洲精品电影| 啊啊啊啊啊啊啊好爽不要| 囯产操逼片| 日本一二区不卡| 欧美日本天堂| 91粉芽高清在线一区二区| 伊人网免费视频| 国产欧美日产一区二区三区 - 国产欧美日 | 中文字幕交换人妻| 天天干电影| 国产乱人妻精品入口| 色色婷| 精品国产一区二区三区在线播出| 亚洲中字慕不卡| 国产性感骚丝袜在线| 免费A V在线播放| 麻豆精品一区二区三区四区免费观看| 久草男人天堂| 日韩二三区| 色婷婷五月综合激情中文字幕| 精品一区二区三区国产| 成人草草视频| 欧美国产一区二区三区麻豆传媒 | 欧美,亚洲,日韩,v,天堂,手机在线观看 | 亚洲有薄码区日本系列中文字幕| 日本国产欧美高清在线| 激情小说图片亚洲首页| 干B网| 综合久久久久久久久91| www.av在线视频| 久久久久久九九九九九| 日本五区不卡| 久久99精品国产| 精品网站9999| 亚洲欧美校园另类春色| 欧美色五月| 思思热免费视频观看| 国产中文字幕在线点播| 国产午夜精品理论片a大结局| 超碰导航97| 丝袜色综合| 好舒服视频| 99 国产丝袜在线| 国产13区| 99999精品成人| 91亚州日韩高清| 日韩高潮一区| 国产玖玖| 精品国产乱码久久久久久影片| 操逼日韩无码 | 啊啊啊97视频| 青青青青草av在线观看| 大香蕉国产中文自拍| 国产乱码久久| 人妻在线臀日韩| 啊啊啊啊啊在线观看网址 | 国产视频第2页| 熟女欧美日韩综合婷婷| 天堂精品小草| 美女诱惑在线一区| 人妻熟女一区二区| 亚洲做性| 91久久久久久久久18| 97久久超碰| 91综合在线| 亚洲精品一区二区日本| 边做饭边操逼逼| 亚洲熟女乱色一区二区三区| heyZO天然素人无码AⅤ专区| 性色生活片久久毛片婬片免费放女人一级毛片| 欧美日韩*字幕一区| 日韩欧美成人午夜福利| 美女一区二区国产精品| 日本午夜福利影院| 97精品国产97久久久久久| 色婷婷aV一区二区三区麻豆综合| 99re95| 激情五月天校园春色网| 天天影视91看看| 性色综合网| 一级二级三级黑人无码| 欧美人妻一区| 精品国产少妇高潮视频| 2017大香蕉国产精品久久| 大香蕉92| 欧美精品三级黄片| 无码高清专| 中文字幕在线观看丝袜| 伊人国产视频| 久久亚洲一区二区色婷婷| 人妻精品视频一区二区三区| 日韩欧美一级特黄大片| 人人色97| 福利大香蕉| 又粗又长又大国产不卡| 深夜国产一区二区三区在线看| 久久99综合| 日韩ab网| 成年人黄色| 国产精品一级毛片不卡视| 婷婷99狠狠躁天天躁| 欧美性暴力猛交XXXX| 91天天爽| 天天激情干| 蜜桃色色网站视频三区| 精品人妻伦一区二区三区久久| 精品对白久久不卡| 两性色网| 国产精品网站免费| 亚洲色图欧美激情| 热99这里只有精品| 97精品视频免费| 久久粉色| 久热91| 蜜桃臀AV在线| 伊人精品久久网站| 亚洲熟妇乱女区二区三区| 岛国黄片网站| 亚洲国男人的天堂| 青草伊人久久| 久久精品中文字幕无码l| 亚洲欧美九九九| 亚洲高清91| av凤凰久久久| 涩涩久久精品| 国产女人和拘做爰视频 | 日日操免费视频| 男人天堂婷婷五月天校园春色| 18禁久久| 国产视频一区二区免费| 97jingpin| 小视频玖玖| 性性欧美| 国产毛片在线| silk lablo在线观看一区二区| 欧美精品成人一区二区在线观看 | 亚洲国产综合图区中文字幕 | 水滴偷拍| 精品精品精品| 日本精品一区二区三区四区的功能| 国产成人久久久精品免费AV| 蜜桃AV天堂| 亚洲欧美日韩综合在线尤物| 9久9久| 国产成人网址| 九九九九精| 91狠婷| 人人模人人看| 男人的天堂.com| 欧美欧美啪啪视频| 第45页一区二区| 一个色导综合| 粉嫩小泬久久久一区二区| 日日噜噜夜夜狠狠视频无| 色娱乐色呦呦夜夜夜夜av| 久草视频观看视频在线| 九九九精品色乱九九九| 久久精品色欧美aⅴ一区二区| 中日韩久久久免费看| 乱老女人一区二区视频| 女生91网站| 蜜臀av中字字幕网站| 蜜乳成人AV| 91 亚洲情侣偷拍 久久| 国产亚洲精品第一最新| 国产精品久久久亚洲第一牛牛_在线观看 | 精品一区二区三区最新| 欧美A片中文字幕| 日本中文字幕一区| 色综合色综合网| 天天日天天干天天操| 色五月天AV| 亚洲 欧美 手机在线观看| 天天躁日日躁狠狠狠躁| 嫩草 人人网精品| 日本视频一区二区三区| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 920日本午夜免费| 琪琪精品免费一区二区三区 | 亚洲欧洲综合视频在线| 无码精品久久久久久亚洲| 999综合色| 99碰碰| 99久久精品无码一区二区毛片免费| 中文久久96| 欧美亚洲丝袜人妻制服99| 亚洲国产一区二区日韩专区| 天天操天天干美女网址导航| 91美女视屏| 人人爱人人操人人性| 伊人天天久久动态图| 欧美91久久久久| 91亚·色| 操美女高潮抽搐白浆| 老司机午夜精品视频| 伊人午夜福利视频| av操操不卡| 狠狠色婷婷777| 影音先锋日本一区二区| 蜜臀久久99精品久久久久久婷婷| 伊人久久亚洲中文字幕不卡| 超91综合网| 另类小色呦| 亚洲码在线中文在线观看| 91老妇女| 极品AV网站在线观看| 偷拍 精品 另类 四区| 人妻精品一区二区在线| 亚州色交| 黄片www.| 免费看黄视频亚洲网站| 一区二区三区美女超清| 好吊色综合| 五月天AV资源| 亚洲综合 欧美| 麻豆天美传媒在线视频天堂| 99青草| 夜夜嗨一区二区| 无套内射性感少妇视频| 国产www色在线观看| 在线无码视频| 国产主播福利| 五月丁香黄色网| 亚洲牲交| 97超碰超碰| 欧美日韩久久精品爱爱| 国产蜜臀精品一区二区尤物| 欧洲精品欧洲精品| 99re热| 丝袜狠狠草尤物 91| 日本东京热大香蕉a片| 青青操少妇| 神马午夜久久久| 精品视频专区| 一区| 亚洲素人网| 精彩久久中文| 日韩欧美久久婷婷网站| 欧洲站一级二级三级h| 久久久久久少妇| 久久久精| 国产sv美女内射| 日本久久超碰| 无码人妻精品酒店| 亚洲牲交| 国产黄色视频久久| 精品国产一区二区三区香蕉欧美| 国产精品一区二区校花| 亚洲最新av无码成人精品区| 亚洲高清国产理伦片| 91成人在线免费视频| 精品性爱一区二区| 大香蕉伊人久久| 久久久影院| 91国产美女丝袜足交精品视频| 爱爱久久| www.成人无码| 热99这里有精品综合久久| 美女裸体无遮挡永久免费观看网站| 国产日韩精品suv| 亚洲色系另类精品国产| 国产精品自拍欧美在线| 丁香六月综合激情| 特色a在线上| 美女天天干| 人妻 中文 日韩| 91麻豆va国产精品| 久久久久久久九九九九九九| 青青欧洲黑| 国产精品日日摸天天碰| 国产资源中文字幕在线| 约操熟妇| 日日狠狠久久偷偷色综合免费| 久久超碰亚洲人| com 首页 18岁 禁区 女优 免费 精选 同城 | 人妻插插人妻人| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 国产后入精品| 久草精品视频| 久久夜夜| 国产精品熟女丝袜一区二区| 欧美中文字幕男人天堂久久精品| 综合av影片| 日韩啪啪视频| 日韩成人精品视频自拍| 美国美女AV在线| 黑人综合色| 国产精品盗摄 偷窥盗摄| 中文字幕在线高清男人的天堂 | 亚洲av性爱电影| 五月天婷精品激情| 人妻美腿丝袜制服诱惑综合天堂-| 色婷婷一区二区三区久久午夜| 亚洲激情片| 爱媛媛久久国产福利| 九九成人精品| 97超碰美女| 青青草天天亲夜夜操网| 伊人玖玖网| 日韩成人高清一区二区| 亚洲激情AV| 果冻传媒A片一二三区| 在线观看一级α片刺激高潮视频| 婷婷色网| 91精品在线播放| 亚洲人妻在线一区| 欧美激情欧美精品| 国产在线视频午夜精华在| 99人人干| 久久久久久免费电影| 欧美一级国产一级| 啊啊好多水| 国产精品com| 亚洲精品一区中文字幕乱码| 亚洲风情综合网| 无码乱人伦中文视频| 熟女AV一区| 免费日韩黄片| 欧美 综合| a'v在线资源| 激情小说五月天| 色狠狠一区二区三区香蕉| 亚洲欧美在线观看2021 | www.av在线视频| 青青操在线亚洲视频观看欧美在线| 91人妻在线视频| 色婷婷影院| 天天肏夜夜肏| 婷婷激情五月| 麻豆91熟妇人妻中文字幕茄子| 日本午夜福利影院| 热热色青青草| 午夜免费福利视频一区| 国产又粗又长的视频| 日本精品一区二区中文字幕| 性生活性生大爱77AV国产| 国产女生在线| 中国熟妇| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 91成人国产综合久久精品蜜月| 熟女乱3伦999| 性生活久久久久久久久久| 免费自拍三级综合| 天美一区在线| 亚洲高清无码免费观看视频| 中文区中文字幕免费看| 亚洲少妇色| 新亚洲无码| 久久久婷婷| 日本女优在线视频福利| 日韩欧美~中文字| 一区二区三区在线资源| 天天看夜夜看日日干| 亚洲视频,小说| 亚洲成人福利电影免费| 亚洲综合在线91| 国产久久久9999| 99国产在线 精品 视频| 色五月AV在线| 日韩AV一区二区三区四四| 日韩日本欧美在线观看| 日韩精品9999| 国产91久久九九免费精品无码| 中国少妇啪啪视频| 在线综合 亚洲 欧美中文字幕 | 午夜精品久久久久久久男人的天堂| 精品人妻一区二区三区四区不卡在| 成年男人的天堂| 综合在线导航一区| 9丨久久九九九| 极品粉嫩少妇视频| 任你草| 黑人美精品 A片| 91四海无码日韩欧美| 欧美熟妇乱码在线一区| 欧美人妻一区| 成年无码动漫av片无尽在线| 亚洲精品不卡一二三区| 三级三级三级日本99| 色翁荡息又大又硬又粗又爽| 亚洲天堂电影网99999| 一区二区三区男女操逼黄色小电影| 日韩美女操b| 欧美v日韩v亚洲v最新在线| 欧美视频激情久久久久久| 色播五月婷婷| 人妻乱仑一区二区三区| 黄色免费一级在线毛片| 老鸭窝成人| 久久国产对白激情浪潮| 屌逼传媒| 日本人人操人人操| 日韩免费福利在线观看| 日韩久久激情精品| 夜夜夜久久| 97网址www| 亚洲色交| 日韩午夜精品一区二区三区电影| 人妻日日夜夜精品| 男啪女色黄无遮挡免费观看| 亚洲色91C| 操一操摸一摸| 亚洲色图第四色| 国产一进一出视频网站| 色一区二区三区综合| 亚洲一级黄色毛片| 亚洲宅男天堂| 十八禁黄色成人网站观看| 青青在线视频日韩欧美| www.狠狠干.coom | 豆1无夜无码| 青青草视频爽一爽| 五月丁香啪| 国产吞精a级片激情电影| 国产日韩手机视频在线| 97亚洲欧美| 特污精品女优骚货黄色视频在线免费观看| 青青伊人加勒比海| 香港日本韩国人妇99www.wccm20| 99re6国产精品99re在线| 日韩一区二区精品视频| 色色综合网站| 婷婷丁香在线| 99九九久久| 日本久久99| 超碰在线人妻| 久久午夜伦| 大香蕉宗合网在线| 97精品国产97久久久| 欧美色三级片91| www.狠狠干.coom| 国产女人高潮视频| 91人妻超碰| 中文字幕在线观看网页| 天天日日本| 国产高清不卡视频| 亚洲诱惑| 欧美色色人| 精品一区二区三区蜜桃臀www| 国产视频小说| 久9爱经典视频| 老鸭窝黄色视频网站| 国产精品久久久久久久久久久久久久久| 亚洲精品欧洲精品| 国产天美传媒精品| 欧美91久久久久| 欧美线天码中字| 99re28在线观看| 视频不卡中文字幕| 98人妻精品一区二区色欲| 成人一道本免费视频| 狠狠色狠狠色狠狠五月| 在线观看国产黄色| 久热这里| 亚州成人A√| 伊人久久大香线综合无码| 亚洲Av噜噜一区二区三区妖精| 国产和美国毛片| 亚洲黄色电影| 欧美乱伦专区| 丰满人妻无码一区二区三区| 不卡啪啪视频| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 日韩无码专区| 亚洲欧洲小说图片视频| 好好的日:com久久九九| 日本不卡一区二区三区| 亚欧美综合网| 日韩中文字幕视频| 人妻精品视频一区二区| 狠狠中文字幕| 久久夜精品一区二区三区| 欧美日韩中文字幕不卡| 国产主播福利| av片在线观看免费播放| 91逼逼女人91| 亚洲熟女少妇免费视频| 国产强奸无码乱伦| 久草视频在线视频在线视频在线观看| 一起草av| 无码人妻精品一区二区三区九九| 欧美91网| 人人操肉肉| 精品国产乱码久久久久久久久1| 色九九九综合| 色臀AV| 超碰国产精品久| 欧美亚洲综合色| 少妇内射视频| 啪啪性爱免费视频| 色官网在线| 欧美另类自拍 | 久久久不能久久久久| 四虎在线观看网站| 亚洲一区二区三区春色| 曰韩无码777| 九一综合网| 综合另类| 婷婷丁香六月| 韩国嫰模上门援交视频| 成人免费视瓶| 啊啊啊操一区| 日韩黄片影院| 在线播放中文字幕| 久久噜| 日韩精品国产一区二区| 95精品在线| 九九九999久久久网站| 亚洲乱伦图片视频| 久久手机视直播| 快灬快灬 一下爽蜜桃在线观看| 亚洲欧洲精品视频发布| 超碰97在线 欧美 国产| 9久精品| 99精彩视频| 亚洲色图8| 亚洲av淫乱| 中亚黄色三级大片| 日韩av免费一级电影| 性感女人网页在线观看视频| 激情小说激情视频| 97人人模人人爽人人| 人妻少妇久久中文| 久久av成人无码免费| 亚州久久9| 中文色综合| 欧美精品久久96人妻无码| 色99999| 国产蜜臀精品一区免费尤物| 色区97| 午夜丁香婷婷| 中国和日本人色哪个不下载能放| 亚洲国产麻豆一区二区三区| 中文字幕神马久久| 可以免费观看的日韩av毛片| 熟女网站最新| 大香网站| 啊啊啊啊,啊啊好多水| 精品一区96| 亚洲中文字幕在现观看| 久久久久9久久久久| 爱逼综合| 国产白领连续中出在线观看| 富女玩鸭子一级毛片| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 亚洲超碰AV| 99视频自拍区| 水澄无码AV| 亚洲男人综合| 亚洲男人的天堂在线看| 91爆操视频| 高清无码学生妹高潮| 国产精品一二三区福利| 97啪啪| 亚洲欧美一区二区不卡视频播放| 午夜福利精品| 我要色综合网站| 美女黄页| 成人麻豆av电影网站| 婷婷九月丁香| 亚洲综合色男人网| 亚洲无码成人精品| 本道在线| 久操综合在线| 天天懆天天日| 亚洲,欧美,综合网| 色综合一区二区三巨| 午夜操逼不卡| 欧美色图99| 中文字幕一区 二 区 三 四 五 区日 日 骚| 强奸抽插av| 免看60秒涩涩视频| 天天操女人| 污污汅18禁网站在线永久免费观看 | 国模吧 一区二区三区| 91人妻熟女| 97超碰免费人人性爱| 色噜噜狠狠色综合日日| 日韩免费一级性爱视频| 99精品久久久久久| 国产女人高潮视频| 亚洲AV性爱电影| 91精品国产91久久青草| 曰韩香蕉97| 极品五月天噜噜| 中国国国产一级特黄毛片| 97超碰久久| 一区二区三区在线日韩影院观看| 美国美女AV在线| 国产精品探花在线| 26uuu久久| 国产免费小视频| 国产久久日| 日本天天吊| 亚洲精品日日夜夜52| 国产探花日韩援交| 亚洲色阁| 日本道日本道中文字幕日本道最新日本道在线观看 | 日韩紧密久久| 婷婷五月天激情网| 欧美黄片免费在线观看视频| 大学生美女口爆| 欧美久久人体| 97一区二压| 国产视频一区二区在线观看| 精品伊人久久久大香线蕉小说| 亚洲黄色视频在线观看视频| 国产精品丝袜在线| 操91| 亚洲色图国产另类| 国产原创精品| 色欧美天天| 青娱乐日韩无码| 国产黄色 A 片免费看| 伊人网青青| 国产精品视频内谢女人| 99热精品在线观看| 天天干1区2区在线| 97色涩| 欧美中文狠| 96爱综合| 97人人中文网| 玖玖97综合| 亚洲 欧美都市激情| 色色国产| 91婷婷| 九九综合久久| 日本污ww视频网站| 国产CHASE男男GAYGA 毛多色婷婷| 久久久草草精品| 国产真乱mangent| 欧美人体性爱互联网第一页婷婷日本| julia国产在线| 亚洲第一页综合在线| 久久久久久裸体| 中文一区二区| 欧美青青草视频| 久久久久久久久国产| 欧美色图人妻| 97超级色碰碰| 99在线精品观看视频中文| 日韩在线观看AV| 97 国产精品| 高颜值美女口爆高潮浪叫| 91亚洲最新在线| 久久久久白虎| 欧美AB在线| 久久久97| 手机在线免费看的av| 99久国产精品午夜性色福利| 操逼天美3区| 日韩成人精品视频自拍| 亚洲偷拍自拍在线视频|