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