private void GetWeChatDataAsync(IMongoCollection <MerchantAppModel> mamCollection, MerchantAppModel mam, IMongoCollection <WeChatCountModel> wccmCollection)
        {
            string token = null;
            Dictionary <WeChatCountType, string> data = null;

            try
            {
                using (WebClient wc = new WebClient())
                {
                    wc.Encoding = Encoding.UTF8;
                    token       = AllCountData.GetWeChatAccessToken(wc, mam.AppID, mam.AppSecret);
                    if (string.IsNullOrEmpty(token))
                    {
                        return;
                    }
                    data = GetWeChatRequestData();
                    foreach (var item in data)
                    {
                        string jsonData = "";
                        int    num      = (int)item.Key;
                        if (num == 5 || num == 51 || num == 50)
                        {
                            jsonData = GetWeChatCountPortrait(wc, item.Value, token, num);
                        }
                        else if (num < 10)
                        {
                            jsonData = GetWeChatCountYesterDay(wc, item.Value, token);
                        }
                        else if (num % 10 != 0)
                        {
                            jsonData = GetWeChatCountLastWeak(wc, item.Value, token, num % 10);
                        }
                        else
                        {
                            jsonData = GetWeChatCountLastMonth(wc, item.Value, token);
                        }
                        if (!string.IsNullOrEmpty(jsonData))
                        {
                            SaveCountData(wccmCollection, jsonData, mam, item);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                e.Save();
            }
        }
 private void SaveCountData(IMongoCollection <WeChatCountModel> wccmCollection, string jsonData, MerchantAppModel mam, KeyValuePair <WeChatCountType, string> item)
 {
     try
     {
         var model = (wccmCollection.Find(x => x.uniacid.Equals(mam.uniacid))).FirstOrDefault();
         if (model == null)
         {
             wccmCollection.InsertOne(new WeChatCountModel
             {
                 uniacid       = mam.uniacid,
                 AppName       = mam.AppName,
                 uid           = mam.uid,
                 CountDataList = new List <WeChatCountDataModel> {
                     (new WeChatCountDataModel {
                         DataType = item.Key,
                         CountData = jsonData
                     })
                 }
             });
         }
         else if (model.CountDataList == null)
         {
             wccmCollection.UpdateOne(x => x.uniacid.Equals(mam.uniacid), Builders <WeChatCountModel> .Update.Set(x => x.CountDataList, new List <WeChatCountDataModel> {
                 (new WeChatCountDataModel {
                     DataType = item.Key,
                     CountData = jsonData
                 })
             }).Set(x => x.LastChangeTime, DateTime.Now).Set(x => x.AppName, mam.AppName).Set(x => x.uid, mam.uid));
         }
         else if (model.CountDataList.Find(x => x.DataType == item.Key) == null)
         {
             wccmCollection.UpdateOne(x => x.uniacid.Equals(mam.uniacid), Builders <WeChatCountModel> .Update.Push(x => x.CountDataList, new WeChatCountDataModel
             {
                 DataType  = item.Key,
                 CountData = jsonData
             }).Set(x => x.LastChangeTime, DateTime.Now).Set(x => x.AppName, mam.AppName).Set(x => x.uid, mam.uid));
         }
         else
         {
             var filter = Builders <WeChatCountModel> .Filter;
             wccmCollection.UpdateOne(filter.Eq(x => x.uniacid, mam.uniacid) & filter.Eq("CountDataList.DataType", item.Key), Builders <WeChatCountModel> .Update.Set("CountDataList.$.CountData", jsonData).Set(x => x.LastChangeTime, DateTime.Now).Set(x => x.AppName, mam.AppName).Set(x => x.uid, mam.uid));
         }
     }
     catch (Exception e)
     {
         e.Save();
     }
 }