using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; namespace Admin.NET.Application; /// /// 志愿表专家复制服务 /// [ApiDescriptionSettings(ApplicationConst.ZYGroupName, Order = 100)] public class SysVolunteerTbSpService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _rep; private readonly SqlSugarRepository _weChatUser; public SysVolunteerTbSpService(SqlSugarRepository rep, SqlSugarRepository weChatUser) { _rep = rep; _weChatUser = weChatUser; } /// /// 分页查询志愿表专家复制 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Page")] public async Task> Page(SysVolunteerTbSpInput input) { var query = _rep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.TableName.Contains(input.SearchKey.Trim()) || u.BatchName.Contains(input.SearchKey.Trim()) || u.Type.Contains(input.SearchKey.Trim()) || u.SubjectClaim.Contains(input.SearchKey.Trim()) || u.Detail.Contains(input.SearchKey.Trim()) ) .WhereIF(input.CId > 0, u => u.CId == input.CId) .WhereIF(input.SCId > 0, u => u.SCId == input.SCId) .WhereIF(!string.IsNullOrWhiteSpace(input.TableName), u => u.TableName.Contains(input.TableName.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.BatchName), u => u.BatchName.Contains(input.BatchName.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Type), u => u.Type.Contains(input.Type.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.SubjectClaim), u => u.SubjectClaim.Contains(input.SubjectClaim.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Detail), u => u.Detail.Contains(input.Detail.Trim())) //处理外键和TreeSelector相关字段的连接 .LeftJoin((u, cid) => u.CId == cid.Id) .LeftJoin((u, cid, scid) => u.SCId == scid.Id) .OrderBy(u => u.CreateTime) .Select((u, cid, scid) => new SysVolunteerTbSpOutput { Id = u.Id, CId = u.CId, CIdNickName = cid.NickName, SCId = u.SCId, SCIdNickName = scid.NickName, TableName = u.TableName, BatchName = u.BatchName, Type = u.Type, SubjectClaim = u.SubjectClaim, Score = u.Score, Detail = u.Detail, CreateTime = u.CreateTime, UpdateTime = u.UpdateTime, CreateUserId = u.CreateUserId, CreateUserName = u.CreateUserName, UpdateUserId = u.UpdateUserId, UpdateUserName = u.UpdateUserName, IsDelete = u.IsDelete, }); return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); } /// /// 增加志愿表专家复制 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Add")] public async Task Add(AddSysVolunteerTbSpInput input) { var entity = input.Adapt(); await _rep.InsertAsync(entity); return entity.Id; } /// /// 删除志愿表专家复制 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Delete")] public async Task Delete(DeleteSysVolunteerTbSpInput input) { var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); await _rep.DeleteAsync(entity); //假删除 //await _rep.DeleteAsync(entity); //真删除 } /// /// 更新志愿表专家复制 /// /// /// [HttpPost] [ApiDescriptionSettings(Name = "Update")] public async Task Update(UpdateSysVolunteerTbSpInput input) { var entity = input.Adapt(); await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// /// 获取志愿表专家复制 /// /// /// [HttpGet] [ApiDescriptionSettings(Name = "Detail")] public async Task Detail([FromQuery] QueryByIdSysVolunteerTbSpInput input) { return await _rep.GetFirstAsync(u => u.Id == input.Id); } /// /// 获取志愿表专家复制列表 /// /// /// [HttpGet] [ApiDescriptionSettings(Name = "List")] public async Task> List([FromQuery] SysVolunteerTbSpInput input) { var tblist = await _rep.AsQueryable().Select().ToListAsync(); var uids = tblist.Select(s => s.CId).ToList(); var userinfo = await _weChatUser.AsQueryable().Where(e => uids.Contains(e.Id)).ToListAsync(); tblist.ForEach(a => { a.CIdNickName = userinfo.Where(s => s.Id == a.CId).Select(s => s.NickName).FirstOrDefault(); a.SCIdNickName = userinfo.Where(s => s.Id == a.SCId).Select(s => s.NickName).FirstOrDefault(); }); return tblist; } /// /// 获取用户Id列表 /// /// /// [ApiDescriptionSettings(Name = "SysWechatUserCIdDropdown"), HttpGet] public async Task SysWechatUserCIdDropdown() { return await _rep.Context.Queryable() .Select(u => new { Label = u.NickName, Value = u.Id } ).ToListAsync(); } /// /// 获取专家Id列表 /// /// /// [ApiDescriptionSettings(Name = "SysWechatUserSCIdDropdown"), HttpGet] public async Task SysWechatUserSCIdDropdown() { return await _rep.Context.Queryable() .Select(u => new { Label = u.NickName, Value = u.Id } ).ToListAsync(); } }