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

ARTICLE DETAIL

資訊詳情

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

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

SpringBoot+ECharts構(gòu)建CRM客戶管理系統(tǒng):從SSH遷移到報表可視化全復(fù)盤 接手過老式j(luò)spservlet項目的人應(yīng)該都有同感一個客戶關(guān)系管理系統(tǒng)看著不復(fù)雜真動起手來卻發(fā)現(xià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項目的朋友一個可參考的藍(lán)本。整個項目不是簡單套個增刪改查框架而是要把銷售日常真正用起來。下面我按項目的實際推進順序來拆解從業(yè)務(wù)設(shè)計、技術(shù)選型到模塊實現(xiàn)、數(shù)據(jù)庫優(yōu)化再到部署排查每一塊都會講清楚為什么這么選、怎么做以及實踐里容易翻車的位置。1. CRM項目的業(yè)務(wù)拆解與技術(shù)選型邏輯1.1 業(yè)務(wù)需求拆解不要把CRM做成一個客戶列表很多團隊一提CRM第一反應(yīng)就是把客戶信息表格化做幾個頁面能增刪改查再導(dǎo)個Excel就算完事。這種系統(tǒng)上線以后大概率沒人用因為它只解決了“記錄”問題沒有解決“推進”問題。一個能給銷售帶來真實幫助的CRM至少要包含三條業(yè)務(wù)主線客戶資料沉淀客戶基本信息、所屬行業(yè)、客戶分級、來源渠道、下次跟進時間。重點不是字段多而是要讓銷售一打開客戶詳情就能判斷“這個人值不值得繼續(xù)投入精力”。商機階段推進從初步接觸到需求確認(rèn)、方案報價、商務(wù)談判、贏單/輸單。每個階段要有狀態(tài)字段、預(yù)計成交金額、預(yù)計成交日期這樣銷售管理層才能從數(shù)據(jù)里看出哪些單子有風(fēng)險。跟進過程留痕誰在什么時候通過什么方式電話、拜訪、微信跟進過哪個客戶聊了什么下一步計劃是什么。這部分最容易被忽視但恰恰是后續(xù)復(fù)盤客戶流失原因的關(guān)鍵。除此之外老板關(guān)心的報表也不能省每個銷售的量、成交率、漏斗轉(zhuǎn)化率、月度回款趨勢這些數(shù)據(jù)如果全靠人工匯總Excel系統(tǒng)就失去了意義。我當(dāng)時設(shè)計的時候把業(yè)務(wù)模塊拆成了五張核心主表外加日志、部門、用戶表整體上采用一個“客戶-聯(lián)系人-商機-跟進”的一對多樹形結(jié)構(gòu)。數(shù)據(jù)模型理順之后后面的代碼才是水到渠成的事否則一邊寫代碼一邊改表結(jié)構(gòu)返工成本非常大。1.2 技術(shù)選型SpringBootFreeMarkerLayui這套老牌組合為什么還值得用技術(shù)選型上我仔細(xì)考慮過要不要上前后端分離最后放棄VueSpringBoot的組合選回了FreeMarkerLayui。原因很簡單團隊規(guī)模不大沒有專職前端銷售系統(tǒng)又強依賴服務(wù)端渲染的快速迭代能力。SpringBoot負(fù)責(zé)整體框架這一點沒有懸念它對Spring生態(tài)的整合幾乎零配置內(nèi)嵌Tomcat讓開發(fā)環(huán)境不用再單獨裝服務(wù)器。選FreeMarker而不是JSP核心是JSP在SpringBoot里支持得比較別扭特別是jar包部署時JSP的編譯和訪問總會出現(xiàn)莫名其妙的404而FreeMarker天然適合模板渲染語法干凈對Java對象直接訪問屬性前端同事配合起來阻力也小。Layui在這個項目里是作為后臺管理UI使用的。它基于jQuery組件成熟表格、表單、彈層、分頁都有現(xiàn)成封裝?,F(xiàn)在前端框架五花八門但企業(yè)后臺系統(tǒng)的場景下Layui這種“不需要node環(huán)境、不折騰構(gòu)建工具”的方案依然很能打一套JS文件引入即可用特別適合服務(wù)端渲染架構(gòu)。ECharts的定位是數(shù)據(jù)可視化。CRM里面最常見的圖表是漏斗圖商機階段轉(zhuǎn)化和折線圖業(yè)績趨勢ECharts對這類場景支持特別完善配置項直觀圖表交互細(xì)膩而且是完全本地化的開源項目沒有外網(wǎng)依賴。MySQL負(fù)責(zé)所有業(yè)務(wù)數(shù)據(jù)落地Maven負(fù)責(zé)依賴管理和構(gòu)建。這套組合最適合的是中小型企業(yè)內(nèi)部管理系統(tǒng)人力有限、上線周期短、不需要過度設(shè)計又能保證代碼結(jié)構(gòu)清晰、后續(xù)可維護。2. 工程初始化與SpringBoot核心配置2.1 Maven工程結(jié)構(gòu)設(shè)計與POM依賴管理項目剛?cè)胧值谝徊绞莿?chuàng)建Maven工程。這里我不建議一上來就搞微服務(wù)多模塊拆分CRM這種體量一個spring-boot-maven-plugin打出的可執(zhí)行jar包就能搞定所有功能多模塊只會增加維護成本。我在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因為3.0開始強制JDK17而且很多舊版三方組件兼容性踩坑嚴(yán)重很多小團隊生產(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計算工作量不大但容易疏忽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)定性重點看這幾項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這里有幾個我踩過的大坑單獨說。數(shù)據(jù)庫URL里的useSSLfalse一定要加上否則高版本MySQL驅(qū)動默認(rèn)開啟SSL握手碰到自簽名證書會直接報錯明明賬號密碼對卻連不上庫。serverTimezone務(wù)必指定我一開始漏了啟動報“The server time zone value”的錯加上Asia/Shanghai才消停。allowPublicKeyRetrievaltrue這個參數(shù)很多新項目會碰到特別是用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因為templates目錄默認(rèn)不對外暴露靜態(tài)資源必須走static。我習(xí)慣把公共布局抽成獨立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è)計與實現(xiàn)3.1 登錄認(rèn)證、用戶權(quán)限與Session管理登錄認(rèn)證這塊我選的是比較傳統(tǒng)的Session方案SessionId種在Cookie里攔截器統(tǒng)一校驗沒有引入JWT。原因很實際CRM的用戶量不大幾十到幾百人Session方案夠用且實現(xiàn)簡單JWT解決的是無狀態(tài)和跨域問題但會帶來會話失效不好控制、密鑰管理復(fù)雜的問題對內(nèi)部系統(tǒng)反而增加負(fù)擔(dān)。密碼存儲一定不能明文我用的方案是MD5加鹽鹽值固定一串隨機字符串注冊時加密入庫登錄時用同樣算法加密比對。MD5現(xiàn)在不是最安全的但對內(nèi)部系統(tǒng)足夠如果安全要求更高可以替換成BCrypt做法類似。攔截器實現(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)識這些輕量信息千萬別把整個用戶對象塞進去用戶表字段一多Session會膨脹而且用戶資料更新后舊的Session數(shù)據(jù)不會自動同步容易造成權(quán)限判斷陳舊。3.2 客戶列表、分頁搜索與多條件查詢的實現(xiàn)套路客戶列表是CRM系統(tǒng)信息密度最高的頁面。我實現(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)鍵點在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 商機階段流轉(zhuǎn)與跟進記錄的落地方案商機是銷售漏斗的數(shù)據(jù)基礎(chǔ)設(shè)計上它必須掛在客戶之下又有獨立的階段狀態(tài)。我在數(shù)據(jù)庫表里設(shè)計了幾個關(guān)鍵字段stage階段、amount預(yù)計金額、expect_deal_date預(yù)計成交日期、probability贏單概率。階段用數(shù)字編碼1到6分別對應(yīng)初次接觸、需求確認(rèn)、方案報價、商務(wù)談判、贏單、輸單這個枚舉放在代碼里統(tǒng)一管理避免前后端各維護一份。頁面上的商機看板按階段分列展示每一列是一個Kanban卡片。實現(xiàn)上不需要特復(fù)雜的技術(shù)后端按階段分組查詢前端用Layui的柵格布局排開拖拽流轉(zhuǎn)我用的是前端form select切換階段提交后由后端更新stage和probability。狀態(tài)流轉(zhuǎn)這里一定要做校驗比如從“初次接觸”跳轉(zhuǎn)到“贏單”就不合理我加了一個簡單的階段順序校驗攔截器保證數(shù)據(jù)邏輯完整。跟進記錄做成時間線樣式與客戶詳情頁并列展示。每次跟進的類型、內(nèi)容、下次跟進時間、創(chuàng)建人都要記錄。代碼里就是一張follow_up表的多表插入關(guān)鍵點是插入后要更新customer表的next_contact_time字段否則銷售永遠(yuǎn)不知道自己下一次該聯(lián)系誰。這個聯(lián)動我一開始沒做后續(xù)跑了一段時間數(shù)據(jù)后發(fā)現(xiàn)很多沒有下次跟進時間的客戶躺在列表里銷售根本想不起來還有這些待辦這就是典型的數(shù)據(jù)孤島問題。3.4 ECharts報表模塊從SQL聚合到前端可視化的完整鏈路報表模塊是這個系統(tǒng)里最出效果的部分。我做了三個核心圖表月度業(yè)績趨勢折線圖、銷售個人業(yè)績排行柱狀圖、商機階段漏斗圖。后端接口不做模板渲染而是返回JSON數(shù)據(jù)。比如漏斗圖接口按商機表里的stage分組統(tǒng)計數(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實例如果已經(jīng)渲染過一次第二次setOption時舊數(shù)據(jù)不會自動清掉。我在漏斗圖上調(diào)了好久發(fā)現(xiàn)切換時間范圍后柱子高度對不上因為新舊數(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è)了固定高度實測500px左右比較合適。4. 數(shù)據(jù)庫表結(jié)構(gòu)與性能優(yōu)化實戰(zhàn)4.1 CRM核心表結(jié)構(gòu)設(shè)計思路數(shù)據(jù)庫設(shè)計是整個系統(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 下次跟進時間, 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;商機表、跟進表在結(jié)構(gòu)上類似都會冗余一個customer_id外鍵和多一個del_flag邏輯刪除標(biāo)記。用邏輯刪除而不是物理刪除對銷售數(shù)據(jù)尤其重要客戶雖然可能被標(biāo)為無效但歷史數(shù)據(jù)還需要追溯分析真從庫里刪掉后續(xù)做統(tǒng)計就斷層了。所有表的主鍵用BIGINT自增字符集用utf8mb4而不是utf8原因是utf8在MySQL里最多3個字節(jié)存不了emoji和生僻字。銷售填客戶備注的時候可能帶個表情符號如果是utf8會直接報錯?;A(chǔ)的表結(jié)構(gòu)設(shè)計不想多說但這兩個坑我見到太多人踩過了。4.2 最容易出問題的SQL與索引優(yōu)化CRM系統(tǒng)的查詢模式相對固定優(yōu)化重點就在幾個高頻列表頁。我最常做的優(yōu)化是給外鍵和查詢條件字段建索引像customer表的owner_id、next_contact_time都加了索引。模糊搜索要特別注意。LIKE ‘%關(guān)鍵詞%’這種寫法會導(dǎo)致索引失效全表掃描??蛻袅繘]上十幾萬的時候問題不大但數(shù)據(jù)一旦膨脹一個不帶條件的列表查詢能把數(shù)據(jù)庫CPU打滿。折中的辦法是如果確實需要模糊搜索把范圍限定在20萬行以內(nèi)強制走索引更合理的方案是引入專門的全文索引但小項目我一般建議保持簡單先把高頻搜索條件做成下拉選擇減少模糊匹配的觸發(fā)頻率。另一個大坑是深分頁。銷售使用系統(tǒng)半年后客戶表可能幾十萬行翻到第1000頁時limit 9000,10會導(dǎo)致MySQL掃描前9000行后丟棄特別浪費I/O。我用它替換成基于最大主鍵的查詢方式SELECT * FROM customer WHERE id #{lastId} ORDER BY id ASC LIMIT 10這種“上一頁最后一條記錄的ID”游標(biāo)分頁方式在數(shù)據(jù)量大時性能提升非常明顯頁面交互改成“加載更多”而不是跳頁。對CRM這種業(yè)務(wù)用戶真的需要看到很深的分頁嗎我實測下來幾乎沒人會翻到第100頁之后。所以游標(biāo)分頁完全夠用還有利于前端做無限滾動。4.3 連接池配置、事務(wù)控制與數(shù)據(jù)一致性問題CRM業(yè)務(wù)里涉及多表聯(lián)動的場景很多比如新增跟進記錄的同時要更新客戶的下次跟進時間這兩條SQL必須在一個事務(wù)里否則就會出現(xiàn)“記錄了跟進但客戶的待辦時間沒變”這種不一致問題。SpringBoot里最簡單的方式就是給Service方法加Transactional注解默認(rèn)遇到RuntimeException就回滾。我項目里統(tǒng)一定義了業(yè)務(wù)異常繼承RuntimeException這樣事務(wù)在業(yè)務(wù)校驗失敗時也能正確回滾。連接池這塊我用的Druid除了作為連接池它的監(jiān)控頁面還能看到慢SQL統(tǒng)計對排查性能問題極有幫助。在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引擎下基本沒問題。需要注意的一點是長事務(wù)要避免如果一個事務(wù)里做了大量查詢或者分批插入會持有持鎖時間過長并發(fā)一高就容易死鎖。我的習(xí)慣是事務(wù)只包裹必要的寫操作查詢邏輯放在事務(wù)方法外面完成。5. 打包部署與生產(chǎn)環(huán)境問題排查5.1 Maven多環(huán)境打包與可執(zhí)行jar部署開發(fā)完成之后就是構(gòu)建部署。SpringBoot項目用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。我實際部署時沒用Docker直接在服務(wù)器上跑jar啟動命令是nohup java -jar crm-system.jar --spring.profiles.activeprod /data/logs/crm.log 21 這里有兩個容易忽略的點一是nohup一定要配合使用不然SSH斷開后進程就沒了二是日志重定向最好落到獨立文件方便出問題時用grep定位異常。生產(chǎn)環(huán)境我建議在啟動參數(shù)里增加-Xms和-Xmx把堆內(nèi)存上下限定成一樣避免JVM動態(tài)擴容引起性能波動比如-Xms512m -Xmx512mCRM這種中小系統(tǒng)給512M到1G完全夠了。5.2 從開發(fā)到上線的高頻報錯速查表我整理了這份項目里遇到的高頻問題列表按現(xiàn)象、原因、解決辦法三列對查報錯現(xiàn)象根本原因解決辦法MySQL連接時報SSL connection error高版本驅(qū)動默認(rèn)開啟SSLURL后加useSSLfalsePublic Key Retrieval is not allowedMySQL8新認(rèn)證機制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配置阿里云鏡像表里這些坑有好幾個都是我實際踩過的。最典型的是部署到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í)行一遍建表腳本漏一個索引后面補起來相當(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. 項目實操心得與后續(xù)擴展方向6.1 復(fù)盤這次CRM改造里最值得說的幾個教訓(xùn)整個項目做完我復(fù)盤了一遍有幾個點值得單獨提醒。第一個是關(guān)于Session存儲。一開始我把用戶對象全部放進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ù)一刷新就顯示混亂。我后來做了一個公共封裝每次繪制圖表前都強制清空舊實例。6.2 CRM系統(tǒng)可以持續(xù)演進的幾個方向核心功能落地后我整理了目前沒做但值得擴展的方向給有同樣需求的朋友一個參考導(dǎo)出Excel銷售經(jīng)常要把客戶名單導(dǎo)出給領(lǐng)導(dǎo)看我用Apache POI解決了這個問題模板導(dǎo)出客戶列表、商機報表按照標(biāo)題里提到的“java poi word能生成圖表嗎”這個思路擴展數(shù)據(jù)還可以導(dǎo)出為帶圖表的Word文檔。自動提醒每個銷售登錄后能看到今天需要跟進的客戶列表靠cron定時任務(wù)掃描next_contact_time把過期未跟進的客戶推送到首頁待辦。WebSocket消息通知客戶被分配、商機階段變化時給相關(guān)銷售實時推送消息比刷新頁面體驗好很多。數(shù)據(jù)大屏把ECharts的報表做成一整塊大屏頁面投到銷售辦公室電視上實時展示整體業(yè)績和漏斗轉(zhuǎn)化這對管理層的直觀沖擊力很強。多租戶隔離如果以后要給不同分公司獨立使用可以在所有業(yè)務(wù)表加一個org_id字段實現(xiàn)數(shù)據(jù)隔離而不用重新設(shè)計表結(jié)構(gòu)。我在實際使用這套系統(tǒng)的過程中最深的感受是技術(shù)的復(fù)雜度永遠(yuǎn)是第二位的業(yè)務(wù)模型是不是貼合銷售真實工作流才是CRM能不能活下去的核心。SpringBoot、ECharts、MySQL這些都是隨手就能上手的工具難的是把“客戶、商機、跟進”這條鏈路理解透再把它們穩(wěn)妥地落到代碼和表結(jié)構(gòu)里。希望這篇復(fù)盤能幫你在自己的項目里少走幾條彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香六月婷婷在线| 日韩人妻操逼视频| 夜夜骑夜夜操| 国产欧美日韩性爱| 色爆五月| 99视频只有精品| 91主播在线| 这里只有精品视频在线看| 色视五月天婷婷| 久久综合人妻| 人妻中文字幕网| 综合网网欲色| 五月天激情综合网俺也去| www.五月丁香| 综合激情五月四射婷婷| 久热精彩视频98| www.日本久久videos| xx久久| 全高清无码视頻| 丁香9月婷婷| 亚洲操b| 金品在线视频99| www.minyis.com【JT】实力收量可预付QQ2101460746 | 婷婷五月天丁香社区| 九色91美女| 国产成人+综合亚洲+天堂| 五月色在线| a久久| 久久久久久久11111111111| 成人va在线观看视频| 69超碰在线| 色五月激情五月天| 99高级会所久久| ..真实国产乱子伦毛片| 亚洲成人综合在线| 中文av网| 色婷婷a三区麻| 色开心五月婷婷丁香HD| 亚洲V国产V欧美V久久久久久| 五月丁香另类网| 人人操人人干AV| 亚洲天天操| 99热这里只有免费| 五月天小说激情| 伊人综合婷婷| 精品成人a v无码内射| 五月婷婷九九久久| 好叼操在线观看| 激情综合国产| 欧美黄色AA片哗啦啦啦| 天天操,夜夜骑| 国产亚洲色婷婷久久99精品91| 婷婷五月天影院| 婷婷夜夜操| 丁香五月激情六月欧亚激情综合导航| 99熟女啪啪视频| 欧美性做爰大片免费看办公室| 情婷婷五月天| 五月丁香激情婷婷综合| 六月婷五月丁香| 久久五月网| 蜜乳久AV| 淫五月停停| 99久久6| 九九九九九九九热| 日日撸天天干| 夜夜爽日日躁| 九九热99精品在线| 丁香六月毛片| 思思精品久久艹| 九九热这里只有精品首页| 五月丁香久久丝袜啪啪| 婷婷五月天天激情| 99玖玖视频| 少妇搡BBBB搡BBB搡毛茸茸| 97人人草| 色五月人妻| 思思热视频在线| 五月丁香啪啪综合网| 五月天婷婷在线播放| 日韩十国产极品久久| 久久66er久久| 五月婷婷亚洲综合网| 999婷婷综合| 丁香影院五月综合| 久久久久久久久久久月丁| 99久久高清视频| 欧美色男人网站| 婷婷中文字幕| 久久婷婷六月综合国际| 色婷婷最新域名 | 日本久久爽| av一区二区电影免费在线观看| 国产成人精品亚洲线观看| 99久久婷婷国产综合| 日本三级黄色大片| 婷婷激情综合网| 五月婷婷AV| 99久久久免费| 五月天色婷婷综合| 亚洲在线免费成人| 婷婷五月丁香色综合| 五月婷婷色白丝| 激情五月婷婷丁香综合网| 国产成人精品123区免费视频| 久久久月丁香| 啄木鸟黑丝一区二区| 99热欧| www色婷婷久久综合久色 | 亚洲午夜电影| 亚洲一个色| 青青热视频| 超碰在线91| 色五月激情视频在线综合| 婷婷6月综合网| 色五月丁香总合网| 五月亭亭网成人在线视频| 97色色视频| 天天干天天做| 疯狂做受XXXX高潮A片动画| 久久精彩视频| 久久超视频| 五月婷婷99热| 97色射| 99精品国产在热久久| 久久婷婷五月天丁香| 东北熟女视频99| 97性高潮久久久| 欧美久久网| 九九视频免费| 天天干天干| 9月色婷婷| 这里只有精品1| 97操操网| 婷婷综合久久| 亚洲激情综合| 日本操B视频在线观看| 久操大屁股女人av| 激情久久天天| 九九色婷婷| 亚洲A片成人无码久久精品青桔 | 五月丁香久人妻中文| 五月婷婷成人网首页| 欧美成人A片AAA片在线播放| 伊人综合网站| 97人妻碰碰中文无码久热丝袜| 狠色狠色狠色狠色狠色网| 色播五月婷婷| 99色色色色| 婷婷婷婷婷开心无码播放| 91九色国产| 久久99国产综合精品免费| 亚洲欧洲小视频9| 丁香五月综合| 丁香五月社区| 91在线看片| 丁香五月婷婷六月婷婷| 色五月偷偷| 最近中文字幕2019视频1| 色老久久| 亚洲激情婷婷| 99欧美热| 天天天天做夜夜夜夜做| 99视频这里有精品| 久久与婷婷| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 久草婷妨| 色999;丁香五月| 超碰操网| 婷婷99热| 在线看片av| 日韩精品在线观看9| 婷婷四月 成人 狠狠干| 婷婷五月在线观看| 成人无码髙潮喷水A片| 日韩情色在线观看| 美英法精品无码免费视频| 九九久久精品| bbwcuckold精品熟妇| 丁香婷婷六月天| 色五月在线综合| 国产一级婬片毛片| 色99最新网址| 婷婷婷婷婷开心无码播放| www.五月天| 丁香六月婷婷久久综合| 日韩一级片| 操人无码| 丁香五月电影| 天天做天天要天天爽| 九月丁香婷婷| 久青青久| 中文字幕日产A片在线看| A一级操| 婷婷五月六月| 好吊丝aV| 五月丁香六月综合基地| 亚洲综合色成丁香五月色| ss五月天激情| 久久5 9视频免费观看| 五月丁香在线偷拍视频| 欧美日本国产| 五月婷视频| 9 大屁股在线视频精品| 婷婷五月色惰| 婷婷五月小说色综合| 五月丁香六月激情欧美综合| 热99热| 性做久久久久久久免费看| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 色色网91| 亚洲成人AV在线观看| 九九热中文| 五月婷婷五月天| 996er热| 成片免费播放| 六月丁香影院| 久久久8| 丁香婷婷社区| 亚洲色模骚货| 色噜噜夜夜夜综合网| 九九碰九九爱97超碰| 人妻射精AV| 久久精品99国产精品日本| 婷婷5月开心6月| 丁香五月激情五月色综合| 丁香五月激情在线| 五月六月丁香激情视频| 精品九九久久| 国产超碰在线| 天天干天天插| 激情网第四色| 91婷婷丁香| 国产乱子轮XXX农村| 国产色五月| 久久久久激情网| 久久久久er热| 超碰不卡在线| 五月综合激情| 日本久久婷婷| 亚洲色A| 91九色国产在线| 五月丁香六月激情综合| 99热成人精品网站| 天天干天天色天天干| 久久婷婷六月综合综合| 777影视理论片大全在线观看 | 操一区| 国产精品视频久久99| 91超级碰在线| 殴美97色| 亚洲乱码日产精品BD| 久久丁香综合| 丁香婷婷视频| 五月天激情中文字幕| 热久久色| 婷婷丁香五月天操逼| 色五月成人| 五月丁香在线观看| 99re思思精品在线观看| 婷婷五月激情四月综合| 色狠狠色| 99在线视频播放| 九九色网专区| 久久丁香综合香蕉| 国产黄大片在线观看画质优化| 狠狠色噜噜狠狠狠狠综合| 国产乱人偷精品人妻A片| 婷婷成人五月天成人文学小说| 久久五月丁香| 综合激情五月丁香| 热九九精品| 亚洲av无码精品色午夜| 狠狠狠狠青草| 五月天大香蕉AV| 被强行糟蹋的女人A片| 婷婷九月亚洲| 九九热10| 日韩欧美一级大黄网站| 色欲婷婷五月天| 婷婷播5月| 五月天激情Av| 亚洲成人电影aaaa| 天天橾日日橾夜夜橾17| 五月婷深深爱激情网| 色色自拍视频网站| 五月天色综合服务平台| 婷婷五月天成人综合网| 五月丁香另类网| 亚洲AV激情五月综合网| 五月天无码视屏播放| 噜噜噜噜婷婷五月天| 久久婷婷色色| 国外亚洲成AV人片在线观看| 色欲丁香久久| 99视频一区| 婷婷色播六月无码| 青青草蜜臀| 免费的日逼视频| 九久9精品| 久久草中文日韩欧美| 97久久五月丁香婷婷| 综合久久综合五月天婷婷| 六月婷婷色色网| 久久久91精品| 伊人网啪啪| 丁香视频| 99久久66| 色婷婷色五月综合| 性爱久久| 天天插天天插| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 婷婷色色网站| 天天久久婷婷| 日本九九视频| 综合丁香婷婷五月天| 久久se 综合网| 清纯唯美 激情四射| 电影91久久久| 七七色色综合| 亚洲va日| 26uuu亚洲欧美| 久久婷婷五月综合色丁香| 99热99热不卡| 五月天大香蕉| 天天插操| 久九色| 99热成人精品| 久久六月天| 97欧美在线| 五月婷婷丁香在线| 色九月综合| 另类视在线| 色综合色色| 国产精品第一国产精品| 五月丁香啪| 欧美大肥婆大肥BBBBB| 伊人婷婷福利网| 九月婷婷激情| 丁香花五月天| 久久亚洲婷婷| sewuyuejiqingwang| 色色色国产| 欧美在线操| 狠狠色色| 综合色网站| 亚洲天堂亚洲色色色| 亚洲性爱区无码区| www.夜夜操.com| 色逼综合网| 国产脫衣舞一区二区三区| 婷婷五月亚洲激情| 婷婷大乡焦噜噜| 欧美顶级少妇做爰HD| 99 福利 导航| 国产热精品| 超碰99热| 激情五月综合第一页| 五月丁综合在线观看| 久久亚洲无码| #NAME?| 狠狠搞五月天| 99久在线精品99re5热视频| 99精品国产在热久久| 久热黄色| 人妻在线观看视频| 天天操天天操综合| 婷婷五月情| 五月天婷婷涩涩| 色欲婷婷夜夜| 色播综合| 国产9色在线/日韩| 久热免费视频| 免费观看高清无码| 人人干Av| 久久A极片| 9l视频自拍9l九色成人| 伊人久久大香蕉网| 色天使色婷婷| 色99视频| 性爱网六月丁香| 五月婷婷九| 天天做天天爽| xx综合网| 日日干四虎| 久久视频66| 亚洲网视屏| 九月av在线| 五月丁香狠狠| 九九99热精品| 五月婷六月婷婷| 大香蕉久久青青| 99er6| 激情小说视频图片| 色色精品色| 在线日韩视频| 精品久久二6| 亚洲激情婷婷| 丁香五月天激情婷婷丁香六月| 亚洲操精品| 久热 91| 超碰日日操| 婷婷五月网图片区| 久久资源网五月婷| 五月婷婷与六月丁香图片激情| 97热这里只有精品| 婷婷综合五月天激情| 亭亭玉月丁香| 久久这里只有精品视频26| 日本欧美成人片AAAA| 丁香五月激情站| 丰满老熟妇BBBBB搡BBB| 婷婷丁香色情五月天| 丁香五月天堂亚洲社区| 第四色五月婷婷| 天堂爱啪啪| 大香蕉久久婷婷精品综合| 九九激情视频| 99热偷拍| 手机看片日日做夜夜| 中文字幕日产A片在线看| 亚洲熟妇AV综合网五月丁香伊人 | 丁香八月综合激情| 色噜噜狠狠狠狠色综合久欧美| 日本成人小说婷婷六月| 久久色午夜在线导航| 五月天激情综合网| 色婷婷五月天天天天天| 97碰碰免费.视频| 色五月第四色| 二色AV| 天天干天天插| 日本毛片内射| 久久人人妻| 五月丁香好婷婷A片网| 一区操| 人妻视频在线| 久婷婷久草| 高清 码 免费看片短视频| 婷婷午夜天| 激情五月天之五月婷婷| 天天综合久久| 亚洲情综合五月天| 久久婷婷网站| 互月天综合| 99噜噜噜| 日本强伦片中文字幕免费看| 天天综合五月天| 99色在线观看免费| 久久婷婷激情久久| 中文幕无线码中文字蜜桃| 99精品福利视频| 99婷婷| 91碰人人| 桃色五月天| 久久婷婷色五月| 丁香五月WWW| 久久婷婷色| 五月婷婷啪啪啪啪| 五月婷成人网| 中美日韩成人在线| 一区=区操屄高清大全av| 丁香六月综合激情| 综合网激情| 亚洲综合网激情五月天| 91一起操| 五月天开心婷婷激情网站 | 色五月在线观看| 丁香婷婷五月激情综合| 五月天激情网址| 成人做爰A片免费看网站找不到了| 播五月,色五月,开心五月播放器 | 色伦专区97中文字幕| 婷婷五月天综合久久| 欧美日本一区二区三区| 丁香婷婷精品视频| 97干在线视频| 99九无网码| 婷婷五月天丁香综合网| 五月丁香综合精品欧美| 日本欧美成人片AAAA| av在线免费网站 | 色综色网| 大地资源色婷婷视频在线| 亚洲精品电影| 91久久色| 婷婷久久精品| 看片视频在线免费日产在线看| 99性感视频| 五月色婷婷亚洲| 婷婷综合色色| 五月综合无码| 婷婷色情网| 99热这里有精力| 色婷五月天网站| 久久视频这里都是精品| 色婷婷综合久色AV五色最新| 丁香五月综合色婷婷| 九九色色| 九九热免费观看视频| WWW,五月天| 大香蕉手机视频| 久久总和99| 99re久热只有精品6在线直播.com| 91在线观看www| 色九四色| 高清 码 免费看片短视频| 色婷婷情片| 黄色91在线观看| 日韩精品99久久| 成人免费网站免费看| 婷婷天天五月天| 色婷大香蕉| 免费看片在线观看| 国产激情在线| 97自拍视频在线| 欧美色图45678| 第四色婷婷日本| 欧洲永久精品| 思思热在线视频99| 婷婷综合色| 26UUU欧美激情一区二区| 日本99视频精品免费播放| 啪啪黄页网| 五月婷婷色影院| 狠狠爱综合网| 亚洲欧洲自拍图片专区五月天| 天天天添天天操| 激情婷婷五月天在线观看| 99色最新在线视频网站| 蜜臀av粉嫩av懂色av| 99re免费精品视频| 色五月婷婷网| 成人片在线免费看| 91爱操| 99精品视频在线免费观看| 国产日日夜夜操| 丁香五月婷婷色播艳门照| 五月丁香六月婷婷久久| 天天肏夜夜肏| 久久精品无码一区| 99在线视频播放| 色丁香五月婷婷婷| 色狠久| www.99久久久| 男人大jjc女人免费视频| 97操男人的天堂| 久久 婷婷 五月天| 色婷婷影音| 亚洲精品婷婷| 蜜桃五月天| 99久久五月丁香野外| 国产1区2区3区在线观| 丁香五月 六月婷婷首页| 七七色色综合| 五月丁香婷婷钟和色图| 综合婷婷| 99久久这里只有精品| 丁香五月社区| 26uuu偷拍亚洲欧洲综合| 丁香六月天婷婷在线| 天天激情站| 色婷婷五月天| 亚洲视频五区| 丁香五月天在线| 另类小说五月天| 久久一操| 天天干天天 亚洲| 丁香五月婷婷啪啪啪| 97色射| 亚洲无码成人网| 婷婷五月天激情电影小说| 亚洲精品视频在线| 91九色在线| 欧美成人网99网| 99国产精品久久久久久久久久久 | 五月丁香六月色婷婷| 五月丁香婷婷综合久久| 91刘玥视频在线观看| 丁香五月婷婷久久久| 久久精品人妻| 伊人久久大香线蕉AV最新午夜| 最新激情五月天| 中文字幕黄色片| 久久五月天网| 五月婷婷婷| 日本啪啪视频HD| 九九成人精品免费视频| 久热中文字幕| 久婷婷五月综合欧美| 色婷婷综合网站| 午夜天堂一区人妻| 凹凸7777操操操| 99re热视频这里只精品| 九九AV在线| 五月婷婷丁香大陆免费| 先锋资源婷婷| 免费播放片大片| 狠狠狠狠青草| 人妻无码精品一区| 综合婷婷都市激情| 色婷婷四虎| 人人做人人看人人摸| 亚洲精品无码一区二区| 日日操夜夜操狠狠操| 夜夜干夜夜操| 99视频超级精品| 久久久久er热| 第四色色六月色综合| 久久这里只有精品99| 色色婷婷丁香| 超碰碰碰碰| 激情五月天婷婷久久久久久久久久久| 亚洲黄色影视| 婷婷五月 丁香六月| 大地9中文在线观看免费高清 | 色欲日日躁| 香蕉久久国产AV一区二区| 思思99精品视频在线观看| 性爱视频久久| 久色中文| 久久免费干| 久狠狠狠| 六月丁香啪啪啪| 丁香五月中文字幕| 99热在线99| 国产美女无遮挡裸体毛片A片| xx色综合| www狠狠爱com| 九九99九九99九九99视频网| 久久久精品视频79| 少妇性BBB搡BBB爽爽爽视頻| 99热这里只有精品在线播放| 99热啪啪| ww亚洲ww在线观看| 欧美精品在线观看| www激情com| 日韩99视频| 五月丁香啪啪啪| 免費亭亭成人| 久久久香港| 人人人操| 啪啪啪五月天| 欧洲精品爱爱| 亚洲精品V天堂中文字幕| 另类综合国产| 久久五月激情| 久久人妻少妇嫩草AV| 婷婷五月天免费视频| 91男同| 无码少妇高潮喷水A片免费 | 玖玖玖婷婷婷| 激情五月丁香五月| 婷婷5月九九| 五月天丁香成人社| 国产成人精品亚洲线观看| 婷婷.com| 色噜噜狠狠色综| 久久婷婷五月天大香蕉| 色情五月综合婷婷| 激情六月一二| 婷婷丁香色五月亚洲| 国产av网| 99精品在线| WWW,五月| 99热6这里只有精品6| 狠狠综合久久综合| 丁香九月婷婷| 色99自拍| 九九久热| 亚洲丁香五月深爱五月| 99热大香蕉| 久久久精品婷婷五月天| 综合久久婷婷| 超碰在线视屏| 五月丁香六月综合基地| a v色婷婷| 91色久| 玖玖激情网| 另类少妇人与禽zOZZ0性伦| 青青草原伊人网| 色人妻五月| 青青操绿aaa一区日v| 九九大香蕉黄色影院| 色天使色综合| 少妇人妻丰满做爰XXX| AV中文在线| 色婷婷亚洲婷婷在线观看| 色五月天天| 五月婷婷激情刺激| 操碰久| 婷婷五月天综合久久日美女| 情欲禁地| 另类图片五月天| 国产99久久久| 婷婷五月香蕉| 天堂久久婷婷| 色五月五月婷婷| 天天高潮夜夜爽| 青青福利网| 亚洲亚洲人成综合网络| 婷婷伊人网| 色五月婷婷av| 超碰在线视屏| 五月停停色色丁香| www.99热在线观看| 激情综合网激情五月天| 另类小说色婷婷| 激情五月五月婷婷| 婷婷五月无码| 激情五月天综合| 激情六月婷| 久久机热这里只有精品| 天天日天天日天天搞| 婷婷综合成人五月天| 婷婷六月婷婷| 操逼123网| 婷婷五月久久| 丁香五月婷综合网| 噜噜吧天天爱| 五月天婷婷綜合院| 五月婷婷黄色| 99这里| 久久综合99| 国产精产国品一二三在观看| 日韩久久成人| 美女爆乳18禁www久久久久久| 五月婷无码| 9热在线视频精品| 久久婷婷五月综合成人d啪| 开心五月婷婷婷美女| 99久久婷婷五月综合| 综合大香蕉| 五月丁香美女| 五月丁香黄色| 丁香五月欧美| 99亚州综合精品成人网| 亚洲色欲AAAAAA| 天天草天天日| 狠狠色成人影片| 成人五月丁香社区| 成人精品一区日本无码网| 色和综合网| 狠狠综合色网| 99 热国产在| 99久久综合精品五月天| 99热99精品| 丁香久久| 综合www色| 成久综合视频| 精品久久66| 99热综合网| 欧美日韩中文国产一区发布| 久久免费试看120秒| 婷综合| 日韩av干| 停停五月色宗合| 91啪啪视频| 91亚洲视频| 久久er视频6| 激情综合色婷婷啪啪六月天| 色欲天天综合| 99热午夜精品| 亚洲激情网| 99热久久这里只有精品2010| 五月丁香综合激情网| 丁香五月婷婷av影院| 激情综合网五月| 97久久香草精品视频| 国产精品国产| a免费在线| 伊人婷婷青青cao| 思思re99视频在线观看| 这里有精品| 色婷婷久久综| 天天操天天日天天操| 色五月天激情| 日韩有码一区| 五月丁香WWW| 激情亚洲婷婷| 五月婷婷综合成人| 另类图片激情五月天| 久久伦乱| 色五月激情综合网站| 国内裸舞二区| www.婷婷五月| 五月丁香趴趴| 人妻精品久久久久久久| 色五月婷婷网| 五月天狠狠网站| 色色色五月婷| 亚洲成人综合网在线免费观看| 青青操avbb| 丁香激情久久| 99re视频在线| 五月天在线视频尤物视频在线看| 久久女婷| 久碰视频| www.zbzhongsen.com| www.99热在线| 91视频人人做97| 国产精品色色色色| 午夜少妇在线观看视频| VA婷婷| 丁香在线视频| 热久久成人| www.久久久.com| 性爱七区| 五月六月婷| 久草婷妨| 天天色天天色天天色天天色天天色| 激情六月婷婷| 成人做爰A片免费看网站找不到了| 九月婷婷色色| 人人操人人干AV| 婷婷五月天狠狠色| 欧美月久久| 这里只有精品无码| 婷婷五月精品中文| 99精色| 丁香五月婷婷综合激情啪啪啪啪啪啪啪| 婷婷中文字幕版| 亚洲字幕AV一区二区三区四区| 欧美成人无码高清一区二区三区| 伊人婷婷五月天| 香蕉综合网| 99爱在线视频| 狠狠肏综合网| 五月天开心色色网| 丁香五月综合在线观看| 五月深情久久| 99网| 亚洲成人网站在线播放| 色婷婷综合影院| 991精品在线视频| aa久久| 五月色网| www.狠狠| 校园激情 亚洲| 伊人久久丁香狠狠婷婷综合香蕉| WWW,婷婷,COM| 九九av在线| www99热| 激情五月伊人婷婷| 99精彩视频网站在线| 国精产品久久| 黄色一极大片| 丁香五月天啪啪| 在线,国产,色,热视频| 97人妻超级碰碰碰碰碰| 精品乱码久久久久| 亚韩在线视频| 免费AAAAA网| 少妇人妻人伦A片| 久久久久思思热| 国产成人AV在线播放| 亚洲成人在线播放| 欧洲亚洲欧洲99久久| 亚洲色综合色网| 99久久婷婷| 欧洲亚洲欧洲99久久| 久久久噜噜噜www成人| 91操在线视频| 色。 婷婷婷| 激情久久婷婷| 丁香激情五月| www.亭亭五月天| 婷婷射综合| 无码成人AAAAA毛片AI换脸| 日本人人xxx| 中文网AV| 免费超碰在线| 日本色婷婷| 99热免费看| 婷婷五月丁香综合亚洲 | 嫩草视频观看| 国产精品久久久久久久久久久久| 久久人妻人人| 无码中文一区二区三区| 婷婷刺激综合| 中文字幕有多少字| 啪啪综合| 五月天婷婷五月| 九九综合久久| 综合久久六月| 这里只有精品视频| 97超碰在线免费观看| 六月丁香五月激情网| a九九热www| 99在线视频操999| 午夜丁香婷婷| 99热这里只| 大波美女VA网站| 久久9热| 91色五月在线观看| 五月天伊人网| 九九热视频在线观看| 九九热区一区二区三区| 丁香五月性爱| 婷婷色情五月| 韩国中文字幕91| 久热只有精品| 久婷婷婷| 色九九九九| 亚洲第一成人无码A片| 久艹大香蕉| 天天日日夜夜爽。| 五月天婷婷激情小说| 色五月婷婷中文字幕在线观看 | 日韩亚洲视频| 久久综合婷婷五月| 九九视频这里只有精品| 综合久久五月| 久久久月丁香| bbwcuckold精品熟妇| 日本片日本片祼观看网站在线看中文版网页在线看 | 级人人91| 国产精品a无线| 五月丁香综合在线| 婷婷中文无码| 4399人妻无码久久久| 五月天四色房丁香亭亭| 99re这里只有精品在线观看| 色婷婷丁香五月丁香| 亚洲日韩人妻操逼| 丁香婷婷五月天色综合| 国产片天天爽夜夜爽| 级情九色| 色九九综合| 伊人久久大香网| 97人人看| 色五月婷婷在线| 玖玖五月| 91久久精品无码一区二区三区| 国产美女主播vip| 五月丁香人妻| 99爱爱网| 五月婷在线影院| 精品久久婷婷| 色欲九区| 99热啪啪| 99色精品视频| 99热欧美在线观看| 欧美天天干五月丁香| 婷婷久久国产视频| 天天日夜夜夜操操操操| 五月丁香五月天现场视频| 婷婷激情五月天亚洲综合| 思思热再线视频| 五月激情五月婷婷五月天在线| 综合伊人狠狠| 少妇达人正片在线播放_ikun_福利吧| 激情五月丁香六月综合AVXXXX| 色婷五月天激情| 日日噜狠狠| 天堂久久精品| 色9色| 久久久久人无码人妻| 另类激情五月天| 欧美色性色好| 超碰av在线| 亚洲另类在线观看| 九九综合九| 五月丁香婷婷激情四射迷人| www.色综合.com| 美女亚洲五月丁香| 噜噜噜精品欧美成人在线观看| 天天摸夜夜夜| 色婷网| 极品人妻XXXXOOOO| 99丝袜精品视频网站| 色婷精品91| 五月天成人在线视频丁香| 亚洲激情区| 五月婷婷婷丁香播| 久久五月天婷婷| 中文字幕日本最新乱码视频| 激情丁香五月天图片| 丁香五月婷婷黑人妻黄色电影院| 伊人五月婷婷| 丁香五月停停av| 91人操人人人操人| 国产免费一区二区在线A片视频| 亚洲黄色网址| 日韩超碰在线| 情情五月天色| 免费看欧美成人A片无码| 夜夜撸日日操| 影音先锋91视频| 亚洲永久四色| 欧美激情综合色丁香婷婷五月天| 色色色婷婷五月| 亚洲妇女熟BBW| 五月丁香综合成人社区| 精a品a视a频| 夜夜骑夜夜撸| 亚洲精品久久久久久久久久吃药| 久久色吧| 亚洲avjiujiur91| 激情小说婷婷| 国产午夜精品一区二区三区四区 | 狠狠擼综合| 91九色欧美| 九九九激情综合| 99九九在线| 五月天婷婷高清无码| 777色色色| 激情婷婷99| 成人婷婷五月天| 大香蕉婷婷五月| 久777| 婷婷丁香六月五月天| 五月天丁香久久| 色色aⅤ網| 天天操婷婷| 99九精品| 亚洲激情精品| 婷婷五月天激情网| 中文AV在线播放| 在线可以看的av网址| 婷婷五月激情综合| 91黄操| 第四色婷婷丁香五月| 亚洲日韩一页精品发布| 丁香五月首页| 开心深爱激情网| 牛牛热这里只有jingpin| 色狠狠色| 无码髙清| 色色五月激情| 欧美综合激情五月天| 国产一区二区三区影院| 久久er视频6| 久久五月网| 99久久精品国产色欲| 激情99在线视频| 色婷婷网大全在线| 色五月婷婷少妇人妻| 99色婷婷视频| 超碰成人av| 激情99| 亚洲AV无码影院| 五月婷婷开心五月| 欧美婷婷综合| 五月婷婷第四色| 国内9l视频自拍老熟女九色| 欧美英丁香开心快乐六月天网| 国产成人精品亚洲线观看| 婷婷激情五月天天天开心| 26uuu在线观看| 婷婷在线免费| 天天狠天天叉| 这里只有精品视频视频在线观看| 久操热| 丁香激情久久| 丁香五月Av| 久热这里只有国产| 狠狠干综合| 丁香六月婷婷一区| 久久婷婷热| 激情深爱综合| 久久综合五月天| 亚洲99激情| 中字幕视频在线永久在线观看免费 | se婷97| 色噜噜狠狠色综无码久久合欧美| 69色婷婷| 在线观看的av| 丁香啪啪| 天天综合色| 丁香婷婷六月天| 色综色网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | www.日本久久videos| 伊人在线视频| 色狠狠六月| www.夜夜爱.com| jizzdr| 欧美精品99| 日韩无码成人电影| 99热这里只有精品23| 日本天堂网站99| 亚洲激情综合| 99久久精| 无码一区精品一区视频| 色婷婷久久综合丁香五月| 色涩影院六月丁香| 色婷五月| 五月天成人在线精品| 亚洲AV日韩在线观看| 婷婷情爱五月天6| 99在线热| 日本不卡一区二区三区| 五月激情婷婷开心| 中文精品在| 大香蕉伊人久久| 综合五月激情网| 亚洲婷婷基地| 久操热线| 婷婷色激情五月天| 97人人干人人操| 乱乱av| 婷婷丁香五月综合| 色八月婷婷| 久久丁香婷| 久久99久久99久久99人受| 五月婷婷这里都是精品| AV六月丁香| 天天天干夜夜夜操| 亚洲色综合性| 日韩综合网络男女香蕉a片| 亚洲乱码日产精品BD| 精品人妻一区| 天天爽—爽| 97婷婷狠狠久久综合9色| 99色色网| 四月丁香五月婷婷久久| 丁香五月在线视频| 四色五月视频| 天天综合精品| 色噜噜狠噜噜视频| 天天做天天双| 丁香婷婷综合激情五月色| 俺去也五月| 99热国产| 激情五月天天| 五月天激情小说| 五月婷婷在线综合| 色久婷婷五月| 超碰AV成人| 免费看欧美成人A片无码| 婷婷五月大香蕉| 狠狠插狠狠| 亚洲精品乱码久久久久久按摩观| 99热99日天天干| 麻豆AV一区二区三区| 久久久精品AV| www.狠狠艹| 综合激情五月丁香| 激情综合网五月丁香| 97涩婷婷婷婷基地| 国产真人做爰视频免费| 大香蕉伊人久久| 99ri视频在线播放| 亚洲色情在线| 丁香五月天av| 色八月婷婷| 超碰在线免费| 亞洲自怕| 丁香5月激情网| 99婷婷色| 色天堂婷婷| 思思热这里只有精品| 99riAv1国产在线观看| 婷婷五月天天aV| 六月婷婷视频| 婷婷激情伍月网| 狼人婷婷综合| 久久九九九九| 婷婷狠狠香蕉综合| 久久综合站| 五月天色小说| 风流少妇A片一区二区蜜桃| 色播五月婷婷| 狼人久草| 亚洲永久免费| 翔田千里 50岁 无码| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 五月天播播中文字幕 | 97久久久| 91ncom.色| 国产av基地| 久久大香蕉同僚| 97在线刺激| 婷婷五月丁香啪啪| 大香蕉天堂| 九九色图| 婷婷刺激综合| 热99在线精品| www.婷婷亚洲基地| 色婷婷久久久| www.婷婷五月天.com| 激情图片五月天| 人人摸人人| 91Chinese在线| 色婷婷成人做爰A片免费看网站| a久久| 99精品偷自拍| 亚洲 在线 另类| 九九丁香社区欧美激情| 久月久在线视频| 操b视频在线观看一区二区| 超碰99热在线观看| 超级碰碰碰97免费| 婷婷五月丁香久久| 538午夜激情| 五月天婷婷午夜丁香| 色的色综合| 这里只精品热在线18| 日本婷色| 五月丁香婷婷综合网| 超碰人人色| 色六月 婷婷| 激情综合网站| 无码啪啪| 五月婷婷这里都是精品| 丁香5月婷婷| 五月 成人 婷婷| 丁香五月伊人| 610018岁成人视频| 五月婷久久综合| 98色花堂98t.R| 免费国产VA国产免费| 久色中文| 66成人网| 色婷婷婷婷| 亚洲综合网在线| 婷婷色五月天色| 丁香丁婷五月激情| 欧美综合五月丁香五月天| 色五月婷婷五月天| 日日夜夜天天综合| 日韩二区搞逼插逼毛片| 99色.com| 五月婷婷激情四季| 婷婷五月天激情五月天深爱五月天| 综合五月天| 日日夜夜干| 色婷av| 丁香六月婷婷缴情欧美| 99这里是精品| 国产成人网| 国产AV成人精品| 久草 天堂| 狠狠五月天婷婷激情网。| 亚洲AV网站在线观看| 免费观看全黄做爰的视频| 97超碰欧美中文字幕| eeuus五月婷| 天天精品视频免费观看| 丁香五月婷婷基地| 99热一本久道| 国产欧美婷婷五月| 色婷婷激情四射视频| 99久久人妻精品无码二区| 182TV大香蕉| 六月婷婷影院| www.五月.com| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 操一操| 丁香婷婷六月| 五月天激情黄色网址| 婷婷五月天改成什么了| 噜一噜在线| 欧美综合五月天婷婷tin| 色婷五月| 五月丁香六月婷婷综合网站 | 五月丁香va| 丁香五月综合激情啪啪| 日韩av在线播放综合网| 亚洲另类婷婷五月丁香在线播放| 亚洲中文乱字字幕在线永久| www.99热国产| sesesesezonghe| 国产免费一区二区三州老师F1F1| 91呦呦呦|