using Cksoft.Data; using Cksoft.Unity; using DllEapEntity; using DllEapEntity.Dtos; using DllEapEntity.Enums; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DllEapDal { /// /// FAQ /// public class FrequentlyAskedQuestionDal { private readonly IDatabase CurrDb = null; public FrequentlyAskedQuestionDal(IDatabase db) { CurrDb = db; } /// /// / /// /// /// /// /// /// public async Task> Get(string question, EnumQuestionVisableRange? visableRange, int pageIndex, int pageSize) { string errorinfo = string.Empty; var filter = string.Empty; if (!string.IsNullOrEmpty(question)) { filter += $" and a.Question like '%{question}%'"; } if (visableRange.HasValue) { filter += $" and a.VisableRange={visableRange}"; } var datas = await CurrDb.FindListForConditionAsync( $"{filter} order by id desc limit {(pageIndex - 1) * pageSize},{pageSize}", ref errorinfo); var sql = $"select count(1) from FrequentlyAskedQuestion a where 1=1 {filter}"; var count = Convert.ToInt32(CurrDb.FindListAsync(sql, null).Result .FirstOrDefault() ?? "0"); return new LayuiModel { code = 1, count = count, data = datas }; } /// /// 详情 /// /// /// public async Task Get(int id) { var data = CurrDb.FindEntityFor(id); await Task.CompletedTask; return data; } /// /// 新增 /// /// /// public async Task Add(FrequentlyAskedQuestionAdd question) { var res = CurrDb.InsertFor(question, question.RecCode); await Task.CompletedTask; return new EapResponse { Code = 1 }; } /// /// 修改 /// /// /// public async Task Update(FrequentlyAskedQuestionAdd question) { var exist = CurrDb.FindEntityFor(question.Id); exist.Question = question.Question; exist.Answer = question.Answer; CurrDb.UpdateFor(exist, question.ModCode); await Task.CompletedTask; return new EapResponse { Code = 1 }; } /// /// 删除 /// /// /// public async Task Delete(int id) { int m = CurrDb.DeleteFor(id); await Task.CompletedTask; if (m==0) { return new EapResponse { Code = 0, Msg = "删除失败" }; } else { return new EapResponse { Code = 1, Msg = "删除成功" }; } } /// /// 获取FAQ点踩汇总 /// /// /// /// public async Task GetFAQEvaluation(int questionId, string staffCode) { string errorinfo = string.Empty; var sql = $"select count(1) from FrequentlyAskedQuestionEvaluation where " + $"questionId={questionId}"; var usefulCount = Convert.ToInt32(CurrDb.FindObject(sql + $" and GradeCategory={EnumQuestionEvaluationCategory.Useful}")); var uselessCount = Convert.ToInt32(CurrDb.FindObject(sql + $" and GradeCategory={EnumQuestionEvaluationCategory.Useless}")); var currentUserEvaluation = (await CurrDb.FindListForConditionAsync ($" and a.questionId={questionId} and a.staffCode='{staffCode}'", ref errorinfo)).FirstOrDefault(); return new FAQEvaluationDto { QuestionId = questionId, Evaluation = currentUserEvaluation, UsefullCount = usefulCount, UselessCount = uselessCount }; } /// /// 评价 /// /// /// public async Task Evaluate(FrequentlyAskedQuestionEvaluation evaluation) { string errorinfo = string.Empty; var question = CurrDb.FindEntityFor(evaluation.QuestionId); var exist = (await CurrDb.FindListForConditionAsync($"" + $" and a.questionId={question.Id} and a.staffcode='{evaluation.StaffCode}'", ref errorinfo)).FirstOrDefault(); if (exist != null) { CurrDb.DeleteFor(exist.Id); if(exist.GradeCategory== EnumQuestionEvaluationCategory.Useful) { question.Usefuls -= 1; } else { question.Useless -= 1; } } CurrDb.InsertFor(evaluation, evaluation.StaffCode); if (evaluation.GradeCategory == EnumQuestionEvaluationCategory.Useful) { question.Usefuls += 1; } else { question.Useless += 1; } CurrDb.UpdateFor(question, question.ModCode); return new EapResponse { Code = 1 }; } } }