123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using TEAMModelOS.Models;
- using TEAMModelOS.SDK.Context.Exception;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
- using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
- using TEAMModelOS.Service.Models;
- using TEAMModelOS.Service.Services.Learn.Interfaces;
- namespace TEAMModelOS.Controllers
- {
- /// <summary>
- /// 投票活动
- /// </summary>
- [Route("api/[controller]")]
- [ApiController]
- public class SurveyController : BaseController
- {
- private readonly IAzureCosmosDBV3Repository azureCosmosDBV3Repository;
-
- private readonly IServiceBusService _serviceBus;
- public SurveyController(IAzureCosmosDBV3Repository _azureCosmosDBV3Repository, IServiceBusService serviceBus)
- {
- // _timerWorkService = timerWorkService;
- _serviceBus = serviceBus;
- azureCosmosDBV3Repository = _azureCosmosDBV3Repository;
- }
- /// <summary>
- /// 新增 或 修改投票活动
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("upsert")]
- public async Task<BaseJosnRPCResponse> Upsert(JosnRPCRequest<SurveyDto> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- //新增
- if (string.IsNullOrEmpty(request.@params.survey.id))
- {
- request.@params.survey.id = Guid.NewGuid().ToString();
- request.@params.survey.status = 100;
- }
- if (request.@params.survey.publishModel.Equals("0"))
- {
- request.@params.survey.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
- request.@params.survey.status = 200;
- }
- else if (request.@params.survey.publishModel.Equals("1"))
- {
- string msgId = Guid.NewGuid().ToString();
- long SequenceNumber = await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.startTime, 200, msgId);
- request.@params.survey.sequenceNumber = SequenceNumber;
- }
- Survey homeWork = await azureCosmosDBV3Repository.SaveOrUpdate<Survey>(request.@params.survey);
- //设定结束时间
- string msgEndId = Guid.NewGuid().ToString();
- await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.endTime, 300, msgEndId);
- //清除作业
- if (!request.@params.reset)
- {
- //查询之前是否有 关联关系表 HomeWorkStudent 有则删除
- List<SurveyRecord> surveyRecords = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", request.@params.survey.id } });
- if (surveyRecords.IsNotEmpty())
- {
- await azureCosmosDBV3Repository.DeleteAll(surveyRecords);
- }
- ////根据作业发布对象查找到每一个具体学生生成关联关系表 HomeWorkStudent
- //List<Target> targets = request.@params.survey.target;
- //List<SurveyRecord> surveykStudents = new List<SurveyRecord>();
- //foreach (Target target in targets)
- //{
-
- // List<ClassStudent> classroom = await azureCosmosDBV3Repository.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", target.classroomCode } });
- // if (classroom.IsNotEmpty() && classroom[0].code != null)
- // {
- // foreach (ClassStudent student in classroom)
- // {
- // SurveyRecord surveyStudent = new SurveyRecord();
- // surveyStudent.id = request.@params.survey.id;
- // surveyStudent.code = student.code;
- // surveyStudent.classroom.code = target.classroomCode;
- // surveyStudent.classroom.name = target.classroomName;
- // surveykStudents.Add(surveyStudent);
- // }
- // }
- //}
- //if (surveykStudents.IsNotEmpty())
- //{
- // foreach (SurveyRecord surveyRecord in surveykStudents)
- // {
- // List<Student> student = await azureCosmosDBV3Repository.FindById<Student>(surveyRecord.code);
- // if (student.IsNotEmpty())
- // {
- // surveyRecord.name = student[0].name;
- // surveyRecord.code = student[0].TEAMModelId;
- // }
- // }
- // await azureCosmosDBV3Repository.SaveOrUpdateAll(surveykStudents);
- //}
- }
- return builder.Data(homeWork).build();
- }
- /// <summary>
- /// 查询投票活动
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("findSummary")]
- public async Task<BaseJosnRPCResponse> FindSummary(JosnRPCRequest<Dictionary<string, object>> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- List<Survey> data = new List<Survey>();
- List<string> props = new List<string> { "id", "code", "name", "type", "status", "startTime" };
- if (request.@params.Keys.Count > 0)
- {
-
- data = await azureCosmosDBV3Repository.FindByDict<Survey>(request.@params, props);
- }
- else
- {
- throw new BizException("参数异常", ResponseCode.PARAMS_ERROR);
- }
- return builder.Data(data).Extend(new Dictionary<string, object> { { "count", data.Count },{ "props", props } }).build();
- }
- /// <summary>
- /// 查询投票活动
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("find")]
- public async Task<BaseJosnRPCResponse> Find(JosnRPCRequest<Dictionary<string, object>> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- List<Survey> data = new List<Survey>();
- if (request.@params.Keys.Count > 0)
- {
- data = await azureCosmosDBV3Repository.FindByDict<Survey>(request.@params);
- }
- else
- {
- throw new BizException("参数异常", ResponseCode.PARAMS_ERROR);
- }
- return builder.Data(data).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
- }
- /// <summary>
- /// 删除投票活动
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("delete")]
- public async Task<BaseJosnRPCResponse> Delete(JosnRPCRequest<List<IdPk>> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- List<IdPk> idPks = await azureCosmosDBV3Repository.DeleteAll<Survey>(request.@params);
- if (idPks.IsNotEmpty())
- {
- foreach (IdPk idPk in idPks)
- {
- List<SurveyRecord> surveys = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", idPk.id } });
- await azureCosmosDBV3Repository.DeleteAll(surveys);
- }
- builder.Data(idPks);
- }
- else
- {
- throw new BizException("删除失败", ResponseCode.FAILED);
- }
- return builder.build();
- }
- /// <summary>
- /// 撤消投票
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("cancel")]
- public async Task<BaseJosnRPCResponse> Cancel(JosnRPCRequest<string> surveyId)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- List<Survey> surveys = await azureCosmosDBV3Repository.FindByDict<Survey>(new Dictionary<string, object> { { "id", surveyId.@params } });
- foreach (Survey survey in surveys)
- {
- survey.status = 100;
- }
- List<Survey> survey1 = await azureCosmosDBV3Repository.UpdateAll<Survey>(surveys);
- //查询之前是否有 关联关系表 有则删除
- List<SurveyRecord> surveyStudents = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", surveyId.@params } });
- if (surveyStudents.IsNotEmpty())
- {
- await azureCosmosDBV3Repository.DeleteAll(surveyStudents);
- }
- return builder.Data(survey1).build();
- }
- /// <summary>
- /// 查询学生问卷调查记录
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("findRecord")]
- public async Task<BaseJosnRPCResponse> FindRecord(JosnRPCRequest<Dictionary<string, object>> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- List<SurveyRecord> data = new List<SurveyRecord>();
- if (request.@params.Keys.Count > 0)
- {
- data = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(request.@params);
- }
- else
- {
- throw new BizException("参数异常", ResponseCode.PARAMS_ERROR);
- }
- return builder.Data(data).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
- }
- /// <summary>
- /// 学生问卷作答
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("upsertRecord")]
- public async Task<BaseJosnRPCResponse> UpsertRecord(JosnRPCRequest<List<SurveyRecord>> request)
- {
- JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- await azureCosmosDBV3Repository.SaveOrUpdateAll<SurveyRecord>(request.@params);
- return builder.Data(request.@params).build();
- }
- ///// <summary>
- ///// 学生提交问卷调查
- ///// </summary>
- ///// <param name="request"></param>
- ///// <returns></returns>
- //[HttpPost("action")]
- //public async Task<BaseJosnRPCResponse> Action(JosnRPCRequest<SurveyDto> request)
- //{
- // JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
- // List<SurveyRecord> survey = await azureCosmosDBV3Repository.FindByDict<SurveyRecord>(new Dictionary<string, object> { { "id", request.@params.studentID }, { "id", request.@params.surveyWorkId } });
- // SurveyRecord response = new SurveyRecord();
- // if (survey.IsNotEmpty())
- // {
- // List<Survey> surveys = await azureCosmosDBV3Repository.FindByDict<Survey>(new Dictionary<string, object> { { "id", request.@params.surveyWorkId } });
- // List<Survey.Option> options2 = surveys[0].option;
- // bool flg = false;
- // options2.ForEach(x => { if (x.code == request.@params.option) flg = true; });
- // if (flg)
- // {
- // survey[0].option = request.@params.option;
- // survey[0].submitTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
- // survey[0].submit = true;
- // response = await azureCosmosDBV3Repository.SaveOrUpdate(survey[0]);
- // }
- // else throw new BizException($"该投票活动没有当前选项 { request.@params.option }", ResponseCode.FAILED);
- // }
- // return builder.Data(response).build();
- //}
- }
- }
|