Пример #1
0
        public async Task <ActionResult> DoRegister_Vip(RegisterViewModel model)
        {
            try
            {
                //1、验证请求
                if (!ModelState.IsValid)
                {
                    foreach (ModelState state in ModelState.Values.Where(state => state.Errors.Count > 0))
                    {
                        return(Json(new { code = 400, msg = state.Errors[0].ErrorMessage }));
                    }
                    return(Json(new { code = 400, msg = "注册失败,参数错误" }));
                }

                var    birthday         = string.Empty;
                int    Gender           = -1;
                int    Age              = -1;
                string IdentityCardType = ((int)ECustomerIdentificationType.IdentityCard).ToString();
                //判断证件类型是否是身份证
                if (model.PaperWork == IdentityCardType)
                {
                    switch (model.IdentityNumber.Length)
                    {
                    case 15:
                        birthday = "19" + model.IdentityNumber.Substring(6, 2) + "-" + model.IdentityNumber.Substring(8, 2) + "-" + model.IdentityNumber.Substring(10, 2);
                        Gender   = (Convert.ToInt32(model.IdentityNumber.Substring(14)) % 2 == 0 ? 2 : 1);
                        Age      = DateTime.Now.Year - Convert.ToInt32("19" + model.IdentityNumber.Substring(6, 2));
                        break;

                    case 18:
                        birthday = model.IdentityNumber.Substring(6, 4) + "-" + model.IdentityNumber.Substring(10, 2) + "-" + model.IdentityNumber.Substring(12, 2);
                        Gender   = (Convert.ToInt32(model.IdentityNumber.Substring(16, 1)) % 2 == 0 ? 2 : 1);
                        Age      = DateTime.Now.Year - Convert.ToInt32(model.IdentityNumber.Substring(6, 4));
                        break;

                    default:
                        return(Json(new { code = 402, msg = "请正确输入证件号码" }));
                    }
                    DateTime time;
                    if (!DateTime.TryParse(birthday, out time))
                    {
                        return(Json(new { code = 402, msg = "请正确输入证件号码" }));
                    }
                    if (time < DateTime.Parse("1900-01-10"))
                    {
                        return(Json(new { code = 402, msg = "请正确输入证件号码" }));
                    }
                }

                //第一:确认验证码
                var validateCode = string.Empty;

                if (Session["ValidateCode"] != null)
                {
                    validateCode = Session["ValidateCode"].ToString();
                }

                if (!validateCode.Equals(model.ImgCaptcha))
                {
                    return(Json(new { code = 402, url = "/Account/LogonPage", msg = "图片验证码输入有误" }));
                    //return RedirectToAction("LogonPage", "Account", new { returnUrl = returnUrl });
                }
                ////2、验证手机验证码
                ReturnResult _captchaResult = _AppContext.UserSecurityApp.ValidateMobileVerifyCode(model.Mobile, model.Captcha);
                if (!_captchaResult.IsSuccess)
                {
                    return(Json(new { code = 401, msg = "短信验证码错误或已过期,请重新获取" }));
                }
                int userLevel = (int)MemshipLevel.OneStar;
                //根据身份证号,查询车辆信息,确定会员级别
                if (!string.IsNullOrEmpty(model.IdentityNumber))
                {
                    userLevel = GetUserLevel(model.IdentityNumber);
                }

                //判断用户级别
                //3、获取注册信息
                var user = new ApplicationUser
                {
                    No                 = _AppContext.MemberNumberApp.GetNumber("1"),//会员卡号
                    PhoneNumber        = model.Mobile,
                    UserName           = model.Mobile,
                    NickName           = CommonUtilitys.GetNikeName(),
                    IdentityNumber     = model.IdentityNumber,
                    MLevel             = userLevel,
                    MType              = (int)model.MType,
                    SystemMType        = (int)MembershipType.WhitoutCar,
                    ActiveWay          = (int)MembershipActiveWay.ClientWeb,
                    CreatedPerson      = string.IsNullOrEmpty(model.Source) ? "blms_wap" : model.Source,
                    MLevelBeginDate    = DateTime.Parse(DateTime.Now.ToShortDateString()),
                    MLevelInvalidDate  = DateTime.Parse(DateTime.Now.ToShortDateString()).AddYears(1),
                    PaperWork          = model.PaperWork,
                    Mid                = model.IdentityNumber,
                    AuthenticationTime = Convert.ToDateTime("1900-01-01"),
                    Age                = Age,
                    Gender             = Gender.ToString()
                };
                string _activedealerId = model.ActivedealerId;

                //4、检验身份证号
                Task <FrontIdentityUser> cusObj = null;
                if (!string.IsNullOrEmpty(model.IdentityNumber))
                {
                    cusObj = new FrontUserStore <FrontIdentityUser>().FindByIdentityNumber(model.IdentityNumber);
                    if (cusObj != null && cusObj.Result != null)
                    {
                        return(Json(new { code = 402, msg = "您输入的证件号已被注册" }));
                    }
                }
                //5、注册用户,如果用户存在则更新该用户信息
                IdentityResult result = null;
                //if (string.IsNullOrEmpty(model.VIN))
                if (!string.IsNullOrEmpty(birthday))
                {
                    user.Birthday = birthday;
                }
                if (!(cusObj != null && cusObj.Result != null))
                {
                    result = await UserManager.CreateAsync(user, model.Password);
                }
                int IsHasCar = 0;
                //6、注册完成跳转
                if (result != null && result.Succeeded)
                {
                    // 1)检索是否有车
                    var gradeUser = UserManager.FindByName(model.Mobile);
                    var carList   = _AppContext.CarServiceUserApp.SelectCarListByIdentity(model.IdentityNumber);

                    // 正式环境取消注释
                    if (carList.Count() > 0)
                    {
                        gradeUser.SystemMType = (int)MembershipType.WhitCar;
                        IsHasCar = 1;
                        gradeUser.AuthenticationTime   = DateTime.Now;
                        gradeUser.AuthenticationSource = "blms_wap";
                        gradeUser.Age    = Age;
                        gradeUser.Gender = Gender.ToString();
                    }
                    gradeUser.Age    = Age;
                    gradeUser.Gender = Gender.ToString();
                    UserManager.Update(gradeUser);

                    try
                    {
                        //模拟登陆
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);
                    }
                    catch (Exception ex)
                    {
                        Vcyber.BLMS.Common.LogService.Instance.Debug("注册成功模拟登陆异常", ex);
                    }
                    // 5)发送短信

                    //6判断车型交费返积分
                    // var returnIntegralType= (int) GetCarTypeByIdentity(model.IdentityNumber);

                    var returnIntegralType = (int)_AppContext.CarServiceUserApp.GetReIntegralTypeByIdentity(model.IdentityNumber);

                    if (gradeUser.SystemMType == 2 && returnIntegralType != -1)
                    {
                        var amount = "";
                        if (returnIntegralType == 0)
                        {
                            amount = "400";
                        }
                        else if (returnIntegralType == 1)
                        {
                            amount = "700";
                        }
                        else if (returnIntegralType == 2)
                        {
                            amount = "200";
                        }
                        else
                        {
                            amount = "400";
                        }
                        _AppContext.SMSApp.SendSMS(ESmsType.提交注册_匹配到车辆, model.Mobile, new string[] { amount });
                    }
                    else
                    {
                        _AppContext.SMSApp.SendSMS(ESmsType.注册成功, model.Mobile, new string[] { "" });
                    }
                    //判断用户是否是企业用户
                    bool flag = _AppContext.DealerMembershipApp.IsPersonalUser(model.IdentityNumber);
                    if (!flag)
                    {
                        returnIntegralType = -1;
                    }
                    return(Json(new { code = 200, msg = "注册成功", ReIntegralType = returnIntegralType, Mtype = gradeUser.MType, HasCar = IsHasCar }));
                }
                AddErrors(result);
                var errorMsg = result.Errors.FirstOrDefault();
                if (errorMsg != null && errorMsg.StartsWith("Passwords"))
                {
                    errorMsg = "密码必须为8位以上数字和大小写字母组合";
                }
                if (errorMsg != null && errorMsg.StartsWith("Name"))
                {
                    errorMsg = "您的手机号已经注册过";
                }

                // 如果我们进行到这一步时某个地方出错,则重新显示表单
                return(Json(new { code = 400, msg = string.Format("{0}", errorMsg) }));
            }
            catch (Exception ex)
            {
                return(Json(new { code = 400, msg = string.Format("{0}", ex.Message) }));
            }
        }
