예제 #1
0
        public bool Login(string name, string pwd, out ClientResidentData user)
        {
            user = null;
            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pwd))
            {
                return(false);
            }
            var m = from r in unitOfWork.GetRepository <DC_Resident>().dbSet.Where(q => q.IsDeleted == false && q.Password == pwd)
                    join p in unitOfWork.GetRepository <DC_Person>().dbSet.Where(q => q.IdCard == name && !q.IsDeleted) on r.PersonID equals p.PersonID
                    join q in unitOfWork.GetRepository <ORG_Organization>().dbSet on r.OrganizationID equals q.OrganizationID
                    select new ClientResidentData
            {
                ResidentID   = r.ResidentID,
                ResidentNo   = r.ResidentNo,
                LoginName    = p.IdCard,
                ResidentName = p.Name,
                OrgId        = r.OrganizationID,
                PersonID     = r.PersonID,
                AreaID       = r.AreaID,
                OrgAddress   = q.City + q.Address,
                OrgPhone     = q.Tel
            };

            user = m.FirstOrDefault();
            if (user == null)
            {
                return(false);
            }
            return(true);
        }
        /// <summary>
        /// 登录接口
        /// </summary>
        /// <param name="auth">参数</param>
        public IHttpActionResult Post([FromBody] dynamic auth)
        {
            BaseResponse <IClientLoginUser> response = new BaseResponse <IClientLoginUser>();

            if (auth == null)
            {
                response.ResultCode    = 501;
                response.ResultMessage = "输入的参数不正确";
                response.IsSuccess     = false;
                return(Ok(response));
            }
            var uid = auth.uid.Value;
            var pwd = auth.pwd.Value;
            IClientLoginUser rtUser = null;
            bool             loginRs;

            if (!Regex.IsMatch(uid, @"^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$", RegexOptions.IgnoreCase))
            {
                ClientUserData user = null;
                loginRs = service.Login(uid, Util.Md5(pwd + uid), out user);
                if (user != null)
                {
                    user.UserType = Enum.GetName(typeof(UserType), UserType.Employee);
                }
                rtUser = user;
            }
            else
            {
                ClientResidentData user = null;
                loginRs = residentService.Login(uid, Util.Md5(pwd + uid), out user);
                if (user != null)
                {
                    user.UserType = Enum.GetName(typeof(UserType), UserType.Resident);
                }
                rtUser = user;
            }

            if (rtUser == null || !loginRs)
            {
                response.ResultCode    = 502;
                response.ResultMessage = "输入的用户名或密码不正确";
                response.IsSuccess     = false;
                return(Ok(response));
            }
            else
            {
                response.ResultCode    = 200;
                response.ResultMessage = "登录成功";
                response.Data          = rtUser;
                //生成Token
                var jwtcreated = Math.Round((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds + 5);
                var payload    = new Dictionary <string, dynamic>
                {
                    { "iss", uid },
                    { "iat", jwtcreated }
                };
                string token = JWT.JsonWebToken.Encode(payload, KMHC.SLTC.Business.Entity.Constants.SecretKey, JWT.JwtHashAlgorithm.HS256);
                response.Token = token;
                //KMHC.Infrastructure.Cached.LocalCachedProvider.Instance.Set(uid, 1);
                return(Ok(response));
            }
        }