예제 #1
0
 /// <summary>
 /// 获取用户与学校相关的信息
 /// </summary>
 /// <param name="userId">目标用户编号</param>
 /// <returns>用户与学校相关的信息</returns>
 public static UserWithSchool GetUserWithSchool(int userId)
 {
     using (DbCommander cmd = new DbCommander(DbConn.ReadDb, "SP_Users_GetUserWithSchool", CommandType.StoredProcedure))
     {
         cmd.AddInputParameters("UserId", userId);
         UserWithSchool resultData = null;
         using (IDataReader reader = cmd.ExecuteReader())
         {
             if (reader.Read())
             {
                 resultData = new UserWithSchool
                 {
                     UserId        = (int)reader["UserId"],
                     SchoolId      = (int)reader["UserId"],
                     IsTrial       = (bool)reader["IsTrial"],
                     TrialedSource = (string)reader["TrialedSource"],
                     IsActivated   = (bool)reader["IsActivated"],
                     ActivatedDate = (DateTime)reader["ActivatedDate"],
                     IsExpired     = (bool)reader["IsExpired"],
                     ExpiredDate   = (DateTime)reader["ExpiredDate"],
                     StudNo        = (string)reader["StudNo"],
                     ClassInfo     = (string)reader["ClassInfo"],
                     Comment       = (string)reader["Comment"],
                     SyncForBbs    = (bool)reader["SyncForBbs"],
                     Status        = (int)reader["Status"]
                 };
             }
             reader.Close();
         }
         return(resultData);
     }
 }
예제 #2
0
 /// <summary>
 /// 更改学校试用用户账号状态信息
 /// </summary>
 /// <param name="userWithSchool">用户相关信息</param>
 /// <param name="action">更改状态:0-激活,1-过期</param>
 public static void SchoolTrialUserStatusChanged(UserWithSchool userWithSchool, int action = 0)
 {
     using (DbCommander cmd = new DbCommander(DbConn.WriteDb, "SP_Users_SchoolTrialUserStatusChanged", CommandType.StoredProcedure))
     {
         cmd.AddInputParameters("UserId, IsActivated, ActivatedDate, IsExpired, ExpiredDate, Action", userWithSchool.UserId, userWithSchool.IsActivated, userWithSchool.ActivatedDate, userWithSchool.IsExpired, userWithSchool.ExpiredDate, action);
         cmd.ExecuteNonQuery();
     }
 }
