You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.7 KiB
142 lines
4.7 KiB
using MongoDB.Driver.Core.Servers;
|
|
|
|
namespace Tiobon.Core.Services;
|
|
|
|
/// <summary>
|
|
/// 问卷调查 (服务)
|
|
/// </summary>
|
|
public class Ghre_SurveyServices : BaseServices<Ghre_Survey, Ghre_SurveyDto, InsertGhre_SurveyInput, EditGhre_SurveyInput>, IGhre_SurveyServices
|
|
{
|
|
private readonly IBaseRepository<Ghre_Survey> _dal;
|
|
public Ghre_SurveyServices(ICaching caching, IBaseRepository<Ghre_Survey> dal)
|
|
{
|
|
this._dal = dal;
|
|
base.BaseDal = dal;
|
|
base._caching = caching;
|
|
}
|
|
|
|
|
|
public override async Task<ServicePageResult<Ghre_SurveyDto>> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true)
|
|
{
|
|
|
|
var result = await base.QueryFilterPage(filter, condition, IsEnable);
|
|
|
|
return result;
|
|
}
|
|
|
|
public override async Task<long> Add(InsertGhre_SurveyInput entity)
|
|
{
|
|
var result = await base.Add(entity);
|
|
|
|
return result;
|
|
}
|
|
|
|
public override async Task<bool> Update(long Id, EditGhre_SurveyInput editModel)
|
|
{
|
|
var result = await base.Update(Id, editModel, null, ["Status"]);
|
|
return result;
|
|
}
|
|
|
|
public override async Task<ServiceFormResult<Ghre_SurveyDto>> QueryForm(QueryForm body)
|
|
{
|
|
var result = await base.QueryForm(body);
|
|
return result;
|
|
}
|
|
public async Task<ServiceResult<long>> InsertByStatus(InsertGhre_SurveyInput insertModel, string status)
|
|
{
|
|
|
|
var data = ServiceResult<long>.OprateSuccess("新增成功", 0);
|
|
insertModel.Status = status;
|
|
var id = await Add(insertModel);
|
|
|
|
data.Success = id > 0;
|
|
if (data.Success)
|
|
data.Data = id;
|
|
else
|
|
return ServiceResult<long>.OprateFailed("失败!");
|
|
|
|
return data;
|
|
}
|
|
|
|
public async Task<ServiceResult> UpdateStatus(InsertGhre_SurveyInput input, string status)
|
|
{
|
|
|
|
HttpRequest request = UserContext.Context.Request;
|
|
var api = request.Path.ObjToString().TrimEnd('/').ToLower();
|
|
var ip = GetUserIp(UserContext.Context);
|
|
|
|
var entities = new List<Ghre_Survey>();
|
|
foreach (var id in input.Ids)
|
|
{
|
|
if (!BaseDal.Any(id))
|
|
continue;
|
|
|
|
var entity = await BaseDal.QueryById(id);
|
|
|
|
entity.UpdateIP = ip;
|
|
entity.UpdateProg = api;
|
|
entity.Status = status;
|
|
entities.Add(entity);
|
|
}
|
|
|
|
var result = await BaseDal.Update(entities);
|
|
return ServiceResult.OprateSuccess("执行成功!");
|
|
|
|
}
|
|
|
|
|
|
public async Task<ServiceResult<long>> InsertData(long id, InsertGhre_SurveyExtend insertModel)
|
|
{
|
|
var data = ServiceResult<long>.OprateSuccess("新增成功", id);
|
|
if (id == 0)
|
|
{
|
|
|
|
var insert = Mapper.Map(insertModel).ToANew<InsertGhre_SurveyInput>();
|
|
|
|
id = await Add(insert);
|
|
|
|
for (int i = 0; i < insertModel.Questions.Count; i++)
|
|
{
|
|
var question = Mapper.Map(insertModel.Questions[i]).ToANew<Ghre_SurveyQuestion>();
|
|
//question.Id = SnowFlakeSingle.instance.getID();
|
|
|
|
question.SurveyId = id;
|
|
var questionId = await Db.Insertable(question).ExecuteReturnSnowflakeIdAsync();
|
|
|
|
for (int j = 0; j < insertModel.Questions[i].Options.Count; j++)
|
|
{
|
|
var option = Mapper.Map(insertModel.Questions[i].Options[j]).ToANew<Ghre_SurveyOption>();
|
|
option.SurveyId = id;
|
|
option.SurveyQuestionId = questionId;
|
|
await Db.Insertable(option).ExecuteReturnSnowflakeIdAsync();
|
|
}
|
|
}
|
|
data.Data = id;
|
|
}
|
|
else
|
|
{
|
|
await Db.Deleteable<Ghre_SurveyQuestion>().Where(x => x.SurveyId == id).ExecuteCommandAsync();
|
|
await Db.Deleteable<Ghre_SurveyOption>().Where(x => x.SurveyId == id).ExecuteCommandAsync();
|
|
|
|
for (int i = 0; i < insertModel.Questions.Count; i++)
|
|
{
|
|
var question = Mapper.Map(insertModel.Questions[i]).ToANew<Ghre_SurveyQuestion>();
|
|
//question.Id = SnowFlakeSingle.instance.getID();
|
|
|
|
question.SurveyId = id;
|
|
var questionId = await Db.Insertable(question).ExecuteReturnSnowflakeIdAsync();
|
|
|
|
for (int j = 0; j < insertModel.Questions[i].Options.Count; j++)
|
|
{
|
|
var option = Mapper.Map(insertModel.Questions[i].Options[j]).ToANew<Ghre_SurveyOption>();
|
|
option.SurveyId = id;
|
|
option.SurveyQuestionId = questionId;
|
|
await Db.Insertable(option).ExecuteReturnSnowflakeIdAsync();
|
|
}
|
|
}
|
|
data.Message = "修改成功!";
|
|
}
|
|
return data;
|
|
}
|
|
|
|
} |