Пример #2
0
        public async Task <ActionResult> DoLoginByPhone(LoginViewModel model)
        {
            try
            {
                int isFirst = 0;

                if (!string.IsNullOrEmpty(model.Captcha))
                {
                    //第一:确认验证码
                    var validateCode = string.Empty;

                    if (Session["ValidateCode"] != null)
                    {
                        validateCode = Session["ValidateCode"].ToString();
                    }

                    if (!validateCode.Equals(model.Captcha))
                    {
                        return(Json(new { code = 400, url = "/Account/LogonPage", msg = "图片验证码输入有误" }));
                    }
                }
                ReturnResult _captchaResult = _AppContext.UserSecurityApp.ValidateMobileVerifyCode(model.UserName, model.SMSCaptcha);
                if (!_captchaResult.IsSuccess)
                {
                    return(Json(new { code = 400, msg = "短信验证码错误或已过期,请重新获取" }));
                }

                //手机号是注册用直接登陆,否则注册新用户登陆
                ApplicationUser applicationUser;
                if (this.LoginFactory(model, out applicationUser, 2))
                {
                    if (applicationUser != null)
                    {
                        if (applicationUser.IsNeedModifyPw == 1)
                        {
                            return(Json(new { code = 300, msg = " 帐户存在风险, 请先重置密码" }));
                        }
                    }
                    _AppContext.LoginMemRecordApp.Add(applicationUser.Id, applicationUser.NickName, EDataSource.blms_wap);
                    await SignInManager.SignInAsync(applicationUser, model.RememberMe, rememberBrowser : false);

                    //BBSUtil.CheckAndCreateDefaultBBSMember(applicationUser); //new

                    var returnIntegralType = (int)_AppContext.CarServiceUserApp.GetReIntegralTypeByIdentity(applicationUser.IdentityNumber);
                    if (_AppContext.LoginMemRecordApp.IsReMemberShipRequest(applicationUser.Id) && returnIntegralType != -1 && applicationUser.IsPay != 2)
                    {
                        return(Json(new { code = 200, msg = "登录成功", isrequest = 1, returnIntegralType = returnIntegralType, identityNumber = applicationUser.IdentityNumber }));
                    }
                    else
                    {
                        return(Json(new { code = 200, msg = "登录成功", isrequest = 0 }));
                    }
                }
                else //手机号未注册 ,注册并登陆
                {
                    isFirst = 1;
                    var store             = new FrontUserStore <FrontIdentityUser>();
                    var membershipManager = new UserManager <FrontIdentityUser>(store);
                    if (store.CheckUserNameIsExist(model.UserName))
                    {
                        return(Json(new { code = 400, success = false, msg = "系统中已存在此手机号" }));
                    }

                    IdentityResult CreateResult       = null;
                    var            membershipIdentity = new FrontIdentityUser
                    {
                        No                 = _AppContext.MemberNumberApp.GetNumber("1"), //会员卡号
                        NickName           = CommonUtilitys.GetNikeName(),
                        UserName           = model.UserName,                             // model.UserName,
                        PhoneNumber        = model.UserName,
                        Password           = "******" + model.UserName.Substring(model.UserName.Length - 6, 6),
                        Status             = (int)MembershipStatus.Nomal,
                        CreateTime         = DateTime.Now.ToLongTimeString(),
                        CreatedPerson      = "blms_wap",
                        MType              = (int)MembershipType.WhitoutCar,         //非车主
                        MLevel             = (int)MemshipLevel.OneStar,              //级别
                        IsPay              = (int)MembershipPayStatus.NotPay,        //经销商新增的会员均为已缴纳100付费
                        ApprovalStatus     = (int)MembershipApprovalStatus.Activing, //激活中
                        ActiveWay          = (int)MembershipActiveWay.ClientWeb,
                        IsNeedModifyPw     = (int)MembershipNeedModifyPw.No,
                        MLevelBeginDate    = DateTime.Parse(DateTime.Now.ToShortDateString()),
                        MLevelInvalidDate  = DateTime.Parse(DateTime.Now.ToShortDateString()).AddYears(1),
                        AuthenticationTime = DateTime.Parse("1900-01-01")
                    };
                    CreateResult = membershipManager.Create(membershipIdentity, membershipIdentity.Password);
                    // var user = store.FindByNameAsync(model.UserName).Result;
                    if (CreateResult != null && !CreateResult.Succeeded)
                    {
                        var message = "";
                        foreach (var error in CreateResult.Errors)
                        {
                            message += error;
                        }
                        ModelState.AddModelError("", message);
                        return(Json(new { success = false, msg = message }));
                    }

                    this.LoginFactory(model, out applicationUser, 2);
                    _AppContext.LoginMemRecordApp.Add(applicationUser.Id, applicationUser.NickName, EDataSource.blms_wap);
                    await SignInManager.SignInAsync(applicationUser, model.RememberMe, rememberBrowser : false);

                    //BBSUtil.CheckAndCreateDefaultBBSMember(applicationUser); //new

                    _AppContext.UserMessageRecordApp.InsertLoginChangePasswordMessage(applicationUser.Id);
                    return(Json(new { code = 200, msg = "登录成功", first = isFirst }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { code = 400, msg = ex.Message }));
            }
        }