/// <summary>
        /// 重置安全问题
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <Result> ResetSecurityQuestionAsync(ResetSecurityQuestion param)
        {
            /*
             * 1,校验密码、原安全问题答案、新问题数据
             * 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 oldQuestioin = masterContext.UserSecurityQuestions.FirstOrDefault(a => a.UserID == currentUser.UserID && a.QuestionID == param.OldSecurityQuestionID && a.Answer == param.OldSecurityQuestionAnswer);

            if (oldQuestioin == null)
            {
                result.Code = "SSO.Global.Error.Content..11";
                result.Msg  = "原安全问题错误";
                return(result);
            }
            var question = await 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;

            oldQuestioin.QuestionID = param.SecurityQuestionID;
            oldQuestioin.Answer     = param.Answer;
            oldQuestioin.ModifyTime = utcNow;
            var saveResult = await masterContext.SaveChangesAsync() > 0;

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