// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Mapster; using SqlSugar; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Admin.NET.Application; using Admin.NET.Core; using FZCZTB.NET.MD; using Furion.DynamicApiController; using Furion.DependencyInjection; using System.Collections.Generic; using System.Linq; using NewLife.Xml; using AngleSharp.Dom; using DocumentFormat.OpenXml.Office2010.ExcelAc; using Furion; using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using RazorEngine.Compilation.ImpromptuInterface; using MimeKit; using static FZCZTB.TSCL.Application.ChangeTenderOrderOut; using FZFCGDD.ORDER.Application.Service.Neirongfabu.Dto; namespace FZCZTB.TSCL.Application; /// /// 内容发布接口 🧩 /// [ApiDescriptionSettings(ApplicationConst.GroupNameDD, Order = 100)] public class NeirongfabuService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _sysDictDataRep; private readonly SqlSugarRepository _neirongfabu; private readonly ISqlSugarClient _sqlSugarClient; public NeirongfabuService(SqlSugarRepository sysDictDataRep , SqlSugarRepository neirongfabu , ISqlSugarClient sqlSugarClient) { _sysDictDataRep = sysDictDataRep; _neirongfabu = neirongfabu; _sqlSugarClient = sqlSugarClient; } /// /// 获取内容类型集合 🔖 /// /// [DisplayName("获取内容类型集合")] [ApiDescriptionSettings(Name = "GetLeirongneixingList"), HttpGet] [AllowAnonymous] public async Task> GetLeirongneixingList() { return await GetDataListByCode("Leirongneixing"); } /// /// 获取字典值集合 🔖 /// /// /// /// [NonAction] public async Task> GetDataListByCode(string code) { if (string.IsNullOrWhiteSpace(code)) throw Oops.Oh(ErrorCodeEnum.D3011); var dictType = await _sysDictDataRep.Change().AsQueryable() .Where(u => u.Status == StatusEnum.Enable) .WhereIF(!string.IsNullOrWhiteSpace(code), u => u.Code == code) .FirstAsync(); if (dictType == null) return null; var dictDataList = await _sysDictDataRep.AsQueryable() .Where(u => u.DictTypeId == dictType.Id) .Where(u => u.Status == StatusEnum.Enable) .OrderBy(u => new { u.OrderNo, u.Value, u.Code }) .ToListAsync(); return dictDataList; } /// /// 分页查询内容发布 🔖 /// /// /// [DisplayName("分页查询内容发布")] [ApiDescriptionSettings(Name = "Page"), HttpPost] public async Task> Page(PageNeirongfabuInput input) { long userId = 0; long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId); var query = _neirongfabu.AsQueryable() .WhereIF(input.CreateDateRange != null && input.CreateDateRange.Length == 2, u => u.FabuDate >= input.CreateDateRange[0] && u.FabuDate <= input.CreateDateRange[1]) .WhereIF(input.Leirongneixing.HasValue, u => u.Leirongneixing == input.Leirongneixing) .WhereIF(!string.IsNullOrWhiteSpace(input.NeirongTittle), u => u.NeirongTittle.Contains(input.NeirongTittle.Trim())) .Select(x => new NeirongfabuOutput { Id = x.Id, Leirongneixing = x.Leirongneixing, IsFabu = x.IsFabu, IsShouyexianshi = x.IsShouyexianshi, NeirongTittle = x.NeirongTittle, Fengmiantupian = x.Fengmiantupian, Sort = x.Sort, FabuDate = x.FabuDate, NeirongZhaiyao = x.NeirongZhaiyao, // NeirongMiaoshu = x.NeirongMiaoshu, CreateTime = x.CreateTime, UpdateTime = x.UpdateTime, CreateUserId = x.CreateUserId, CreateUserName = x.CreateUserName, UpdateUserId = x.UpdateUserId, UpdateUserName = x.UpdateUserName, }); var pagedList = await query.OrderBuilder(input, "", "Sort", false).ToPagedListAsync(input.Page, input.PageSize); var sysDictDatas = await GetDataListByCode("Leirongneixing"); foreach (var neirongfabuOutput in pagedList.Items) { var sysDictData = sysDictDatas.Where(x => x.Value == neirongfabuOutput.Leirongneixing.Value.ToString()).FirstOrDefault(); if (sysDictData != null) { neirongfabuOutput.LeirongneixingName = sysDictData.Label; } if(neirongfabuOutput.IsFabu.HasValue && neirongfabuOutput.IsFabu.Value) { neirongfabuOutput.IsFabuName = "是"; } else { neirongfabuOutput.IsFabuName = "否"; } if (neirongfabuOutput.IsShouyexianshi.HasValue && neirongfabuOutput.IsShouyexianshi.Value) { neirongfabuOutput.IsShouyexianshiName = "是"; } else { neirongfabuOutput.IsShouyexianshiName = "否"; } } return pagedList; } /// /// 获取内容发布详情 ℹ️ /// /// /// [DisplayName("获取内容发布详情")] [ApiDescriptionSettings(Name = "Detail"), HttpGet] public async Task Detail([FromQuery] QueryByIdTenderOrderInput input) { var Leirongneixing = await GetDataListByCode("Leirongneixing"); var neirongfabuOutput = await _neirongfabu.AsQueryable().Where(x => x.Id == input.Id).Select().FirstAsync(); if (neirongfabuOutput != null) { if (neirongfabuOutput.Leirongneixing.HasValue) { neirongfabuOutput.LeirongneixingName = Leirongneixing.Where(x => x.Value == neirongfabuOutput.Leirongneixing.Value.ToString()).Select(x => x.Label).FirstOrDefault() ?? ""; } if (neirongfabuOutput.IsFabu.HasValue && neirongfabuOutput.IsFabu.Value) { neirongfabuOutput.IsFabuName = "是"; } else { neirongfabuOutput.IsFabuName = "否"; } if (neirongfabuOutput.IsShouyexianshi.HasValue && neirongfabuOutput.IsShouyexianshi.Value) { neirongfabuOutput.IsShouyexianshiName = "是"; } else { neirongfabuOutput.IsShouyexianshiName = "否"; } } return neirongfabuOutput; } /// /// 新增内容发布 ➕ /// /// /// [DisplayName("新增内容发布")] [ApiDescriptionSettings(Name = "Add"), HttpPost] public async Task Add(NeirongfabuInput input) { var entity = input.Adapt(); entity.Id = Guid.NewGuid(); long userId = 0; long? usertrueId = null; if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) { usertrueId = userId; } var RealName = App.User?.FindFirstValue(ClaimConst.RealName); entity.CreateTime = DateTime.Now; entity.UpdateTime = DateTime.Now; entity.CreateUserId = usertrueId; entity.CreateUserName = RealName; entity.UpdateUserId = usertrueId; entity.UpdateUserName = RealName; return await _neirongfabu.InsertAsync(entity); } /// /// 修改内容发布 ✏️ /// /// /// [DisplayName("修改内容发布")] [ApiDescriptionSettings(Name = "Update"), HttpPost] public async Task Update(NeirongfabuInput input) { var entity = input.Adapt(); long userId = 0; long? usertrueId = null; if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) { usertrueId = userId; } var RealName = App.User?.FindFirstValue(ClaimConst.RealName); entity.UpdateTime = DateTime.Now; entity.UpdateUserId = usertrueId; entity.UpdateUserName = RealName; await _neirongfabu.UpdateAsync(entity); } /// /// 删除内容发布 ❌ /// /// /// [DisplayName("删除内容发布")] [ApiDescriptionSettings(Name = "Delete"), HttpPost] public async Task Delete(DeleteTenderOrderInput input) { //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); var entity = await _sqlSugarClient.Queryable().Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002); //await _TenderOrderRep.FakeDeleteAsync(entity); //假删除 await _neirongfabu.DeleteAsync(entity); //真删除 } /// /// 批量删除内容发布 ❌ /// /// /// [DisplayName("批量删除内容发布")] [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost] public async Task BatchDelete([Required(ErrorMessage = "主键列表不能为空")] List input) { var exp = Expressionable.Create(); foreach (var row in input) exp = exp.Or(it => it.Id == row.Id); var list = await _neirongfabu.AsQueryable().Where(exp.ToExpression()).ToListAsync(); // return await _TenderOrderRep.FakeDeleteAsync(list); //假删除 return await _neirongfabu.DeleteAsync(list); //真删除 } }