jianghaiqing 4 months ago
commit c7617f9820

@ -19,4 +19,10 @@ public abstract class BaseTenantModel<TKey> : BaseModel<TKey>, ITenantId
/// </summary>
[SqlSugar.SugarColumn(ColumnDescription = "租户Id", IsOnlyIgnoreUpdate = true)]
public long TenantId { get; set; } = 0;
/// <summary>
/// 租户名称
/// </summary>
[SqlSugar.SugarColumn(ColumnDescription = "租户名称", IsOnlyIgnoreUpdate = true,Length = 150)]
public string TenantName { get; set; }
}

@ -266,6 +266,11 @@ public class DataResult<TData> : IDataResult<ResultCode, TData>
public TData Data { get; set; }
/// <summary>
/// 附加数据
/// </summary>
public Dictionary<string,object>? AdditionalData { get; set; }
/// <summary>
/// 返回成功的结果
/// </summary>

@ -19,4 +19,10 @@ public abstract class UserTenantModel<TKey> : BaseModel<TKey>, ITenantId
/// </summary>
[SqlSugar.SugarColumn(ColumnDescription = "租户Id")]
public long TenantId { get; set; } = 0;
/// <summary>
/// 租户名称
/// </summary>
[SqlSugar.SugarColumn(ColumnDescription = "租户名称", Length = 150)]
public string TenantName { get; set; }
}

