// 大名科技(天津)有限公司版权所有 电话:18020030720 QQ:515096995 // // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证 using System.ComponentModel; using Admin.NET.Bodk.Core; using Admin.NET.Bodk.Customer.Entities; using Admin.NET.Bodk.Customer.Models; using Admin.NET.Core; using Admin.NET.Core.Service; using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Mapster; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Admin.NET.Bodk.Customer; [ApiDescriptionSettings(Groups = new[] { "Bodk Groups" }, Name = "Customer", Description = "客户接口服务")] public class CustomerService( UserManager userManager, SysOrgService sysOrgService, SysUserService sysUserService, SqlSugarRepository repository) : ServiceBase(userManager, sysOrgService, sysUserService) { /// /// 获取客户信息 /// /// /// [UnitOfWork] [ApiDescriptionSettings(Name = "GetList"), HttpPost] [DisplayName("GetList")] [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] public async Task> GetList(QueryCustomerInput input) { var queryable = repository.AsQueryable(); var userOrgIdList = await SysOrgService.GetUserOrgIdList(); List? orgList; orgList = UserManager.SuperAdmin ? null : userOrgIdList; // queryable = queryable // .Includes(u => u.OrgIds) // .WhereIF(orgList != null, // u => orgList != null && u.OrgIds != null && u.OrgIds.Intersect(orgList).Any()); return await queryable .WhereIF(!string.IsNullOrWhiteSpace(input.Name), m => input.Name != null && m.Name.Contains(input.Name)) .WhereIF(input.Id is not null, u => u.Id == input.Id) .WhereIF(input.Phone is not null, m => m.Phone == input.Phone) .WhereIF(!string.IsNullOrWhiteSpace(input.IdCard), m => input.IdCard != null && m.IdCard.Contains(input.IdCard)) .Mapper(u => { Console.WriteLine(u.IsMale); }) .Select(u => new Models.Customer() { Id = u.Id, Name = u.Name, Phone = u.Phone, IdCard = u.IdCard, CreateTime = u.CreateTime, UpdateTime = u.UpdateTime, CreateUserName = u.CreateUserName, OrgIds = u.OrgIds, IsMale = u.IsMale, IsDelete = u.IsDelete, CreateUserId = u.CreateUserId, UpdateUserId = u.UpdateUserId, UpdateUserName = u.UpdateUserName }) .ToPagedListAsync(input.Page, input.PageSize); } [UnitOfWork] [ApiDescriptionSettings(Name = "Add"), HttpPost] [DisplayName("Add")] [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] public async Task AddCustomer(AddCustomerInput input) { var entity = new CustomerEntity() { IdCard = input.IdCard, Name = input.Name, Phone = input.Phone, IsMale = input.IsMale, ImageUrl = input.ImageUrl, VoiceUrl = input.VoiceUrl, }; entity = await AddBefore(entity); return await repository.InsertReturnSnowflakeIdAsync(entity); } [UnitOfWork] [ApiDescriptionSettings(Name = "Update"), HttpPost] [DisplayName("Update")] [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] public async Task UpdateCustomer(UpdateCustomerInput input) { var entity = new CustomerEntity() { Id = input.Id, IdCard = input.IdCard, Name = input.Name, Phone = input.Phone, IsMale = input.IsMale, ImageUrl = input.ImageUrl, VoiceUrl = input.VoiceUrl }; entity = await UpdateBefore(entity); var result= await repository.UpdateAsync(entity); } [UnitOfWork] [ApiDescriptionSettings(Name = "Delete"), HttpPost] [DisplayName("Delete")] public async Task DeleteCustomer(long? id) { await repository.DeleteByIdAsync(id); } }