示例#1
0
        public static void BindUser(this Public Public, string UserID, string BindID, string BindProvider)
        {
            UserBind factor = new UserBind()
            {
                BindID       = BindID,
                BindProvider = BindProvider
            };
            EntityQueryRequest <UserBind> query = new EntityQueryRequest <UserBind>();

            query.AppendConditionMap(factor.BindID, () => factor.BindID);
            query.AppendConditionMap(factor.BindProvider, () => factor.BindProvider);
            UserBind bind = Actor.Public.BuildEntityProcessor("SecurityApp").QueryEntity(query).FirstOrDefault();

            if (bind.IsNull())
            {
                bind = new UserBind()
                {
                    ID           = Guid.NewGuid().ToString("N"),
                    BindID       = BindID,
                    BindProvider = BindProvider
                };
            }
            bind.UserID = UserID;
            bind.UpdateEntity("SecurityApp");
        }
示例#2
0
 static UserBindRepository()
 {
     UserBind entity = new UserBind();
     Type type = entity.GetType();
     AppendDataMap(type, "ID", () => entity.ID);
     AppendDataMap(type, "UserID", () => entity.UserID);
     AppendDataMap(type, "BindID", () => entity.BindID);
     AppendDataMap(type, "BindProvider", () => entity.BindProvider);
     ResultMapDelegate<UserBind> queryMap = UserBind_Map;
     QueryMapContainer[entity.GetType()] = queryMap;
 }
示例#3
0
        static UserBindRepository()
        {
            UserBind entity = new UserBind();
            Type     type   = entity.GetType();

            AppendDataMap(type, "ID", () => entity.ID);
            AppendDataMap(type, "UserID", () => entity.UserID);
            AppendDataMap(type, "BindID", () => entity.BindID);
            AppendDataMap(type, "BindProvider", () => entity.BindProvider);
            ResultMapDelegate <UserBind> queryMap = UserBind_Map;

            QueryMapContainer[entity.GetType()] = queryMap;
        }
示例#4
0
        public int AddUserBind(string openid, string userId, string passWord)
        {
            int      result = 0;
            UserBind model  = new UserBind();

            model.ID         = Guid.NewGuid().ToString();
            model.OpenId     = openid;
            model.userId     = userId;
            model.passWord   = passWord;
            model.CreateUser = openid;
            model.CreateTime = DateTime.Now;
            model.UpdateUser = openid;
            model.UpdateTime = DateTime.Now;
            model.isDelete   = "0";

            _userBindRepository.Add(model);
            return(_userBindRepository.SaveChanges());
        }
示例#5
0
        /// <summary>
        /// 是否绑定第三方帐号
        /// </summary>
        /// <param name="uniquelyId">第三方身份标识ID</param>
        /// <param name="typeCode">第三方类型</param>
        /// <returns></returns>
        public UserBind IsExistedThirdPartyById(string uniquelyId, string typeCode)
        {
            CheckIdNotNull(uniquelyId);
            CheckTypeCodeNotNull(typeCode);
            IQueryable <UserBind> queryable = this._iuserBindRepository.GetEntityList(CondtionEqualState());
            UserBind userBind = null;

            if ("qq" == typeCode)
            {
                userBind = (from ub in queryable
                            where ub.TypeCode == "qq" && ub.RelatedId == uniquelyId
                            select ub).FirstOrDefault <UserBind>();
            }
            else if ("sina" == typeCode)
            {
                userBind = (from ub in this._iuserBindRepository.GetEntityList(CondtionEqualState())
                            where ub.TypeCode == "sina" && ub.RelatedId == uniquelyId
                            select ub).FirstOrDefault <UserBind>();
            }
            return(userBind);
        }