예제 #3
0
        /// <summary>
        /// 注册用户账号
        /// </summary>
        /// <param name="uAccount">用户账户信息</param>
        /// <param name="uInfo">用户个人信息</param>
        /// <param name="extInfo">用户扩展信息</param>
        public static void CreateUser(UserAccount uAccount, UserInfo uInfo, UserExtInfo extInfo)
        {
            UserConfig userConfig = UserConfigs.GetUserConfigCache();
            DateTime   dtNow      = DateTime.Now;

            #region UserAccount

            uAccount.UserId                  = 0;
            uAccount.PasswordSalt            = EncryptHelper.CreateSalt(16);
            uAccount.Password                = CreatePassword(uAccount.Password, uAccount.PasswordSalt);
            uAccount.LastPasswordChangedDate = dtNow;
            uAccount.IsApproved              = true;
            uAccount.ApprovedDate            = dtNow;
            uAccount.IsLocked                = false;
            uAccount.LastLockedoutDate       = dtNow;
            uAccount.CreateDate              = dtNow;
            uAccount.LoginCount              = 0;
            uAccount.LastLoginDate           = dtNow;

            #endregion

            #region UserInfo

            uInfo.RealName  = string.Empty;
            uInfo.BackIcon  = userConfig == null ? string.Empty : (userConfig.DefaultBackIcon ?? string.Empty);
            uInfo.HeadIcon  = userConfig == null ? string.Empty : (userConfig.DefaultHeadIcon ?? string.Empty);
            uInfo.Signature = string.Empty;
            uInfo.Comment   = string.Empty;
            uInfo.Gender    = 0;
            uInfo.Birthday  = dtNow.AddYears(-18);
            //uInfo.UserAge = 0;
            uInfo.IDCardNo       = string.Empty;
            uInfo.Area           = string.Empty;
            uInfo.Address        = string.Empty;
            uInfo.PostCode       = string.Empty;
            uInfo.Industry       = string.Empty;
            uInfo.Company        = string.Empty;
            uInfo.JobPosition    = string.Empty;
            uInfo.Interests      = string.Empty;
            uInfo.WebSite        = string.Empty;
            uInfo.Email          = string.Empty;
            uInfo.Mobile         = string.Empty;
            uInfo.Telphone       = string.Empty;
            uInfo.QQ             = string.Empty;
            uInfo.MSN            = string.Empty;
            uInfo.OtherInfo      = string.Empty;
            uInfo.LastChangeDate = dtNow;

            #endregion

            #region UserExtInfo

            extInfo.UserSite                = 0;
            extInfo.UserRole                = 0;
            extInfo.UserAccess              = UserAccess.App | UserAccess.Web;
            extInfo.CreateDeviceId          = extInfo.CreateDeviceId;
            extInfo.CreateAPPChannel        = extInfo.CreateAPPChannel;
            extInfo.CreateAccountChannel    = extInfo.CreateAccountChannel;
            extInfo.LastLoginDeviceId       = extInfo.CreateDeviceId;
            extInfo.LastLoginAPPChannel     = extInfo.CreateAPPChannel;
            extInfo.LastLoginAccountChannel = extInfo.CreateAccountChannel;
            extInfo.ExpScore                = 0;
            extInfo.ExpLevel                = 0;
            extInfo.GradeName               = string.Empty;
            extInfo.GradeIcon               = string.Empty;
            extInfo.VirtualCoinCount        = 0;
            extInfo.FansCount               = 0;
            extInfo.FollowedCount           = 0;
            extInfo.TopicCount              = 0;
            extInfo.ReplyCount              = 0;

            #endregion

            #region UserCoords

            UserCoords userCoords = new UserCoords
            {
                Longitude      = 0,
                Latitudes      = 0,
                LastChangeTime = dtNow
            };

            #endregion

            #region UserOptions

            UserOptions userOptions = new UserOptions
            {
                RemindPrivateMessage = true,
                RemindGroupMessage   = true,
                RemindBeFollowed     = false,
                RemindTopicBeReply   = false,
                LastChangeDate       = dtNow
            };

            #endregion

            #region UserWithSchool

            UserWithSchool userInSchool = new UserWithSchool
            {
                SchoolId      = 0,
                IsTrial       = false,
                TrialedSource = string.Empty,
                IsActivated   = false,
                ActivatedDate = dtNow,
                IsExpired     = false,
                ExpiredDate   = dtNow,
                StudNo        = string.Empty,
                ClassInfo     = string.Empty,
                Status        = 0,
                Comment       = string.Empty,
                SyncForBbs    = false
            };

            #endregion

            UserData.CreateUser(uAccount, uInfo, extInfo, userCoords, userOptions, userInSchool);

            if (uAccount.UserId > 0)
            {
                //初始经验值
                if (userConfig.InitExp != 0)
                {
                    UpdateUserExp(uAccount.UserId, userConfig.InitExp, "注册");
                }

                //初始虚拟币
                if (userConfig.InitCoin != 0)
                {
                    UpdateUserCoin(uAccount.UserId, userConfig.InitCoin, "注册");
                }
            }
        }
예제 #4
0
        /// <summary>
        /// 获取用户验证信息
        /// </summary>
        /// <param name="uAccount">用户账户信息(用户名和密码)</param>
        /// <param name="userAccess">用户对应的登录权限</param>
        /// <returns>用户验证信息</returns>
        public static UserVaildInfo GetUserVaildInfo(UserAccount uAccount, UserAccess userAccess = UserAccess.App)
        {
            UserVaildInfo uVaildInfo = UserData.GetUserVaildInfo(uAccount.UserName, userAccess);

            #region 密码

            uAccount.Password = string.Format("MIAP_{0}_{1}_GW", uAccount.Password, uVaildInfo.PasswordSalt).CreateMD5Encrypt();
            if (!uAccount.Password.Equals(uVaildInfo.Password))
            {
                uVaildInfo.UserId = 0;
                return(uVaildInfo);
            }

            #endregion

            #region 账户是否通过验证

            if (!uVaildInfo.IsApproved)
            {
                uVaildInfo.UserId = -1;
                return(uVaildInfo);
            }

            #endregion

            #region 是否被锁定

            if (uVaildInfo.IsLocked)
            {
                if (DateTime.Now < uVaildInfo.LastLockedoutDate)
                {
                    uVaildInfo.UserId = -2;
                    return(uVaildInfo);
                }

                //锁定时间到期,解锁
                UserData.SetUsesUnLocked(uVaildInfo.UserId);
                //记录状态变更日志
                UserStatusChangedLog log = new UserStatusChangedLog
                {
                    UserId     = uVaildInfo.UserId,
                    Action     = 1,
                    Comment    = "锁定时间到期,自动解锁!",
                    CreateDate = DateTime.Now
                };
                LogsBiz.CreateLogs <UserStatusChangedLog>(log);
            }

            #endregion

            #region 是否为试用账号,如果是,试用账号状态

            if (uVaildInfo.UserSite > 0)
            {
                UserWithSchool uWithSchool = UserData.GetUserWithSchool(uVaildInfo.UserId);
                UserWithSchool tempUserWithSchoolInfo;
                //试用账号
                if (uWithSchool.IsTrial)
                {
                    if (!uWithSchool.IsActivated)
                    {
                        //激活试用账号
                        UserConfig userConfig = UserConfigs.GetUserConfigCache();
                        tempUserWithSchoolInfo = new UserWithSchool
                        {
                            UserId        = uWithSchool.UserId,
                            IsActivated   = true,
                            ActivatedDate = DateTime.Now,
                            IsExpired     = false,
                            ExpiredDate   = userConfig.TrialAccountExpiredDay > 0 ? DateTime.Now.AddDays(userConfig.TrialAccountExpiredDay) : DateTime.MaxValue
                        };
                        UserData.SchoolTrialUserStatusChanged(tempUserWithSchoolInfo);
                    }
                    else
                    {
                        //超时时间已过,将试用账号设为过期
                        if (!uWithSchool.IsExpired && DateTime.Now >= uWithSchool.ExpiredDate)
                        {
                            tempUserWithSchoolInfo = new UserWithSchool
                            {
                                UserId        = uWithSchool.UserId,
                                IsActivated   = uWithSchool.IsActivated,
                                ActivatedDate = uWithSchool.ActivatedDate,
                                IsExpired     = true,
                                ExpiredDate   = uWithSchool.ExpiredDate
                            };
                            UserData.SchoolTrialUserStatusChanged(tempUserWithSchoolInfo, 1);

                            uWithSchool.IsExpired = true;
                        }

                        //试用账号已过期
                        if (uWithSchool.IsExpired)
                        {
                            uVaildInfo.UserId = -3;
                            return(uVaildInfo);
                        }
                    }
                }
            }

            #endregion

            return(uVaildInfo);
        }