@ -1,45 +1,31 @@
using System.Collections.Specialized;
using System.Security;
using System.Text;
using DS.Module.Core;
using DS.Module.Core.Extensions;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
namespace DS.WMS.Core.Invoice.Method
namespace DS.Module.Core
{
internal class ApiFox
/// <summary>
/// 提供对HTTP请求的低级别访问
/// </summary>
public class ApiFox
{
/// <summary>
/// 发票API的基URL
/// 基URI
/// </summary>
public string? BaseUrl { get; set; }
public Uri? BaseUri { get; set; }
/// <summary>
/// 用户Key
/// 默认请求头
/// </summary>
public string? UserKey { get; set; }
public IDictionary<string, string> DefaultHeaders { get; private set; }
/// <summary>
/// 用户密钥
/// 初始化
/// </summary>
public SecureString? UserSecret { get; private set; }
public ApiFox(IConfiguration config)
public ApiFox()
{
BaseUrl = config.GetValue<string>("InvoiceApi:BaseUrl");
UserKey = config.GetValue<string>("InvoiceApi:UserKey");
string? us = config.GetValue<string>("InvoiceApi:UserSecret");
if (!us.IsNullOrEmpty())
{
UserSecret = new SecureString();
for (int i = 0; i < us.Length; i++)
UserSecret.AppendChar(us[i]);
UserSecret.MakeReadOnly();
}
us = null;
DefaultHeaders = new Dictionary<string, string>();
}
/// <summary>
@ -52,9 +38,7 @@ namespace DS.WMS.Core.Invoice.Method
/// <exception cref="ArgumentException"><paramref name="url"/>为null或空字符串</exception>
public async Task<DataResult<T>> GetAsync<T>(string url, NameValueCollection? keyValues = null)
{
ArgumentException.ThrowIfNullOrEmpty(nameof(url));
string? queryString = null;
string queryString = string.Empty;
if (keyValues != null && keyValues.Count > 0)
{
StringBuilder sb = new StringBuilder();
@ -93,13 +77,11 @@ namespace DS.WMS.Core.Invoice.Method
/// </summary>
/// <typeparam name="T">请求结果的类型</typeparam>
/// <param name="url">请求Url</param>
/// <param name="requestParams">查询字符串的键值对</param>
/// <param name="requestParams">请求参数对象</param>
/// <returns></returns>
/// <exception cref="ArgumentException"><paramref name="url"/>为null或空字符串</exception>
public async Task<DataResult<T>> PostAsync<T>(string url, object? requestParams = null)
{
ArgumentException.ThrowIfNullOrEmpty(nameof(url));
var result = await SendRequestAsync(HttpMethod.Post, url, requestParams);
if (!result.Succeeded)
return DataResult<T>.Failed(result.Message, result.MultiCode);
@ -110,27 +92,42 @@ namespace DS.WMS.Core.Invoice.Method
}
/// <summary>
/// 发起请求
/// 发起HTTP请求
/// </summary>
/// <param name="method">请求方法</param>
/// <param name="url">请求Url</param>
/// <param name="requestParams">请求参数</param>
/// <returns></returns>
public async Task<DataResult<HttpResponseMessage>> SendRequestAsync(HttpMethod method, string url, object? requestParams = null)
/// <exception cref="ArgumentNullException"><paramref name="method"/>为null</exception>
/// <exception cref="ArgumentException"><paramref name="url"/>为null或空字符串</exception>
public virtual async Task<DataResult<HttpResponseMessage>> SendRequestAsync(HttpMethod method, string url, object? requestParams = null)
{
if (!Uri.TryCreate(BaseUrl, UriKind.RelativeOrAbsolute, out Uri? uri))
return DataResult<HttpResponseMessage>.FailedWithDesc(nameof(MultiLanguageConst.InvoiceAPIUrlNull));
ArgumentNullException.ThrowIfNull(method);
ArgumentException.ThrowIfNullOrEmpty(url);
Uri? reqUri = default;
if (BaseUri == null)
{
if (!Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out Uri? uri))
throw new ArgumentException("给定的URL格式无效", nameof(url));
reqUri = new Uri(url);
}
else
{
reqUri = new(BaseUri, url);
}
HttpClient http = new();
http.DefaultRequestHeaders.Add("User-Agent", "X-HttpClient");
http.DefaultRequestHeaders.Add("User-Agent", $"X-{nameof(ApiFox)}");
if (!UserKey.IsNullOrEmpty())
http.DefaultRequestHeaders.Add("USER_KEY", UserKey);
if (DefaultHeaders.Count > 0)
foreach (var header in DefaultHeaders)
http.DefaultRequestHeaders.Add(header.Key, header.Value);
if (UserSecret != null)
http.DefaultRequestHeaders.Add("USER_SECRET", UserSecret.ToString());
if (!http.DefaultRequestHeaders.Contains("Accept"))
http.DefaultRequestHeaders.Add("Accept", "application/json, text/plain");
Uri reqUri = new(uri, url);
try
{
HttpResponseMessage? response = null;

@ -77,7 +77,7 @@ public class JwtHelper
// new Claim("OrgId", data.OrgId), // 公司ID
new Claim("UserName", data.Name), // UserName
new Claim("TenantId", data.TenantId), // 租户ID
new Claim("TenantName", data.TenantName), // 租户名称
};
// 添加机构信息
if (isClient)
@ -168,5 +168,10 @@ public class JwtHelper
/// 租户ID
/// </summary>
public string TenantId { get; set; }
/// <summary>
/// 租户名称
/// </summary>
public string TenantName { get; set; }
}
}

@ -60,6 +60,23 @@ public class AspNetUser : IUser
_userName = value;
}
}
private string _tenantName;
public string TenantName
{
get
{
if (_tenantName == null)
{
var claimValue = GetClaimValueByType("TenantName").FirstOrDefault();
_tenantName = claimValue != null ? claimValue.ObjToString() : "系统租户";
}
return _tenantName;
}
set
{
_tenantName = value;
}
}
public long GetTenantId()
{
var token = GetToken();

@ -30,6 +30,11 @@ public interface IUser
/// 租户ID
/// </summary>
string TenantId { get; }
/// <summary>
/// 租户名称
/// </summary>
string TenantName { get; }
/// <summary>
/// 机构ID
/// </summary>

@ -80,6 +80,12 @@ namespace DS.WMS.Core.Application.Method
{
item.CreateByName = users.Find(x => x.Id == item.CreateBy)?.UserName;
}
result.AdditionalData = new Dictionary<string, object>
{
{ "ApplyAmountSum", result.Data.Sum(x => x.ApplyAmount) },
{ "InvoiceAmountSum", result.Data.Sum(x => x.InvoiceAmount.GetValueOrDefault()) }
};
}
return result;
@ -392,7 +398,7 @@ namespace DS.WMS.Core.Application.Method
/// </summary>
/// <param name="ids">发票明细ID</param>
/// <returns></returns>
public async Task<DataResult> DeleteInvoiceDetailAsync(params long[] ids)
public async Task<DataResult> DeleteInvoiceDetailAsync(params long[] ids)
{
int rows = await TenantDb.Deleteable<InvoiceDetail>().Where(x => ids.Contains(x.Id)).ExecuteCommandAsync();
return rows > 0 ? DataResult.Success : DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed));
@ -555,12 +561,13 @@ namespace DS.WMS.Core.Application.Method
ApplicationId = application.Id,
Name = item.Name,
TaxRate = application.TaxRate,
Quantity = 1,
TaxUnitPrice = application.Details.FindAll(x => item.FeeIds.Contains(x.FeeId)).Sum(x => x.ApplyAmount),
Category = DetailCategory.InvoiceApplication
};
invDetail.TaxAmount = invDetail.TaxUnitPrice * application.TaxRate;
invDetail.UnitPrice = invDetail.TaxUnitPrice - invDetail.TaxAmount;
invDetail.Amount = invDetail.TaxUnitPrice * invDetail.Quantity;
application.InvoiceDetails.Add(invDetail);
}
}
@ -621,7 +628,7 @@ namespace DS.WMS.Core.Application.Method
x.AmountUppercase
}).ExecuteCommandAsync();
}
}

