/// <summary> /// 用户注册 /// </summary> /// <param name="request">注册模型</param> /// <returns></returns> public async Task <bool> UserRegister(RegisterRequest request) { #region 验证 if (UserManager.IsAny(x => x.UserName == request.UserName)) { throw new AppException("该用户名已经注册过"); } if (string.IsNullOrWhiteSpace(request.Email)) { throw new AppException("请输入邮箱"); } if (UserManager.IsAny(x => x.Email == request.Email)) { throw new AppException("该邮箱已经注册过"); } if (string.IsNullOrWhiteSpace(request.PassWord)) { throw new AppException("请输入密码"); } if (string.IsNullOrWhiteSpace(request.ConfirmPassWord)) { throw new AppException("请输入确认密码"); } if (string.IsNullOrWhiteSpace(request.ConfirmPassWord)) { throw new AppException("请输入确认密码"); } if (request.PassWord != request.ConfirmPassWord) { throw new AppException("密码和确认密码不一致"); } #endregion var mapper = new MapperConfiguration(x => x.CreateMap <RegisterRequest, User>()).CreateMapper(); User user = mapper.Map <User>(request); user.PassWord = MD5.Md5(user.PassWord).ToLower(); user.CreateTime = DateTime.Now; user.LoginTime = DateTime.Now; user.IP = Accessor.HttpContext.Connection.RemoteIpAddress.ToString(); user.Portrait = "/Image/user.png"; user.Money = 0; var result = DbContext.Db.Ado.UseTran(() => { UserManager.Insert(user); UserDetailsManager.Insert(new UserDetails() { UID = user.ID }); }); //发送邮件 Cms_Sysconfig sys = await Cms_SysconfigManager.GetSingleAsync(x => x.Id == 1); EmailService.MailSending(request.Email, "欢迎您注册宇宙物流", $"欢迎您注册宇宙物流", sys.Mail_From, sys.Mail_Code, sys.Mail_Host); return(true); }
/// <summary> /// 邮箱获取验证码 /// </summary> /// <param name="CodeKey">验证码</param> /// <param name="Email">邮箱</param> /// <returns></returns> public async Task <string> EmailGetCode(string CodeKey, string Email) { //读写分离强制走主库 DbContext.Db.Ado.IsDisableMasterSlaveSeparation = true; DateTime dt = DateTime.Now.Date; //批量删除今天之前的验证码 var t5 = DbContext.Db.Deleteable <Code>().Where(x => x.time < dt).ExecuteCommand(); Code cModel = await CodeManager.GetSingleAsync(x => x.email == Email && x.time > dt && x.type == (int)CodeType.Email); //判断验证码是否超出次数 if (cModel != null ? cModel.count >= 6 : false) { throw new AppException("发送超出次数"); } //获得验证码 string code = new ValidateCode().CreateValidateCode(6);//生成验证码,传几就是几位验证码 //发送邮件 Cms_Sysconfig sys = await Cms_SysconfigManager.GetSingleAsync(x => x.Id == 1); if (!EmailService.MailSending(Email, "宇宙物流验证码", $"您在宇宙物流的验证码是:{code},10分钟内有效", sys.Mail_From, sys.Mail_Code, sys.Mail_Host)) { throw new AppException("发送失败"); } #region 保存验证码统计 if (cModel == null) { cModel = new Code() { type = (int)CodeType.Email, email = Email, time = DateTime.Now, count = 1 }; CodeManager.Insert(cModel); } else { cModel.count++; } #endregion cModel.code = code; //保存验证码进缓存 await RedisService.SetAsync(CommentConfig.MailCacheCode + CodeKey, cModel, 10); //读写分离取消强制走主库 DbContext.Db.Ado.IsDisableMasterSlaveSeparation = false; return("验证码发送成功"); }