示例#6
0
        /// <summary>
        /// 自动注册并绑定第三方
        /// </summary>
        /// <returns></returns>
        public void AutoRegisterAndBindThirdParty(string typeCode, string relatedId, string nickName, string figureURL, string ipAddress)
        {
            var success = Execute <bool>((db) =>
            {
                typeCode  = typeCode.UrlDecode();
                relatedId = relatedId.UrlDecode();
                nickName  = nickName.UrlDecode();
                figureURL = figureURL.UrlDecode();

                AssertUtil.NotNullOrWhiteSpace(typeCode, "第三方类型编码丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(relatedId, "第三方身份标识丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(nickName, "参数丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(figureURL, "参数丢失,请稍后再试");

                DateTime dt = DateTime.Now;
                Random rdm  = new Random();
                var user    = new User
                {
                    Account      = "AutoRegist" + rdm.Next(50000, 999999999).ToString(),
                    Phone        = "",
                    SubscribeNum = 0,
                    UserState    = 0,
                    BB           = 0,
                    Gender       = false,
                    PlayCount    = 0,
                    FansCount    = 0,
                    State        = false,
                    Password     = Md5Helper.MD5("AutoRegist" + rdm.Next(50000, 999999999).ToString(), 32),
                    CreateTime   = dt,
                    UpdateTime   = dt,
                    Level        = 0,
                    NickName     = nickName,
                    Picture      = figureURL,
                    UseBB        = 0
                };
                db.User.Add(user);
                var result = db.SaveChanges() > 0;
                //绑定第三方,新帐号不用做绑定判断,判断第三方是否已被绑定后写入关系

                //检测第三方帐号是否绑定其他帐号
                if (db.UserBind.Any(u => u.State == false && u.TypeCode == typeCode && u.UserId != user.Id && u.RelatedId == relatedId))
                {
                    AssertUtil.IsTrue(false, "第三方帐号已绑定其他帐号,请换个帐号试试...");
                }
                //绑定第三方帐号
                var ub = new UserBind
                {
                    UserId       = user.Id,
                    TypeCode     = typeCode,
                    RelatedId    = relatedId,
                    CreateUserId = user.Id,
                    CreateTime   = dt,
                    UpdateUserId = user.Id,
                    UpdateTime   = dt,
                    State        = false
                };
                db.UserBind.Add(ub);
                db.SaveChanges();

                return(result);
            });

            if (success)
            {
                CreateCache <User>();
                CreateCache <UserBind>();
            }
        }
示例#7
0
        /// <summary>
        /// 第三方注册新帐号并绑定
        /// </summary>
        /// <returns></returns>
        public void ThirdPartyBindAndRegister(string account, string password, string typeCode, string relatedId, string nickName, string figureURL, int type, string ipAddress)
        {
            var success = Execute <bool>((db) =>
            {
                account   = account.UrlDecode();
                password  = password.UrlDecode();
                typeCode  = typeCode.UrlDecode();
                relatedId = relatedId.UrlDecode();
                nickName  = nickName.UrlDecode();
                figureURL = figureURL.UrlDecode();

                AssertUtil.NotNullOrWhiteSpace(account, "用户账号为空");
                AssertUtil.NotNullOrWhiteSpace(password, "用户密码为空");
                AssertUtil.NotNullOrWhiteSpace(typeCode, "第三方类型编码丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(relatedId, "第三方身份标识丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(nickName, "参数丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(figureURL, "参数丢失,请稍后再试");

                var userAccount = db.User.FirstOrDefault(u => u.Account == account || u.Phone == account || u.Email == account);
                AssertUtil.IsNull(userAccount, "账号已经存在");

                DateTime dt = DateTime.Now;

                var user = new User
                {
                    Account      = account,
                    SubscribeNum = 0,
                    UserState    = 0,
                    BB           = 0,
                    Gender       = false,
                    PlayCount    = 0,
                    FansCount    = 0,
                    State        = false,
                    Password     = Md5Helper.MD5(password, 32),//TODO 用户密码 MD5加密
                    CreateTime   = dt,
                    UpdateTime   = dt,
                    Level        = 0,
                    UseBB        = 0,
                    NickName     = nickName,
                    Picture      = figureURL
                };

                if (type == 0)
                {
                    user.Phone = account;
                }
                else
                {
                    user.Email = account;
                }

                db.User.Add(user);
                var result = db.SaveChanges() > 0;

                if (result)
                {
                    db.Entry(user).State = EntityState.Modified;
                    db.Configuration.ValidateOnSaveEnabled = false;
                    result = db.SaveChanges() > 0;
                }

                //绑定第三方,新帐号不用做绑定判断,判断第三方是否已被绑定后写入关系

                //检测第三方帐号是否绑定其他帐号
                if (db.UserBind.Any(u => u.State == false && u.TypeCode == typeCode && u.UserId != user.Id && u.RelatedId == relatedId))
                {
                    AssertUtil.IsTrue(false, "第三方帐号已绑定其他帐号,请换个帐号试试...");
                }
                //绑定第三方帐号
                var ub = new UserBind
                {
                    UserId       = user.Id,
                    TypeCode     = typeCode,
                    RelatedId    = relatedId,
                    CreateUserId = user.Id,
                    CreateTime   = dt,
                    UpdateUserId = user.Id,
                    UpdateTime   = dt,
                    State        = false
                };
                db.UserBind.Add(ub);
                db.SaveChanges();

                return(result);
            });

            if (success)
            {
                CreateCache <User>();
                CreateCache <UserBind>();
            }
        }
示例#8
0
        /// <summary>
        /// 第三方绑定已有帐号并登录
        /// </summary>
        /// <param name="account">帐号</param>
        /// <param name="password">密码</param>
        /// <param name="typeCode">第三方类型编码</param>
        /// <param name="relatedId">第三方唯一身份标识</param>
        /// <param name="nickName">昵称</param>
        /// <param name="figureURL">头像</param>
        /// <param name="ipAddress">ip地址</param>
        public void ThirdPartyBindAndLogin(string account, string password, string typeCode, string relatedId, string nickName, string figureURL, string ipAddress)
        {
            var success = Execute((db) =>
            {
                account   = account.UrlDecode();
                password  = password.UrlDecode();
                typeCode  = typeCode.UrlDecode();
                relatedId = relatedId.UrlDecode();
                nickName  = nickName.UrlDecode();
                figureURL = figureURL.UrlDecode();

                AssertUtil.NotNullOrWhiteSpace(account, "用户账号为空");
                AssertUtil.NotNullOrWhiteSpace(password, "用户密码为空");
                AssertUtil.NotNullOrWhiteSpace(typeCode, "第三方类型编码丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(relatedId, "第三方身份标识丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(nickName, "参数丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(figureURL, "参数丢失,请稍后再试");
                AssertUtil.NotNullOrWhiteSpace(ipAddress, "请稍后再试");

                var user = db.User.FirstOrDefault(u => u.State == false && u.Password == password && (u.Phone == account || u.Account == account));
                if (user == null || user.Id < 1)
                {
                    user = db.User.FirstOrDefault(u => u.State == false && u.Password == password && (u.Email == account || u.Account == account));
                }
                AssertUtil.IsNotNull(user, "账号不存在或密码错误");

                //检测是否已绑定
                var userBind = db.UserBind.FirstOrDefault(u => u.State == false && u.TypeCode == typeCode && u.UserId == user.Id && u.RelatedId == relatedId);
                if (userBind == null)
                {
                    //检测该帐号是否绑定其他第三方帐号
                    if (db.UserBind.Any(u => u.State == false && u.TypeCode == typeCode && u.UserId == user.Id && u.RelatedId != relatedId))
                    {
                        AssertUtil.IsTrue(false, "该帐号已被绑定,请换个帐号试试...");
                    }
                    //检测第三方帐号是否绑定其他帐号
                    if (db.UserBind.Any(u => u.State == false && u.TypeCode == typeCode && u.UserId != user.Id && u.RelatedId == relatedId))
                    {
                        AssertUtil.IsTrue(false, "第三方帐号已绑定其他帐号,请换个帐号试试...");
                    }

                    //信息没有修改的情况下,拉取第三方昵称,头像等信息
                    if (user.UpdateTime.IsNull() || user.CreateTime >= user.UpdateTime)
                    {
                        user.NickName = nickName;
                        user.Picture  = figureURL;
                    }

                    DateTime dt = DateTime.Now;
                    //绑定第三方帐号
                    UserBind ub = new UserBind
                    {
                        UserId       = user.Id,
                        TypeCode     = typeCode,
                        RelatedId    = relatedId,
                        CreateUserId = user.Id,
                        CreateTime   = dt,
                        UpdateUserId = user.Id,
                        UpdateTime   = dt,
                        State        = false
                    };

                    user.UpdateTime = dt;

                    db.UserBind.Add(ub);

                    db.SaveChanges();
                }



                //上次登录时间和ip地址
                DateTime?lastLoginTime = user.CurrentLoginTime;
                string lastLoginIp     = user.CurrentLoginIp;

                //记录新的当前登录事件和上次登录时间
                user.LastLoginIp      = lastLoginIp;
                user.LastLoginTime    = lastLoginTime;
                user.CurrentLoginTime = DateTime.Now;
                user.CurrentLoginIp   = ipAddress;

                db.Entry <User>(user).State            = EntityState.Modified;
                db.Configuration.ValidateOnSaveEnabled = false;
                return(db.SaveChanges() > 0);
            });

            if (success)
            {
                CreateCache <User>();
                CreateCache <UserBind>();
            }
        }
示例#9
0
 public bool DeleteEntity(UserBind entity)
 {
     return(base.DeleteEntity <UserBind>(entity));
 }
示例#10
0
 public bool UpdateEntity(UserBind entity)
 {
     return(base.UpdateEntity <UserBind>(entity));
 }
示例#11
0
 public bool CreateEntity(UserBind entity)
 {
     return(base.CreateEntity <UserBind>(entity));
 }
示例#12
0
 public void Update(UserBind obj)
 {
     throw new NotImplementedException();
 }
示例#13
0
        public UserBind GetInfoByDepartid(int id)
        {
            UserBind user_depart = DbSet.Single(uid => uid.ID.Equals(id));

            return(user_depart);
        }
示例#14
0
 public virtual void Add(UserBind obj)
 {
     DbSet.Add(obj);
 }