コード例 #1
0
ファイル: LoginManager.cs プロジェクト: wiejunyu/PussCore
        /// <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);
        }
コード例 #2
0
ファイル: LoginManager.cs プロジェクト: wiejunyu/PussCore
        /// <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("验证码发送成功");
        }