@ -0,0 +1,46 @@
using System.Security;
using DS.Module.Core;
using DS.Module.Core.Extensions;
using Microsoft.Extensions.Configuration;
namespace DS.WMS.Core.Invoice.Method
{
/// <summary>
/// 提供对HTTP请求的低级别访问
/// </summary>
internal sealed class InvoiceApiFox : ApiFox
{
/// <summary>
/// 用户Key
/// </summary>
public string? UserKey { get; set; }
/// <summary>
/// 用户密钥
/// </summary>
public SecureString? UserSecret { get; private set; }
public InvoiceApiFox(IConfiguration config)
{
BaseUri = new Uri(config.GetValue<string>("InvoiceApi:BaseUrl"));
UserKey = config.GetValue<string>("InvoiceApi:UserKey");
string? us = config.GetValue<string>("InvoiceApi:UserSecret");
if (!us.IsNullOrEmpty())
{
UserSecret = new SecureString();
for (int i = 0; i < us.Length; i++)
UserSecret.AppendChar(us[i]);
UserSecret.MakeReadOnly();
}
us = null;
DefaultHeaders.Add("USER_KEY", UserKey ?? string.Empty);
DefaultHeaders.Add("USER_SECRET", UserSecret?.ToString());
}
}
}

@ -11,7 +11,7 @@ namespace DS.WMS.Core.Invoice.Method
/// </summary>
public sealed class InvoiceIssuanceService : ApplicationServiceBase
{
readonly ApiFox api;
readonly InvoiceApiFox api;
/// <summary>
/// 初始化并加载配置
@ -20,7 +20,7 @@ namespace DS.WMS.Core.Invoice.Method
public InvoiceIssuanceService(IServiceProvider provider) : base(provider)
{
var config = provider.GetRequiredService<IConfiguration>();
api = new ApiFox(config);
api = new InvoiceApiFox(config);
}
/// <summary>
@ -70,6 +70,7 @@ namespace DS.WMS.Core.Invoice.Method
goodsCode = "", //商品和服务税收分类合并编码
invoiceLineProperty = "00"
}).ToList()
}).ToList();
var result = await api.PostAsync<InvoiceIssuanceResult<string>>("/api/Invoice/services", request);
@ -77,15 +78,19 @@ namespace DS.WMS.Core.Invoice.Method
return DataResult<string>.Failed(result.Message, result.MultiCode);
var invResult = result.Data;
if (!invResult.Success)
if (invResult.Success)
{
return DataResult<string>.Success(invResult.Data);
}
else
{
if (invResult.Code == 1)
return await InitiateAsync(invoices);
return DataResult<string>.Failed(invResult.Message);
}
return DataResult<string>.Success(invResult.Data);
}
/// <summary>

