Browse Source

质检违禁词

田爽 1 year ago
parent
commit
bf637f3950

+ 96 - 1
src/Hotline.Api/Controllers/QualityController.cs

@@ -29,6 +29,8 @@ namespace Hotline.Api.Controllers
 		private readonly IRepository<QualityItem> _qualiteyItem;
 		private readonly IRepository<QualityTemplate> _qualityTemplate;
 		private readonly IRepository<QualityTemplateDetail> _qualiteyTemplateDetail;
+		private readonly IRepository<QualityProhibited> _qualiteyProhibited;
+		private readonly ISystemDomainService _systemDomainService;
 
 		public QualityController(
 			ISessionContext sessionContext,
@@ -37,7 +39,9 @@ namespace Hotline.Api.Controllers
 			IRepository<Quality.QualityDetail> qualiteyDetail,
 			IRepository<QualityItem> qualiteyItem,
 			IRepository<QualityTemplate> qualityTemplate,
-			IRepository<QualityTemplateDetail> qualiteyTemplateDetail
+			IRepository<QualityTemplateDetail> qualiteyTemplateDetail,
+			IRepository<QualityProhibited> qualiteyProhibited,
+			ISystemDomainService systemDomainService
 		)
 		{
 			_sessionContext = sessionContext;
@@ -47,6 +51,8 @@ namespace Hotline.Api.Controllers
 			_qualiteyItem = qualiteyItem;
 			_qualityTemplate = qualityTemplate;
 			_qualiteyTemplateDetail = qualiteyTemplateDetail;
+			_qualiteyProhibited = qualiteyProhibited;
+			_systemDomainService = systemDomainService;
 		}
 		#region 质检管理
 		/// <summary>
@@ -298,6 +304,78 @@ namespace Hotline.Api.Controllers
 		}
 		#endregion
 		#region 质检词库管理
+
+		/// <summary>
+		/// 新增违禁词
+		/// </summary>
+		/// <param name="dtos"></param>
+		/// <returns></returns>
+		[Permission(EPermission.AddQualityProhibited)]
+		[HttpPost("prohibited")]
+		public async Task Add([FromBody] ProhibitedAddDto dto)
+		{
+			var model = _mapper.Map<QualityProhibited>(dto);
+			 await _qualiteyProhibited.AddAsync(model, HttpContext.RequestAborted);
+		}
+
+		/// <summary>
+		/// 删除违禁词
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.DeleteQualityProhibited)]
+		[HttpDelete("prohibited")]
+		public async Task Delete([FromBody] ProhibitedDeleteDto dto)
+		{
+			await _qualiteyProhibited.RemoveAsync(x => x.Id == dto.Id);
+		}
+
+		/// <summary>
+		/// 更新违禁词
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.UpdateQualityProhibited)]
+		[HttpPut("prohibited")]
+		public async Task Update([FromBody] ProhibitedUpdateDto dto)
+		{
+			var template = await _qualiteyProhibited.GetAsync(dto.Id, HttpContext.RequestAborted);
+			if (template is null)
+				throw UserFriendlyException.SameMessage("无效质检模版");
+			_mapper.Map(dto, template);
+			await _qualiteyProhibited.UpdateAsync(template, HttpContext.RequestAborted);
+		}
+
+		///// <summary>
+		/// 获取违禁词列表
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.QualityProhibitedList)]
+		[HttpGet("prohibited/list")]
+		public async Task<PagedDto<QualityProhibitedDto>> List([FromQuery] ProhibitedListDto dto)
+		{
+			var (total, items) = await _qualiteyProhibited.Queryable()
+				.WhereIF(!string.IsNullOrEmpty(dto.Name), d => d.Name.Contains(dto.Name!))
+				.WhereIF(!string.IsNullOrEmpty(dto.Classify), d => d.Classify.Contains(dto.Classify!))
+				.WhereIF(!string.IsNullOrEmpty(dto.Type), d => d.Type.Contains(dto.Type!))
+				.OrderByDescending(x => x.CreationTime)
+				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+			return new PagedDto<QualityProhibitedDto>(total, _mapper.Map<IReadOnlyList<QualityProhibitedDto>>(items));
+		}
+
+		/// <summary>
+		/// 获取违禁词实体
+		/// </summary>
+		/// <param name="id"></param>
+		/// <returns></returns>
+		[Permission(EPermission.QualityTemplateEntity)]
+		[HttpGet("prohibited/{id}")]
+		public async Task<QualityProhibited> ProhibitedEntity(string id)
+		{
+			return await _qualiteyProhibited.Queryable()
+				.FirstAsync(x => x.Id == id);
+		}
 		#endregion
 
 		/// <summary>
@@ -313,6 +391,23 @@ namespace Hotline.Api.Controllers
 				QualityItem = EnumExts.GetDescriptions<EQualityItem>(),
 				QualityItemGrouping = await _qualiteyItem.Queryable().Where(x => x.Type == EQualityItem.Grouping).ToListAsync(),
 				TemplateGrouping = EnumExts.GetDescriptions<ETemplateGrouping>(),
+				ProhibitedClassify = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.ProhibitedClassify),
+				ProhibitedType = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.ProhibitedType),
+			};
+			return Task.FromResult<object>(rsp);
+		}
+
+		/// <summary>
+		/// 获取违禁词基本信息
+		/// </summary>
+		/// <returns></returns>
+		[HttpGet("prohibited_base")]
+		public async Task<object> ProhibitedBase()
+		{
+			var rsp = new
+			{
+				ProhibitedClassify = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.ProhibitedClassify),
+				ProhibitedType = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.ProhibitedType),
 			};
 			return Task.FromResult<object>(rsp);
 		}

