public AccountSignResult SignUp(AccountSign entity)
        {
            if (null == entity || string.IsNullOrEmpty(entity.MobilePhone) || string.IsNullOrEmpty(entity.Password) ||
                string.IsNullOrEmpty(entity.ValidationCode) || ProfileType.None == entity.SelectedProfileType)
            {
                this.ReturnPreconditionFailedMessage();
            }
            var account = MvcContext.Current.ClientAccount;

            if (null == account)
            {
                this.ReturnPreconditionFailedMessage();
            }

            var isValid = MessageHelper.CheckSMSValidationCode(entity.MobilePhone, entity.ValidationCode);

            if (MvcContext.Current.Test && entity.ValidationCode == AppEnvironment.TestValidationCode)
            {
                isValid = true;
            }
            if (false == isValid)
            {
                return(new AccountSignResult()
                {
                    SignStatus = SignStatus.InvalidValidationCode,
                    ErrorMessage = "验证码无效,请重新获取"
                });
            }
            if (!string.IsNullOrEmpty(entity.InviteCode))
            {
                System.Web.HttpContext.Current.Items.Add(WorkplaceApplication.InviteCodeKey, entity.InviteCode);
            }

            var signStatus = SignStatus.Error;

            var signedUpInfo = new SignedUpInfo()
            {
                InviteCode    = entity.InviteCode,
                SignedUpIp    = this.Request.GetClientIP(),
                HttpUserAgent = this.Request.GetUserAgent(),
                HttpReferer   = null == this.Request.Headers.Referrer ? "" : this.Request.Headers.Referrer.ToString()
            };
            var userPassport = AccountAuthentication.SignUp(entity.MobilePhone, entity.Password, entity.SelectedProfileType, signedUpInfo, out signStatus);

            var result = new AccountSignResult();

            result.SignStatus = signStatus;
            if (result.SignStatus == SignStatus.Success)
            {
                result.CreatedNewPassport = true;
                result.Account            = new AccountEntity(account, userPassport);
                result.AdditionalAction   = ProcessAdditionalAction(entity.AdditionalAction);

                WriteTokenToBrowser(result);
            }
            else
            {
                if (result.SignStatus == SignStatus.DuplicateMobilePhone)
                {
                    result.ErrorMessage = "手机号已经注册";
                }
                else
                {
                    result.ErrorMessage = "注册失败";
                }
            }

            return(result);
        }