Exemple #1
0
        /// <summary>
        /// 外站用户登录
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult <CustomerInfoResponse> OutSiteLogin(OutSiteLoginRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (String.IsNullOrWhiteSpace(request.OutsiteUid))
            {
                return(new ExecuteResult <CustomerInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            if (request.OsType == OutsiteType.None)
            {
                return(new ExecuteResult <CustomerInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            int userId;

            var outsiteEntity = _outSiteCustomerRepository.GetItem(request.OutsiteUid, (int)request.OsType);

            if (outsiteEntity == null)
            {
                //没有这个用户
                var utmp = _customerRepository.Insert(new UserEntity
                {
                    CreatedDate   = DateTime.Now,
                    CreatedUser   = 0,
                    EMail         = String.Empty,
                    LastLoginDate = DateTime.Now,
                    Logo          = String.Empty,
                    Mobile        = String.Empty,
                    Id            = 0,
                    Nickname      = request.OutsiteNickname,
                    Name          =
                        String.Format("__{0}{1}",
                                      ((int)EnumExtension.Parser <OutsiteType>(request.OutsiteType)).
                                      ToString(CultureInfo.InvariantCulture), request.OutsiteUid),
                    Password    = Guid.NewGuid().ToString(),
                    UpdatedDate = DateTime.Now,
                    Status      = (int)DataStatus.Normal,
                    //默认达人
                    UserLevel   = (int)UserLevel.User,
                    Description = String.Empty,
                    Gender      = (int)GenderType.Default
                });

                if (utmp == null || utmp.Id < 1)
                {
                    return(new ExecuteResult <CustomerInfoResponse>(null)
                    {
                        StatusCode = StatusCode.InternalServerError, Message = "创建用户失败"
                    });
                }

                //创建
                var tmp = _outSiteCustomerRepository.Insert(new OutsiteUserEntity
                {
                    CreatedDate     = DateTime.Now,
                    CreatedUser     = utmp.Id,
                    Description     = String.Empty,
                    LastLoginDate   = DateTime.Now,
                    AssociateUserId = utmp.Id,
                    OutsiteType     = (int)request.OsType,
                    Status          = (int)DataStatus.Normal,
                    OutsiteUserId   = request.OutsiteUid
                });

                if (tmp == null)
                {
                    return(new ExecuteResult <CustomerInfoResponse>(null)
                    {
                        StatusCode = StatusCode.InternalServerError, Message = "2创建用户失败"
                    });
                }

                //TODO:增加积分
                _pointService.Insert(new PointHistoryEntity
                {
                    Amount          = 100,
                    CreatedDate     = DateTime.Now,
                    CreatedUser     = request.AuthUid,
                    Description     = String.Empty,
                    Name            = "恭喜您注册成功获得100积点",
                    PointSourceId   = 0,
                    PointSourceType = (int)PointSourceType.System,
                    Status          = (int)DataStatus.Normal,
                    User_Id         = tmp.AssociateUserId,
                    UpdatedDate     = DateTime.Now,
                    UpdatedUser     = request.AuthUid,
                    Type            = (int)PointType.Register
                });

                // _userService.AddPoint(utmp.Id, 100, utmp.Id);

                userId = tmp.AssociateUserId;
            }
            else
            {
                userId = outsiteEntity.AssociateUserId;
                //更新登录时间
                _customerRepository.SetLoginDate(userId, DateTime.Now);
            }

            return(GetUserInfo(new GetUserInfoRequest
            {
                AuthUid = userId,
                AuthUser = null,
                Method = null,
                Token = null,
                Client_Version = request.Client_Version
            }));
        }