@ -0,0 +1,149 @@
using System.Runtime.Serialization;
using DS.Module.Core;
namespace DS.WMS.Core.Op.Dtos.TaskInteraction
{
/// <summary>
/// 任务台创建参数
/// </summary>
public class TaskCreation
{
[DataMember(Name = "head")]
public TaskHeader Head { get; set; }
[DataMember(Name = "main")]
public TaskMain Main { get; set; }
public TaskCreation()
{
Head = new TaskHeader();
Main = new TaskMain();
}
}
/// <summary>
/// 任务标头
/// </summary>
public class TaskHeader
{
/// <summary>
/// 流水ID
/// </summary>
[DataMember(Name = "gid")]
public Guid GID { get; set; } = Guid.NewGuid();
/// <summary>
/// 订单Id
/// </summary>
[DataMember(Name = "bsno")]
public long BSNO { get; set; }
/// <summary>
/// 消息类型
/// </summary>
[DataMember(Name = "messageType")]
public string MessageType { get; set; } = "WORK_FLOW_TASK";
[DataMember(Name = "senderId")]
public string SenderId { get; set; } = "WorkFlow";
[DataMember(Name = "senderName")]
public string SenderName { get; set; } = "工作流平台";
[DataMember(Name = "receiverId")]
public string ReceiverId { get; set; } = "TaskManage";
[DataMember(Name = "receiverName")]
public string ReceiverName { get; set; } = "任务管理平台";
/// <summary>
/// 标识符
/// </summary>
[DataMember(Name = "token")]
public string? Token { get; set; }
/// <summary>
/// 版本
/// </summary>
[DataMember(Name = "version")]
public string? Version { get; set; } = "1.0";
/// <summary>
/// 请求时间
/// </summary>
[DataMember(Name = "requestDate")]
public DateTime RequestDate { get; set; } = DateTime.Now;
[DataMember(Name = "senderKey")]
public string? SenderKey { get; set; }
[DataMember(Name = "requestAction")]
public string? RequestAction { get; set; } = "Add";
}
/// <summary>
/// 任务主信息
/// </summary>
public class TaskMain
{
/// <summary>
/// 任务类型
/// </summary>
[DataMember(Name = "taskType")]
public TaskBaseTypeEnum TaskType { get; set; }
/// <summary>
/// 任务来源
/// </summary>
[DataMember(Name = "taskSource")]
public int TaskSource { get; set; } = 9;
/// <summary>
/// 任务标题
/// </summary>
[DataMember(Name = "taskTitle")]
public string TaskTitle { get; set; } = string.Empty;
/// <summary>
/// 任务描述
/// </summary>
[DataMember(Name = "taskDesp")]
public string? TaskDescription { get; set; }
/// <summary>
/// 任务创建者ID
/// </summary>
[DataMember(Name = "taskUserId")]
public long TaskUserId { get; set; }
/// <summary>
/// 任务创建者
/// </summary>
[DataMember(Name = "taskUserName")]
public string? TaskUserName { get; set; }
/// <summary>
/// 任务接收者ID
/// </summary>
[DataMember(Name = "recvUserId")]
public long RecvUserId { get; set; }
/// <summary>
/// 任务创建者
/// </summary>
[DataMember(Name = "recvUserName")]
public string? RecvUserName { get; set; }
/// <summary>
/// 任务租户ID
/// </summary>
[DataMember(Name = "taskTenatId")]
public long TaskTenatId { get; set; }
/// <summary>
/// 任务租户
/// </summary>
[DataMember(Name = "taskTenatName")]
public string? TaskTenatName { get; set; }
}
}

