Example #1
0
 /// <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));
     });
 }
 /// <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));
     });
 }