xiaochanghai 1 year ago
parent 07d6f9d315
commit 36401989fb
  1. 14
      Tiobon.Core.Services/BASE/BaseServices.cs
  2. 6
      Tiobon.Core.Services/CommonServices.cs
  3. 7
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  4. 20
      Tiobon.Core.Services/Ghre/Ghre_ExamPaperServices.cs
  5. 46
      Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs

@ -1,17 +1,10 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data;
using System.Data;
using System.Dynamic;
using System.Linq.Expressions;
using System.Net.Mail;
using AgileObjects.AgileMapper;
using MathNet.Numerics.Distributions;
using Microsoft.AspNetCore.Http;
using MySqlX.XDevAPI.Common;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.HPSF;
using NPOI.Util;
using SqlSugar;
using Tiobon.Core.Common;
using Tiobon.Core.Common.Caches;
@ -23,7 +16,6 @@ using Tiobon.Core.Common.Helper;
using Tiobon.Core.Common.UserManager;
using Tiobon.Core.DataAccess;
using Tiobon.Core.IRepository.Base;
using Tiobon.Core.IServices;
using Tiobon.Core.IServices.BASE;
using Tiobon.Core.Model;
using Tiobon.Core.Model.Models;
@ -483,7 +475,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
/// </summary>
/// <param name="id">主键ID</param>
/// <returns></returns>
public async Task<bool> DeleteById1(object id)
public virtual async Task<bool> DeleteById1(object id)
{
var entity = await BaseDal.QueryById(id);
BasePoco ent = entity as BasePoco;
@ -505,7 +497,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
/// </summary>
/// <param name="ids">主键ID集合</param>
/// <returns></returns>
public async Task<bool> DeleteByIds1(long[] ids)
public virtual async Task<bool> DeleteByIds1(long[] ids)
{
HttpRequest request = UserContext.Context.Request;
var api = request.Path.ObjToString().TrimEnd('/').ToLower();

@ -1083,7 +1083,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
TableColumn.Add(searchItem);
sql = "SELECT Id, CourseNo, CourseName FROM Ghre_Course WHERE IsEnable=1 AND Status='Released'";
if (string.IsNullOrWhiteSpace(keyWords))
if (!string.IsNullOrWhiteSpace(keyWords))
sql += $"AND ( CourseNo like '%{keyWords}%' or CourseName like '%{keyWords}%')";
dt = await Db.Ado.GetDataTableAsync(sql);
@ -1119,8 +1119,8 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
];
TableColumn.Add(searchItem);
sql = "SELECT Id, SceneNo, SceneName FROM Ghre_CourseScene";
if (string.IsNullOrWhiteSpace(keyWords))
sql = "SELECT Id, SceneNo, SceneName FROM Ghre_CourseScene WHERE IsEnable=1";
if (!string.IsNullOrWhiteSpace(keyWords))
sql += $"AND ( SceneNo like '%{keyWords}%' or SceneName like '%{keyWords}%')";
dt = await Db.Ado.GetDataTableAsync(sql);

@ -324,6 +324,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
if (entity.Status == "Released")
{
var examPaper = await Db.Queryable<Ghre_ExamPaper>().FirstAsync(x => x.LinkId == id && x.LinkType == "CourseId" && x.Status != "Disabled");
if (examPaper != null)
return ServiceResult.OprateFailed($"课程【{entity.CourseName}({entity.CourseNo})】已与试卷【{examPaper.PaperName}({examPaper.PaperName})】关联,暂不可{(status == "Draft" ? "" : "")}");
//string sql = $"SELECT count(0) FROM Ghre_Exam WHERE CourseId='{id}' and IsEnable=1";
@ -346,7 +347,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
if (status == "Released")
return ServiceResult.OprateSuccess("发布成功!");
else if (status == "Draft")
return ServiceResult.OprateSuccess("取消发布成功!");
return ServiceResult.OprateSuccess("已启用成功,请进入草稿箱查看!");
else
return ServiceResult.OprateSuccess("停用成功!");
@ -356,6 +357,8 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
{
entity.ExamPaperId = JsonHelper.ObjToJson(entity.ExamPaperIds);
entity.Status = "Draft";
entity.DefaultCoverlmageName = entity.DefaultCoverlmageName ?? "defaultCourseCover1";
entity.UseDefaultCoverlmage = entity.UseDefaultCoverlmage ?? true;
return await base.Add(entity);
}
@ -395,7 +398,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
TableColumn.Add(searchItem);
sql = $"SELECT Id, CourseNo , CourseName FROM Ghre_Course WHERE Status ='Released' AND IsEnable=1";
if (string.IsNullOrWhiteSpace(keyWords))
if (!string.IsNullOrWhiteSpace(keyWords))
sql += $"AND ( CourseNo like '%{keyWords}%' or CourseName like '%{keyWords}%')";
if (linkId.HasValue)

@ -10,6 +10,7 @@ using Newtonsoft.Json.Linq;
using SqlSugar;
using Tiobon.Core.Common;
using Tiobon.Core.Common.Caches;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Common.Helper;
using Tiobon.Core.Common.UserManager;
using Tiobon.Core.IRepository.Base;
@ -761,15 +762,26 @@ delete from Ghre_ExamPaperQuestion WHERE ExamPaperId='{id}';");
if (await Db.Queryable<Ghre_Exam>().AnyAsync(x => x.ExamPaperId == id && x.Status != "Disabled"))
{
var exam = await Db.Queryable<Ghre_Exam>().FirstAsync(x => x.ExamPaperId == id && x.Status != "Disabled");
return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】已与考试【{exam.ExamName}({exam.ExamNo})】关联,暂不可{(status == "Draft" ? "" : "")}");
if (exam != null) return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】已与考试【{exam.ExamName}({exam.ExamNo})】关联,暂不可{(status == "Draft" ? "" : "")}");
}
if (await _ghre_ExamRecordServices.AnyAsync(x => x.ExamPaperId == id && x.Status == "UnderWay"))
{
var exam = await _ghre_ExamRecordServices.QuerySingleDto(x => x.ExamPaperId == id && x.Status == "UnderWay");
return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】,当前有学员正在考试中,暂不可{(status == "Draft" ? "" : "")}");
if (exam != null) return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】,当前有学员正在考试中,暂不可{(status == "Draft" ? "" : "")}");
}
}
if (status == "Released" && entity.Status != "Released")
{
string sql = @$"SELECT COUNT(0)
FROM Ghre_ExamPaperQuestion A
JOIN Ghre_Question B ON A.QuestionId = B.Id and B.IsEnable = 0
WHERE A.IsEnable = 1 AND A.ExamPaperId='{id}'";
var count = await Db.Ado.GetIntAsync(sql);
if (count > 0)
return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】,存在关联试题被删除,暂不可发布,请重新维护数据!");
}
#endregion
BasePoco ent = entity;
@ -788,7 +800,7 @@ delete from Ghre_ExamPaperQuestion WHERE ExamPaperId='{id}';");
if (status == "Released")
return ServiceResult.OprateSuccess("发布成功!");
else if (status == "Draft")
return ServiceResult.OprateSuccess("取消发布成功!");
return ServiceResult.OprateSuccess(" 已启用成功,请进入草稿箱查看!");
else
return ServiceResult.OprateSuccess("停用成功!");
@ -834,7 +846,7 @@ delete from Ghre_ExamPaperQuestion WHERE ExamPaperId='{id}';");
TableColumn.Add(searchItem);
sql = $"SELECT Id, PaperNo, PaperName FROM Ghre_ExamPaper WHERE LinkId='{linkId}' AND Status ='Released' AND IsEnable=1";
if (string.IsNullOrWhiteSpace(keyWords))
if (!string.IsNullOrWhiteSpace(keyWords))
sql += $"AND ( PaperNo like '%{keyWords}%' or PaperName like '%{keyWords}%')";
sql += $" ORDER BY CreateTime DESC";
dt = await Db.Ado.GetDataTableAsync(sql);

@ -9,6 +9,7 @@ using Tiobon.Core.Common;
using Tiobon.Core.Common.Caches;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Common.Helper;
using Tiobon.Core.Common.UserManager;
using Tiobon.Core.IRepository.Base;
using Tiobon.Core.IServices;
using Tiobon.Core.Model;
@ -1055,4 +1056,49 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
return result;
}
#endregion
/// <summary>
/// 删除指定ID的数据
/// </summary>
/// <param name="id">主键ID</param>
/// <returns></returns>
public override async Task<bool> DeleteById1(object id)
{
var entity = await BaseDal.QueryById(id);
if (entity != null)
{
string sql = @$"SELECT A.* FROM Ghre_ExamPaper A JOIN Ghre_ExamPaperQuestion B ON B.ExamPaperId = A.Id WHERE B.QuestionId = '{id}' AND A.Status = 'Released'";
var entitys = await Db.SqlQueryable<Ghre_ExamPaper>(sql)
.ToPageListAsync(0, 10);
if (entitys.Any())
throw new Exception($"题目【{entity.QuestionNo} 】已被试卷{string.Join("", entitys.Select(x => $"{x.PaperName}({x.PaperNo})"))}关联,暂不可删除!");
}
return await base.DeleteById1(id);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids">主键ID集合</param>
/// <returns></returns>
public override async Task<bool> DeleteByIds1(long[] ids)
{
foreach (var id in ids)
{
var entity = await BaseDal.QueryById(id);
if (entity != null)
{
string sql = @$"SELECT A.* FROM Ghre_ExamPaper A JOIN Ghre_ExamPaperQuestion B ON B.ExamPaperId = A.Id WHERE B.QuestionId = '{id}' AND A.Status = 'Released'";
var entitys = await Db.SqlQueryable<Ghre_ExamPaper>(sql)
.ToPageListAsync(0, 10);
if (entitys.Any())
throw new Exception($"题目【{entity.QuestionNo} 】已被试卷{string.Join("", entitys.Select(x => $"{x.PaperName}({x.PaperNo})"))}关联,暂不可删除!");
}
}
return await base.DeleteByIds1(ids);
}
}
Loading…
Cancel
Save