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(); } }