Exemple #1
0
        public ApiResult Logout()
        {
            var authorizer = new QiuxunTokenAuthorizer(new ApiAuthContainer(this.Request));

            authorizer.Expire();

            return(new ApiResult());
        }
Exemple #2
0
        public static RequestLog BuildRequestLog(HttpRequestMessage request, RequestInfo requestInfo)
        {
            RequestLog log = new RequestLog
            {
                Id         = requestInfo.Id,
                HttpMethod = request.Method.Method
            };
            IdentityInfo authInfo = new QiuxunTokenAuthorizer(new ApiAuthContainer(request)).GetAuthInfo();

            if (authInfo != null)
            {
                log.CustomerId   = new int?((int)authInfo.UserId);
                log.UserName     = authInfo.UserAccount;
                log.CustomerGuid = new Guid();
            }
            log.ClientIp         = requestInfo.ClientIP;
            log.ClientIpHttp     = requestInfo.ClientIpHttp;
            log.Lng              = requestInfo.Lng;
            log.Lat              = requestInfo.Lat;
            log.LocationType     = (int)requestInfo.LocationType;
            log.ClientNetType    = requestInfo.ClientNetType;
            log.InterfaceVersion = requestInfo.InterfaceVersion;
            log.ClientVersion    = requestInfo.ClientVersion;
            log.ClientType       = (int)requestInfo.ClientType;
            log.ClientWidth      = requestInfo.ClientWidth;
            log.ClientHeight     = requestInfo.ClientHeight;
            log.UserAgent        = requestInfo.UserAgent;
            log.RequestCookie    = requestInfo.Cookie;
            log.ServerName       = Environment.MachineName;
            log.RequestTime      = requestInfo.RequestStartTime;
            log.Route            = request.RequestUri.LocalPath;
            log.OtherHeader      = requestInfo.OtherHeader;
            RequestImeiDto imeiInfo = requestInfo.ImeiInfo;

            log.Imei         = imeiInfo.RealImei ?? "";
            log.GenerateTime = imeiInfo.GenerateTime;
            log.IsFake       = imeiInfo.IsFake;
            log.RequestData  = GetApiRequestData(request, requestInfo);
            if (requestInfo.HasRegionCodeInfo)
            {
                log.ProvinceCode = requestInfo.ProvinceCode;
                log.CityCode     = requestInfo.CityCode;
                log.DistrictCode = requestInfo.DistrictCode;
            }
            else
            {
                log.Province = requestInfo.Province;
                log.City     = requestInfo.City;
                log.District = requestInfo.District;
            }
            TimeSpan span = (TimeSpan)(DateTime.Now - log.RequestTime);

            log.ElapsedMilliseconds = (int)span.TotalMilliseconds;
            return(log);
        }
Exemple #3
0
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            actionContext.Request.GetProperty <RequestInfo>("");
            IdentityInfo authInfo = new QiuxunTokenAuthorizer(new ApiAuthContainer(actionContext.Request)).GetAuthInfo();

            if (authInfo != null)
            {
                actionContext.Request.AddProperty <IdentityInfo>(authInfo, "");
            }
            base.OnAuthorization(actionContext);
        }