예제 #5
0
 /// <summary>
 /// 创建用户记录
 /// </summary>
 /// <param name="uAccount">用户账号信息</param>
 /// <param name="uInfo">用户个人信息</param>
 /// <param name="extInfo">用户扩展信息</param>
 /// <param name="userCoords">用户当前位置坐标信息</param>
 /// <param name="userOptions">用户个人应用设置信息</param>
 /// <param name="userInSchool">学校用户信息</param>
 public static void CreateUser(UserAccount uAccount, UserInfo uInfo, UserExtInfo extInfo, UserCoords userCoords, UserOptions userOptions, UserWithSchool userInSchool)
 {
     using (DbCommander cmd = new DbCommander(DbConn.WriteDb, "SP_Users_UserAccountCreate", CommandType.StoredProcedure))
     {
         cmd.AddInputParameters(
             @"UserId, UserName, Password, PasswordFormat, PasswordSalt, LoginCount, CreateDate, NickName, RealName, BackIcon, HeadIcon, Signature, Comment, Gender, Birthday, IDCardNo, Area, Address, PostCode, Industry, Company, JobPosition, Interests, WebSite, Email, Mobile, Telphone, QQ, MSN, OtherInfo, UserSite, UserRole, UserAccess, CreateDeviceId, CreateAPPChannel, CreateAccountChannel, Longitude, Latitudes, RemindPrivateMessage, RemindGroupMessage, RemindBeFollowed, RemindTopicBeReply, SchoolId, IsTrial, TrialedSource, IsActivated, IsExpired, StudNo, ClassInfo, SchoolComment, SyncForBbs, Status",
             uAccount.UserId,
             uAccount.UserName,
             uAccount.Password,
             uAccount.PasswordFormat,
             uAccount.PasswordSalt,
             uAccount.LoginCount,
             uAccount.CreateDate,
             uInfo.NickName,
             uInfo.RealName,
             uInfo.BackIcon,
             uInfo.HeadIcon,
             uInfo.Signature,
             uInfo.Comment,
             uInfo.Gender,
             uInfo.Birthday,
             uInfo.IDCardNo,
             uInfo.Area,
             uInfo.Address,
             uInfo.PostCode,
             uInfo.Industry,
             uInfo.Company,
             uInfo.JobPosition,
             uInfo.Interests,
             uInfo.WebSite,
             uInfo.Email,
             uInfo.Mobile,
             uInfo.Telphone,
             uInfo.QQ,
             uInfo.MSN,
             uInfo.OtherInfo,
             extInfo.UserSite,
             extInfo.UserRole,
             extInfo.UserAccess,
             extInfo.CreateDeviceId,
             extInfo.CreateAPPChannel,
             extInfo.CreateAccountChannel,
             userCoords.Longitude,
             userCoords.Latitudes,
             userOptions.RemindPrivateMessage,
             userOptions.RemindGroupMessage,
             userOptions.RemindBeFollowed,
             userOptions.RemindTopicBeReply,
             userInSchool.SchoolId,
             userInSchool.IsTrial,
             userInSchool.TrialedSource,
             userInSchool.IsActivated,
             userInSchool.IsExpired,
             userInSchool.StudNo,
             userInSchool.ClassInfo,
             userInSchool.Comment,
             userInSchool.SyncForBbs,
             userInSchool.Status
             );
         uAccount.UserId = Convert.ToInt32(cmd.ExecuteScalar());
     }
 }