public static WxMenuClickData GetWxMenuClickData(DateTime date) { IList <WXMenuClickInfo> dayList = new WXMenuClickRecordDao().GetDayList(date); WxMenuClickData wxMenuClickData = new WxMenuClickData { ClickNumbers = 0, ClickTimes = 0 }; if (dayList != null && dayList.Count > 0) { wxMenuClickData.ClickNumbers = (from m in dayList group m by m.WXOpenId).Count(); wxMenuClickData.ClickTimes = dayList.Count; } return(wxMenuClickData); }
public static int SynchroWXFansInteractData(DateTime startDate, DateTime endDate, out bool isSettingErr) { isSettingErr = false; int num = (endDate - startDate).Days + 1; try { IDictionary <string, string> dictionary = new Dictionary <string, string>(); dictionary.Add("startDate", startDate.ToString()); dictionary.Add("endDate", endDate.ToString()); SiteSettings masterSettings = SettingsManager.GetMasterSettings(); dictionary.Add("AppId", masterSettings.WeixinAppId); dictionary.Add("AppSecret", masterSettings.WeixinAppSecret); string token = WXFansHelper.GetToken(); if (string.IsNullOrEmpty(token)) { isSettingErr = true; Globals.AppendLog(dictionary, "token为空", "", "", "SynchroWXFansInteractData"); return(0); } DateTime dateTime = startDate; DateTime dateTime2 = dateTime; int num2 = (num % 7 == 0) ? (num / 7).ToInt(0) : ((num / 7).ToInt(0) + 1); IList <WXUpstreamMsg> list = new List <WXUpstreamMsg>(); for (int i = 0; i < num2; i++) { dateTime = dateTime2.AddDays((double)((i != 0) ? 1 : 0)); dateTime2 = dateTime.AddDays(6.0); if (dateTime2 > endDate) { dateTime2 = endDate; } string wXPostResult = WXFansHelper.GetWXPostResult($"https://api.weixin.qq.com/datacube/getupstreammsg?access_token={token}", WXFansHelper.GetPostData(dateTime, dateTime2)); if (string.IsNullOrEmpty(wXPostResult)) { return(0); } WXUpstreamMsgResult wXUpstreamMsgResult = JsonHelper.ParseFormJson <WXUpstreamMsgResult>(wXPostResult); if (wXUpstreamMsgResult != null && wXUpstreamMsgResult.list != null && wXUpstreamMsgResult.list.Count > 0) { list = list.Concat(wXUpstreamMsgResult.list).ToList(); } } WxMenuClickData wxMenuClickData = new WxMenuClickData(); bool flag = false; if (num == 1) { flag = new WXFansInteractStatisticsDao().IsExistData(startDate); if (!flag) { wxMenuClickData = WXFansHelper.GetWxMenuClickData(startDate); new WXMenuClickRecordDao().DeleteAllMenuClickRecords(startDate); } } if (!flag) { for (int j = 0; j < num; j++) { WXFansInteractStatisticsInfo fansItem = new WXFansInteractStatisticsInfo(); fansItem.StatisticalDate = startDate.AddDays((double)j).Date; fansItem.MsgSendNumbers = (from u in list where u.ref_date == fansItem.StatisticalDate.ToString("yyyy-MM-dd") select u).Sum((WXUpstreamMsg u) => u.msg_user); fansItem.MsgSendTimes = (from u in list where u.ref_date == fansItem.StatisticalDate.ToString("yyyy-MM-dd") select u).Sum((WXUpstreamMsg u) => u.msg_count); fansItem.MenuClickNumbers = ((num == 1) ? wxMenuClickData.ClickNumbers : 0); fansItem.MenuClickTimes = ((num == 1) ? wxMenuClickData.ClickTimes : 0); fansItem.InteractNumbers = fansItem.MenuClickNumbers + fansItem.MsgSendNumbers; fansItem.InteractTimes = fansItem.MenuClickTimes + fansItem.MsgSendTimes; new WXFansInteractStatisticsDao().Add(fansItem, null); } } } catch (Exception ex) { Globals.WriteExceptionLog(ex, null, "SynchroWXFansInteractDataErr"); return(0); } return(num); }