/// <summary> /// 保存扫描记录 /// </summary> /// <param name="openId">微信用户OpenId</param> /// <param name="sceneId">扫描的二维码的参数</param> /// <param name="scanType">扫描类型</param> public void SaveScan(string openId, int sceneId, ScanType scanType) { //微信公众平台要求微信公众号服务器必须在5秒内返回相应结果,否则会重新发送请求,一共重试三次 //为了避免微信公众号服务器重复接收到同一条扫描记录,造成数据重复,导致统计失真,这里将保存扫描记录的操作放到线程池中异步执行,尽快返回相应结果给微信服务器 ThreadPool.QueueUserWorkItem(e => { int channelId = new ChannelBll().GetChannelIdBySceneId(sceneId); if (channelId <= 0) { return; } ChannelScanEntity entity = new ChannelScanEntity() { ChannelId = channelId, ScanTime = DateTime.Now, OpenId = openId, ScanType = scanType }; new ChannelScanDll().AddEntity(entity.GetDataEntity(entity)); }); }