Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }