公司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建立插入规则把数据在统一插入到对应的表中,不须要提早知道表的列名。
自动建立、增长列。自动插入数据。