@ -13,8 +13,19 @@ namespace DS.WMS.Core.Sys.Interface;
///
/// </summary>
public interface IClientCommonService
{
{
/// <summary>
/// 根据id获取往来单位参数信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Task<DataResult<List<ClientParamRes>>> GetClientParamListById(string id);
/// <summary>
/// 根据用户ids获取用户邮箱信息
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public Task<DataResult<List<UserSelectRes>>> GetUseEmailListByIds(long[] ids);
/// <summary>
/// 根据类型获取用户下拉列表
/// </summary>

@ -1,4 +1,5 @@
using DS.Module.Core;
using DS.Module.Core.Data;
using DS.Module.Core.Extensions;
using DS.Module.Core.Log;
using DS.Module.SqlSugar;
@ -9,6 +10,7 @@ using DS.WMS.Core.Fee.Dtos;
using DS.WMS.Core.Fee.Entity;
using DS.WMS.Core.Info.Dtos;
using DS.WMS.Core.Info.Entity;
using DS.WMS.Core.Invoice.Dtos;
using DS.WMS.Core.Op.Dtos;
using DS.WMS.Core.Op.EDI;
using DS.WMS.Core.Op.Entity;
@ -43,7 +45,34 @@ public class ClientCommonService : IClientCommonService
user = _serviceProvider.GetRequiredService<IUser>();
saasService = _serviceProvider.GetRequiredService<ISaasDbService>();
}
/// <summary>
/// 根据id获取往来单位参数信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<DataResult<List<ClientParamRes>>> GetClientParamListById(string id)
{
var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
var data = await tenantDb.Queryable<InfoClientParam>()
.Where(x => x.CustomerId == long.Parse(id) && x.Status == StatusEnum.Enable)
.Select<ClientParamRes>()
.ToListAsync();
return await Task.FromResult(DataResult<List<ClientParamRes>>.Success(data));
}
/// <summary>
/// 根据用户ids获取用户邮箱信息
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public async Task<DataResult<List<UserSelectRes>>> GetUseEmailListByIds(long[] ids)
{
var data = await db.Queryable<SysUser>()
.Where(a => a.Status == StatusEnum.Enable.ToEnumInt() && ids.Contains(a.Id))
.Select<UserSelectRes>()
.ToListAsync();
return await Task.FromResult(DataResult<List<UserSelectRes>>.Success(data));
}
/// <summary>
/// 根据类型获取用户下拉列表
/// </summary>

@ -78,6 +78,7 @@ public class CommonService : ICommonService
// OrgId = userInfo.OrgId,
// GID = userInfo.GID,
TenantId = userInfo.TenantId.ToString(),
TenantName = userInfo.TenantName,
};
var token = JwtHelper.Encrypt(tokenModel);
@ -377,6 +378,7 @@ public class CommonService : ICommonService
Name = userInfo.UserName,
OrgId = userInfo.DefaultOrgId.ToString(),
TenantId = userInfo.TenantId.ToString(),
TenantName = userInfo.TenantName,
};
var token = JwtHelper.Encrypt(tokenModel, false, true);
@ -417,6 +419,7 @@ public class CommonService : ICommonService
Name = db.Queryable<SysUser>().Filter(null, true).First(x => x.Id == userId).UserName,
OrgId = user.GetOrgId().ToString(),
TenantId = tenantId.ToString(),
TenantName = user.TenantName
};
var refreshToken = JwtHelper.Encrypt(tokenModel, true, true);
@ -477,6 +480,7 @@ public class CommonService : ICommonService
OrgId = id,
Name = sysUser.UserName,
TenantId = tenantId.ToString(),
TenantName = sysUser.TenantName,
};
var token = new RefreshTokenRes
{

@ -3120,3 +3120,10 @@
2024-07-22 08:57:09.9055 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Source\Repos\DS8\ds-wms-service\DS.WMS.FeeApi\bin\Debug\net8.0\nlog.config
2024-07-22 08:57:09.9055 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile
2024-07-22 08:57:09.9319 Info Configuration initialized.
2024-07-23 17:37:40.2936 Info Registered target NLog.Targets.FileTarget(Name=allfile)
2024-07-23 17:37:40.3330 Info Registered target NLog.Targets.FileTarget(Name=ownFile-web)
2024-07-23 17:37:40.3386 Info Registered target NLog.Targets.ColoredConsoleTarget(Name=console)
2024-07-23 17:37:40.3551 Info NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c. File version: 5.2.8.2366. Product version: 5.2.8+f586f1341c46fa38aaaff4c641e7f0fa7e813943. GlobalAssemblyCache: False
2024-07-23 17:37:40.3551 Info Validating config: TargetNames=console, ownFile-web, ConfigItems=54, FilePath=D:\Source\Repos\DS8\ds-wms-service\DS.WMS.FeeApi\bin\Debug\net8.0\nlog.config
2024-07-23 17:37:40.3551 Warn Unused target detected. Add a rule for this target to the configuration. TargetName: allfile
2024-07-23 17:37:40.3714 Info Configuration initialized.

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>D:\Publish\DS8\FeeApi</_PublishTargetUrl>
<History>True|2024-07-22T00:59:23.3235603Z||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;True|2024-06-24T15:22:18.2672769+08:00||;True|2024-06-24T15:01:04.8153621+08:00||;False|2024-06-24T15:00:29.9618848+08:00||;True|2024-06-24T14:07:19.9401637+08:00||;False|2024-06-24T14:06:36.1250570+08:00||;True|2024-06-21T15:13:57.4273503+08:00||;True|2024-06-21T15:04:37.8218608+08:00||;True|2024-06-21T14:12:48.0266638+08:00||;True|2024-06-21T13:52:30.0950155+08:00||;True|2024-06-20T11:02:42.9508506+08:00||;True|2024-06-19T11:43:01.1899282+08:00||;True|2024-06-19T11:23:01.2938141+08:00||;True|2024-06-18T08:51:21.6222152+08:00||;True|2024-06-17T09:20:35.0804494+08:00||;True|2024-06-17T08:41:58.1319484+08:00||;True|2024-06-17T08:38:09.0137102+08:00||;True|2024-06-14T15:19:45.7395180+08:00||;True|2024-06-14T14:38:49.7094421+08:00||;True|2024-06-14T14:27:39.2815370+08:00||;True|2024-06-14T09:42:21.5397525+08:00||;True|2024-06-13T16:03:39.8475642+08:00||;True|2024-06-13T14:12:10.1725629+08:00||;True|2024-06-13T10:46:52.6971321+08:00||;True|2024-06-11T17:03:44.8328978+08:00||;True|2024-06-06T17:41:51.1810315+08:00||;True|2024-06-06T10:57:27.8273617+08:00||;True|2024-06-04T14:23:21.3742450+08:00||;True|2024-05-31T17:01:42.4717460+08:00||;True|2024-05-31T13:56:03.0734064+08:00||;True|2024-05-31T08:45:52.3549394+08:00||;True|2024-05-30T17:16:32.8907958+08:00||;True|2024-05-30T16:18:06.9957657+08:00||;True|2024-05-29T15:44:18.4051203+08:00||;True|2024-05-29T15:11:03.1518632+08:00||;True|2024-05-29T14:52:26.0823495+08:00||;True|2024-05-29T11:17:20.2245101+08:00||;True|2024-05-29T08:36:28.9569161+08:00||;True|2024-05-28T08:44:31.4427261+08:00||;False|2024-05-28T08:44:02.5254826+08:00||;True|2024-05-27T15:16:32.9413631+08:00||;True|2024-05-27T15:03:42.9803879+08:00||;True|2024-05-27T08:49:54.3933663+08:00||;True|2024-05-27T08:46:13.5862236+08:00||;True|2024-05-23T17:19:32.8154451+08:00||;True|2024-05-23T17:19:01.4587615+08:00||;True|2024-05-22T16:52:42.2166228+08:00||;True|2024-05-22T15:19:49.1773202+08:00||;True|2024-05-22T15:13:31.9485525+08:00||;True|2024-05-22T13:29:02.1355808+08:00||;True|2024-05-22T09:48:40.8753914+08:00||;True|2024-05-22T09:25:06.2068137+08:00||;True|2024-05-22T09:18:53.0759815+08:00||;True|2024-05-21T17:13:36.4091775+08:00||;True|2024-05-21T14:41:18.8486299+08:00||;True|2024-05-21T11:04:27.3649637+08:00||;</History>
<History>True|2024-07-23T09:41:01.7494842Z||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;True|2024-06-24T15:22:18.2672769+08:00||;True|2024-06-24T15:01:04.8153621+08:00||;False|2024-06-24T15:00:29.9618848+08:00||;True|2024-06-24T14:07:19.9401637+08:00||;False|2024-06-24T14:06:36.1250570+08:00||;True|2024-06-21T15:13:57.4273503+08:00||;True|2024-06-21T15:04:37.8218608+08:00||;True|2024-06-21T14:12:48.0266638+08:00||;True|2024-06-21T13:52:30.0950155+08:00||;True|2024-06-20T11:02:42.9508506+08:00||;True|2024-06-19T11:43:01.1899282+08:00||;True|2024-06-19T11:23:01.2938141+08:00||;True|2024-06-18T08:51:21.6222152+08:00||;True|2024-06-17T09:20:35.0804494+08:00||;True|2024-06-17T08:41:58.1319484+08:00||;True|2024-06-17T08:38:09.0137102+08:00||;True|2024-06-14T15:19:45.7395180+08:00||;True|2024-06-14T14:38:49.7094421+08:00||;True|2024-06-14T14:27:39.2815370+08:00||;True|2024-06-14T09:42:21.5397525+08:00||;True|2024-06-13T16:03:39.8475642+08:00||;True|2024-06-13T14:12:10.1725629+08:00||;True|2024-06-13T10:46:52.6971321+08:00||;True|2024-06-11T17:03:44.8328978+08:00||;True|2024-06-06T17:41:51.1810315+08:00||;True|2024-06-06T10:57:27.8273617+08:00||;True|2024-06-04T14:23:21.3742450+08:00||;True|2024-05-31T17:01:42.4717460+08:00||;True|2024-05-31T13:56:03.0734064+08:00||;True|2024-05-31T08:45:52.3549394+08:00||;True|2024-05-30T17:16:32.8907958+08:00||;True|2024-05-30T16:18:06.9957657+08:00||;True|2024-05-29T15:44:18.4051203+08:00||;True|2024-05-29T15:11:03.1518632+08:00||;True|2024-05-29T14:52:26.0823495+08:00||;True|2024-05-29T11:17:20.2245101+08:00||;True|2024-05-29T08:36:28.9569161+08:00||;True|2024-05-28T08:44:31.4427261+08:00||;False|2024-05-28T08:44:02.5254826+08:00||;True|2024-05-27T15:16:32.9413631+08:00||;True|2024-05-27T15:03:42.9803879+08:00||;True|2024-05-27T08:49:54.3933663+08:00||;True|2024-05-27T08:46:13.5862236+08:00||;True|2024-05-23T17:19:32.8154451+08:00||;True|2024-05-23T17:19:01.4587615+08:00||;True|2024-05-22T16:52:42.2166228+08:00||;True|2024-05-22T15:19:49.1773202+08:00||;True|2024-05-22T15:13:31.9485525+08:00||;True|2024-05-22T13:29:02.1355808+08:00||;True|2024-05-22T09:48:40.8753914+08:00||;True|2024-05-22T09:25:06.2068137+08:00||;True|2024-05-22T09:18:53.0759815+08:00||;True|2024-05-21T17:13:36.4091775+08:00||;True|2024-05-21T14:41:18.8486299+08:00||;True|2024-05-21T11:04:27.3649637+08:00||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

@ -29,6 +29,30 @@ public class ClientCommonController : ApiController
_invokeService = invokeService;
}
/// <summary>
/// 根据id获取往来单位参数信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet]
[Route("GetClientParamListById")]
public async Task<DataResult<List<ClientParamRes>>> GetClientParamListById([FromQuery] string id)
{
var res = await _invokeService.GetClientParamListById(id);
return res;
}
/// <summary>
/// 根据用户ids获取用户邮箱信息
/// </summary>
/// <param name="ids">用户Ids</param>
/// <returns></returns>
[HttpGet]
[Route("GetUseEmailListByIds")]
public async Task<DataResult<List<UserSelectRes>>> GetUseEmailListByIds([FromQuery] long[] ids)
{
var res = await _invokeService.GetUseEmailListByIds(ids);
return res;
}
/// <summary>
/// 根据类型获取用户下拉列表
/// </summary>
/// <returns></returns>

Loading…
Cancel
Save