|
|
using Microsoft.AspNetCore.Authorization;using Microsoft.AspNetCore.Mvc;using Shentun.WebPeis.Models;using Shentun.WebPeis.QuestionTypes;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Volo.Abp.Application.Services;using Volo.Abp.Domain.Repositories;
namespace Shentun.WebPeis.Questions{ /// <summary>
/// 问卷
/// </summary>
[ApiExplorerSettings(GroupName = "Work")] [Authorize] public class QuestionAppService : ApplicationService {
private readonly IRepository<Question> _questionRepository; private readonly QuestionManager _questionManager; private readonly CacheService _cacheService;
public QuestionAppService( IRepository<Question> questionRepository, QuestionManager questionManager, CacheService cacheService) { _questionRepository = questionRepository; _questionManager = questionManager; _cacheService = cacheService; }
///// <summary>
///// 获取列表
///// </summary>
///// <returns></returns>
//[HttpPost("api/app/Question/GetList")]
//public async Task<List<QuestionDto>> GetListAsync()
//{
// var entlist = await _questionRepository.GetQueryableAsync();
// var entdto = entlist.Select(s => new QuestionDto
// {
// CreationTime = s.CreationTime,
// CreatorId = s.CreatorId,
// DisplayOrder = s.DisplayOrder,
// LastModificationTime = s.LastModificationTime,
// LastModifierId = s.LastModifierId,
// SimpleCode = s.SimpleCode,
// QuestionTypeId = s.QuestionTypeId,
// QuestionSubjectTypeId = s.QuestionSubjectTypeId,
// QuestionName = s.QuestionName,
// QuestionId = s.QuestionId,
// PathCode = s.PathCode,
// ParentId = s.ParentId,
// IsActive = s.IsActive,
// AnswerType = s.AnswerType,
// CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
// LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result
// }).OrderBy(o => o.DisplayOrder).ToList();
// return entdto;
//}
/// <summary>
/// 获取问卷树型列表
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Question/GetQuestionTreeList")] public async Task<List<QuestionTreeListDto>> GetQuestionTreeListAsync() { var dataList = await _questionRepository.GetListAsync(); var items = from p in dataList.OrderBy(o => o.DisplayOrder) select new QuestionTreeListDto() { ParentId = p.ParentId, AnswerType = p.AnswerType, QuestionId = p.QuestionId, CreationTime = p.CreationTime, CreatorId = p.CreatorId, CreatorName = _cacheService.GetSurnameAsync(p.CreatorId).Result, IsActive = p.IsActive, LastModificationTime = p.LastModificationTime, LastModifierId = p.LastModifierId, LastModifierName = _cacheService.GetSurnameAsync(p.LastModifierId).Result, PathCode = p.PathCode, QuestionName = p.QuestionName, QuestionSubjectTypeId = p.QuestionSubjectTypeId, QuestionTypeId = p.QuestionTypeId, SimpleCode = p.SimpleCode, DisplayOrder = p.DisplayOrder }; return GetTree(items.ToList(), 0, ""); }
/// <summary>
/// 创建
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Question/Create")] public async Task<QuestionDto> CreateAsync(CreateQuestionDto input) { var createEntity = ObjectMapper.Map<CreateQuestionDto, Question>(input); var entity = await _questionManager.CreateAsync(createEntity); entity = await _questionRepository.InsertAsync(entity); var dto = ObjectMapper.Map<Question, QuestionDto>(entity); dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId); dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId); return dto; }
/// <summary>
/// 更新
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/Question/Update")] public async Task<QuestionDto> UpdateAsync(UpdateQuestionDto input) { var entity = await _questionRepository.GetAsync(f => f.QuestionTypeId == input.QuestionTypeId); var sourceEntity = ObjectMapper.Map<UpdateQuestionDto, Question>(input); _questionManager.UpdateAsync(sourceEntity, entity); entity = await _questionRepository.UpdateAsync(entity); var dto = ObjectMapper.Map<Question, QuestionDto>(entity); dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId); dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId); return dto; }
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/Question/Delete")] public async Task DeleteAsync(QuestionIdInputDto input) { await _questionManager.CheckAndDeleteAsync(input.QuestionId); }
/// <summary>
/// 修改排序 置顶,置底
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/Question/UpdateSortTopOrBottom")] public async Task UpdateSortTopOrBottomAsync(UpdateQuestionSortTopOrBottomInputDto input) { await _questionManager.UpdateSortTopOrBottomAsync(input.QuestionId, input.SortType); }
/// <summary>
/// 修改排序 拖拽
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/Question/UpdateSortDragAsync")] public async Task UpdateSortDragAsync(UpdateQuestionSortDragDto input) { await _questionManager.UpdateSortDragAsync(input); }
/// <summary>
/// 使用Code进行递归
/// </summary>
/// <param name="items"></param>
/// <param name="deep"></param>
/// <param name="prefix"></param>
/// <returns></returns>
private List<QuestionTreeListDto> GetTree(List<QuestionTreeListDto> items, int deep, string prefix) { return (from p in items where p.PathCode.StartsWith(prefix) && p.PathCode.Count(a => a == '.') == deep orderby p.DisplayOrder ascending let subs = GetTree(items, deep + 1, p.PathCode) select new QuestionTreeListDto() { ParentId = p.ParentId, AnswerType = p.AnswerType, QuestionId = p.QuestionId, CreationTime = p.CreationTime, CreatorId = p.CreatorId, CreatorName = _cacheService.GetSurnameAsync(p.CreatorId).Result, IsActive = p.IsActive, LastModificationTime = p.LastModificationTime, LastModifierId = p.LastModifierId, LastModifierName = _cacheService.GetSurnameAsync(p.LastModifierId).Result, PathCode = p.PathCode, QuestionName = p.QuestionName, QuestionSubjectTypeId = p.QuestionSubjectTypeId, QuestionTypeId = p.QuestionTypeId, SimpleCode = p.SimpleCode, DisplayOrder = p.DisplayOrder, TreeChildren = subs.ToList() } ).ToList(); } }}
|