操控平台后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
4.7 KiB

// 大名科技(天津)有限公司版权所有 电话: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<CustomerEntity> repository) : ServiceBase(userManager, sysOrgService, sysUserService)
{
/// <summary>
/// 获取客户信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[UnitOfWork]
[ApiDescriptionSettings(Name = "GetList"), HttpPost]
[DisplayName("GetList")]
[Authorize(AuthenticationSchemes =
JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)]
public async Task<SqlSugarPagedList<Models.Customer>> GetList(QueryCustomerInput input)
{
var queryable = repository.AsQueryable();
var userOrgIdList = await SysOrgService.GetUserOrgIdList();
List<long>? 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<Models.Customer>(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,
VoiceUrl = u.VoiceUrl,
ImageUrl = u.ImageUrl
})
.ToPagedListAsync(input.Page, input.PageSize);
}
[UnitOfWork]
[ApiDescriptionSettings(Name = "Add"), HttpPost]
[DisplayName("Add")]
[Authorize(AuthenticationSchemes =
JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)]
public async Task<long?> 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);
}
}