+ 116 - 0
src/Hotline.Share/Dtos/Quality/QualityProhibitedDto.cs

@@ -0,0 +1,116 @@
+using Hotline.Share.Enums.Quality;
+using Hotline.Share.Requests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.Quality
+{
+	public class ProhibitedAddDto
+	{
+		/// <summary>
+		/// 违禁词名称
+		/// </summary>
+		public string Name { get; set; }
+
+		/// <summary>
+		/// 违禁词分类
+		/// </summary>
+		public string Classify { get; set; }
+
+		/// <summary>
+		/// 违禁词属性
+		/// </summary>
+		public string Type { get; set; }
+
+		/// <summary>
+		/// 违禁近义词
+		/// </summary>
+		public string? Synonym { get; set; }
+	}
+	public class ProhibitedDeleteDto : ProhibitedAddDto
+	{
+		public string Id { get; set; }
+	}
+	public class ProhibitedUpdateDto : ProhibitedAddDto
+	{
+		public string Id { get; set; }
+	}
+	public record ProhibitedListDto : PagedKeywordRequest
+	{
+		/// <summary>
+		/// 违禁词名称
+		/// </summary>
+		public string? Name { get; set; }
+
+		/// <summary>
+		/// 违禁词分类
+		/// </summary>
+		public string? Classify { get; set; }
+
+		/// <summary>
+		/// 违禁词属性
+		/// </summary>
+		public string? Type { get; set; }
+	}
+	public class ProhibitedBaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+
+	public class QualityProhibitedDto : ProhibitedBaseDto
+	{
+		/// <summary>
+		/// 违禁词名称
+		/// </summary>
+		public string Name { get; set; }
+
+		/// <summary>
+		/// 违禁词分类
+		/// </summary>
+		public string Classify { get; set; }
+
+		/// <summary>
+		/// 违禁词属性
+		/// </summary>
+		public string Type { get; set; }
+
+		/// <summary>
+		/// 违禁近义词
+		/// </summary>
+		public string? Synonym { get; set; }
+
+	}
+}

+ 33 - 0
src/Hotline/Permissions/EPermission.cs

@@ -1194,6 +1194,39 @@ namespace Hotline.Permissions
 		EnableQualityTemplate = 502006,
 		#endregion
 
+		#region 质检违禁词管理
+		/// <summary>
+		/// 新增质检违禁词
+		/// </summary>
+		[Display(GroupName = "QualityProhibited", Name = "新增质检违禁词", Description = "新增质检违禁词")]
+		AddQualityProhibited = 503001,
+
+		/// <summary>
+		/// 删除质检违禁词
+		/// </summary>
+		[Display(GroupName = "QualityProhibited", Name = "删除质检违禁词", Description = "删除质检违禁词")]
+		DeleteQualityProhibited = 503002,
+
+		/// <summary>
+		/// 修改质检违禁词
+		/// </summary>
+		[Display(GroupName = "QualityProhibited", Name = "修改质检违禁词", Description = "修改质检违禁词")]
+		UpdateQualityProhibited = 503003,
+
+		/// <summary>
+		/// 质检违禁词列表
+		/// </summary>
+		[Display(GroupName = "QualityProhibited", Name = "质检违禁词列表", Description = "质检违禁词列表")]
+		QualityProhibitedList = 503004,
+
+		/// <summary>
+		/// 质检违禁词实体
+		/// </summary>
+		[Display(GroupName = "QualityProhibited", Name = "质检违禁词实体", Description = "质检违禁词实体")]
+		QualityProhibitedEntity = 503005,
+
+		#endregion
+
 		#endregion
 
 		#region 公用(999)

+ 39 - 0
src/Hotline/Quality/QualityProhibited.cs

@@ -0,0 +1,39 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Quality
+{
+	[Description("质检违禁词")]
+	public class QualityProhibited : FullStateEntity
+	{
+		/// <summary>
+		/// 违禁词名称
+		/// </summary>
+		[SugarColumn(ColumnDescription = "违禁词名称")]
+		public string Name { get; set; }
+
+		/// <summary>
+		/// 违禁词分类
+		/// </summary>
+		[SugarColumn(ColumnDescription = "违禁词分类")]
+		public string Classify { get; set; }
+
+		/// <summary>
+		/// 违禁词属性
+		/// </summary>
+		[SugarColumn(ColumnDescription = "违禁词属性")]
+		public string Type { get; set; }
+
+		/// <summary>
+		/// 违禁近义词
+		/// </summary>
+		[SugarColumn(ColumnDescription = "违禁近义词", ColumnDataType = "varchar(2000)")]
+		public string? Synonym { get; set; }
+	}
+}

+ 10 - 0
src/Hotline/Settings/SysDicTypeConsts.cs

@@ -149,4 +149,14 @@ public class SysDicTypeConsts
     /// 工单受理类型
     /// </summary>
 	public const string AcceptType = "AcceptType";
+
+	/// <summary>
+	/// 违禁词分类
+	/// </summary>
+	public const string ProhibitedClassify = "ProhibitedClassify";
+
+	/// <summary>
+	/// 违禁词属性
+	/// </summary>
+	public const string ProhibitedType = "ProhibitedType";
 }