public RestfulResult OutSiteLogin(OutSiteLoginRequest request)
        {
            request.OutsiteNickname = UrlDecode(request.OutsiteNickname);

            var response = this._customerService.OutSiteLogin(request);

            return new RestfulResult { Data = response };
        }
        public UserEntity OutSiteLogin2(OutSiteLoginRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (String.IsNullOrWhiteSpace(request.OutsiteUid))
            {
                return null;
            }

            if (request.OsType == OutsiteType.None)
            {
                return null;
            }

            int userId;
            var outsiteEntity = _outSiteCustomerRepository.GetItem(request.OutsiteUid, (int)request.OsType);
            if (outsiteEntity == null)
            {
                using (var ts = new TransactionScope())
                {
                    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
                    });

                    _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
                    });
                    ts.Complete();

                    return utmp;
                }
            }
            else
            {
                userId = outsiteEntity.AssociateUserId;
                _customerRepository.SetLoginDate(userId, DateTime.Now);
                return _customerRepository.GetItem(userId);
            }

           
        }
        /// <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
                });
        }