Exemplo n.º 1
0
        public static string LuckyDraw(string filter, string key, DateTime start, DateTime end, DateTime open, string prize, int count, string path)
        {
            setFilter(filter);
            setKeyWord(key);
            setStart(start);
            setEnd(end);
            setOpen(open);
            setPrize(prize);
            setCount(count);
            SQLManager sl = new SQLManager();
            DataTable  dt = sl.UniversalGetAPI("select *from message");
            Dictionary <string, Join> dictionary = new Dictionary <string, Join>();//存储潜在有效参与抽奖者

            //过滤处理
            for (int i = 0; dt != null && i < dt.Rows.Count; ++i)
            {
                Message message = new Message
                {
                    id           = dt.Rows[i]["id"].ToString(),
                    qq           = dt.Rows[i]["qq"].ToString(),
                    nickname     = dt.Rows[i]["nickname"].ToString(),
                    publish_time = dt.Rows[i]["publish_time"].ToString(),
                    contain      = dt.Rows[i]["contain"].ToString()
                };
                if (islegal(message))
                {
                    if (!dictionary.ContainsKey(message.qq))
                    {
                        Join join = new Join
                        {
                            qq       = message.qq,
                            nickname = message.nickname
                        };
                        if (message.contain.Contains(canPrizeStr) && DateTime.Compare(DateTime.Parse(message.publish_time), start) >= 0 && DateTime.Compare(DateTime.Parse(message.publish_time), end) <= 0)
                        {
                            join.publish_time = Convert.ToDateTime(message.publish_time);
                            join.canPrize     = true;
                        }
                        join.datetime_contain.Add(Convert.ToDateTime(message.publish_time), message.contain);
                        dictionary.Add(message.qq, join);
                    }
                    else
                    {
                        Join join;
                        dictionary.TryGetValue(message.qq, out join);
                        if (message.contain.Contains(canPrizeStr) && DateTime.Compare(DateTime.Parse(message.publish_time), start) >= 0 && DateTime.Compare(DateTime.Parse(message.publish_time), end) <= 0)
                        {
                            join.publish_time = Convert.ToDateTime(message.publish_time);
                            join.canPrize     = true;
                        }
                        try
                        {
                            join.datetime_contain.Add(Convert.ToDateTime(message.publish_time), message.contain);
                        }
                        catch (Exception e) { }
                    }
                }
            }
            //抽奖
            award = randomPrize(dictionary, path);
            return("success");
        }