Exemple #4
0
        /// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="dto"></param>
        /// <param name="request"></param>
        public ApiResult <LoginResDto> UserRegister(RegisterReqDto dto, HttpRequestMessage request)
        {
            string password = Tool.GetMD5(dto.Password);
            string ip       = Tool.GetIP();
            string regsql   = @"
  insert into UserInfo(UserName, Name, Password, Mobile, Coin, Money, Integral, SubTime, LastLoginTime, State,Pid,RegisterIP)
  values(@UserName, @Name, @Password, @Mobile, 0,0, 0, getdate(), getdate(), 0,@Pid,@RegisterIP);select @@identity ";

            SqlParameter[] regsp = new SqlParameter[]
            {
                new SqlParameter("@UserName", dto.Phone),
                new SqlParameter("@Name", dto.NickName),
                new SqlParameter("@Password", password),
                new SqlParameter("@Mobile", dto.Phone),
                new SqlParameter("@Pid", dto.InviteCode.HasValue ? dto.InviteCode.Value : 0),
                new SqlParameter("@RegisterIP", ip)
            };

            object obj = SqlHelper.ExecuteScalar(regsql, regsp);

            if (obj == null)
            {
                throw new ApiException(50000, "注册失败,请重试");
            }

            int userId = Convert.ToInt32(obj);

            var      couponModel = GetCoupon("A0001");
            DateTime beginTime   = DateTime.Now;
            DateTime endTime     = DateTime.Now.AddDays(couponModel.ExpiryDate);

            #region 注册时,添加一张查看卷
            UserCoupon uc = new UserCoupon();
            uc.UserId     = userId;
            uc.CouponCode = "A0001";
            uc.PlanId     = 0;
            uc.BeginTime  = beginTime;
            uc.EndTime    = endTime;
            uc.FromType   = 1;
            uc.State      = 1;
            AddUserCoupon(uc);
            #endregion

            //TODO:事务优化处理
            #region 发放邀请注册奖励
            if (dto.InviteCode.HasValue)
            {
                try
                {
                    var inviteUser = GetUserInfo(dto.InviteCode.Value);
                    if (inviteUser != null)
                    {
                        //受邀奖励
                        int myReward = GetRadomReward(3);
                        AddCoinReward(userId, inviteUser.Id.ToString(), 6, myReward, 1);
                        //邀请奖励
                        int upReward = GetRadomReward(1);
                        AddCoinReward((int)inviteUser.Id, userId.ToString(), 7, upReward, 1);
                        //添加邀请任务记录
                        AddUserTask((int)dto.InviteCode.Value, 105);

                        //上级的上级奖励
                        if (inviteUser.Pid.HasValue && inviteUser.Pid > 0)
                        {
                            var superUser = GetUserInfo(inviteUser.Pid.Value);

                            if (superUser != null)
                            {
                                int superReward = GetRadomReward(2);
                                AddCoinReward((int)superUser.Id, inviteUser.Id.ToString(), 7, superReward, userId);
                            }
                        }

                        #region 邀请注册时,邀请人添加一张查看卷
                        UserCoupon uc1 = new UserCoupon();
                        uc1.UserId     = (int)inviteUser.Id;
                        uc1.CouponCode = "A0001";
                        uc1.PlanId     = 0;
                        uc1.BeginTime  = beginTime;
                        uc1.EndTime    = endTime;
                        uc1.FromType   = 2;
                        uc1.State      = 1;
                        AddUserCoupon(uc1);
                        #endregion
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error("发放邀请注册奖励异常", ex);
                }
            }
            #endregion

            #region  发登录token
            string       webHost  = ConfigurationManager.AppSettings["webHost"];
            string       avater   = string.Format("{0}/images/default_avater.png", webHost);
            IdentityInfo authInfo = new IdentityInfo()
            {
                UserId      = userId,
                UserAccount = dto.Phone,
                UserStatus  = 0,
                UserName    = dto.NickName,
                IsTemp      = false,
                Avater      = avater
            };

            var tokenAuth = new QiuxunTokenAuthorizer(new ApiAuthContainer(request));
            tokenAuth.Authorize(authInfo);

            #endregion

            LoginResDto resDto = new LoginResDto()
            {
                Account  = dto.Phone,
                Avater   = avater,
                UserId   = userId,
                Mobile   = dto.Phone,
                NickName = dto.NickName
            };

            return(new ApiResult <LoginResDto>()
            {
                Data = resDto
            });
        }
Exemple #5
0
        public ApiResult <LoginResDto> Login(LoginReqDto reqDto, HttpRequestMessage request)
        {
            UserInfoService service     = new UserInfoService();
            UserInfo        accountInfo = service.GetFullUserInfoByMobile(reqDto.Account);

            if (accountInfo == null)
            {
                throw new ApiException(15023, "用户名不存在或密码错误");
            }

            if (accountInfo.Password.StartsWith("$2y"))
            {
                if (!Crypter.CheckPassword(reqDto.Password, accountInfo.Password))
                {
                    throw new ApiException(15023, "用户名不存在或密码错误");
                }
            }
            else
            {
                if (Tool.GetMD5(reqDto.Password) != accountInfo.Password)
                {
                    throw new ApiException(15023, "用户名不存在或密码错误");
                }
            }

            string webHost = ConfigurationManager.AppSettings["webHost"];
            string avater  = string.IsNullOrWhiteSpace(accountInfo.Avater)
                ? string.Format("{0}/images/default_avater.png", webHost)
                : accountInfo.Avater;

            LoginResDto resDto = new LoginResDto()
            {
                Account  = accountInfo.Mobile,
                Avater   = avater,
                UserId   = accountInfo.Id,
                Mobile   = accountInfo.Mobile,
                NickName = accountInfo.NickName
            };

            #region  发登录token

            IdentityInfo authInfo = new IdentityInfo()
            {
                UserId      = accountInfo.Id,
                UserAccount = accountInfo.Mobile,
                UserStatus  = (int)accountInfo.State,
                UserName    = accountInfo.NickName,
                IsTemp      = false,
                Avater      = avater
            };

            var tokenAuth = new QiuxunTokenAuthorizer(new ApiAuthContainer(request));
            tokenAuth.Authorize(authInfo);

            #endregion

            return(new ApiResult <LoginResDto>()
            {
                Data = resDto
            });
        }