using System; using System.Collections.Generic; using System.Common; using System.IRepositories; using System.Linq; using System.Model; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using SqlSugar; namespace TVShoppingCallCenter_ZLJ.Controllers.knowledge { [Produces("application/json")] [Route("api/[controller]")] public class KnowledgeClassController : BaseController { private readonly IRepositoryCategoryRepository _repositorycategoryreposytory; private readonly IRepositoryInformationRepository _repositoryinformationrepository; public KnowledgeClassController(IRepositoryCategoryRepository repositorycategoryreposytory, IRepositoryInformationRepository repositoryinformationrepository) { _repositorycategoryreposytory = repositorycategoryreposytory; _repositoryinformationrepository = repositoryinformationrepository; } /// /// 添加知识库分类 /// /// /// [HttpPost("add")] public async Task AddAsync(T_RepositoryCategory input) { if (string.IsNullOrEmpty(input.F_CategoryName)) return Error("请输入分类名称"); if (input.F_Sort > 100000) return Error("排序过大,请重新输入"); string user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; if (input .F_ParentId >0) { input.F_Expand1 = _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == input.F_ParentId) .Result != null ? _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == input.F_ParentId) .Result.F_CategoryName :""; } input.F_CreateOn = DateTime.Now; input.F_CreateBy = user; input.F_DeleteFlag = 0; var res = await _repositorycategoryreposytory.Add(input); if (res > 0) { var model = _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == res).Result; if (model != null) { model.F_Expand2 = "|" + res + "|"; if (input.F_ParentId > 0) { var parent = _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == input.F_ParentId).Result; if (parent != null) model.F_Expand2 = parent.F_Expand2 += res + "|"; } } return Success("添加成功"); } else { return Error("添加失败"); } } /// /// 修改知识库分类 /// [HttpPost("update")] public async Task UpdateAsync(T_RepositoryCategory input) { if (string.IsNullOrEmpty(input.F_CategoryName)) return Error("请输入分类名称"); string user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; var model = await _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == input.F_CategoryId); if (model == null) return Error("操作失败"); input.F_Expand2 = "|" + input.F_CategoryId + "|"; if (input.F_ParentId > 0) { var parent = _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == input.F_ParentId) .Result; if (parent != null) { input.F_Expand1 = parent.F_CategoryName; input.F_Expand2 = parent.F_Expand2 += input.F_CategoryId + "|"; } } input.F_DeleteFlag = 0; input.F_CreateBy = model.F_CreateBy; input.F_CreateOn = model.F_CreateOn; var b = await _repositorycategoryreposytory.Update(input); if (b) { return Success("修改成功"); } return Error("修改失败"); } /// /// 删除知识库分类 /// /// /// [HttpPost("delete")] public async Task Remove(int id = 0) { var model = _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == id).Result; if (model == null) return Error("该分类不存在"); var dt = _repositoryinformationrepository.GetListALL(x => x.F_CategoryId == model.F_CategoryId&&x.F_DeleteFlag ==0).Result; if (dt != null) { if (dt.Count > 0) return Error("请先删除此分类知识库信息"); } model.F_DeleteFlag = (int)EnumUserCountState.Delete; bool n = _repositorycategoryreposytory.Update(model).Result; if (n) return Success("删除成功"); else return Error("删除失败"); } /// /// 获取知识库分类 /// /// /// /// /// [HttpGet("getlist")] public async Task GetListMark(string name, int parentid = -1, int pageindex = 0, int pagesize = 0) { // string user = "8000"; List conModels = new List(); #region 条件筛选 conModels.Add(new ConditionalModel() { FieldName = "F_DeleteFlag", ConditionalType = ConditionalType.Equal, FieldValue = "0" }); conModels.Add(new ConditionalModel() { FieldName = "F_CategoryName", ConditionalType = ConditionalType.Like, FieldValue = name }); if (parentid > -1) conModels.Add(new ConditionalModel() { FieldName = "F_ParentId", ConditionalType = ConditionalType.Equal, FieldValue = parentid.ToString() }); #endregion int recordCount = 0; if (pageindex > 0 && pagesize > 0) { var list = await _repositorycategoryreposytory.GetListByPage(conModels, new MyPageModel() { PageIndex = pageindex, PageSize = pagesize, PageCount = recordCount }, " F_CreateOn desc"); var obj = new { state = "success", message = "成功", rows = list, total = list.Totals, }; return Content(obj.ToJson()); } else { var list = await _repositorycategoryreposytory.GetListALL(conModels, " F_CreateOn desc"); var obj = new { state = "success", message = "成功", rows = list, total = list.Count(), }; return Content(obj.ToJson()); } } /// /// 获取树形知识库分类 /// /// id /// [HttpGet("getTreedetails")] public async Task GetTreeAsync() { var list_ModuleInfo = _repositorycategoryreposytory.GetListALL (x => x.F_DeleteFlag == 0 ).Result ; var treeList = new List(); foreach (var item in list_ModuleInfo) { TreeModel treeModel = new TreeModel(); treeModel.id = item.F_CategoryId ; treeModel.code =""; treeModel.iconcls = ""; treeModel.text = item.F_CategoryName ; try { treeModel.parentid = (int)item.F_ParentId; } catch { treeModel.parentid = 0; } treeList.Add(treeModel); } return Success("获取地区树成功", treeList.TreeRecursion(0)); } /// /// 获取详情 /// /// id /// [HttpGet("getdetails")] public async Task GetDetailsAsync(int id) { if (id <= 0) return Error("参数错误"); var model = await _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == id); List ParentId = new List(); List ParentName = new List(); if (model == null) { return Error("获取失败"); } var obj = new { model.F_CategoryId, model.F_CategoryName , model.F_Expand1, model.F_ParentId , model.F_Sort , ParentId = Category(model.F_ParentId, 0, ParentId), ParentName = Category(model.F_ParentId, 1, ParentName), }; return Success("获取成功!", obj); } public List Category(int? CategoryId, int type, List key) { var model = _repositorycategoryreposytory.GetSingle(x => x.F_CategoryId == CategoryId).Result; if (model != null) { if (type == 0) { key.Add("" + CategoryId); if (model.F_ParentId > 0) { key = Category((int)model.F_ParentId, 0, key); } } else { key.Add(model.F_CategoryName); if (model.F_ParentId > 0) { key = Category((int)model.F_ParentId, 1, key); } } } return key; } } }