Exemple #1
0
 /// <summary>
 ///  创建申请
 /// </summary>
 /// <param name="model">申请信息</param>
 public ApplyFor(ApplyForModel model)
 {
     this.ReqData = Encoding.UTF8.GetBytes(model.ExToJson());
 }
Exemple #2
0
        public async Task <ApiResult <string> > ApplyFor([FromBody] ApplyForModel value)
        {
            if (!ModelState.IsValid)
            {
                return(new ApiResult <string>(l, BasicControllerCodes.UnprocessableEntity,
                                              ModelErrors()));
            }

            #region 校验邮箱是否重复
            //if (await db.Users.AnyAsync(x => x.Email.Equals(value.Email)))
            //{
            //    return new SingleResult<string>(StatusCodes.Status406NotAcceptable, l["邮箱已被注册"]);
            //}
            #endregion
            #region 校验邮箱验证码
            //if (!string.IsNullOrWhiteSpace(value.EmailVerifyCode))
            //{
            //    try
            //    {
            //        protector.Unprotect(value.EmailVerifyCode);
            //    }
            //    catch
            //    {
            //        return new SingleResult<string>(StatusCodes.Status406NotAcceptable, l["无效的邮箱验证码"]);
            //    }
            //}
            #endregion

            #region 校验手机号是否重复
            if (await db.Users.AnyAsync(x => x.PhoneNumber.Equals(value.PhoneNumber)))
            {
                return(new ApiResult <string>(l, UserControllerCodes.ApplyFor.PhoneNumberExists));
            }
            #endregion
            #region 校验手机验证码
            var PhoneNumberVerifyCodeKey = RedisKeys.VerifyCode_Phone + value.PhoneNumber + ":" + value.PhoneNumberVerifyCode;

            if (await redis.KeyExists(PhoneNumberVerifyCodeKey) == false)
            {
                return(new ApiResult <string>(l, UserControllerCodes.ApplyFor.PhoneNumberVerifyCodeError));
            }

            await redis.Remove(PhoneNumberVerifyCodeKey);

            #endregion

            #region 创建用户
            var user = new AppUser
            {
                UserName             = value.PhoneNumber + "@xcx.com",
                Email                = value.PhoneNumber + "@xcx.com",
                PhoneNumber          = value.PhoneNumber,
                NickName             = value.NickName,
                Gender               = value.Gender,
                Address              = value.Address,
                Birthday             = value.Birthday,
                PhoneNumberConfirmed = true,
                Stature              = value.Stature,
                Weight               = value.Weight,
                Description          = value.Description,
                CreateDate           = DateTime.UtcNow,
                LastUpdateTime       = DateTime.UtcNow
            };

            // set default tenantId
            user.Tenants.Add(new AspNetUserTenant()
            {
                AppTenantId = 1
            });

            var result = await userManager.CreateAsync(user, "123456aA!");

            if (result.Succeeded)
            {
                #region 确认邮箱验证通过
                // 如果填写了邮件验证码,并且验证通过(不通过不会走到这里)
                //if (!string.IsNullOrWhiteSpace(value.EmailVerifyCode))
                //{
                //    user.EmailConfirmed = true;
                //}
                #endregion

                #region 设置角色
                var RoleIDs = db.Roles.Where(x => x.Name.Equals(Roles.Users) || x.Name.Equals(Roles.Star)).Select(x => x.Id).ToList();

                var UserRoles = RoleIDs.Select(x => new AppUserRole()
                {
                    RoleId = x,
                    UserId = user.Id
                });

                db.UserRoles.AddRange(UserRoles);
                #endregion

                #region 图片
                if (value.ImageUrl != null && value.ImageUrl.Count > 0)
                {
                    db.UserFiles.Add(new AspNetUserFile()
                    {
                        Files     = JsonConvert.SerializeObject(value.ImageUrl),
                        FileType  = FileTypes.Image,
                        AppUserId = user.Id
                    });
                }
                #endregion

                #region 视频
                if (!string.IsNullOrWhiteSpace(value.Video))
                {
                    db.UserFiles.Add(new AspNetUserFile()
                    {
                        Files     = value.Video,
                        FileType  = FileTypes.Video,
                        AppUserId = user.Id
                    });
                }
                #endregion

                #region 文档
                if (!string.IsNullOrWhiteSpace(value.Doc))
                {
                    db.UserFiles.Add(new AspNetUserFile()
                    {
                        Files     = value.Doc,
                        FileType  = FileTypes.Doc,
                        AppUserId = user.Id
                    });
                }
                #endregion

                await db.SaveChangesAsync();

                #region 发送报名成功的短信通知
                var smsVars = JsonConvert.SerializeObject(new { nickname = value.NickName });
                await sms.SendSmsWithRetryAsync(smsVars, value.PhoneNumber, "9901", 3);

                #endregion

                return(new ApiResult <string>());
            }

            else
            {
                return(new ApiResult <string>(l, BasicControllerCodes.ExpectationFailed,
                                              JsonConvert.SerializeObject(result.Errors)));
            }
            #endregion
        }