/// <summary>
        /// 设置安全问题
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <Result> SetSecurityQuestionAsync(SetSecurityQuestion param)
        {
            /*
             * 1,校验密码、questionid是否存在数据
             * 2,存储user-question
             * 3,日志记录
             * **/
            var result    = new Result();
            var userExist = masterContext.Users.Any(a => !a.IsDisabled && a.ID == currentUser.UserID && a.Password == param.Password);

            if (!userExist)
            {
                result.Code = "SSO.Global.Error.Content..13";
                result.Msg  = "密码错误";
                return(result);
            }
            var userQuestionExist = masterContext.UserSecurityQuestions.Any(a => a.UserID == currentUser.UserID);

            if (userQuestionExist)
            {
                result.Code = "SSO.Global.Error.Content..12";
                result.Msg  = "已设置安全问题";
                return(result);
            }
            var question = await base.GetFirstOrDefaultAsync(a => !a.IsDisabled && a.ID == param.SecurityQuestionID, fromMasterDb : true);

            if (question == null)
            {
                result.Code = "SSO.Global.Error.Content..11";
                result.Msg  = "未知的问题选项";
                return(result);
            }

            var utcNow = DateTime.UtcNow;

            masterContext.UserSecurityQuestions.Add(new UserSecurityQuestion
            {
                UserID     = currentUser.UserID,
                QuestionID = param.SecurityQuestionID,
                Answer     = param.Answer,
                CreateTime = utcNow,
                ModifyTime = utcNow
            });
            var saveResult = await masterContext.SaveChangesAsync() > 0;

            //todo:异步日志记录
            return(new Result()
            {
                IsSuccess = saveResult, Msg = saveResult ? null : "保存失败"
            });
        }
 public async Task <ActionResult <Result> > SetSecurityQuestionAsync(SetSecurityQuestion param)
 {
     return(await _questionService.SetSecurityQuestionAsync(param));
 }