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

ARTICLE DETAIL

資訊詳情

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

SpringBoot+ECharts構(gòu)建CRM客戶管理系統(tǒng):從SSH遷移到報表可視化全復(fù)盤

SpringBoot+ECharts構(gòu)建CRM客戶管理系統(tǒng):從SSH遷移到報表可視化全復(fù)盤 接手過老式j(luò)spservlet項(xiàng)目的人應(yīng)該都有同感一個客戶關(guān)系管理系統(tǒng)看著不復(fù)雜真動起手來卻發(fā)現(xiàn)客戶、商機(jī)、跟進(jìn)、審批、報表、權(quán)限這些模塊盤根錯節(jié)牽一發(fā)動全身。最近我剛好把一套用了好幾年的SSH老系統(tǒng)整體遷移到SpringBoot上順手用ECharts把銷售漏斗和業(yè)績報表重做了一遍技術(shù)棧就是標(biāo)題里這套java springboot echarts freemarker layui maven mysql。整個過程從工程搭建到核心模塊落地再到打包部署排查踩了不少坑今天完整復(fù)盤一下給準(zhǔn)備自研CRM或者接手SpringBoot項(xiàng)目的朋友一個可參考的藍(lán)本。整個項(xiàng)目不是簡單套個增刪改查框架而是要把銷售日常真正用起來。下面我按項(xiàng)目的實(shí)際推進(jìn)順序來拆解從業(yè)務(wù)設(shè)計(jì)、技術(shù)選型到模塊實(shí)現(xiàn)、數(shù)據(jù)庫優(yōu)化再到部署排查每一塊都會講清楚為什么這么選、怎么做以及實(shí)踐里容易翻車的位置。1. CRM項(xiàng)目的業(yè)務(wù)拆解與技術(shù)選型邏輯1.1 業(yè)務(wù)需求拆解不要把CRM做成一個客戶列表很多團(tuán)隊(duì)一提CRM第一反應(yīng)就是把客戶信息表格化做幾個頁面能增刪改查再導(dǎo)個Excel就算完事。這種系統(tǒng)上線以后大概率沒人用因?yàn)樗唤鉀Q了“記錄”問題沒有解決“推進(jìn)”問題。一個能給銷售帶來真實(shí)幫助的CRM至少要包含三條業(yè)務(wù)主線客戶資料沉淀客戶基本信息、所屬行業(yè)、客戶分級、來源渠道、下次跟進(jìn)時間。重點(diǎn)不是字段多而是要讓銷售一打開客戶詳情就能判斷“這個人值不值得繼續(xù)投入精力”。商機(jī)階段推進(jìn)從初步接觸到需求確認(rèn)、方案報價、商務(wù)談判、贏單/輸單。每個階段要有狀態(tài)字段、預(yù)計(jì)成交金額、預(yù)計(jì)成交日期這樣銷售管理層才能從數(shù)據(jù)里看出哪些單子有風(fēng)險。跟進(jìn)過程留痕誰在什么時候通過什么方式電話、拜訪、微信跟進(jìn)過哪個客戶聊了什么下一步計(jì)劃是什么。這部分最容易被忽視但恰恰是后續(xù)復(fù)盤客戶流失原因的關(guān)鍵。除此之外老板關(guān)心的報表也不能省每個銷售的量、成交率、漏斗轉(zhuǎn)化率、月度回款趨勢這些數(shù)據(jù)如果全靠人工匯總Excel系統(tǒng)就失去了意義。我當(dāng)時設(shè)計(jì)的時候把業(yè)務(wù)模塊拆成了五張核心主表外加日志、部門、用戶表整體上采用一個“客戶-聯(lián)系人-商機(jī)-跟進(jìn)”的一對多樹形結(jié)構(gòu)。數(shù)據(jù)模型理順之后后面的代碼才是水到渠成的事否則一邊寫代碼一邊改表結(jié)構(gòu)返工成本非常大。1.2 技術(shù)選型SpringBootFreeMarkerLayui這套老牌組合為什么還值得用技術(shù)選型上我仔細(xì)考慮過要不要上前后端分離最后放棄VueSpringBoot的組合選回了FreeMarkerLayui。原因很簡單團(tuán)隊(duì)規(guī)模不大沒有專職前端銷售系統(tǒng)又強(qiáng)依賴服務(wù)端渲染的快速迭代能力。SpringBoot負(fù)責(zé)整體框架這一點(diǎn)沒有懸念它對Spring生態(tài)的整合幾乎零配置內(nèi)嵌Tomcat讓開發(fā)環(huán)境不用再單獨(dú)裝服務(wù)器。選FreeMarker而不是JSP核心是JSP在SpringBoot里支持得比較別扭特別是jar包部署時JSP的編譯和訪問總會出現(xiàn)莫名其妙的404而FreeMarker天然適合模板渲染語法干凈對Java對象直接訪問屬性前端同事配合起來阻力也小。Layui在這個項(xiàng)目里是作為后臺管理UI使用的。它基于jQuery組件成熟表格、表單、彈層、分頁都有現(xiàn)成封裝。現(xiàn)在前端框架五花八門但企業(yè)后臺系統(tǒng)的場景下Layui這種“不需要node環(huán)境、不折騰構(gòu)建工具”的方案依然很能打一套JS文件引入即可用特別適合服務(wù)端渲染架構(gòu)。ECharts的定位是數(shù)據(jù)可視化。CRM里面最常見的圖表是漏斗圖商機(jī)階段轉(zhuǎn)化和折線圖業(yè)績趨勢ECharts對這類場景支持特別完善配置項(xiàng)直觀圖表交互細(xì)膩而且是完全本地化的開源項(xiàng)目沒有外網(wǎng)依賴。MySQL負(fù)責(zé)所有業(yè)務(wù)數(shù)據(jù)落地Maven負(fù)責(zé)依賴管理和構(gòu)建。這套組合最適合的是中小型企業(yè)內(nèi)部管理系統(tǒng)人力有限、上線周期短、不需要過度設(shè)計(jì)又能保證代碼結(jié)構(gòu)清晰、后續(xù)可維護(hù)。2. 工程初始化與SpringBoot核心配置2.1 Maven工程結(jié)構(gòu)設(shè)計(jì)與POM依賴管理項(xiàng)目剛?cè)胧值谝徊绞莿?chuàng)建Maven工程。這里我不建議一上來就搞微服務(wù)多模塊拆分CRM這種體量一個spring-boot-maven-plugin打出的可執(zhí)行jar包就能搞定所有功能多模塊只會增加維護(hù)成本。我在pom.xml里核心引入了這么幾個依賴這里直接貼一段簡化版parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.18/version relativePath/ /parent properties java.version1.8/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-freemarker/artifactId /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version2.3.1/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId scoperuntime/scope /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-starter/artifactId version1.2.20/version /dependency dependency groupIdcom.github.pagehelper/groupId artifactIdpagehelper-spring-boot-starter/artifactId version1.4.7/version /dependency /dependencies幾個細(xì)節(jié)值得注意。第一是SpringBoot版本我特意選了2.7.x而不是3.x因?yàn)?.0開始強(qiáng)制JDK17而且很多舊版三方組件兼容性踩坑嚴(yán)重很多小團(tuán)隊(duì)生產(chǎn)環(huán)境還在JDK8直接上3.x會異常痛苦。第二是mysql-connector-j這個新坐標(biāo)老版本的com.mysql.cj.jdbc.Driver驅(qū)動名依然可用如果需要反編譯排查底層驅(qū)動行為新坐標(biāo)對應(yīng)jar包結(jié)構(gòu)更清晰。第三是PageHelper分頁插件CRM列表頁的搜索分頁是剛需自己手寫limit計(jì)算工作量不大但容易疏忽total數(shù)用插件能把精力集中在業(yè)務(wù)SQL上。2.2 application.yml中的關(guān)鍵配置與連接參數(shù)SpringBoot的配置集中在application.yml里我用多環(huán)境配置管理默認(rèn)開發(fā)環(huán)境、生產(chǎn)環(huán)境通過啟動參數(shù)切換。數(shù)據(jù)庫連接這塊配置直接決定了系統(tǒng)穩(wěn)定性重點(diǎn)看這幾項(xiàng)server: port: 8080 servlet: context-path: /crm spring: datasource: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/crm_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 validation-query: SELECT 1 freemarker: template-loader-path: classpath:/templates suffix: .ftl cache: false charset: UTF-8 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.crm.entity configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl這里有幾個我踩過的大坑單獨(dú)說。數(shù)據(jù)庫URL里的useSSLfalse一定要加上否則高版本MySQL驅(qū)動默認(rèn)開啟SSL握手碰到自簽名證書會直接報錯明明賬號密碼對卻連不上庫。serverTimezone務(wù)必指定我一開始漏了啟動報“The server time zone value”的錯加上Asia/Shanghai才消停。allowPublicKeyRetrievaltrue這個參數(shù)很多新項(xiàng)目會碰到特別是用MySQL 8.0以上配合caching_sha2_password認(rèn)證方式時不加這個參數(shù)驅(qū)動會拒絕通過非SSL通道獲取公鑰啟動能過但第一次查詢連接就閃斷。FreeMarker的cache:false在開發(fā)調(diào)試階段必須關(guān)掉否則每次改模板都要重啟服務(wù)才能看到效果。生產(chǎn)環(huán)境記得改回true否則性能會受很大影響。MyBatis的駝峰映射也要打開數(shù)據(jù)庫字段是create_timeJava屬性是createTime映射規(guī)則打開后就不用寫一堆繁瑣的resultMap了。2.3 FreeMarker模板與Layui靜態(tài)資源的整合方式FreeMarker模板放在src/main/resources/templates下Layui的css、js文件放在src/main/resources/static下SpringBoot默認(rèn)會把這些資源映射出去。一個容易踩的坑是如果把Layui的layui.js放在templates目錄下頁面訪問會404因?yàn)閠emplates目錄默認(rèn)不對外暴露靜態(tài)資源必須走static。我習(xí)慣把公共布局抽成獨(dú)立ftl片段比如header.ftl、sidebar.ftl、footer.ftl再用FreeMarker的include指令引入這樣每個功能頁面只需要關(guān)心自己的主體內(nèi)容#include common/header.ftl div classlayui-container #-- 主體內(nèi)容區(qū)域 -- /div #include common/footer.ftl變量渲染時有個細(xì)節(jié)如果后端傳值為nullFreeMarker默認(rèn)會直接報錯而不是輸出空字符串。我用兩種方式處理一是在模板里給變量加默認(rèn)值比如${customer.phone!-}二是在application中配置spring.freemarker.settings.classic_compatibletrue兼容空值輸出。不管哪種都不要讓一個null值把整個頁面拖崩。3. 核心業(yè)務(wù)模塊的設(shè)計(jì)與實(shí)現(xiàn)3.1 登錄認(rèn)證、用戶權(quán)限與Session管理登錄認(rèn)證這塊我選的是比較傳統(tǒng)的Session方案SessionId種在Cookie里攔截器統(tǒng)一校驗(yàn)沒有引入JWT。原因很實(shí)際CRM的用戶量不大幾十到幾百人Session方案夠用且實(shí)現(xiàn)簡單JWT解決的是無狀態(tài)和跨域問題但會帶來會話失效不好控制、密鑰管理復(fù)雜的問題對內(nèi)部系統(tǒng)反而增加負(fù)擔(dān)。密碼存儲一定不能明文我用的方案是MD5加鹽鹽值固定一串隨機(jī)字符串注冊時加密入庫登錄時用同樣算法加密比對。MD5現(xiàn)在不是最安全的但對內(nèi)部系統(tǒng)足夠如果安全要求更高可以替換成BCrypt做法類似。攔截器實(shí)現(xiàn)思路是定義一個HandlerInterceptorpreHandle方法里檢查當(dāng)前請求的Session是否存在loginUser對象。沒有就跳轉(zhuǎn)到登錄頁。SpringBoot中注冊攔截器要繼承WebMvcConfigurer接口Configuration public class WebConfig implements WebMvcConfigurer { Autowired private LoginInterceptor loginInterceptor; Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor) .addPathPatterns(/**) .excludePathPatterns(/login, /doLogin, /static/**, /favicon.ico); } }這里最關(guān)鍵的細(xì)節(jié)是白名單靜態(tài)資源路徑一定要排除否則頁面壓根加載不了CSS和JS。我在一開始就漏了static放行登錄頁丑得沒法看排查半天才發(fā)現(xiàn)是攔截器把layui文件全給攔住了。Session對象里我建議只放用戶ID、用戶名、部門ID、角色標(biāo)識這些輕量信息千萬別把整個用戶對象塞進(jìn)去用戶表字段一多Session會膨脹而且用戶資料更新后舊的Session數(shù)據(jù)不會自動同步容易造成權(quán)限判斷陳舊。3.2 客戶列表、分頁搜索與多條件查詢的實(shí)現(xiàn)套路客戶列表是CRM系統(tǒng)信息密度最高的頁面。我實(shí)現(xiàn)它時用PageHelper插件完成物理分頁配合動態(tài)SQL處理搜索條件。先看Controller層接口RequestMapping(/customer/list) public String list(RequestParam(defaultValue 1) Integer page, RequestParam(defaultValue 10) Integer limit, CustomerQuery query, Model model) { PageHelper.startPage(page, limit); ListCustomer list customerMapper.selectByCondition(query); PageInfoCustomer pageInfo new PageInfo(list); model.addAttribute(pageInfo, pageInfo); model.addAttribute(query, query); return customer/list; }關(guān)鍵點(diǎn)在Mapper的XML里條件是否生效要用if標(biāo)簽動態(tài)拼接不能靠字符串硬拼SQL那是SQL注入的重災(zāi)區(qū)。例如按客戶名模糊搜索姓名可能為空就需要select idselectByCondition resultTypecom.example.crm.entity.Customer SELECT id, name, phone, industry, level, owner_id, next_contact_time FROM customer where if testkeyword ! null and keyword ! AND (name LIKE CONCAT(%, #{keyword}, %) OR phone LIKE CONCAT(%, #{keyword}, %)) /if if testownerId ! null AND owner_id #{ownerId} /if if testlevel ! null and level ! AND level #{level} /if /where ORDER BY create_time DESC /select分頁插件一個容易出問題的地方是PageHelper.startPage之后必須緊跟第一條查詢語句中間不能有其他MyBatis查詢和邏輯處理否則分頁會串到別的SQL上。我剛開始寫的時候在startPage和Mapper調(diào)用之間加了一個日志查詢結(jié)果列表頁每次都查出來全表數(shù)據(jù)還特別慢。多條件查詢頁面上我用了Layui的form組件搜索按鈕觸發(fā)table.reload把表單數(shù)據(jù)作為參數(shù)提交。后端返回的是HTML頁面就不用table.reload那套了直接讓form提交GET請求保持URL可讀可分享更適合服務(wù)端渲染的形態(tài)。3.3 商機(jī)階段流轉(zhuǎn)與跟進(jìn)記錄的落地方案商機(jī)是銷售漏斗的數(shù)據(jù)基礎(chǔ)設(shè)計(jì)上它必須掛在客戶之下又有獨(dú)立的階段狀態(tài)。我在數(shù)據(jù)庫表里設(shè)計(jì)了幾個關(guān)鍵字段stage階段、amount預(yù)計(jì)金額、expect_deal_date預(yù)計(jì)成交日期、probability贏單概率。階段用數(shù)字編碼1到6分別對應(yīng)初次接觸、需求確認(rèn)、方案報價、商務(wù)談判、贏單、輸單這個枚舉放在代碼里統(tǒng)一管理避免前后端各維護(hù)一份。頁面上的商機(jī)看板按階段分列展示每一列是一個Kanban卡片。實(shí)現(xiàn)上不需要特復(fù)雜的技術(shù)后端按階段分組查詢前端用Layui的柵格布局排開拖拽流轉(zhuǎn)我用的是前端form select切換階段提交后由后端更新stage和probability。狀態(tài)流轉(zhuǎn)這里一定要做校驗(yàn)比如從“初次接觸”跳轉(zhuǎn)到“贏單”就不合理我加了一個簡單的階段順序校驗(yàn)攔截器保證數(shù)據(jù)邏輯完整。跟進(jìn)記錄做成時間線樣式與客戶詳情頁并列展示。每次跟進(jìn)的類型、內(nèi)容、下次跟進(jìn)時間、創(chuàng)建人都要記錄。代碼里就是一張follow_up表的多表插入關(guān)鍵點(diǎn)是插入后要更新customer表的next_contact_time字段否則銷售永遠(yuǎn)不知道自己下一次該聯(lián)系誰。這個聯(lián)動我一開始沒做后續(xù)跑了一段時間數(shù)據(jù)后發(fā)現(xiàn)很多沒有下次跟進(jìn)時間的客戶躺在列表里銷售根本想不起來還有這些待辦這就是典型的數(shù)據(jù)孤島問題。3.4 ECharts報表模塊從SQL聚合到前端可視化的完整鏈路報表模塊是這個系統(tǒng)里最出效果的部分。我做了三個核心圖表月度業(yè)績趨勢折線圖、銷售個人業(yè)績排行柱狀圖、商機(jī)階段漏斗圖。后端接口不做模板渲染而是返回JSON數(shù)據(jù)。比如漏斗圖接口按商機(jī)表里的stage分組統(tǒng)計(jì)數(shù)量SQL很簡單SELECT stage, COUNT(*) AS cnt FROM business_opportunity WHERE del_flag 0 GROUP BY stage ORDER BY stageController把查詢結(jié)果封裝成Map用ResponseBody注解直接吐JSON。前端頁面通過Ajax拿到數(shù)據(jù)后組裝成ECharts的series數(shù)據(jù)格式調(diào)用setOption渲染。這里有一個每次都會踩的坑ECharts實(shí)例如果已經(jīng)渲染過一次第二次setOption時舊數(shù)據(jù)不會自動清掉。我在漏斗圖上調(diào)了好久發(fā)現(xiàn)切換時間范圍后柱子高度對不上因?yàn)樾屡f數(shù)據(jù)疊加了。解決方法是每次請求前調(diào)用chart.clear()或者在setOption時設(shè)置notMerge參數(shù)為true。$.get(/report/funnel, function (resp) { var chart echarts.init(document.getElementById(funnelChart)); chart.clear(); chart.setOption({ series: [{ type: funnel, left: 10%, width: 80%, data: resp.data, label: { show: true, formatter: : {c} } }] }); });圖表容器div的寬高一定要顯式設(shè)置很多剛接觸ECharts的人把容器寫成百分比高度外層父div沒有高度最后渲染出來圖表是扁的。我在報表頁面里給每個圖表容器都設(shè)了固定高度實(shí)測500px左右比較合適。4. 數(shù)據(jù)庫表結(jié)構(gòu)與性能優(yōu)化實(shí)戰(zhàn)4.1 CRM核心表結(jié)構(gòu)設(shè)計(jì)思路數(shù)據(jù)庫設(shè)計(jì)是整個系統(tǒng)穩(wěn)定性的地基我把核心表結(jié)構(gòu)列出來可以作為一個自己動手建庫時的參考模板??蛻舯鞢REATE TABLE customer ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL COMMENT 客戶名稱, phone VARCHAR(20) COMMENT 聯(lián)系電話, industry VARCHAR(50) COMMENT 行業(yè), level TINYINT COMMENT 客戶等級 1-3, owner_id BIGINT COMMENT 負(fù)責(zé)人用戶ID, next_contact_time DATETIME COMMENT 下次跟進(jìn)時間, del_flag TINYINT DEFAULT 0 COMMENT 刪除標(biāo)記, create_time DATETIME, update_time DATETIME, KEY idx_owner (owner_id), KEY idx_next_contact (next_contact_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;商機(jī)表、跟進(jìn)表在結(jié)構(gòu)上類似都會冗余一個customer_id外鍵和多一個del_flag邏輯刪除標(biāo)記。用邏輯刪除而不是物理刪除對銷售數(shù)據(jù)尤其重要客戶雖然可能被標(biāo)為無效但歷史數(shù)據(jù)還需要追溯分析真從庫里刪掉后續(xù)做統(tǒng)計(jì)就斷層了。所有表的主鍵用BIGINT自增字符集用utf8mb4而不是utf8原因是utf8在MySQL里最多3個字節(jié)存不了emoji和生僻字。銷售填客戶備注的時候可能帶個表情符號如果是utf8會直接報錯?;A(chǔ)的表結(jié)構(gòu)設(shè)計(jì)不想多說但這兩個坑我見到太多人踩過了。4.2 最容易出問題的SQL與索引優(yōu)化CRM系統(tǒng)的查詢模式相對固定優(yōu)化重點(diǎn)就在幾個高頻列表頁。我最常做的優(yōu)化是給外鍵和查詢條件字段建索引像customer表的owner_id、next_contact_time都加了索引。模糊搜索要特別注意。LIKE ‘%關(guān)鍵詞%’這種寫法會導(dǎo)致索引失效全表掃描??蛻袅繘]上十幾萬的時候問題不大但數(shù)據(jù)一旦膨脹一個不帶條件的列表查詢能把數(shù)據(jù)庫CPU打滿。折中的辦法是如果確實(shí)需要模糊搜索把范圍限定在20萬行以內(nèi)強(qiáng)制走索引更合理的方案是引入專門的全文索引但小項(xiàng)目我一般建議保持簡單先把高頻搜索條件做成下拉選擇減少模糊匹配的觸發(fā)頻率。另一個大坑是深分頁。銷售使用系統(tǒng)半年后客戶表可能幾十萬行翻到第1000頁時limit 9000,10會導(dǎo)致MySQL掃描前9000行后丟棄特別浪費(fèi)I/O。我用它替換成基于最大主鍵的查詢方式SELECT * FROM customer WHERE id #{lastId} ORDER BY id ASC LIMIT 10這種“上一頁最后一條記錄的ID”游標(biāo)分頁方式在數(shù)據(jù)量大時性能提升非常明顯頁面交互改成“加載更多”而不是跳頁。對CRM這種業(yè)務(wù)用戶真的需要看到很深的分頁嗎我實(shí)測下來幾乎沒人會翻到第100頁之后。所以游標(biāo)分頁完全夠用還有利于前端做無限滾動。4.3 連接池配置、事務(wù)控制與數(shù)據(jù)一致性問題CRM業(yè)務(wù)里涉及多表聯(lián)動的場景很多比如新增跟進(jìn)記錄的同時要更新客戶的下次跟進(jìn)時間這兩條SQL必須在一個事務(wù)里否則就會出現(xiàn)“記錄了跟進(jìn)但客戶的待辦時間沒變”這種不一致問題。SpringBoot里最簡單的方式就是給Service方法加Transactional注解默認(rèn)遇到RuntimeException就回滾。我項(xiàng)目里統(tǒng)一定義了業(yè)務(wù)異常繼承RuntimeException這樣事務(wù)在業(yè)務(wù)校驗(yàn)失敗時也能正確回滾。連接池這塊我用的Druid除了作為連接池它的監(jiān)控頁面還能看到慢SQL統(tǒng)計(jì)對排查性能問題極有幫助。在application.yml里配置好druid的stat filter和web-stat filter后瀏覽器訪問/druid/index.html就能看到每個SQL的執(zhí)行時間。我給客戶列表頁做優(yōu)化的時候就是靠監(jiān)控頁發(fā)現(xiàn)慢SQL才定位到索引缺失的問題。事務(wù)隔離級別我用了默認(rèn)的REPEATABLE_READMySQL InnoDB引擎下基本沒問題。需要注意的一點(diǎn)是長事務(wù)要避免如果一個事務(wù)里做了大量查詢或者分批插入會持有持鎖時間過長并發(fā)一高就容易死鎖。我的習(xí)慣是事務(wù)只包裹必要的寫操作查詢邏輯放在事務(wù)方法外面完成。5. 打包部署與生產(chǎn)環(huán)境問題排查5.1 Maven多環(huán)境打包與可執(zhí)行jar部署開發(fā)完成之后就是構(gòu)建部署。SpringBoot項(xiàng)目用Maven打包非常簡單核心命令是mvn clean package -Dmaven.test.skiptrue如果需要指定生產(chǎn)環(huán)境配置使用profile參數(shù)mvn clean package -Dmaven.test.skiptrue -Pprod對應(yīng)pom.xml里配置多套profile每套profile指定不同的application-{env}.yml。我實(shí)際部署時沒用Docker直接在服務(wù)器上跑jar啟動命令是nohup java -jar crm-system.jar --spring.profiles.activeprod /data/logs/crm.log 21 這里有兩個容易忽略的點(diǎn)一是nohup一定要配合使用不然SSH斷開后進(jìn)程就沒了二是日志重定向最好落到獨(dú)立文件方便出問題時用grep定位異常。生產(chǎn)環(huán)境我建議在啟動參數(shù)里增加-Xms和-Xmx把堆內(nèi)存上下限定成一樣避免JVM動態(tài)擴(kuò)容引起性能波動比如-Xms512m -Xmx512mCRM這種中小系統(tǒng)給512M到1G完全夠了。5.2 從開發(fā)到上線的高頻報錯速查表我整理了這份項(xiàng)目里遇到的高頻問題列表按現(xiàn)象、原因、解決辦法三列對查報錯現(xiàn)象根本原因解決辦法MySQL連接時報SSL connection error高版本驅(qū)動默認(rèn)開啟SSLURL后加useSSLfalsePublic Key Retrieval is not allowedMySQL8新認(rèn)證機(jī)制URL上加allowPublicKeyRetrievaltrueUnknown time zone / 時區(qū)錯誤未指定serverTimezoneURL上加serverTimezoneAsia/ShanghaiFreeMarker模板訪問報錯或404模板路徑或文件后綴錯誤確認(rèn)模板在templates目錄且后綴是.ftl頁面CSS/JS全部加載失敗攔截器攔截了靜態(tài)資源攔截器排除/static/**路徑Layui表格數(shù)據(jù)正常但分頁不工作PageHelper分頁被其他查詢污染startPage后緊跟目標(biāo)查詢語句部署jar后中文亂碼Linux默認(rèn)編碼不是UTF-8啟動參數(shù)加-Dfile.encodingUTF-8Druid監(jiān)控頁面無法打開未放行druid的Servlet配置web-stat-filter并開啟enabledMaven依賴下載極慢默認(rèn)中央倉庫網(wǎng)絡(luò)不穩(wěn)定settings.xml配置阿里云鏡像表里這些坑有好幾個都是我實(shí)際踩過的。最典型的是部署到Linux中文亂碼本地開發(fā)Windows沒問題一上服務(wù)器全變問號。排查下來發(fā)現(xiàn)是Linux系統(tǒng)locale沒有設(shè)置UTF-8Java讀取文件默認(rèn)用了系統(tǒng)編碼加上Dfile.encoding參數(shù)后解決。5.3 生產(chǎn)環(huán)境數(shù)據(jù)初始化與權(quán)限配置上線前有一件事一定要做數(shù)據(jù)初始化。我先在測試環(huán)境把系統(tǒng)跑通然后用mysqldump導(dǎo)出表結(jié)構(gòu)和基礎(chǔ)數(shù)據(jù)再導(dǎo)入生產(chǎn)庫。不要在生產(chǎn)庫手工執(zhí)行一遍建表腳本漏一個索引后面補(bǔ)起來相當(dāng)被動。權(quán)限初始化這塊管理員賬號、角色、部門數(shù)據(jù)我用一個init.sql腳本管理腳本里先判斷記錄是否存在再插入保證腳本可以重復(fù)執(zhí)行。生產(chǎn)環(huán)境的日志級別也要改開發(fā)環(huán)境MyBatis打印了所有SQL生產(chǎn)環(huán)境如果還開著會把磁盤寫爆。我把log-impl配置成org.apache.ibatis.logging.nologging.NoLoggingImplSpringBoot的日志級別設(shè)為INFO只保留業(yè)務(wù)關(guān)鍵日志。6. 項(xiàng)目實(shí)操心得與后續(xù)擴(kuò)展方向6.1 復(fù)盤這次CRM改造里最值得說的幾個教訓(xùn)整個項(xiàng)目做完我復(fù)盤了一遍有幾個點(diǎn)值得單獨(dú)提醒。第一個是關(guān)于Session存儲。一開始我把用戶對象全部放進(jìn)Session里面有位圖、頭像字段等冗長信息用戶在個人中心上傳新頭像后Session里的舊數(shù)據(jù)還留著展示還是舊頭像。后來把Session對象瘦身成ID和關(guān)鍵標(biāo)識需要完整信息時再查庫問題解決。第二個是關(guān)于FreeMarker模板緩存。上線前我把cache改成了true結(jié)果有一次改了頁面上的一個錯別字重新部署后發(fā)現(xiàn)頁面沒變排查才想起來是模板緩存的問題。生產(chǎn)環(huán)境如果有模板變更要么重啟服務(wù)要么用腳本清空freemarker緩存目錄這個坑影響不大但很惱人。第三個是SQL注入。我在寫客戶搜索功能時曾經(jīng)圖省事直接用字符串拼接條件結(jié)果被測試同事傳入特殊字符搞崩了查詢。后來全部改成MyBatis的#{}預(yù)編譯參數(shù)這個教訓(xùn)我在代碼里貫徹得很徹底所有動態(tài)條件都走XML的if標(biāo)簽配合#{}絕不拼字符串。第四個是ECharts圖表的舊數(shù)據(jù)覆蓋。前面已經(jīng)提過這個問題如果不在setOption時處理報表數(shù)據(jù)一刷新就顯示混亂。我后來做了一個公共封裝每次繪制圖表前都強(qiáng)制清空舊實(shí)例。6.2 CRM系統(tǒng)可以持續(xù)演進(jìn)的幾個方向核心功能落地后我整理了目前沒做但值得擴(kuò)展的方向給有同樣需求的朋友一個參考導(dǎo)出Excel銷售經(jīng)常要把客戶名單導(dǎo)出給領(lǐng)導(dǎo)看我用Apache POI解決了這個問題模板導(dǎo)出客戶列表、商機(jī)報表按照標(biāo)題里提到的“java poi word能生成圖表嗎”這個思路擴(kuò)展數(shù)據(jù)還可以導(dǎo)出為帶圖表的Word文檔。自動提醒每個銷售登錄后能看到今天需要跟進(jìn)的客戶列表靠cron定時任務(wù)掃描next_contact_time把過期未跟進(jìn)的客戶推送到首頁待辦。WebSocket消息通知客戶被分配、商機(jī)階段變化時給相關(guān)銷售實(shí)時推送消息比刷新頁面體驗(yàn)好很多。數(shù)據(jù)大屏把ECharts的報表做成一整塊大屏頁面投到銷售辦公室電視上實(shí)時展示整體業(yè)績和漏斗轉(zhuǎn)化這對管理層的直觀沖擊力很強(qiáng)。多租戶隔離如果以后要給不同分公司獨(dú)立使用可以在所有業(yè)務(wù)表加一個org_id字段實(shí)現(xiàn)數(shù)據(jù)隔離而不用重新設(shè)計(jì)表結(jié)構(gòu)。我在實(shí)際使用這套系統(tǒng)的過程中最深的感受是技術(shù)的復(fù)雜度永遠(yuǎn)是第二位的業(yè)務(wù)模型是不是貼合銷售真實(shí)工作流才是CRM能不能活下去的核心。SpringBoot、ECharts、MySQL這些都是隨手就能上手的工具難的是把“客戶、商機(jī)、跟進(jìn)”這條鏈路理解透再把它們穩(wěn)妥地落到代碼和表結(jié)構(gòu)里。希望這篇復(fù)盤能幫你在自己的項(xiàng)目里少走幾條彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中英熟女操女| 白丝一区| 国产福利视频精品视频| 亚洲欧美日韩精品久久久一区二区| 中文字幕 码 自拍 视频 区| 日本操逼视频免费| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产一级特黄大片处女| 欧日韩不卡视.频| 人妻少妇精品久久久| 热热色综合网| 长长久久免费视频| 午夜福利一区二区三区四区五区色婷婷| 97这里只有精品| 亚洲国产一区二区三区四区国产| 狠狠干妹子| 国产隔壁老王影院在线| 97超碰无码网| 国内亚洲高清无码| 乱人伦 国语对白:视频直接看| 超碰综合97在线| 欧美爆乳精品一区二区| 日韩一级二级三级| 日韩一级片在线看| 97国产|免费| 激情综合二| 色大香蕉97N| 97精品一区二区视频| www.狠狠操| 亚洲综合网91| 一区二区偷拍拍视频| 青青操日韩| 日韩激情中文字幕有码| 91亚洲狠狠色| 大香蕉手机视频| 人妻夜爽夜夜爽| 黄片www.| 偷拍亚洲视频一区二区三区四区| 亚洲熟妇极品| 国产三级在线现体验区| 久久偷偷色综合蜜桃| 乳欲人妻办公室奶水| 亚州国产成人精品女人久久| 伊人黄色视频免费观看| 97欧美综合| 日韩一级二级| 日韩成人精品视频自拍| juliaann欧美丝袜办公室| 99超级碰免费视频| 另类图片综合| 精品一区二区麻豆| 探花激情视频| 免费av高清无码| 国产噜噜噜噜噜久久久久久久久| 亚洲国产麻豆一区二区三区| 男人的天堂VA| 亚洲综合113页| 国产精品无码久久久久2025| 91精品国| 青青草手机在线免费观看| 亚洲无线码欧洲精品区别| 青青草中出视频 | 极品粉嫩少妇视频| 国产精品区在线12p| 色色综合97| 综合操逼| 免费视频在线一区二区不卡| 欧美在线色| 肉丝无码中文高清| 九九热男人天堂| 色黄色美女大长腿午夜视频| 2019天天干| 老司机久久| 色婷婷小说| 精品人成视频在线观看| 亚洲交性| 东京热av男人的天堂| 黄片www.| 偷窥自拍A片| AV色女综合| 嗯嗯,好大,好爽,好骚| JIZZJIZZ国产精品喷水| 日本在线观看网址| 天天射天天色成人| 2017超碰| 亚洲熟久久| 天天日天天舔| 欧美日韩国内不卡| 国产91会所女技师在线观看| 中文字幕第7页| 青娱乐亚洲热| 欧美日韩91| 在线观看不卡一区二区三区| 亚洲欧美999| 深夜激情| 深喉吞精| 一区二区不卡免费| 日日噜噜夜夜久久亚洲一区二区 | 先锋女优在线观看视频| 亚洲开心网| 91国产丝袜白虎| 麻豆天美制片厂网站视频| 伊人久久大香大香线蕉中文| 日韩人妻播放| 亚洲黄色a级片| A级在线视频| 九九热只有精品| 大香蕉综合久久| 高凊专区人人操| 日本有码久久| 日日狠狠久久偷偷色综合免费| 欧美激情性爱视频网站| 狠狠操官网| 视频一区二区免费在线| 日本一级特级毛片视频| 囯产精品久久久久久久久久梁医生| 九九九成人| 任我爽在线视频免费观看| 色九九九综合| 亚洲视频一二区| 激情四射婷婷四五月天| 快点操死我| 日韩偷拍色图| 天天色怡春院| 超碰这里只有精品| 日本高清_区二区三区| 粉嫩av平台| 99久久久无码精品国产人| 精品人妻中文字幕高清| 精品视频免费在线一区| 丰满人妻av一区二区三区| 国产成人一级av88| 一个人免费HD91视频| 日本高清一区二区在线| 久久麻豆一区二区| 久久手机视直播| 亚洲精品一区二区三区新线路| 久久欧美1卡2卡3| 亚州 综合 色图| 国产美女口爆吞精| 天天日天天干天天摸天天操| 欧美 日韩第一性色| 欧洲精品网| 精品9区| 欧美 日韩 另类 亚洲| 伊人伊人LD| 综合亚洲网| 久久婷婷电影网| 国产一级内射无挡观看| 国模精品娜娜一二三区| 五月天开心网| 嗯嗯啊啊视频在线看| 久草精品国产蜜臀| 久久精品国产97欧美精品亚洲| 春色综合免费| 丝袜美腿亚洲| 美女黄频a美女大全免费皮| 久热伊人| 五月天久久婷婷亚洲| 国产女人9999| 国产免费内射视频| 嫩草一区二区在线观看| 99色在线| 精品无码产区一区二| 麻豆熟妇乱妇熟色A片在线看| 91网站18| 噜噜吧,噜噜色,噜噜| 青青操青娱乐| 天天影视综合色| 9久热这里只有精品| 超碰精品国产无码| 日韩精品一区的| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 熟妇亚洲一区二区三区| 热久久99999| 色婷婷一区二区三区久久午夜成人不| 少妇一区二区三区| 色偷偷综合91久久噜噜| 日韩免费一级性爱视频| 国产女人高潮视频| 久久久久久免费电影| 久久精品国内Av熟女高清| 色久桃花影院在线观看| 天天色综合图片| 精品美女少妇一区二区三区| 欧美资源| 神马视频久久久久久| 亚州图片第一页| 永久免费av无码网站国产app| 国产一区二区在线电影| 久操视频免费在线观看| 男女啊啊啊啊啊| 中文字幕中文字幕一区二区| 欧美白嫩女HD| 精品国产91内射久久| 97超碰碰碰| 精品无人区麻豆乱码1区2区图片 | 999九九精品| 伊人四虎综合| 国内精品久久人妻性色av| 91狠狠综合久久| 九九九九九精品| 蜜桃中文字日产乱幕4区| 国产精品成人久久一区二区三区| 亚洲欧美日韩免费电影| 精品亚洲俞拍视频一区| 欧美一级美片在线观看免费| 国产青视频| 熟妇熟女一区二区三区| 色999偷自拍拍| 无码天堂| 台湾肥佬网一区二区三区| 欧美色图综合网| 另类在线| 亚洲无992tv| 久久久精品国产亚洲伊人| 懂色Av一区二区三区| 激情五月综合| 亚州性色| 黄页大片在线观看| 天天射天天| 夜夜操天天肏| 亚洲 自拍偷拍 欧美| 97超碰巨乳| 一个人免费HD91视频| 国产怡红院在线| AV电影在线播放| 天天噜| 天美传媒一二三区永久网站| a片偷拍视频| 国产成人主播| 欧美日韩成人在线| 日韩三级伊人| 东北女人操比视频| 国产精品久久久久亚洲av| 伊人久久亚洲色欲综合网站 | 福利社区午夜一区二区| 亚洲日韩狠狠撸视频| 久久‘黄片视频| 大肉棒导航| 亚洲高清无码在线桃色| 青青草女人天天干| 国产极品999| 欧 美 自 拍 偷 拍| 67194无码不卡| 黄色激情电影在线观看| 久久三区四区| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 夜夜骑日日| 小草三级久久观看| AA特级绝黄| 欧综合网| 后入式在线免费观看60秒| 久久久久国产精品片区无码直播 | 97色色色| 国产家庭乱伦性爱视频| 少妇一区二区三区| 性色av一区二区| 欧美日韩性爱视屏免费看了| TS人妖另类精品视频系列 | 久久性爱网站| 清纯唯美综合| 成人一区二区三区四区| 婷婷大香蕉| 变态乱伦伪娘灌肠一区二区| 加勒比海人人操超碰在线| 激情文学欧美| 人妻熟女一区在| 97超碰碰| 国产麻豆91欧美一区二区久久婷婷国产精品 | 欧美天天干| 亚洲爱爱视频一区二区| 日日狠狠久久偷偷色综合免费| 欧美熟妇成人一区二区| 亚洲天天操| 91高潮喷水美女| caorenqi shipin| 九月丁香综合网| 国产精品农村妇女| 蜜臀网址在线| 神马影院午夜福利久久久| 在线 制服丝袜中出 人妻| 欧美日韩国产高清在线一二三区| 国产欧美日韩臀| 五月丁香在线| 91精品啪在线观看国产城中村| 熟女人妻一区二区三区免费看 | 亚洲黄片免费在线播放| 男人天堂导航| 少好三P| 黑丝日韩av丝袜av| 91av天美性媒精品视频| 一区二区三区男女操逼黄色小电影| 日韩精品黄片免费观看| 岛国大片在线观看网站入口| 日本一区二区亚洲综合| 日本欧美中文字幕| 午夜美女福利视频| 九九九九九九视频免费| 日本不卡一区| 亚洲成人激情小说视频| 性色aV一区二区三区噜噜| 久超碰这里只有精品| 日本999精品| 精品96久久| 欧日韩在线观看| 东京热一区二区三区四区五区六区| 嗯嗯嗯嗯啊啊啊好紧好大| 久久久婷婷| 五月婷婷丁香| 七久久久| 啊a一区在线| 97久久超碰| www.婷婷| 怡红院怡春院| 久久久久久久久九九久孕交| 欧美精品久久96人妻无码| 青青草五月天| 91热色| 超碰九7免费| 牛黄色久午久| 国产热RE99久久6国产精品首| 福利伊人玖玖国产| www.色操逼| 天天干天天爽| 天天综和| 亚洲涩涩| 亚洲熟女偷拍在线观看| 综合亚州欧美| a啊啊啊啊啊啊啊啊一区二区| 粉嫩av一区二区三区天美传媒| 熟妇人妻精品一区二区| 欧美不卡五十路| 亚洲A曰本VA欧美VA视频| 精品无码一区二区三区| 国产东北女人在线视频| 九九热AV| 亚洲天天综合| 囯戸精品高潮呻吟旡码| A久久| 精品国产乱码久久久久久久久1| 91男女啊啊啊| 国产麻豆一区二三区| 91老司机精品| 欧美日韩国产三级黄色| 色婷婷九月| 国产日本熟女顶级一区二区三区视频 | 国产视频一区二区三区久久亚洲天堂 | 五码视频在线观看| 人人看人人摸人人色| 激情五月天网| 99re在线精品78| 亚洲久9| 日韩欧美国产一区二区三区四区| 六六久久日韩不卡| 少妇色欲综合网2| 天天综合中文字幕 91| 亚洲色欲天天天堂色欲网女| 欧美性爱在线无码| 9长久久精品| 少妇淫妇久久久久久久| 亚洲第2页| 91九九九馒头| 高潮9999外国| 日韩精品黄片免费观看| 九九人人操| 操婷婷逼| 中文字幕蜜乳av| 青娱乐国产盛宴视频| 9 9精品一区二区三区| 久久婷婷欧美| 欧洲黄色网| 久久激情视频| 超碰欧美COM| 自怕偷自怕亚洲精品| 久久久久成人蜜桃精品| 欧美色图另类图片| www色日本| 久久蜜色情在线视频xxx免费观看| 桑老女人九区| 91人妻素女| 亚洲最大的黄色电影网站。| 91天堂| 全免费a敌肛交毛片免费| 偷拍欧美激情| 农村女一级毛卡片| 国产丝袜视频| 91n欧美| 黄色片大香蕉| 后入日本1234| 懂色AV蜜臀无码精品APP | 四虎精品永久在线播放| 五月天社区| 久久精品日韩专区免费观看| 91在线视频观看国产| 观看视频图片一区二区三区| 成人a v在线播放免费| 97精品国产97久久久| 久久激情四射婷婷丁香五月天| 亚洲情色五月天| 色97干| 午夜丁香婷婷| 精品国产乱子伦一区二区三区,精品一 | 偷拍欧美激情| 久久久久九九九九| 久久久久久中文版| 日本成人A片免费看| 97大色网| 国产三级多多影院2022国产AA一级毛片无码| 亚洲 图片 欧美 色图| 超碰精品97| 超碰91在线| 国产精品视频在线观看| 天天日B狠狠操| 最新日本中文字幕| 91精品国久久久久久无码| 在线国产福利网址导航| 欧美午夜视频| 777奇米影视777四色| 9九九国产| 日本高清_区二区三区| 天天综合网~91综合网| 国产精品午夜高潮呻吟久久av| 97欧美色| 成人午夜无码视频| 亚洲爽图| 亚洲熟女一区| 婷婷导航| 操b在线观看| 欧美性爱网97| 国产超碰| 黄色免费一级在线毛片| 欧美91丝袜| 狠狠爱综合| 校园春色五月天| 99re95| 少妇干B| 密臀在线一区尤物| 欧美激情一区二区| 日韩精品一区的| 操B在线观看| 偷拍亚洲情色| 手机看av网站在线看| 揉揉日日日日| 欧美日韩亚洲五月天婷婷| 日韩欧美国产高清视频| 亚洲情色综合| 亚洲图片 激情小说| 丁香啪啪| 最新岛国大片| 97精| 亚洲人综合| 色av中文字| 污污汅18禁网站在线永久免费观看| 国产女主播视频在线观看| 国产11页| 精品亚洲国产成人av网站| 亚洲国产欧美中日韩成人综合视频| 97这里有精品| 足交视频老司机| 粉嫩国产精品久久粉嫩| 国产69精品久久久久99尤物| 久久久久久久97| 人妻素股| 噜噜噜久久亚洲精品色情| 无码伊人久久大杳蕉中文无码| 青青草国产欧美非洲黑人| www.欧精品| 亚洲精品亚洲人成在线麻豆| 日欧操屄| 91性片| 欧美性Fer办公室秘书| 极品内射| 免费看污网站| 亚洲人成网www| 肉嘟嘟www视频在线观看高清| 人妻一区二区三区四区视频| 伊人九九| 校园春色亚洲无码| 图色综合网| 中文字幕日韩综合| 香蕉婷婷| 狠狠色婷婷7777久| 日本福利二区视频| 亚洲五码一区二区三区| 天天摸夜夜添无码小视频| 尤物av网站免费在线播放| 亚洲欧洲综合| 东京热91| 91蜜桃传媒精品久久久一区二区| 在线观看 99热| 国产白丝在线| 九九九久久久久| 精品人妻视频一区二区三区蜜桃视频| 顶级少妇BT天堂| 91视频国品一二三区| 99热这里只有精| 色色操| 日本中文字幕在线视频| 人人操人人摸人| 香蕉人人操tv| 日韩成人大片在线观看| 亚洲一卡2卡3卡4卡乱码网站| 老司机天天操| 亚洲日韩美国人妻| 3p国产色噜噜一区| 婷婷五月综合在线| 亚洲最大AV网| 日韩欧美俄罗斯A片| 波多野结衣被操50分钟免费视频| 久久直播国产| 日本福利二区视频| 日本精品一区二区中文字幕| 综合一区中亚洲国产成人综合精品| 天天做日日爱夜夜爽| 欧美一区二区三区日韩| 日本综合久久| 精品久久99| 殴美牲| 黑丝91视频| 久久久精品国产亚洲伊人| 麻豆黄四叶草网站| 欧美亚州综合图片| 深夜激情 | 哑洲在线| 天天碰久久入| 操东北女人| 91性高朝久久久久久久久| 东北女人的毛片| 国产丝袜视频| 久久国产视频专区一二三| 91路www| 青草一区二区| 亚洲av综合伊人久久| 久久精品国产亚洲AV嘿嘿| 日本天天操| 青青操狠狠撩| 国产四虎在线| 夜夜春夜夜操| 中文字幕精品免费一区二区| 1禁看欧美黄片免费看| 免费精品99| 久久国色天香香蕉| 精品一区99999| 91精片| 日韩色| 情侣开房子拍 日韩无码 女的很漂亮| 丰满搜索结果 -第18页- 久久高清无码 | 99re只有精品| 亚洲交性| 无码av永久免费专区网站| 激情99| 99啪啪视频| 99re在线视频这里只有精品| AⅤ片水多多| 欧美一区二区三区日韩| 熟啊v色欧美热| 日韩欧视频| 亚洲一区二区三区中文字幕| 男人天堂久久精品| 国产午夜精品一区二区三区牛牛| 密乳AV免费观看| 色婷婷久久| 久久偷偷色综合蜜桃| 午夜性生活av免费在线看| 欧美国产日韩高清在线| 伊人亚洲国产一成人久久精品,久久| 欧美在线啊啊啊 | 精品一区二区三区最新| 中国和日本人色哪个不下载能放| 日韩乱伦AⅤ| 麻豆国产原创AV色哟哟 | 无码在线亚洲| 骚女高跟AV在线| 国内精品嫩模A∨私拍小视频| 91一起操| 992大香蕉| 一级啊性爱在线视频| 日韩99神马视频播放| 一区AV| 亚洲天堂综合AV| 亚欧美综合网。| 国产极品99热在线播放69| 久久综合中文国产| 东京热视频网| 97色视频在线| 国产又色又粗又黄又爽| 欧美78| 中文字幕国产| 9久久9综合| 中文字幕人妻资源在线| 夜夜高潮夜夜爽高清视频一 | 欧美亚洲韩国视频十五区| 成人a大片在线观看| 免费?级毛片无码?∨蜜芽试看| 亚洲有薄码区日本系列中文字幕| 免费人成毛片乱码| 一区二区三区国产精产| 日韩av在线精品观看| 国产又大又粗又长视频在线| 飘花国产午夜精品不卡| 日韩av色图| 午夜欧美女人操逼| 四虎影视国产精品| 殴美牲| 亚洲精品国产精品成人| 伊人久久大香蕉线AV五月天| 亚洲AV操| 久久久免费高清中文视频| 艹我哪美一区无码| 欧美精品成人一区二区在线观看| 国产精品91ai| 日本性爱不卡视频| 欧美亚洲特P| 免费一级欧美片片线观看| 久久精品28| 丁香五月天婷婷姐| 成人性爱视频在线看| www网站黄| 日本裸体久久色噜噜| 亚洲av性爱电影| 超硑97精品| 精品国产丝袜一区二区三区乱码| 日日摸日日弄日日拍| 很很干很很操| 日本东京热加勒比久久| rivers-china.com| 一本一道人妻久久一区二区三区 | 色盈盈影院| aaa亚无码专区| 中文字幕综合人妻| 中文自拍欧美影视| 午夜超碰| 蜜桃臀一区二区三区久久| 中文字幕永久在线| 中文字幕国产| 亚洲加勒比| 亚洲性图91| 你操综合| 亚洲操人| 内射老妇BBWX0C0CK| 亚洲玖玖爱| 欧美综合第一| 亚洲无码99| 91午夜无码| 亚洲欧美黄| 后入福利| 东北老女人的激情视频| 亚洲天堂性爱| **一级毛片国产| 国产精品嫩草影院午夜两性| 美女啊啊啊啊啊| 加勒比海成人视频网| 黄色大片一区二区密桃丝袜| 人人操人人操草草| 国产午夜精品理论片a大结局| 变态另类专区| 人妻熟妇久草在线| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 日韩图色| 精品人妻一区春色| 亚洲天堂另类美腿| 久久久久久人妻| 牛牛aV| av影片在线观看不卡| 精品国产乱码久久久久久免费| 98精品国产乱码久久久久久| 国产日本久久免费精品| 亚洲色色探花| 最新三级网址| 高潮毛片无遮挡高清免费| 狠狠操狠狠操操| 九九九九精品九九九九| 超碰美女97| 4tube欧美女厕所| 久操视频在线| 啊啊啊啊好疼视频| 人妻熟女一区二区三区在线| 国产盗摄美女如厕大神作品在线观看 | 中文区中文字幕免费看| 中文字幕1区2区| 男人天堂毛片| 亚州精品人妻一二三区| 久久大香蕉97| 天天干嫩逼网| 亚洲精品97久久| 91春色| 国产午夜精品在线观看| 干超碰碰熟女| 日韩免费一级性爱视频| 欧美另类自拍 | 欧美成va视频网站| 日日操免费视频| 欧美性爱综合,免费| 日本色色色网站免费看不卡| 伊人网免费视频| 眼镜人妻101.com| 无码高清操逼网址| 操操逼操操逼操操逼逼| 伊人久操| 国产精品视频精品一二| 色久综合| 国产精品亚洲四五区在线观看| 草b在线| 国产精品高潮久久AV| AV中文字幕剧情1区2区3| 国产视频小说| 变态综合色| 欧美片第一页| 人人人人插| 欧美中出1| 九色 人妻 大香蕉| 性性久久| 久久成人东京热人妻| 欧美天天弄| 亚洲精品性爱片| 国产中文字幕曰本毛片| 天天综合,91综合永久| 亚洲综合在线高清| 精品一区二区三区四区外站| 九九热精品视频六| 强奸抽插av| 日本丝袜人妻内射| 天天综合精品| 美女干逼2| 亚洲性天堂| 国产亚洲精品A在线观看下载| 久草网站免费在线观看| 亚洲精品色| 久久神马影院| 天天干嫩逼网| 夜夜天天噜狠狠爱2021| 狠狠色婷婷7777久| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 国产SV一线| 欧美丰满少妇交换91欧美精品| 人妻铁牛TV| 国模无码一区二区三区在线| 久操高青| 综合大香蕉美。| 欧美性第一页| 国产强奸超碰AV| AV高清一区| 777超碰| 亚洲成人日韩小说| 性感女人网页在线观看视频| 97久久综合网| 国产乱伦性爱区| 天天色悠悠激情| 一区二区三区四区五区久久久久久| 一区二区三区免费视频入口| 国产成人自拍视频在线| 加勒比AV网| 亚洲三级网址久久最新| 青青草在线视频美女| 亚洲国产剧情少妇激情| 综合色啪| 亚洲熟久久| 久久久人妻| 国产偷拍自拍在线视频| 五月婷婷激情综合| 免费99精品国产自在在线| 欧美性爽xyxOOOO| 色99视频| 97久久天天综合色天天综合色电影| 在线综合网| 1024人妻| 少妇九九九九| 99性爱在线观看| 先锋精品av色鲁| 九九免费影片| 在线v中文字幕一区二区三区| 久久精品老司| 搡老熟女免费视频| 搡老女人老妇女老妇老熟女怎么读| 91精品导航| 偷窥自拍A片| 亚洲自拍青操视频| 92人人操人人| 97久久超碰亚洲| 美国aaaaa一级黄片| 婷婷久草| 久久久久久精品免费看A级| 嫩草影院永久在线制服丝袜| 日韩av不卡在线看| 国产久久一区二区| 黑人嘿嘿嘿超爽免费视频| 少妇人妻精品| 精品国产丝袜一区二区三区乱码| 午夜精品久久999热蜜桃介男人用| 日本操逼视频在线| 久久久国产精品人妻丝袜| 人人看人人插| 九九九九免费高| 精品国产91av一区二区三区 | 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 九九夜精品九九在线| 三级日本一区二区三区| 99re这里只有精品3| 久久狠狠色噜噜狠狠狠狠97| 求求你操操我| 色情乱伦AV| 亚洲少妇免费视频\| 婷婷操逼| 亚洲欧美高清无码| 精品一国2| 最新啪啪视频| 国产女人视频三四五区| 久久夜嗨| 五月天婷婷在线看| 99热大香蕉伊在线| 激情综合五月| 激情黄色片在线观看| 亚洲 欧美 小说| 伊人久操| 国产精品com| 久色99999| 九九综合久久| 97久久精品| 欧美日韩国产人人| 免费一级欧美片片线观看| 欧美牲| 天天操人人操骚逼网站| 久久久爆乳翘臀一线天伦理视频| 国产精品久久久久久久久久久久| 老汉网| 狠狠综合网| 免费的黄片有限公司| 久久久久久久久久久久九| 加勒比大香蕉视频在线| 尤物黄色在线观看网站| 亚洲中文字幕久久无码精品| 一区二区三区日韩欧美| 日本亚洲熟女视频| 男女做爰猛烈动高潮A片免费应用| 好屌色综合| 五月激情综合网| 久久精品毛片免费不卡| 亚洲欧美首页| 欧美大片天天看| 国产精品青青草| 亚洲一区二区精品福利| 亚洲丝袜诱惑| 亚洲久草AV色图| 91色噜噜狠狠| 人妻激情偷乱视频一区二区三区 | 免费自拍三级综合| 欧美熟妇精品黑人巨大91| 久久久久久9999| 欧美日韩高潮喷水91| 大黄片做爱的大的| 97精品视频| 在线天堂资源亚洲| 毛片视频白嫩| 蜜桃无码AV一区二区| 99国产在线 精品 视频| 日韩免费中文字幕视频| 蜜臀99久久精品| 日韩不卡网操逼中文字幕日韩| 清清一区二区三区四区不卡视频| 亚洲第一无码播放立川理惠| 乱伦熟女论坛| 欧美色青| 四虎在线视频| 国产2.3.4区| 99只有精品| 久草婷婷| 国产农村妇女精品1区二区| 先锋精品av色鲁| 在线观看av区| 亞洲久久直播| 免费看黄视频亚洲网站| 久久一二三四| 99re黄| 视频二区美腿制服人妻欧美| 尤物视频新赏网鲜网色诱网| 激情久久av一区av二区av| 美女尤物人人操| 亚洲成人免费中文字幕| 亚洲欧洲日韩天堂av| 天天草天天日| 秋霞Av理论一级在线| 亚洲天天在线| 一级黄色性爱裸体视频| 色欧洲| 国产剧情在线| 亚洲天堂男人天堂| 日韩欧美性爱电影在线观看| 亚洲国产97| 91美女视频在线观看| 蜜臀久久99精品久久久久久无删减 | 无码精品久久| 亚洲国产欧美另类自拍| 亚洲国产欧美一区二区潘金莲| 在线播放成人高清免费视频| 欧美Ⅴ性爱| 欧美中文字幕日韩在线| 香蕉热人人精品| 韩国一级AAA| 一线黄色免费性爱片| 国产亚洲精品av一区| 午夜精品久久久久久久99蜜桃一| 亚欧Av| 久久xx| 91蜜臀在线久久久久| 国产成人AV麻豆| 亚洲色图 综合| 日本天天干天天日一区| 中文字幕十五区| av情色影音| 国产美脚女优尤物在线观看| 和协无码影院| 大香蕉青青9| 欧中美三级一区二区三区| 亚洲欧美色图片| 人人人干干人人干| 日韩精品免费高清视频在线| 无码少妇精品一区二区60岁老人| 五月色综合| 亚洲美女精品| 亚洲诱惑天堂 | 制服丝袜第二页| 日本九九久久99播| 久操视频免费观看| 酒色综合网| 国产一区在线观看无码AV| 久久精品国产72国产精品福利| 天天爽人人综合免费7799| 操穴国产| 久久亚洲日韩国产欧| 国产精品香蕉| 日本狂喷奶水在线播放212| 妺妺跟我一起洗澡没忍住| 久久女人视频| 爱丝福利| 91色图| 爱媛媛久久国产福利| 北京专精特新企业招聘信息| 久久久成人精品| 亚洲色婷婷综合久久久久中文| 色哟哟 日韩精品| 亚欧性爱在线无码| 美女的肌被草喷水视频| 97色色色综合网站| 黑人精品欧美一区二区蜜桃| 国产黄色视频久久| 99精品久久| 伊人伊人LD| 午夜九九九九九九| 亚洲αv一区二区三区| 麻豆 欧美 日韩| 好爽要喷了| 粉嫩av平台| 色婷婷电影网| 狠狠做深爱婷婷久久二区| 欧美天天性| 欧美人妻少妇| 国产精品无码AV网站| 一区二区 电影 亚洲| 久久激情婷婷| 国产动漫操逼视频| 亚州精品丝袜-不卡成人免费| 天天肏夜夜肏| 嫩草一区二区在线观看| 亚洲精品天天影视综合网| 啊啊啊操死我了| 激情无码日韩| 亚洲欧洲精品成人| 亚洲欧美999| 激情综合亚洲| 亚洲综合夜色| 在线岛| 91色综合激情| 日韩欧美日韩| 婷婷色播婷婷| 97超碰影音| 操逼1区| 二三四区精品| 免费一级精品啪啪视频| 91在线页| 香蕉99秘 一区精品蜜桃臀| 中文字幕 国产区| 久欲AV| 国产亚洲精品美女久久久| 嗯嗯嗯嗯啊啊啊好紧好大| 91综合天天看| 中文字幕丝袜国产第一页不卡| 麻豆久久久久久久久丝袜 | 天天弄欧美| 亚洲欧美日韩制服另类| 久久精品视频久久久| 欧亚日韩中文在线| 理论久久婷婷网 8| 天天爱天天操| 欧美图片偷拍| 日本道不卡| 日韩熟女精品无码专区一区二区| 玖玖久久久| 麻豆天美国美国产AV| 91亚洲网| 欧美成不卡网| 亚洲无码超碰免费| 欧美综合色站| 涩涩涩综合| 免费超碰97久久| 国产精品自在线发布| 中精品一区二区三区| 亚洲乱码国产乱码精网站| 欧亚韩国999| 日本3级一区二区免费| 人妻第一页| 夜夜草天天| 天美传媒AV国产在线| 操高情无码| 91免费看中出视频| 亚洲色图91欧美日韩| 91亚洲欧美| 成人热久久精品| 国语av最新自产拍在线观看| 69视频入口| 中文字幕午夜精品久久久| 在线观看日韩av不卡| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 亚洲国成人情色好看电影| 国产Av超碰| 99热国产| 夜夜嗨AV一区天天| 久久久天堂| 91N五十路| 国产高清26uuu| 黑人性欧美| 67194无码不卡| 亚洲欧洲日韩天堂av| 大香蕉日韩欧美| 国产精品一区二区在钱播放| 操逼天美3区| 久久有码视频| 大鸡吧尹人在线| 黄片免费久久久久久久| 97美日韩视频| 国产乱弄免费在线视频。| 国产 v乱码一区二| 热热色91| 好舒服视频| 欧美综合站| 黄色电影观看久久9| 狠狠爱夜夜| 国产精品亚洲四五区在线观看| 一类无码操逼视频| 少妇99| 天天干天天插| 一级AV性爱| 久久这里只精品| 自拍欧美| julia高潮后不停追击中出| 亚洲欧洲综合成人av一区| 天美传媒精品久久视频| 天天综合网在线| 91碰碰碰| 日本操嫩b网| 天天上日日上日韩精品| 自拍亚洲综合| 国产精品久久发布| 亚洲啪啪性视频| 蜜乳Av成人片网站| 青草精品视频日本久久久久网站在线| 成人女人国产| 色欧美天天| 99热这里只有精品地址| 九九热免费国产视频婷婷伊人五月 | 久草看看看| 日本中文字幕一区| 99国产精品人妻人伦| 性爱1区| 人人操人人搞人人草| 中国AAAAAA黄色片| 天天影视亚洲| 夜夜做夜夜爽精品视频| 啊啊啊好舒服好爽啊啊啊视频| 天天日天天插| 亚洲午夜av| 美女极品一区二区三区| 久久丝袜| 欧美日韩亚洲少妇寂寞影院正在播放 | 黄片免费久久久久久久| AV一起草在线| 久久久久亚洲Av无码专区老牛影视| 亚洲素人综合| 欧美最大综合网| 超碰在线97国产| 色诱中文字幕| 天天淫人人妻日日色| 国产玖玖| 丁香激情五月天| 激情AV| 亚欧Av| 全球成人中文在线| 中文字幕成人理论在线| 乱论91| 中文字幕中文字幕一区二区| 久久久久人妻二区精品叶可怜| 亚洲色人| 男人天堂网站| 看全色黄大色大片免费视频| 精品欧美乱码久| 97在线免费看视频| 日韩精品大香蕉伊人在线| 亚洲成人色情五月天丁香花| 欧美 日韩 另类 亚洲| 久久综合女优| 久草在| 日日夜夜模| 在线亚洲精品久久久| 亚洲人91| 国产乱青青草久久| 日本精品九九九| 丝袜视频网国产90| 久久老熟女| 国产精品午夜福利| 99re视频在线播放青草| 色五月av| 很很操在线| 人人操人人操人人人操| 黄色一区二区秘书性感| www.大香| 蜜桃无码AV一区二区| 中文字幕成人| 91原创在线观看| 综合日韩激情另类图片| 大香蕉在线视频重口味毛片在线| 亚洲狼狼干综合1| 色哟哟av网址| 亚洲一区二区中文字幕| 东北操逼| 青青草好吊| 激情文学小说一区二区 | 亚洲综合成人网| 激情五月天色播| 伊人青青一区成人视频在线观看区| 亚洲91av| 熟女高潮合集-永久久久-成人AV | 无毛精品| 97在线视频观看免费| 欧美性爱一区二区三区| 91中出| 欧美性爱免费短视频| 欧美精品自慰系列寂寞少妇| 亚洲少妇喷视频看| 97欧美精品综合| 69丨亚洲丨精品丨入口免费播放| 亚洲欧美综合网| 久久久精品| 日韩不卡毛片Av免费高清| 九九热精品| 日夜干射色啊| 日韩大香蕉AV影片| 日韩无码精品综合久久| 欧美黄色手机在线观看| 成人八戒网站| 混色激情av|