Esempio n. 1
0
 /// <summary>
 /// 指定用户,指定日期内进行签到。返回签到状态:0-重复签到,1-签到成功
 /// </summary>
 /// <param name="log"></param>
 /// <returns>返回签到状态:0-重复签到,1-签到成功</returns>
 public static int UserCheckInToday(UserCheckedInLog log)
 {
     using (DbCommander cmd = new DbCommander(DbConn.WriteDb, "SP_Users_UserCheckedIn", CommandType.StoredProcedure))
     {
         cmd.AddInputParameters("UserId, AppChannel, Date", log.UserId, log.AppChannel, log.CreateDate);
         return(Convert.ToInt32(cmd.ExecuteScalar()));
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 用户“今日”是否已签到
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static bool UserCheckedInToday(int userId)
        {
            UserCheckedInLog log = new UserCheckedInLog {
                UserId = userId, CreateDate = DateTime.Now
            };

            return(UserData.UserCheckedInCountWithDay(log) > 0);
        }
Esempio n. 3
0
 /// <summary>
 /// 获取指定用户,指定日期内签到次数
 /// </summary>
 /// <param name="log"></param>
 /// <returns></returns>
 public static int UserCheckedInCountWithDay(UserCheckedInLog log)
 {
     using (DbCommander cmd = new DbCommander(DbConn.ReadDb, "SP_Users_GetUserCheckedInCountWithDay", CommandType.StoredProcedure))
     {
         cmd.AddInputParameters("UserId, Date", log.UserId, log.CreateDate);
         return(Convert.ToInt32(cmd.ExecuteScalar()));
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 用户“今日”签到
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="appChannel"></param>
        /// <returns></returns>
        public static string UserCheckInToday(int userId, string appChannel)
        {
            UserCheckedInLog log = new UserCheckedInLog {
                UserId = userId, AppChannel = appChannel, CreateDate = DateTime.Now
            };
            int checkResultCode = UserData.UserCheckInToday(log);

            if (1 == checkResultCode)
            {
                //获取用户10天以内的签到记录:如果一直连续签到,则应得到11条记录
                List <UserCheckedInLog> logList = UserData.GetUserCheckedInLogInDays(userId, 10).OrderByDescending(l => l.CreateDate).ToList();
                int c = -1;
                for (int i = 0; i < logList.Count; i++)
                {
                    if ((int)DateTime.Now.Date.Subtract(logList[i].CreateDate.Date).TotalDays != i)
                    {
                        break;
                    }
                    c++;
                }

                //此处c最小应该等于0,最大为10,因为当前签到应该有效。所以对应签到序号应该为0-10;
                //其中0-9分表表示连续签到1-10天,10表示连续签到超过10天以上

                string     descText      = c < 10 ? string.Format("连续签到 {0} 天", c + 1) : "连续签到10天以上";
                UserConfig userConfig    = UserConfigs.GetUserConfigCache();
                bool       isNeedReCache = false;
                string     showText      = string.Empty;
                if (userConfig.ContinuousCheckedInExpChanged != null && userConfig.ContinuousCheckedInExpChanged.Count == 11)
                {
                    if (userConfig.ContinuousCheckedInExpChanged[c] != 0)
                    {
                        UpdateUserExp(userId, userConfig.ContinuousCheckedInExpChanged[c], descText);
                        isNeedReCache = true;
                    }
                }

                if (userConfig.ContinuousCheckedInCoinChanged != null && userConfig.ContinuousCheckedInCoinChanged.Count == 11)
                {
                    if (userConfig.ContinuousCheckedInCoinChanged[c] != 0)
                    {
                        UpdateUserCoin(userId, userConfig.ContinuousCheckedInCoinChanged[c], descText);
                        isNeedReCache = true;
                        showText      = descText + ",金币加 " + userConfig.ContinuousCheckedInCoinChanged[c] + " !";
                    }
                }

                if (isNeedReCache)
                {
                    SetUserCacheInfo(userId);
                }

                return(showText);
            }
            return(string.Empty);
        }