公司CRM採購了銷幫幫的CRM系統,因爲CRM系統不完善,導出功能不能知足公司對數據進行分析的需求。每次整理數據,分析人員部門等各類狀況,再有若是人員重名,銷幫幫不能區分出具體是誰,必須去根據人員或其餘數據進行區分。html
因爲銷幫幫數據的人員是有UserID的,而該UserID對應釘釘的UserID,因此能夠根據釘釘提供的API接口輕鬆的判斷出人員部門、分公司等信息,不用關心人員重名的狀況。前端
軟件使用C#+SQLSERVER進行開發。正則表達式
開始前先給你們看看軟件的總體界面。 數據庫
軟件主要包括清空今日數據,採集、數據分析、同步用戶信息、獲取數據 5部分功能。api
在安裝好的SQLServer服務器上,建立數據庫,數據庫名稱根據須要定義,此處我定義的數據庫名稱是xbb,以下圖的配置[1],正確配置數據庫鏈接服務器
根據銷幫幫提供的網址[https://dingtalk.xbongbong.com/apiSetting/detail.html]獲取對應的組織編碼和token.,以下圖配置[2]配置銷幫幫石藥使用的組織編碼和Token.架構
在釘釘的【開發者後臺】建立企業內部應用。開放查詢部門、人員信息的權限便可。並配置對應的appkey/appsecret到下圖【3】處。app
開始採集前,若是今天的數據已經採集過,請點擊【清空今日數據】,會自動清空今天已經採集的數據,從新開始採集。異步
點擊【開始】進行數據採集,採集的內容主要包括功能上勾選的數據。等待最下面的狀態欄採集後待處理數據變爲0條,則表明採集完成。工具
採集後會把數據統計分配到一張表裏,點擊數據分析會自動根據採集到的數據建立表,並把數據插入到對應的表裏面。
同步用戶數據是爲了增量備份釘釘的全部的用戶信息。
點擊【獲取數據】按鈕,自動導出銷幫幫銷售機會、合同、跟進記錄等信息。
備註:若是哪天銷幫幫數據發生變化,能夠在軟件的ExecSQL文件夾下修改對應的導出SQL語句,不用修改代碼。
第一次在開發中使用了dynamic關鍵字,經過對Json進行反序列化很好用。減小了不少Model的建立工做,也減小了之前經過正則表達式匹配的方式的工做量。
經過下面的語句修改當前顯示的文字作的顏色。
rtbContent.SelectionColor = Color.Red;
rtbContent.SelectedText = msg+"\r\n";
爲了備份天天的數據,全部的表都帶上了年月日yyyyMMdd格式結尾。全部的查詢都是經過{Date}關鍵字,用今天的日期替換{Date}關鍵字後造成SQL查詢語句
每次抓取分頁數據時,因爲是異步的,不能立刻肯定是否有下一頁的時候,尤爲是抓取第一頁的時候,因爲數據分類不一樣,之前都是根據不一樣的數據分頁設置一下隊列,而後依次從隊列中進行數據彈出、採集等。如今採用字典Dic<string,ConcurrencyQueye<int>> 能夠經過統一的方法,設置不一樣的關鍵字插入分頁或者彈出分頁。
之前的加密方法大可能是md5/AES等加密方式,最近大多都在改爲sha256,可能與統一的前端架構有關係把。
C#的sha256加密方式:
public static string sha256(string data) { byte[] bytes = Encoding.UTF8.GetBytes(data); byte[] hash = SHA256Managed.Create().ComputeHash(bytes); StringBuilder builder = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { builder.Append(hash[i].ToString("X2")); } return builder.ToString(); }
之前處理數據庫都是本身手動寫個簡單的DbHelper,因爲用不到各類複雜的處理。因此還算夠用。
後來發現經過Dapper能夠輕鬆實現數據的批量處理,並且整體來講效率還能夠,畢竟寫的代碼少了,仍是很高興的。
輕量級的ORM工具,我選Dapper.。可是ADO.NET原理不能忘。
NPOI依然是最好的處理Excel的工具
再也不使用Model,正則表達式,把全部Json格式的數據經過,數據主鍵ID、列名、列值、數據類型 插入到一張表,經過統一的SQL建立插入規則把數據在統一插入到對應的表中,不須要提早知道表的列名。
自動建立、增長列。自動插入數據。