domian-build
This commit is contained in:
@@ -4,5 +4,973 @@
|
|||||||
<name>WMS.Web.Domain</name>
|
<name>WMS.Web.Domain</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<members>
|
||||||
|
<member name="T:WMS.Web.Domain.IService.Public.ILoginService">
|
||||||
|
<summary>
|
||||||
|
登录服务接口
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.GetUserInfoAsync(System.String)">
|
||||||
|
<summary>
|
||||||
|
得到单点用户信息
|
||||||
|
</summary>
|
||||||
|
<param name="code"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.LoginOutAsync(WMS.Web.Core.Dto.Login.LoginOutDto)">
|
||||||
|
<summary>
|
||||||
|
登录退出
|
||||||
|
</summary>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.RefreshToken(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
刷新token
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.LoginOutSingleAsync(System.Int32,System.String,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
单点退出通知token失效
|
||||||
|
</summary>
|
||||||
|
<param name="ucid"></param>
|
||||||
|
<param name="token"></param>
|
||||||
|
<param name="expires_in"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.LoginOutSingleAsync(System.String)">
|
||||||
|
<summary>
|
||||||
|
单点退出通知token失效
|
||||||
|
</summary>
|
||||||
|
<param name="SeesionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.GetLoginInfo(System.String)">
|
||||||
|
<summary>
|
||||||
|
获取登录后的信息
|
||||||
|
</summary>
|
||||||
|
<param name="authorization"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.Online(System.String)">
|
||||||
|
<summary>
|
||||||
|
单点-在线接口
|
||||||
|
</summary>
|
||||||
|
<param name="sessionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.Offline(System.String)">
|
||||||
|
<summary>
|
||||||
|
单点-下线接口
|
||||||
|
</summary>
|
||||||
|
<param name="sessionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.IService.Public.ISingleDataService">
|
||||||
|
<summary>
|
||||||
|
单点数据返回服务接口
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleData(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据方法名和公司ID
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="id"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleDataNumber(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据方法名和公司ID
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="id"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleDataCode(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据方法名和公司ID
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="id"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleData(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据方法名和公司ID
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="code"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetIdsBySingleName(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
根据名字模糊匹配
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="name"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleData``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据集合:泛型-同步
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleDataAsync``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据集合:泛型-异步
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleDataNoCacheAsync``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据集合:泛型-异步-无缓存
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleData``3(``1,``2,WMS.Web.Domain.Values.Single.SingleControllerType)">
|
||||||
|
<summary>
|
||||||
|
单点数据:可对接全部接口
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">返回对象</typeparam>
|
||||||
|
<typeparam name="X">请求对象</typeparam>
|
||||||
|
<typeparam name="Y">方法名称</typeparam>
|
||||||
|
<param name="dto">请求对象</param>
|
||||||
|
<param name="action">方法名称</param>
|
||||||
|
<param name="type">控制器名称</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSingleDataNoCache``3(``1,``2,WMS.Web.Domain.Values.Single.SingleControllerType)">
|
||||||
|
<summary>
|
||||||
|
单点数据:可对接全部接口-无缓存
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<typeparam name="X"></typeparam>
|
||||||
|
<typeparam name="Y"></typeparam>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="type"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetSysConfigData``2(``1,WMS.Web.Domain.Values.Single.SysConfigAction)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:请求对象和接口方法名
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<typeparam name="X"></typeparam>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<param name="action"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.IService.Public.ISingleDataService.GetCustomerStock(System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
获取客户仓库
|
||||||
|
</summary>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="customerStockCode"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Mappers.AppMapper">
|
||||||
|
<summary>
|
||||||
|
mapper映射
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Mappers.MapperList">
|
||||||
|
<summary>
|
||||||
|
集合映射
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Mappers.MapperList.ToMapList``2(AutoMapper.IMapper,System.Collections.Generic.List{``1},System.Collections.Generic.List{``0})">
|
||||||
|
<summary>
|
||||||
|
映射实体里 集合属性
|
||||||
|
</summary>
|
||||||
|
<typeparam name="ST"></typeparam>
|
||||||
|
<typeparam name="DT"></typeparam>
|
||||||
|
<param name="mapper"></param>
|
||||||
|
<param name="sourcList"></param>
|
||||||
|
<param name="destinationList"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.AppOptions.DBConnectionString">
|
||||||
|
<summary>
|
||||||
|
数据库
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.AppOptions.RedisConnectionString">
|
||||||
|
<summary>
|
||||||
|
redis
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.AppOptions.SingleBaseUrl">
|
||||||
|
<summary>
|
||||||
|
单点数据请求地址-后端使用接口地址
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.AppOptions.RedisDirectory">
|
||||||
|
<summary>
|
||||||
|
redis数据目录
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.AppOptions.DBType">
|
||||||
|
<summary>
|
||||||
|
数据库类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.AppOptions.AllowCache">
|
||||||
|
<summary>
|
||||||
|
是否允许缓存
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.SoaOptions.Url">
|
||||||
|
<summary>
|
||||||
|
单点系统地址
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.SoaOptions.ModuleID">
|
||||||
|
<summary>
|
||||||
|
应用id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.SoaOptions.AppId">
|
||||||
|
<summary>
|
||||||
|
AppId
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.SoaOptions.AppSecret">
|
||||||
|
<summary>
|
||||||
|
AppSecret
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.SoaOptions.PublicKey">
|
||||||
|
<summary>
|
||||||
|
公钥
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Domain.Options.SoaOptions.PrivateKey">
|
||||||
|
<summary>
|
||||||
|
私钥
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.GetAsync``1(System.String,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Get方法
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="url"></param>
|
||||||
|
<param name="dicHeaders"></param>
|
||||||
|
<param name="timeoutSecond"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.GetAsync``1(System.String,System.Collections.Generic.Dictionary{System.String,System.String},System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Get方法
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="url"></param>
|
||||||
|
<param name="dicHeaders"></param>
|
||||||
|
<param name="timeoutSecond"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.PostAsync``1(System.String,System.String,System.Collections.Generic.Dictionary{System.String,System.String},System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Post方法
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="url"></param>
|
||||||
|
<param name="requestBody"></param>
|
||||||
|
<param name="dicHeaders"></param>
|
||||||
|
<param name="timeoutSecond"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.PostAsync``1(System.String,System.String,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Post方法
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="url"></param>
|
||||||
|
<param name="requestBody"></param>
|
||||||
|
<param name="timeoutSecond"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.ExecuteAsync``1(System.String,System.Net.Http.HttpMethod,System.String,System.Collections.Generic.Dictionary{System.String,System.String},System.Int32)">
|
||||||
|
<summary>
|
||||||
|
公共http请求
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="url"></param>
|
||||||
|
<param name="method"></param>
|
||||||
|
<param name="requestBody"></param>
|
||||||
|
<param name="dicHeaders"></param>
|
||||||
|
<param name="timeoutSecond"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.GenerateHttpRequestMessage(System.String,System.String,System.Net.Http.HttpMethod,System.Collections.Generic.Dictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
设置HttpRequestMessage
|
||||||
|
</summary>
|
||||||
|
<param name="url"></param>
|
||||||
|
<param name="requestBody"></param>
|
||||||
|
<param name="method"></param>
|
||||||
|
<param name="dicHeaders"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.GenerateStringContent(System.String,System.Collections.Generic.Dictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
设置请求内容
|
||||||
|
</summary>
|
||||||
|
<param name="requestBody"></param>
|
||||||
|
<param name="dicHeaders"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.HttpClientService.BuildHttpClient(System.Collections.Generic.Dictionary{System.String,System.String},System.Nullable{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
设置请求头和超时时间:返回client
|
||||||
|
</summary>
|
||||||
|
<param name="dicDefaultHeaders"></param>
|
||||||
|
<param name="timeoutSecond"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.CreateToken(WMS.Web.Core.Dto.Login.UserInfoDto,WMS.Web.Core.Dto.Login.Temp.LoginTempDto,System.String)">
|
||||||
|
<summary>
|
||||||
|
创建token
|
||||||
|
</summary>
|
||||||
|
<param name="data"></param>
|
||||||
|
<param name="tempDto"></param>
|
||||||
|
<param name="NewToken"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.GetUserInfoAsync(System.String)">
|
||||||
|
<summary>
|
||||||
|
得到单点用户信息
|
||||||
|
</summary>
|
||||||
|
<param name="code"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.LoginOutAsync(WMS.Web.Core.Dto.Login.LoginOutDto)">
|
||||||
|
<summary>
|
||||||
|
登录退出
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.RefreshToken(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
刷新token
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.LoginOutSingleAsync(System.Int32,System.String,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
单点退出通知token失效
|
||||||
|
</summary>
|
||||||
|
<param name="ucid"></param>
|
||||||
|
<param name="token"></param>
|
||||||
|
<param name="expires_in"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.LoginOutSingleAsync(System.String)">
|
||||||
|
<summary>
|
||||||
|
单点退出通知token失效
|
||||||
|
</summary>
|
||||||
|
<param name="SeesionId">这个是单点传过来的SeesionId</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.CacheOutToken(WMS.Web.Core.Dto.Login.LoginOutDto)">
|
||||||
|
<summary>
|
||||||
|
缓存退出的token
|
||||||
|
</summary>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.GetLoginInfo(System.String)">
|
||||||
|
<summary>
|
||||||
|
获取登录后的信息
|
||||||
|
</summary>
|
||||||
|
<param name="authorization"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.RemoveLoginInfo(System.String)">
|
||||||
|
<summary>
|
||||||
|
移除登录后的用户信息
|
||||||
|
</summary>
|
||||||
|
<param name="token"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.Online(System.String)">
|
||||||
|
<summary>
|
||||||
|
单点-在线接口
|
||||||
|
</summary>
|
||||||
|
<param name="sessionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.LoginService.Offline(System.String)">
|
||||||
|
<summary>
|
||||||
|
单点-下线接口
|
||||||
|
</summary>
|
||||||
|
<param name="sessionId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.RedisClientService.SetStringKey(System.String,System.String,System.Nullable{System.TimeSpan})">
|
||||||
|
<summary>
|
||||||
|
保存单个key value
|
||||||
|
</summary>
|
||||||
|
<param name="key"></param>
|
||||||
|
<param name="value"></param>
|
||||||
|
<param name="expiry"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.RedisClientService.GetStringKey(System.String)">
|
||||||
|
<summary>
|
||||||
|
获取单个key的值
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.RedisClientService.RemoveStringKey(System.String)">
|
||||||
|
<summary>
|
||||||
|
移除redis
|
||||||
|
</summary>
|
||||||
|
<param name="key"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.RedisClientService.GetStringKey``1(System.String)">
|
||||||
|
<summary>
|
||||||
|
获取一个key的对象
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.RedisClientService.SetStringKey``1(System.String,``0,System.Nullable{System.TimeSpan})">
|
||||||
|
<summary>
|
||||||
|
保存一个对象
|
||||||
|
</summary>
|
||||||
|
<param name="obj"></param>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Services.Public.SingleDataService">
|
||||||
|
<summary>
|
||||||
|
单点数据返回服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleData(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据接口方法名和公司ID
|
||||||
|
后端列表查询统一使用
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleDataNumber(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据接口方法名和公司ID
|
||||||
|
后端列表查询统一使用
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleDataCode(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据接口方法名和公司ID
|
||||||
|
后端列表查询统一使用
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetIdsBySingleName(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
根据名字模糊匹配
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="name"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleData(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:根据接口方法名和公司ID
|
||||||
|
后端列表查询统一使用
|
||||||
|
</summary>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleData``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据集合:泛型-同步
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleDataAsync``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据集合:泛型-异步
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleDataNoCacheAsync``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据集合:泛型-异步-无缓存
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleData``3(``1,``2,WMS.Web.Domain.Values.Single.SingleControllerType)">
|
||||||
|
<summary>
|
||||||
|
单点数据:可对接全部接口
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">返回对象</typeparam>
|
||||||
|
<typeparam name="X">请求对象</typeparam>
|
||||||
|
<typeparam name="Y">方法名称</typeparam>
|
||||||
|
<param name="dto">请求对象</param>
|
||||||
|
<param name="action">方法名称</param>
|
||||||
|
<param name="type">控制器名称</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSingleDataNoCache``3(``1,``2,WMS.Web.Domain.Values.Single.SingleControllerType)">
|
||||||
|
<summary>
|
||||||
|
单点数据:可对接全部接口
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">返回对象</typeparam>
|
||||||
|
<typeparam name="X">请求对象</typeparam>
|
||||||
|
<typeparam name="Y">方法名称</typeparam>
|
||||||
|
<param name="dto">请求对象</param>
|
||||||
|
<param name="action">方法名称</param>
|
||||||
|
<param name="type">控制器名称</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetSysConfigData``2(``1,WMS.Web.Domain.Values.Single.SysConfigAction)">
|
||||||
|
<summary>
|
||||||
|
获取单点数据:配置项接口
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<typeparam name="X"></typeparam>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<param name="action"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.SingleDataPost``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
请求单点服务接口:同步
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.SingleDataPostAsync``1(WMS.Web.Domain.Values.Single.SingleAction,System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
请求单点服务接口:异步
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
<param name="action"></param>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WMS.Web.Domain.Services.Public.SingleDataService.GetCustomerStock(System.Int32,System.String)">
|
||||||
|
<summary>
|
||||||
|
获取客户仓库
|
||||||
|
</summary>
|
||||||
|
<param name="companyId"></param>
|
||||||
|
<param name="customerStockCode"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Values.ResultCodes">
|
||||||
|
<summary>
|
||||||
|
错误提示信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Values.Single.SingleAction">
|
||||||
|
<summary>
|
||||||
|
对接单点的接口方法-枚举
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Orgs">
|
||||||
|
<summary>
|
||||||
|
组织集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Users">
|
||||||
|
<summary>
|
||||||
|
用户集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Staffs">
|
||||||
|
<summary>
|
||||||
|
人员集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Suppliers">
|
||||||
|
<summary>
|
||||||
|
供应商集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Customers">
|
||||||
|
<summary>
|
||||||
|
客户集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.CollectionTerms">
|
||||||
|
<summary>
|
||||||
|
收款条件集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.PaymentTerms">
|
||||||
|
<summary>
|
||||||
|
付款条件集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.SettlementMethods">
|
||||||
|
<summary>
|
||||||
|
结算方式集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.SettlementCurrencys">
|
||||||
|
<summary>
|
||||||
|
结算币别集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.TaxRates">
|
||||||
|
<summary>
|
||||||
|
税率集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.ExchangeRates">
|
||||||
|
<summary>
|
||||||
|
汇率集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Stocks">
|
||||||
|
<summary>
|
||||||
|
仓库集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Units">
|
||||||
|
<summary>
|
||||||
|
单位集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.CustomerStocks">
|
||||||
|
<summary>
|
||||||
|
客户仓库集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Depts">
|
||||||
|
<summary>
|
||||||
|
部门集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.StocksWith211">
|
||||||
|
<summary>
|
||||||
|
仓库211集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.SuppliersContacts">
|
||||||
|
<summary>
|
||||||
|
供应商默认联系人集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleAction.Menus">
|
||||||
|
<summary>
|
||||||
|
菜单集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Values.Single.SingleControllerType">
|
||||||
|
<summary>
|
||||||
|
单点-控制器枚举
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleControllerType.Single">
|
||||||
|
<summary>
|
||||||
|
单点OPS列表数据-控制器
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleControllerType.SysConfig">
|
||||||
|
<summary>
|
||||||
|
单点配置项数据-控制器
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleControllerType.Login">
|
||||||
|
<summary>
|
||||||
|
单点登录项数据-控制器
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleControllerType.Public">
|
||||||
|
<summary>
|
||||||
|
单点公共接口数据-控制器
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Values.Single.SingleLoginAction">
|
||||||
|
<summary>
|
||||||
|
单点数据接口-登录要使用的数据接口-方法枚举
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.Menus">
|
||||||
|
<summary>
|
||||||
|
菜单
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.Staff">
|
||||||
|
<summary>
|
||||||
|
人员
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.Company">
|
||||||
|
<summary>
|
||||||
|
公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.Supplier">
|
||||||
|
<summary>
|
||||||
|
供应商
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.Customer">
|
||||||
|
<summary>
|
||||||
|
客户
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.All">
|
||||||
|
<summary>
|
||||||
|
全部信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SingleLoginAction.CompanyInfo">
|
||||||
|
<summary>
|
||||||
|
公司信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Domain.Values.Single.SysConfigAction">
|
||||||
|
<summary>
|
||||||
|
单点数据:配置项和公共接口的方法枚举值
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetSupplierByNameAndCompany">
|
||||||
|
<summary>
|
||||||
|
供应商-根据名称和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetOrgByCompany">
|
||||||
|
<summary>
|
||||||
|
组织-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetDeptByOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
部门-根据组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetStaffByCompany">
|
||||||
|
<summary>
|
||||||
|
人员-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetStaffByDeptAndCompany">
|
||||||
|
<summary>
|
||||||
|
人员-根据部门和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetStaffByOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
人员-根据组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerByCompany">
|
||||||
|
<summary>
|
||||||
|
客户-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerByCustomerAndOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
客户-根据客户和组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerInfoByCustomerAndOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
客户信息-根据客户和组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCollectionTermsByCompany">
|
||||||
|
<summary>
|
||||||
|
收款条件-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetPaymentTermByCompany">
|
||||||
|
<summary>
|
||||||
|
付款条件-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetSettlementMethodByCompany">
|
||||||
|
<summary>
|
||||||
|
结算方式-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetSettlementCurrencyByCompany">
|
||||||
|
<summary>
|
||||||
|
结算币别-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetUnitByCompany">
|
||||||
|
<summary>
|
||||||
|
单位-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetUnitPropertyByCompany">
|
||||||
|
<summary>
|
||||||
|
单位(部分属性)-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetTaxRateByCompany">
|
||||||
|
<summary>
|
||||||
|
税率-根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByNameAndCompany">
|
||||||
|
<summary>
|
||||||
|
仓库-根据名称和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
仓库-根据组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByOrgAndCompanyForNotTransfer">
|
||||||
|
<summary>
|
||||||
|
仓库(不是调拨中转仓)-根据组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByOrgAndCompanyFor211">
|
||||||
|
<summary>
|
||||||
|
仓库(211)-根据组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWareouseByCustomerAndCompany">
|
||||||
|
<summary>
|
||||||
|
仓库-根据客户和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetChildWarehouseByPid">
|
||||||
|
<summary>
|
||||||
|
仓位-根据仓库和名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetChildWarehouse">
|
||||||
|
<summary>
|
||||||
|
仓位-根据-
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetRateInfoByFromToAndCompany">
|
||||||
|
<summary>
|
||||||
|
汇率信息-根据原币、目标币和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerStockByCustomerAndOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
客户仓库-根据客户和组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetPtAndScAndSmAndBuyerAndDeptBySupplierAndOrg">
|
||||||
|
<summary>
|
||||||
|
付款条件,结算币别,结算方式,采购员,采购部门-根据供应商和组织
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByIds">
|
||||||
|
<summary>
|
||||||
|
获取仓库:根据仓库id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerByOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
获取库存:根据组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerStockByCustomerListAndOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
获取客户仓库:根据客户IDS和组织和公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetRateListByFromToAndCompany">
|
||||||
|
<summary>
|
||||||
|
汇率(所有)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetPtAndScAndSmAndBuyerAndDeptByOrgs">
|
||||||
|
<summary>
|
||||||
|
供应商选择后获取:付款条件,结算币别,结算方式,采购员,采购部门,根据组织IDS
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerStockListByCodes">
|
||||||
|
<summary>
|
||||||
|
获取客户仓库:根据code集合
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetSupperByIds">
|
||||||
|
<summary>
|
||||||
|
供应商:根据ids
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseReplenDatebyCompany">
|
||||||
|
<summary>
|
||||||
|
根据公司搜索所有仓库(计算补货频次)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByCodes">
|
||||||
|
<summary>
|
||||||
|
获取仓库:根据codes
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetCustomerStockByCodes">
|
||||||
|
<summary>
|
||||||
|
获取客户仓库:根据codes
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseTransferByCompany">
|
||||||
|
<summary>
|
||||||
|
获取调拨中转仓库:根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetSupperAbout1ByIds">
|
||||||
|
<summary>
|
||||||
|
获取供应商数据根据ids
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetWarehouseByDefaultReplenishCustomer">
|
||||||
|
<summary>
|
||||||
|
获取仓库:根据默认补货客户
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetUsersByCompany">
|
||||||
|
<summary>
|
||||||
|
获取用户(ID和Name):根据公司
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetDeptAllByOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
全部部门-根据组织和公司:不处理子级
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:WMS.Web.Domain.Values.Single.SysConfigAction.GetStaffAllByOrgAndCompany">
|
||||||
|
<summary>
|
||||||
|
获取全部员工:根据公司和组织
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
17
src/WMS.Web.Domain/IService/Public/IHttpClientService.cs
Normal file
17
src/WMS.Web.Domain/IService/Public/IHttpClientService.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.IService.Public
|
||||||
|
{
|
||||||
|
public interface IHttpClientService
|
||||||
|
{
|
||||||
|
Task<T> GetAsync<T>(string url, int timeoutSecond = 180);
|
||||||
|
Task<T> GetAsync<T>(string url, Dictionary<string, string> dicHeaders, int timeoutSecond = 180);
|
||||||
|
Task<T> PostAsync<T>(string url, string requestBody, int timeoutSecond = 180);
|
||||||
|
Task<T> PostAsync<T>(string url, string requestBody, Dictionary<string, string> dicHeaders, int timeoutSecond = 180);
|
||||||
|
Task<T> ExecuteAsync<T>(string url, HttpMethod method, string requestBody, Dictionary<string, string> dicHeaders, int timeoutSecond = 180);
|
||||||
|
}
|
||||||
|
}
|
||||||
73
src/WMS.Web.Domain/IService/Public/ILoginService.cs
Normal file
73
src/WMS.Web.Domain/IService/Public/ILoginService.cs
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using WMS.Web.Core.Dto.Login;
|
||||||
|
using WMS.Web.Core.Internal.Results;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.IService.Public
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 登录服务接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ILoginService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 得到单点用户信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="code"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<Result<LoginInDto>> GetUserInfoAsync(string code);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 登录退出
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<Result> LoginOutAsync(LoginOutDto dto);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 刷新token
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<Result<LoginInDto>> RefreshToken(string OldToken, string RefreshToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点退出通知token失效
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ucid"></param>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
/// <param name="expires_in"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task LoginOutSingleAsync(int ucid, string token, int expires_in);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点退出通知token失效
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="SeesionId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task LoginOutSingleAsync(string SeesionId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取登录后的信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="authorization"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
LoginInDto GetLoginInfo(string authorization);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点-在线接口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sessionId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<Result> Online(string sessionId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点-下线接口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sessionId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<Result> Offline(string sessionId);
|
||||||
|
}
|
||||||
|
}
|
||||||
127
src/WMS.Web.Domain/IService/Public/ISingleDataService.cs
Normal file
127
src/WMS.Web.Domain/IService/Public/ISingleDataService.cs
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using WMS.Web.Domain.Values.Single;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.IService.Public
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据返回服务接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ISingleDataService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据方法名和公司ID
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
string GetSingleData(SingleAction action, int companyId, int id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据方法名和公司ID
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
decimal GetSingleDataNumber(SingleAction action, int companyId, int id);
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据方法名和公司ID
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
string GetSingleDataCode(SingleAction action, int companyId, int id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据方法名和公司ID
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="code"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
string GetSingleData(SingleAction action, int companyId, string code);
|
||||||
|
/// <summary>
|
||||||
|
/// 根据名字模糊匹配
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="name"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
List<int> GetIdsBySingleName(SingleAction action, int companyId, string name);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据集合:泛型-同步
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
List<T> GetSingleData<T>(SingleAction action, int companyId) where T : class;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据集合:泛型-异步
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<T>> GetSingleDataAsync<T>(SingleAction action, int companyId) where T : class;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据集合:泛型-异步-无缓存
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<T>> GetSingleDataNoCacheAsync<T>(SingleAction action, int companyId) where T : class;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据:可对接全部接口
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">返回对象</typeparam>
|
||||||
|
/// <typeparam name="X">请求对象</typeparam>
|
||||||
|
/// <typeparam name="Y">方法名称</typeparam>
|
||||||
|
/// <param name="dto">请求对象</param>
|
||||||
|
/// <param name="action">方法名称</param>
|
||||||
|
/// <param name="type">控制器名称</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<T> GetSingleData<T, X, Y>(X dto, Y action, SingleControllerType type = SingleControllerType.Single) where T : class;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据:可对接全部接口-无缓存
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <typeparam name="X"></typeparam>
|
||||||
|
/// <typeparam name="Y"></typeparam>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<T> GetSingleDataNoCache<T, X, Y>(X dto, Y action, SingleControllerType type = SingleControllerType.Single) where T : class;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:请求对象和接口方法名
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <typeparam name="X"></typeparam>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<T> GetSysConfigData<T, X>(X dto, SysConfigAction action);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取客户仓库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="customerStockCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
string GetCustomerStock(int companyId, string customerStockCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
17
src/WMS.Web.Domain/Mappers/AppMapper.cs
Normal file
17
src/WMS.Web.Domain/Mappers/AppMapper.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Mappers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// mapper映射
|
||||||
|
/// </summary>
|
||||||
|
public class AppMapper : Profile
|
||||||
|
{
|
||||||
|
public AppMapper()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
56
src/WMS.Web.Domain/Mappers/MapperList.cs
Normal file
56
src/WMS.Web.Domain/Mappers/MapperList.cs
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using WMS.Web.Core;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Mappers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 集合映射
|
||||||
|
/// </summary>
|
||||||
|
public static class MapperList
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 映射实体里 集合属性
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="ST"></typeparam>
|
||||||
|
/// <typeparam name="DT"></typeparam>
|
||||||
|
/// <param name="mapper"></param>
|
||||||
|
/// <param name="sourcList"></param>
|
||||||
|
/// <param name="destinationList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static List<DT> ToMapList<DT, ST>(this IMapper mapper, List<ST> sourcList, List<DT> destinationList)
|
||||||
|
where ST : EntityBase
|
||||||
|
where DT : EntityBase
|
||||||
|
{
|
||||||
|
for (int i = 0; i < destinationList.Count; i++)
|
||||||
|
{
|
||||||
|
int id = destinationList[i].Id;
|
||||||
|
var detail = sourcList.FirstOrDefault(f => f.Id == id);
|
||||||
|
if (detail == null)
|
||||||
|
{
|
||||||
|
destinationList.Remove(destinationList[i]);
|
||||||
|
i--;//在列表移除掉一条数据后 必须把index回拨一位 因为数据在移除一条后会调整下标
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var st in sourcList)
|
||||||
|
{
|
||||||
|
if (st.Id == 0)
|
||||||
|
destinationList.Add(mapper.Map<DT>(st));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var detail = destinationList.FirstOrDefault(f => f.Id == st.Id);
|
||||||
|
|
||||||
|
if (detail != null)
|
||||||
|
mapper.Map(st, detail);
|
||||||
|
//如果在目标数据里没找到这条id的数据 则不作处理
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return destinationList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
39
src/WMS.Web.Domain/Options/AppOptions.cs
Normal file
39
src/WMS.Web.Domain/Options/AppOptions.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Options
|
||||||
|
{
|
||||||
|
public class AppOptions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 数据库
|
||||||
|
/// </summary>
|
||||||
|
public string DBConnectionString { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// redis
|
||||||
|
/// </summary>
|
||||||
|
public string RedisConnectionString { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据请求地址-后端使用接口地址
|
||||||
|
/// </summary>
|
||||||
|
public string SingleBaseUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// redis数据目录
|
||||||
|
/// </summary>
|
||||||
|
public string RedisDirectory { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数据库类型
|
||||||
|
/// </summary>
|
||||||
|
public string DBType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否允许缓存
|
||||||
|
/// </summary>
|
||||||
|
public bool AllowCache { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
39
src/WMS.Web.Domain/Options/SoaOptions.cs
Normal file
39
src/WMS.Web.Domain/Options/SoaOptions.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Options
|
||||||
|
{
|
||||||
|
public class SoaOptions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点系统地址
|
||||||
|
/// </summary>
|
||||||
|
public string Url { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 应用id
|
||||||
|
/// </summary>
|
||||||
|
public int ModuleID { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AppId
|
||||||
|
/// </summary>
|
||||||
|
public string AppId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AppSecret
|
||||||
|
/// </summary>
|
||||||
|
public string AppSecret { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 公钥
|
||||||
|
/// </summary>
|
||||||
|
public string PublicKey { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 私钥
|
||||||
|
/// </summary>
|
||||||
|
public string PrivateKey { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
230
src/WMS.Web.Domain/Services/Public/HttpClientService.cs
Normal file
230
src/WMS.Web.Domain/Services/Public/HttpClientService.cs
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using WMS.Web.Core.Exceptions;
|
||||||
|
using WMS.Web.Domain.IService.Public;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Services.Public
|
||||||
|
{
|
||||||
|
public class HttpClientService : IHttpClientService
|
||||||
|
{
|
||||||
|
private readonly IHttpClientFactory _clientFactory;
|
||||||
|
private readonly ILogger<HttpClientService> _logger;
|
||||||
|
private Dictionary<string, string> headers;
|
||||||
|
private Dictionary<string, string> contentHeaders;
|
||||||
|
public HttpClientService(IHttpClientFactory clientFactory, ILogger<HttpClientService> logger)
|
||||||
|
{
|
||||||
|
_clientFactory = clientFactory;
|
||||||
|
_logger = logger;
|
||||||
|
headers = new Dictionary<string, string>();
|
||||||
|
headers.Add("Accept", "application/json");
|
||||||
|
headers.Add("User-Agent", "HttpClientFactory-Sample");
|
||||||
|
|
||||||
|
contentHeaders = new Dictionary<string, string>();
|
||||||
|
contentHeaders.Add("Content-Type", "application/json; charset=utf-8");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get方法
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="url"></param>
|
||||||
|
/// <param name="dicHeaders"></param>
|
||||||
|
/// <param name="timeoutSecond"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> GetAsync<T>(string url, int timeoutSecond = 180)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var client = BuildHttpClient(headers, timeoutSecond);
|
||||||
|
var response = await client.GetAsync(url);
|
||||||
|
//var responseContent = await response.Content.ReadAsStreamAsync();//1.相比ReadAsString这个方法返回要快点,效率高
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync(); //2.当前使用这里是为了迎合错误信息观看
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var t = JsonSerializer.Deserialize<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
|
//var t = await JsonSerializer.DeserializeAsync<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });//3.配合1的ReadAsStream使用
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new WebHttpException(response.StatusCode.ToString(), "请求出错");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"HttpGet:{url} Error:{ex.Message}");
|
||||||
|
throw new Exception($"HttpGet:{url} Error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get方法
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="url"></param>
|
||||||
|
/// <param name="dicHeaders"></param>
|
||||||
|
/// <param name="timeoutSecond"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> GetAsync<T>(string url, Dictionary<string, string> dicHeaders, int timeoutSecond = 180)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var client = BuildHttpClient(dicHeaders, timeoutSecond);
|
||||||
|
var response = await client.GetAsync(url);
|
||||||
|
//var responseContent = await response.Content.ReadAsStreamAsync();//1.相比ReadAsString这个方法返回要快点,效率高
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync(); //2.当前使用这里是为了迎合错误信息观看
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var t = JsonSerializer.Deserialize<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
|
//var t = await JsonSerializer.DeserializeAsync<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });//3.配合1的ReadAsStream使用
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new WebHttpException(response.StatusCode.ToString(), "请求出错");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"HttpGet:{url} Error:{ex.Message}");
|
||||||
|
throw new Exception($"HttpGet:{url} Error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Post方法
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="url"></param>
|
||||||
|
/// <param name="requestBody"></param>
|
||||||
|
/// <param name="dicHeaders"></param>
|
||||||
|
/// <param name="timeoutSecond"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> PostAsync<T>(string url, string requestBody, Dictionary<string, string> dicHeaders, int timeoutSecond = 180)
|
||||||
|
{
|
||||||
|
var client = BuildHttpClient(null, timeoutSecond);
|
||||||
|
var requestContent = GenerateStringContent(requestBody, dicHeaders);
|
||||||
|
var response = await client.PostAsync(url, requestContent);
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var t = JsonSerializer.Deserialize<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogError($"HttpGet:{url} Error:{responseContent}");
|
||||||
|
throw new WebHttpException(response.StatusCode.ToString(), responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Post方法
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="url"></param>
|
||||||
|
/// <param name="requestBody"></param>
|
||||||
|
/// <param name="timeoutSecond"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> PostAsync<T>(string url, string requestBody, int timeoutSecond = 180)
|
||||||
|
{
|
||||||
|
var client = BuildHttpClient(null, timeoutSecond);
|
||||||
|
var requestContent = GenerateStringContent(requestBody, contentHeaders);
|
||||||
|
var response = await client.PostAsync(url, requestContent);
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var t = JsonSerializer.Deserialize<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
|
if (t == null)
|
||||||
|
_logger.LogInformation($"获取单点数据为空---{responseContent}");
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogError($"HttpGet:{url} Error:{responseContent}");
|
||||||
|
throw new WebHttpException(response.StatusCode.ToString(), responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 公共http请求
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="url"></param>
|
||||||
|
/// <param name="method"></param>
|
||||||
|
/// <param name="requestBody"></param>
|
||||||
|
/// <param name="dicHeaders"></param>
|
||||||
|
/// <param name="timeoutSecond"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> ExecuteAsync<T>(string url, HttpMethod method, string requestBody, Dictionary<string, string> dicHeaders, int timeoutSecond = 180)
|
||||||
|
{
|
||||||
|
var client = BuildHttpClient(null, timeoutSecond);
|
||||||
|
var request = GenerateHttpRequestMessage(url, requestBody, method, dicHeaders);
|
||||||
|
var response = await client.SendAsync(request);
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var t = JsonSerializer.Deserialize<T>(responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new WebHttpException(response.StatusCode.ToString(), responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置HttpRequestMessage
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="url"></param>
|
||||||
|
/// <param name="requestBody"></param>
|
||||||
|
/// <param name="method"></param>
|
||||||
|
/// <param name="dicHeaders"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private HttpRequestMessage GenerateHttpRequestMessage(string url, string requestBody, HttpMethod method, Dictionary<string, string> dicHeaders)
|
||||||
|
{
|
||||||
|
var request = new HttpRequestMessage(method, url);
|
||||||
|
if (!string.IsNullOrEmpty(requestBody)) request.Content = new StringContent(requestBody);
|
||||||
|
if (dicHeaders != null)
|
||||||
|
foreach (var headerItme in dicHeaders)
|
||||||
|
request.Headers.Add(headerItme.Key, headerItme.Value);
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置请求内容
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="requestBody"></param>
|
||||||
|
/// <param name="dicHeaders"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private StringContent GenerateStringContent(string requestBody, Dictionary<string, string> dicHeaders)
|
||||||
|
{
|
||||||
|
var content = new StringContent(requestBody);
|
||||||
|
if (dicHeaders != null)
|
||||||
|
content.Headers.Remove("content-type");
|
||||||
|
foreach (var headerItme in dicHeaders)
|
||||||
|
content.Headers.Add(headerItme.Key, headerItme.Value);
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置请求头和超时时间:返回client
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dicDefaultHeaders"></param>
|
||||||
|
/// <param name="timeoutSecond"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private HttpClient BuildHttpClient(Dictionary<string, string> dicDefaultHeaders, int? timeoutSecond)
|
||||||
|
{
|
||||||
|
var httpClient = _clientFactory.CreateClient("ops_client");
|
||||||
|
httpClient.DefaultRequestHeaders.Clear(); //为了使客户端不受最后一个请求的影响,它需要清除DefaultRequestHeaders
|
||||||
|
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||||
|
if (dicDefaultHeaders != null)
|
||||||
|
foreach (var headItem in dicDefaultHeaders)
|
||||||
|
if (!httpClient.DefaultRequestHeaders.Contains(headItem.Key))
|
||||||
|
httpClient.DefaultRequestHeaders.Add(headItem.Key, headItem.Value);
|
||||||
|
|
||||||
|
if (timeoutSecond != null) httpClient.Timeout = TimeSpan.FromSeconds(timeoutSecond.Value);
|
||||||
|
return httpClient;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
387
src/WMS.Web.Domain/Services/Public/LoginService.cs
Normal file
387
src/WMS.Web.Domain/Services/Public/LoginService.cs
Normal file
@@ -0,0 +1,387 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Json;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using WMS.Web.Core.Dto.Login;
|
||||||
|
using WMS.Web.Core.Dto.Login.Temp;
|
||||||
|
using WMS.Web.Core.Help;
|
||||||
|
using WMS.Web.Core.Internal.Results;
|
||||||
|
using WMS.Web.Core.Internal.Security;
|
||||||
|
using WMS.Web.Domain.IService.Public;
|
||||||
|
using WMS.Web.Domain.Options;
|
||||||
|
using WMS.Web.Domain.Values.Single;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Services.Public
|
||||||
|
{
|
||||||
|
public class LoginService : ILoginService
|
||||||
|
{
|
||||||
|
private IMapper _mapper;
|
||||||
|
private SoaOptions _soaOptions;
|
||||||
|
private ILogger<LoginService> _logger;
|
||||||
|
private HttpClientHelp _httpClientHelp;
|
||||||
|
private readonly ISingleDataService _singleDataService;
|
||||||
|
private readonly RedisClientService _redisClientService;
|
||||||
|
public LoginService(
|
||||||
|
IMapper mapper,
|
||||||
|
IOptions<SoaOptions> soaOptions,
|
||||||
|
ILogger<LoginService> logger,
|
||||||
|
HttpClientHelp httpClientHelp,
|
||||||
|
ISingleDataService singleDataService,
|
||||||
|
RedisClientService redisClientService)
|
||||||
|
{
|
||||||
|
this._redisClientService = redisClientService;
|
||||||
|
this._singleDataService = singleDataService;
|
||||||
|
this._soaOptions = soaOptions?.Value;
|
||||||
|
this._mapper = mapper;
|
||||||
|
this._logger = logger;
|
||||||
|
this._httpClientHelp = httpClientHelp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建token
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <param name="tempDto"></param>
|
||||||
|
/// <param name="NewToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task<AccessTokenDto> CreateToken(UserInfoDto data, LoginTempDto tempDto, string NewToken)
|
||||||
|
{
|
||||||
|
return await Task.Run(() =>
|
||||||
|
{
|
||||||
|
|
||||||
|
DateTime expires_time = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)).AddSeconds(tempDto.expires_in);
|
||||||
|
AccessTokenDto accessToken = new AccessTokenDto()
|
||||||
|
{
|
||||||
|
Token = NewToken,
|
||||||
|
PhpToken = tempDto.access_token,
|
||||||
|
RefreshToken = tempDto.refresh_token,
|
||||||
|
Expired = expires_time
|
||||||
|
};
|
||||||
|
return accessToken;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 得到单点用户信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="code"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Result<LoginInDto>> GetUserInfoAsync(string code)
|
||||||
|
{
|
||||||
|
JsonObject reqData = new JsonObject();
|
||||||
|
reqData.Add("app_id", _soaOptions.AppId);
|
||||||
|
reqData.Add("app_secret", _soaOptions.AppSecret);
|
||||||
|
reqData.Add("code", code);
|
||||||
|
//这个是登录的时候给前端验证的token,以及传给php单点那边的一个session值,用于单点退出时,通知ops退出
|
||||||
|
string NewToken = Guid.NewGuid().ToString("N");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string result = _httpClientHelp.PostHttp(_soaOptions.Url + "/uc/authorize/access_token", reqData, true, NewToken);
|
||||||
|
var jObject = JsonObject.Parse(result);
|
||||||
|
|
||||||
|
LoginInDto r = new LoginInDto();
|
||||||
|
r.UserInfo = new UserInfoDto();
|
||||||
|
r.TokenInfo = new AccessTokenDto();
|
||||||
|
var login_result = jObject["errno"] == 0 ? "成功" : "失败";
|
||||||
|
_logger.LogInformation($"登录信息:单点->{login_result}");
|
||||||
|
|
||||||
|
if (jObject["errno"] == 0)
|
||||||
|
{
|
||||||
|
string datajson = jObject["data"].ToString();
|
||||||
|
var _loginDto = JsonConvert.DeserializeObject<LoginTempDto>(datajson);
|
||||||
|
|
||||||
|
#region 解码
|
||||||
|
string enptStr = _loginDto.encryptedData;
|
||||||
|
List<string> enptlist = enptStr.Trim().Split(',').ToList();
|
||||||
|
string str = RSA.DecryptSection(_soaOptions.PrivateKey, enptlist);
|
||||||
|
var entity = JsonConvert.DeserializeObject<LoginJsonTokenTempDto>(str);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//映射登录信息
|
||||||
|
r.UserInfo = _mapper.Map<UserInfoDto>(entity);
|
||||||
|
_logger.LogInformation($"登录信息:用户ID->{entity.uc_id}");
|
||||||
|
|
||||||
|
//HTTP请求获取登录信息:人员,客户,供应商,公司
|
||||||
|
var loginRequest = new LoginSingleRequest()
|
||||||
|
{
|
||||||
|
UserId = entity.uc_id,
|
||||||
|
SupplierId = entity.supplier_id ?? 0,
|
||||||
|
CustomerId = entity.customer_id ?? 0
|
||||||
|
};
|
||||||
|
var loginResponse_result = await _singleDataService.GetSingleDataNoCache<Result<LoginSingleResponse>, LoginSingleRequest, SingleLoginAction>
|
||||||
|
(loginRequest, SingleLoginAction.All, type: SingleControllerType.Login);
|
||||||
|
|
||||||
|
//绑定返回对象的登录信息
|
||||||
|
var staffName = "Null";
|
||||||
|
var token = await CreateToken(r.UserInfo, _loginDto, NewToken);
|
||||||
|
r.TokenInfo = token;
|
||||||
|
if (loginResponse_result.Success && loginResponse_result.Data != null)
|
||||||
|
{
|
||||||
|
var loginResponse = loginResponse_result.Data;
|
||||||
|
if (loginResponse.Supplier != null)
|
||||||
|
r.UserInfo.SupplierName = loginResponse.Supplier.Name;
|
||||||
|
if (loginResponse.Customer != null)
|
||||||
|
r.UserInfo.CustomerName = loginResponse.Customer.Name;
|
||||||
|
if (loginResponse.Staff != null)
|
||||||
|
{
|
||||||
|
r.UserInfo.StaffId = loginResponse.Staff.Id;
|
||||||
|
staffName = loginResponse.Staff.Name;
|
||||||
|
}
|
||||||
|
if (loginResponse.Company != null)
|
||||||
|
r.UserInfo.CompanyName = loginResponse.Company.Name;
|
||||||
|
}
|
||||||
|
r.UserInfo.UcId = entity.uc_id;
|
||||||
|
r.UserInfo.SeesionId = _loginDto?.uc_sessid;
|
||||||
|
r.UserInfo.CompanyId = entity.company_id.Value;
|
||||||
|
r.UserInfo.Identity = entity.identity;
|
||||||
|
r.UserInfo.OrgId = entity.org_id;
|
||||||
|
r.UserInfo.CustomerId = entity.customer_id;
|
||||||
|
r.UserInfo.SupplierId = entity.supplier_id;
|
||||||
|
r.SignedIn = true;
|
||||||
|
_logger.LogInformation($"登录信息:用户人员信息->{staffName}({r.UserInfo.StaffId}),公司名称->{r.UserInfo.CompanyName}");
|
||||||
|
|
||||||
|
//登录后缓存登录的用户信息和token信息
|
||||||
|
var loginInfo = new LoginInDto();
|
||||||
|
loginInfo.UserInfo = r.UserInfo;
|
||||||
|
loginInfo.TokenInfo = token;
|
||||||
|
|
||||||
|
var ops_login_time = token.Expired.AddDays(1) - DateTime.Now;//用于正式
|
||||||
|
_redisClientService.SetStringKey<LoginInDto>($"ops_login_{token.Token}", loginInfo, ops_login_time);
|
||||||
|
|
||||||
|
//登录成功移出对应的用户token黑名单:应为新的token产生,移除登录的信息
|
||||||
|
string blacktoken = _redisClientService.GetStringKey($"ops_black_token_{r.UserInfo.UcId}");
|
||||||
|
if (!string.IsNullOrEmpty(blacktoken))
|
||||||
|
{
|
||||||
|
this.RemoveLoginInfo(blacktoken);
|
||||||
|
_redisClientService.RemoveStringKey($"ops_black_token_{r.UserInfo.UcId}");
|
||||||
|
}
|
||||||
|
if (r == null || r.UserInfo == null || r.TokenInfo == null)
|
||||||
|
return Result<LoginInDto>.ReFailure("授权失败,请重新登录", 401);
|
||||||
|
return Result<LoginInDto>.ReSuccess(r);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var errno_text = "登陆失败:" + jObject["errmsg"];
|
||||||
|
r.SignedIn = false;
|
||||||
|
string datajson_sessid = jObject["data"]["uc_sessid"];
|
||||||
|
//调用单点的退出接口
|
||||||
|
result = _httpClientHelp.GetHttp(_soaOptions.Url + "/uc/authorize/signin_out", true, cookieValue: datajson_sessid);
|
||||||
|
jObject = JsonObject.Parse(result);
|
||||||
|
if (jObject["errno"] == 0)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("用户信息登录:" + errno_text);
|
||||||
|
return Result<LoginInDto>.ReFailure("拒绝用户证书试图访问此web站点,请与站点管理员联系以建立用户证书权限", 403);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Result<LoginInDto>.ReFailure(jObject["errmsg"], jObject["errno"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Result<LoginInDto>.ReFailure("授权失败,请重新登录", 401);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 登录退出
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Result> LoginOutAsync(LoginOutDto dto)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("dto_SessionId:" + dto.SessionId);
|
||||||
|
//2.请求PHP单点登出接口
|
||||||
|
JsonObject reqData = new JsonObject();
|
||||||
|
reqData.Add("app_id", _soaOptions.AppId);
|
||||||
|
reqData.Add("app_secret", _soaOptions.AppSecret);
|
||||||
|
reqData.Add("access_token", dto.AccessToken);
|
||||||
|
string result = _httpClientHelp.PostHttp(_soaOptions.Url + "/uc/authorize/signin_out", reqData, true, dto.SessionId);
|
||||||
|
_logger.LogInformation("退出登录返回:" + result);
|
||||||
|
var jObject = JsonObject.Parse(result);
|
||||||
|
if (jObject["errno"] == 0)
|
||||||
|
{
|
||||||
|
//设置本地token的缓存:为黑名单的token做存储
|
||||||
|
await CacheOutToken(dto);
|
||||||
|
return Result.ReSuccess();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Result.ReFailure(jObject["errmsg"], jObject["errno"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 刷新token
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Result<LoginInDto>> RefreshToken(string Token, string RefreshToken)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("RefreshToken:" + RefreshToken);
|
||||||
|
//1.根据旧token 找到登录对象
|
||||||
|
var loginInfo = _redisClientService.GetStringKey<LoginInDto>($"ops_login_{Token}");
|
||||||
|
//2.请求PHP单点登出接口
|
||||||
|
JsonObject reqData = new JsonObject();
|
||||||
|
reqData.Add("app_id", _soaOptions.AppId);
|
||||||
|
reqData.Add("app_secret", _soaOptions.AppSecret);
|
||||||
|
reqData.Add("refresh_token", RefreshToken);
|
||||||
|
string result = _httpClientHelp.PostHttp(_soaOptions.Url + "/uc/authorize/refresh_token", reqData, true, Token);
|
||||||
|
var jObject = JsonObject.Parse(result);
|
||||||
|
|
||||||
|
LoginInDto r = new LoginInDto();
|
||||||
|
r.UserInfo = new UserInfoDto();
|
||||||
|
r.TokenInfo = new AccessTokenDto();
|
||||||
|
|
||||||
|
if (jObject["errno"] == 0)
|
||||||
|
{
|
||||||
|
string datajson = jObject["data"].ToString();
|
||||||
|
var _loginDto = JsonConvert.DeserializeObject<LoginTempDto>(datajson);
|
||||||
|
r.UserInfo = loginInfo.UserInfo;
|
||||||
|
r.SignedIn = true;
|
||||||
|
var token = await CreateToken(loginInfo.UserInfo, _loginDto, Token);
|
||||||
|
r.TokenInfo = token;
|
||||||
|
loginInfo.TokenInfo = token;
|
||||||
|
|
||||||
|
var ops_login_time = token.Expired.AddDays(1) - DateTime.Now;//用于正式
|
||||||
|
_redisClientService.SetStringKey<LoginInDto>($"ops_login_{token.Token}", loginInfo, ops_login_time);
|
||||||
|
return Result<LoginInDto>.ReSuccess(r);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//失败了1:就把登录的token清除 2: ucid添加到黑名单
|
||||||
|
var time = new TimeSpan(r.TokenInfo.Expired.Day, r.TokenInfo.Expired.Hour, r.TokenInfo.Expired.Minute, r.TokenInfo.Expired.Second, r.TokenInfo.Expired.Millisecond);
|
||||||
|
_redisClientService.SetStringKey($"ops_black_token_{r.UserInfo.UcId}", r.TokenInfo.Token, time);
|
||||||
|
this.RemoveLoginInfo(r.TokenInfo.Token);
|
||||||
|
r.SignedIn = false;
|
||||||
|
return Result<LoginInDto>.ReFailure(jObject["errmsg"], jObject["errno"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点退出通知token失效
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ucid"></param>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
/// <param name="expires_in"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task LoginOutSingleAsync(int ucid, string token, int expires_in)
|
||||||
|
{
|
||||||
|
await Task.Run(() =>
|
||||||
|
{
|
||||||
|
var cache_token = _redisClientService.GetStringKey($"ops_black_token_{ucid}");
|
||||||
|
if (string.IsNullOrEmpty(cache_token))
|
||||||
|
{
|
||||||
|
DateTime expires_time = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)).AddSeconds(expires_in);
|
||||||
|
var time = new TimeSpan(expires_time.Day, expires_time.Hour, expires_time.Minute, expires_time.Second, expires_time.Millisecond);
|
||||||
|
_redisClientService.SetStringKey($"ops_black_token_{ucid}", token, time);
|
||||||
|
this.RemoveLoginInfo(token);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点退出通知token失效
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="SeesionId">这个是单点传过来的SeesionId</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task LoginOutSingleAsync(string SeesionId)
|
||||||
|
{
|
||||||
|
var logininfo = _redisClientService.GetStringKey<LoginInDto>($"ops_login_{SeesionId}");
|
||||||
|
await Task.Run(() =>
|
||||||
|
{
|
||||||
|
if (logininfo != null)
|
||||||
|
{
|
||||||
|
var cache_token = _redisClientService.GetStringKey($"ops_black_token_{logininfo.UserInfo.UcId}");
|
||||||
|
if (string.IsNullOrEmpty(cache_token))
|
||||||
|
{
|
||||||
|
DateTime expires_time = logininfo.TokenInfo.Expired;
|
||||||
|
var time = new TimeSpan(expires_time.Day, expires_time.Hour, expires_time.Minute, expires_time.Second, expires_time.Millisecond);
|
||||||
|
_redisClientService.SetStringKey($"ops_black_token_{logininfo.UserInfo.UcId}", logininfo.TokenInfo.Token, time);
|
||||||
|
this.RemoveLoginInfo(logininfo.TokenInfo.Token);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 缓存退出的token
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task CacheOutToken(LoginOutDto dto)
|
||||||
|
{
|
||||||
|
await Task.Run(() =>
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(dto.AccessToken))
|
||||||
|
{
|
||||||
|
var time = new TimeSpan(dto.ExpiresIn.Day, dto.ExpiresIn.Hour, dto.ExpiresIn.Minute, dto.ExpiresIn.Second, dto.ExpiresIn.Millisecond);
|
||||||
|
_redisClientService.SetStringKey($"ops_black_token_{dto.UcId}", dto.AccessToken, time);
|
||||||
|
this.RemoveLoginInfo(dto.Token);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取登录后的信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="authorization"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public LoginInDto GetLoginInfo(string authorization)
|
||||||
|
{
|
||||||
|
string token = string.Empty;
|
||||||
|
if (authorization.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
token = authorization.Substring("Bearer ".Length).Trim();
|
||||||
|
}
|
||||||
|
var logininfo = _redisClientService.GetStringKey<LoginInDto>($"ops_login_{token}");
|
||||||
|
return logininfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 移除登录后的用户信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
private void RemoveLoginInfo(string token)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(token))
|
||||||
|
{
|
||||||
|
var info = _redisClientService.GetStringKey<LoginInDto>($"ops_login_{token}");
|
||||||
|
if (info != null)
|
||||||
|
{
|
||||||
|
_redisClientService.RemoveStringKey($"ops_login_{token}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点-在线接口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sessionId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Result> Online(string sessionId)
|
||||||
|
{
|
||||||
|
var request = new { PHPSESSID = sessionId };
|
||||||
|
string result = _httpClientHelp.PostHttpNoData(_soaOptions.Url + "/uc/user/online.html?app_id=" + _soaOptions.AppId, sessionId);
|
||||||
|
return Result.ReSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点-下线接口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sessionId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Result> Offline(string sessionId)
|
||||||
|
{
|
||||||
|
var request = new { PHPSESSID = sessionId };
|
||||||
|
string result = _httpClientHelp.PostHttpNoData(_soaOptions.Url + "/uc/user/offline.html?app_id=" + _soaOptions.AppId, sessionId);
|
||||||
|
return Result.ReSuccess();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
93
src/WMS.Web.Domain/Services/Public/RedisClientService.cs
Normal file
93
src/WMS.Web.Domain/Services/Public/RedisClientService.cs
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using StackExchange.Redis;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using WMS.Web.Domain.Options;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Services.Public
|
||||||
|
{
|
||||||
|
public class RedisClientService
|
||||||
|
{
|
||||||
|
private static readonly object Locker = new object();
|
||||||
|
|
||||||
|
private ConnectionMultiplexer redisMultiplexer;
|
||||||
|
IDatabase db = null;
|
||||||
|
private readonly AppOptions _options;
|
||||||
|
public RedisClientService(IOptions<AppOptions> options)
|
||||||
|
{
|
||||||
|
_options = options?.Value;
|
||||||
|
redisMultiplexer = ConnectionMultiplexer.Connect(_options.RedisConnectionString);
|
||||||
|
db = redisMultiplexer.GetDatabase();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region String
|
||||||
|
/// <summary>
|
||||||
|
/// 保存单个key value
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <param name="expiry"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool SetStringKey(string key, string value, TimeSpan? expiry = default(TimeSpan?))
|
||||||
|
{
|
||||||
|
var lastKey = _options.RedisDirectory + ":" + key;
|
||||||
|
return db.StringSet(lastKey, value, expiry);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单个key的值
|
||||||
|
/// </summary>
|
||||||
|
public RedisValue GetStringKey(string key)
|
||||||
|
{
|
||||||
|
var lastKey = _options.RedisDirectory + ":" + key;
|
||||||
|
return db.StringGet(lastKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 移除redis
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool RemoveStringKey(string key)
|
||||||
|
{
|
||||||
|
var lastKey = _options.RedisDirectory + ":" + key;
|
||||||
|
return db.KeyDelete(lastKey);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 获取一个key的对象
|
||||||
|
/// </summary>
|
||||||
|
public T GetStringKey<T>(string key)
|
||||||
|
{
|
||||||
|
if (db == null)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
var lastKey = _options.RedisDirectory + ":" + key;
|
||||||
|
var value = db.StringGet(lastKey);
|
||||||
|
if (value.IsNullOrEmpty)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
return JsonConvert.DeserializeObject<T>(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存一个对象
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default(TimeSpan?))
|
||||||
|
{
|
||||||
|
if (db == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var lastKey = _options.RedisDirectory + ":" + key;
|
||||||
|
string json = JsonConvert.SerializeObject(obj);
|
||||||
|
return db.StringSet(lastKey, json, expiry);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
473
src/WMS.Web.Domain/Services/Public/SingleDataService.cs
Normal file
473
src/WMS.Web.Domain/Services/Public/SingleDataService.cs
Normal file
@@ -0,0 +1,473 @@
|
|||||||
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IdentityModel.Tokens.Jwt;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using WMS.Web.Core.Dto.SingleData;
|
||||||
|
using WMS.Web.Core.Internal.Results;
|
||||||
|
using WMS.Web.Domain.IService.Public;
|
||||||
|
using WMS.Web.Domain.Options;
|
||||||
|
using WMS.Web.Domain.Values.Single;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Services.Public
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据返回服务
|
||||||
|
/// </summary>
|
||||||
|
public class SingleDataService : ISingleDataService
|
||||||
|
{
|
||||||
|
private readonly AppOptions _options;
|
||||||
|
private readonly IHttpClientService _httpClientService;
|
||||||
|
private readonly ILogger<SingleDataService> _logger;
|
||||||
|
private readonly IMemoryCache _memoryCache;
|
||||||
|
private int hours = 10;//过期时间 默认10小时
|
||||||
|
|
||||||
|
public SingleDataService(IOptions<AppOptions> options, IHttpClientService httpClientService, ILogger<SingleDataService> logger, IMemoryCache memoryCache)
|
||||||
|
{
|
||||||
|
this._memoryCache = memoryCache;
|
||||||
|
this._options = options?.Value;
|
||||||
|
this._httpClientService = httpClientService;
|
||||||
|
this._logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据接口方法名和公司ID
|
||||||
|
/// 后端列表查询统一使用
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string GetSingleData(SingleAction action, int companyId, int id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (id == 0)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
var cache_key = action + "_" + companyId + "_IdGetName";
|
||||||
|
var dic = _memoryCache.Get<Dictionary<int, string>>(cache_key);
|
||||||
|
if (dic == null || dic.Count <= 0 || !dic.ContainsKey(id))
|
||||||
|
{
|
||||||
|
if (dic != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
string no_data_key = cache_key + "_NoData";
|
||||||
|
var cache_id = _memoryCache.Get<bool>(no_data_key);
|
||||||
|
if (cache_id == true) return "";
|
||||||
|
//未找到数据请求
|
||||||
|
if (!dic.ContainsKey(id))
|
||||||
|
{
|
||||||
|
_memoryCache.Set(no_data_key, true, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(30)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var list = SingleDataPost<SingleDataResponse>(action, companyId, cache_key);
|
||||||
|
if (list.Count() <= 0) return "";
|
||||||
|
dic = list.ToDictionary(s => s.Id, s => s.Name);
|
||||||
|
_memoryCache.Set(cache_key, dic, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
}
|
||||||
|
if (!dic.ContainsKey(id)) return "";
|
||||||
|
return dic[id];
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:Action->{action.ToString()},CompanyeId->{companyId},Id->{id},(错误原因)=>{ex.Message}");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据接口方法名和公司ID
|
||||||
|
/// 后端列表查询统一使用
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public decimal GetSingleDataNumber(SingleAction action, int companyId, int id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (id == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
var cache_key = action + "_" + companyId + "_IdGetNumber";
|
||||||
|
var dic = _memoryCache.Get<Dictionary<int, decimal>>(cache_key);
|
||||||
|
if (dic == null || dic.Count <= 0 || !dic.ContainsKey(id))
|
||||||
|
{
|
||||||
|
if (dic != null)
|
||||||
|
{
|
||||||
|
string no_data_key = cache_key + "_NoData";
|
||||||
|
var cache_id = _memoryCache.Get<bool>(no_data_key);
|
||||||
|
if (cache_id == true) return 0;
|
||||||
|
//未找到数据请求
|
||||||
|
if (!dic.ContainsKey(id))
|
||||||
|
{
|
||||||
|
_memoryCache.Set(no_data_key, true, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(30)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var list = SingleDataPost<SingleDataResponse>(action, companyId, cache_key);
|
||||||
|
if (list.Count() <= 0) return 0;
|
||||||
|
|
||||||
|
dic = list.ToDictionary(s => s.Id, s => s.Number);
|
||||||
|
_memoryCache.Set(cache_key, dic, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dic.ContainsKey(id)) return 0;
|
||||||
|
return dic[id];
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据接口方法名和公司ID
|
||||||
|
/// 后端列表查询统一使用
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string GetSingleDataCode(SingleAction action, int companyId, int id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (id == 0)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
var cache_key = action + "_" + companyId + "_IdGetCode";
|
||||||
|
var dic = _memoryCache.Get<Dictionary<int, string>>(cache_key);
|
||||||
|
if (dic == null || dic.Count <= 0 || !dic.ContainsKey(id))
|
||||||
|
{
|
||||||
|
if (dic != null)
|
||||||
|
{
|
||||||
|
string no_data_key = cache_key + "_NoData";
|
||||||
|
var cache_id = _memoryCache.Get<bool>(no_data_key);
|
||||||
|
if (cache_id == true) return "";
|
||||||
|
//未找到数据请求
|
||||||
|
if (!dic.ContainsKey(id))
|
||||||
|
{
|
||||||
|
_memoryCache.Set(no_data_key, true, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(30)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var list = SingleDataPost<SingleDataResponse>(action, companyId, cache_key);
|
||||||
|
if (list.Count() <= 0) return "";
|
||||||
|
|
||||||
|
dic = list.ToDictionary(s => s.Id, s => s.Code);
|
||||||
|
_memoryCache.Set(cache_key, dic, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dic.ContainsKey(id)) return "";
|
||||||
|
return dic[id];
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据名字模糊匹配
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="name"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<int> GetIdsBySingleName(SingleAction action, int companyId, string name)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var cache_key = action + "_" + companyId + "_NameGetIds";
|
||||||
|
var dic = _memoryCache.Get<Dictionary<int, string>>(cache_key);
|
||||||
|
if (dic == null || dic.Count <= 0)
|
||||||
|
{
|
||||||
|
var list = SingleDataPost<SingleDataResponse>(action, companyId, cache_key);
|
||||||
|
if (list.Count() <= 0) return new List<int>();
|
||||||
|
|
||||||
|
dic = list.ToDictionary(s => s.Id, s => s.Name);
|
||||||
|
_memoryCache.Set(cache_key, dic, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
}
|
||||||
|
var res = from d in dic where d.Value.Contains(name) select d;
|
||||||
|
return res.Select(s => s.Key).ToList();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return new List<int>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:根据接口方法名和公司ID
|
||||||
|
/// 后端列表查询统一使用
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string GetSingleData(SingleAction action, int companyId, string code)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(code))
|
||||||
|
return "";
|
||||||
|
|
||||||
|
var cache_key = action + "_" + companyId + "_CodeGetName";
|
||||||
|
var dic = _memoryCache.Get<Dictionary<string, string>>(cache_key);
|
||||||
|
//仓库和客户仓库 不能为空了就重新请求 应为 这里是从仓库和客户仓库取值 有一个必然取不到
|
||||||
|
if (dic == null || dic.Count <= 0)
|
||||||
|
{
|
||||||
|
if (dic != null)
|
||||||
|
{
|
||||||
|
string no_data_key = cache_key + "_NoData";
|
||||||
|
var cache_id = _memoryCache.Get<bool>(no_data_key);
|
||||||
|
if (cache_id == true) return "";
|
||||||
|
//未找到数据请求
|
||||||
|
if (!dic.ContainsKey(code))
|
||||||
|
{
|
||||||
|
_memoryCache.Set(no_data_key, true, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(30)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var list = SingleDataPost<SingleDataResponse>(action, companyId, cache_key);
|
||||||
|
if (list.Count() <= 0) return "";
|
||||||
|
|
||||||
|
dic = list.ToDictionary(s => s.Code, s => s.Name);
|
||||||
|
_memoryCache.Set(cache_key, dic, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dic.ContainsKey(code)) return "";
|
||||||
|
return dic[code];
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据集合:泛型-同步
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<T> GetSingleData<T>(SingleAction action, int companyId) where T : class
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var cache_key = action + "_list_" + companyId;
|
||||||
|
var list = _memoryCache.Get<List<T>>(cache_key);
|
||||||
|
if (list == null || list.Count <= 0)
|
||||||
|
list = SingleDataPost<T>(action, companyId, cache_key);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据集合:泛型-异步
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<T>> GetSingleDataAsync<T>(SingleAction action, int companyId) where T : class
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var cache_key = action + "_list_" + companyId;
|
||||||
|
var list = _memoryCache.Get<List<T>>(cache_key);
|
||||||
|
if (list == null || list.Count <= 0)
|
||||||
|
list = await SingleDataPostAsync<T>(action, companyId, cache_key);
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据集合:泛型-异步-无缓存
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<T>> GetSingleDataNoCacheAsync<T>(SingleAction action, int companyId) where T : class
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var list = await SingleDataPostAsync<T>(action, companyId, "");
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据:可对接全部接口
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">返回对象</typeparam>
|
||||||
|
/// <typeparam name="X">请求对象</typeparam>
|
||||||
|
/// <typeparam name="Y">方法名称</typeparam>
|
||||||
|
/// <param name="dto">请求对象</param>
|
||||||
|
/// <param name="action">方法名称</param>
|
||||||
|
/// <param name="type">控制器名称</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> GetSingleData<T, X, Y>(X dto, Y action, SingleControllerType type = SingleControllerType.Single) where T : class
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var para = JsonExtensions.SerializeToJson(dto);
|
||||||
|
var cache_key = action + "_list_" + type + "_" + para;
|
||||||
|
var list = _memoryCache.Get<T>(cache_key);
|
||||||
|
if (list == null)
|
||||||
|
{
|
||||||
|
var url = _options.SingleBaseUrl + "/" + type.ToString() + "/" + action.ToString();
|
||||||
|
var result = await _httpClientService.PostAsync<T>(url, para);
|
||||||
|
_memoryCache.Set(cache_key, result, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
}
|
||||||
|
return _memoryCache.Get<T>(cache_key);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return default(T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据:可对接全部接口
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">返回对象</typeparam>
|
||||||
|
/// <typeparam name="X">请求对象</typeparam>
|
||||||
|
/// <typeparam name="Y">方法名称</typeparam>
|
||||||
|
/// <param name="dto">请求对象</param>
|
||||||
|
/// <param name="action">方法名称</param>
|
||||||
|
/// <param name="type">控制器名称</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> GetSingleDataNoCache<T, X, Y>(X dto, Y action, SingleControllerType type = SingleControllerType.Single) where T : class
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var para = JsonExtensions.SerializeToJson(dto);
|
||||||
|
var url = _options.SingleBaseUrl + "/" + type.ToString() + "/" + action.ToString();
|
||||||
|
var result = await _httpClientService.PostAsync<T>(url, para);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return default(T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取单点数据:配置项接口
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <typeparam name="X"></typeparam>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<T> GetSysConfigData<T, X>(X dto, SysConfigAction action)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var para = JsonExtensions.SerializeToJson(dto);
|
||||||
|
var url = _options.SingleBaseUrl + "/" + SingleControllerType.SysConfig.ToString() + "/" + action.ToString();
|
||||||
|
var result = await _httpClientService.PostAsync<T>(url, para);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError($"请求单点数据错误:{action.ToString()}=>{ex.Message}");
|
||||||
|
return default(T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region 私有方法
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 请求单点服务接口:同步
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private List<T> SingleDataPost<T>(SingleAction action, int companyId, string cache_key)
|
||||||
|
{
|
||||||
|
var dto = new SingleDataRequest(companyId);
|
||||||
|
//var para = JsonExtensions.SerializeToJson(dto);
|
||||||
|
var para = JsonSerializer.Serialize(dto);
|
||||||
|
var url = _options.SingleBaseUrl + "/" + SingleControllerType.Single.ToString() + "/" + action.ToString();
|
||||||
|
var result = _httpClientService.PostAsync<ResultList<T>>(url, para).GetAwaiter().GetResult();
|
||||||
|
if (!result.Success)
|
||||||
|
return new List<T>();
|
||||||
|
return result.Data.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 请求单点服务接口:异步
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="action"></param>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task<List<T>> SingleDataPostAsync<T>(SingleAction action, int companyId, string cache_key)
|
||||||
|
{
|
||||||
|
var dto = new SingleDataRequest(companyId);
|
||||||
|
var para = JsonSerializer.Serialize(dto);
|
||||||
|
var url = _options.SingleBaseUrl + "/" + SingleControllerType.Single.ToString() + "/" + action.ToString();
|
||||||
|
var result = await _httpClientService.PostAsync<ResultList<T>>(url, para);
|
||||||
|
if (result.Success)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(cache_key))
|
||||||
|
{
|
||||||
|
_memoryCache.Set(cache_key, result.Data.ToList(), new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(hours)));
|
||||||
|
return _memoryCache.Get<List<T>>(cache_key);
|
||||||
|
}
|
||||||
|
return result.Data.ToList();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
/// <summary>
|
||||||
|
/// 获取客户仓库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="companyId"></param>
|
||||||
|
/// <param name="customerStockCode"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string GetCustomerStock(int companyId, string customerStockCode)
|
||||||
|
{
|
||||||
|
return string.IsNullOrEmpty(this.GetSingleData(SingleAction.CustomerStocks, companyId, customerStockCode)) ?
|
||||||
|
this.GetSingleData(SingleAction.Stocks, companyId, customerStockCode) :
|
||||||
|
this.GetSingleData(SingleAction.CustomerStocks, companyId, customerStockCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
13
src/WMS.Web.Domain/Values/ResultCodes.cs
Normal file
13
src/WMS.Web.Domain/Values/ResultCodes.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Values
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 错误提示信息
|
||||||
|
/// </summary>
|
||||||
|
public partial class ResultCodes
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
105
src/WMS.Web.Domain/Values/Single/SingleAction.cs
Normal file
105
src/WMS.Web.Domain/Values/Single/SingleAction.cs
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using WMS.Web.Core;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Values.Single
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 对接单点的接口方法-枚举
|
||||||
|
/// </summary>
|
||||||
|
public enum SingleAction
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 组织集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("组织")]
|
||||||
|
Orgs = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 用户集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("用户")]
|
||||||
|
Users = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// 人员集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("人员")]
|
||||||
|
Staffs = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("供应商")]
|
||||||
|
Suppliers = 4,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("客户")]
|
||||||
|
Customers = 5,
|
||||||
|
/// <summary>
|
||||||
|
/// 收款条件集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("收款条件")]
|
||||||
|
CollectionTerms = 6,
|
||||||
|
/// <summary>
|
||||||
|
/// 付款条件集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("付款条件")]
|
||||||
|
PaymentTerms = 7,
|
||||||
|
/// <summary>
|
||||||
|
/// 结算方式集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("结算方式")]
|
||||||
|
SettlementMethods = 8,
|
||||||
|
/// <summary>
|
||||||
|
/// 结算币别集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("结算币别")]
|
||||||
|
SettlementCurrencys = 9,
|
||||||
|
/// <summary>
|
||||||
|
/// 税率集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("税率")]
|
||||||
|
TaxRates = 10,
|
||||||
|
/// <summary>
|
||||||
|
/// 汇率集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("汇率")]
|
||||||
|
ExchangeRates = 11,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("仓库")]
|
||||||
|
Stocks = 12,
|
||||||
|
/// <summary>
|
||||||
|
/// 单位集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("单位")]
|
||||||
|
Units = 13,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户仓库集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("客户仓库")]
|
||||||
|
CustomerStocks = 14,
|
||||||
|
/// <summary>
|
||||||
|
/// 部门集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("部门")]
|
||||||
|
Depts = 15,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库211集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("仓库211")]
|
||||||
|
StocksWith211 = 16,
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商默认联系人集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("供应商默认联系人")]
|
||||||
|
SuppliersContacts = 17,
|
||||||
|
/// <summary>
|
||||||
|
/// 菜单集合
|
||||||
|
/// </summary>
|
||||||
|
[EnumRemark("菜单")]
|
||||||
|
Menus = 18,
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
29
src/WMS.Web.Domain/Values/Single/SingleControllerType.cs
Normal file
29
src/WMS.Web.Domain/Values/Single/SingleControllerType.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Values.Single
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点-控制器枚举
|
||||||
|
/// </summary>
|
||||||
|
public enum SingleControllerType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点OPS列表数据-控制器
|
||||||
|
/// </summary>
|
||||||
|
Single = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 单点配置项数据-控制器
|
||||||
|
/// </summary>
|
||||||
|
SysConfig = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// 单点登录项数据-控制器
|
||||||
|
/// </summary>
|
||||||
|
Login = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// 单点公共接口数据-控制器
|
||||||
|
/// </summary>
|
||||||
|
Public = 4
|
||||||
|
}
|
||||||
|
}
|
||||||
42
src/WMS.Web.Domain/Values/Single/SingleLoginAction.cs
Normal file
42
src/WMS.Web.Domain/Values/Single/SingleLoginAction.cs
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Values.Single
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据接口-登录要使用的数据接口-方法枚举
|
||||||
|
/// </summary>
|
||||||
|
public enum SingleLoginAction
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 菜单
|
||||||
|
/// </summary>
|
||||||
|
Menus = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 人员
|
||||||
|
/// </summary>
|
||||||
|
Staff = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// 公司
|
||||||
|
/// </summary>
|
||||||
|
Company = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商
|
||||||
|
/// </summary>
|
||||||
|
Supplier = 4,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户
|
||||||
|
/// </summary>
|
||||||
|
Customer = 5,
|
||||||
|
/// <summary>
|
||||||
|
/// 全部信息
|
||||||
|
/// </summary>
|
||||||
|
All = 6,
|
||||||
|
/// <summary>
|
||||||
|
/// 公司信息
|
||||||
|
/// </summary>
|
||||||
|
CompanyInfo = 7,
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
186
src/WMS.Web.Domain/Values/Single/SysConfigAction.cs
Normal file
186
src/WMS.Web.Domain/Values/Single/SysConfigAction.cs
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WMS.Web.Domain.Values.Single
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单点数据:配置项和公共接口的方法枚举值
|
||||||
|
/// </summary>
|
||||||
|
public enum SysConfigAction
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商-根据名称和公司
|
||||||
|
/// </summary>
|
||||||
|
GetSupplierByNameAndCompany = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 组织-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetOrgByCompany = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// 部门-根据组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetDeptByOrgAndCompany = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// 人员-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetStaffByCompany = 4,
|
||||||
|
/// <summary>
|
||||||
|
/// 人员-根据部门和公司
|
||||||
|
/// </summary>
|
||||||
|
GetStaffByDeptAndCompany = 5,
|
||||||
|
/// <summary>
|
||||||
|
/// 人员-根据组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetStaffByOrgAndCompany = 6,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerByCompany = 7,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户-根据客户和组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerByCustomerAndOrgAndCompany = 8,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户信息-根据客户和组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerInfoByCustomerAndOrgAndCompany = 9,
|
||||||
|
/// <summary>
|
||||||
|
/// 收款条件-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetCollectionTermsByCompany = 10,
|
||||||
|
/// <summary>
|
||||||
|
/// 付款条件-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetPaymentTermByCompany = 11,
|
||||||
|
/// <summary>
|
||||||
|
/// 结算方式-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetSettlementMethodByCompany = 12,
|
||||||
|
/// <summary>
|
||||||
|
/// 结算币别-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetSettlementCurrencyByCompany = 13,
|
||||||
|
/// <summary>
|
||||||
|
/// 单位-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetUnitByCompany = 14,
|
||||||
|
/// <summary>
|
||||||
|
/// 单位(部分属性)-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetUnitPropertyByCompany = 15,
|
||||||
|
/// <summary>
|
||||||
|
/// 税率-根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetTaxRateByCompany = 16,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库-根据名称和公司
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByNameAndCompany = 17,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库-根据组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByOrgAndCompany = 18,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库(不是调拨中转仓)-根据组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByOrgAndCompanyForNotTransfer = 19,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库(211)-根据组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByOrgAndCompanyFor211 = 20,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库-根据客户和公司
|
||||||
|
/// </summary>
|
||||||
|
GetWareouseByCustomerAndCompany = 21,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓位-根据仓库和名称
|
||||||
|
/// </summary>
|
||||||
|
GetChildWarehouseByPid = 22,
|
||||||
|
/// <summary>
|
||||||
|
/// 仓位-根据-
|
||||||
|
/// </summary>
|
||||||
|
GetChildWarehouse = 23,
|
||||||
|
/// <summary>
|
||||||
|
/// 汇率信息-根据原币、目标币和公司
|
||||||
|
/// </summary>
|
||||||
|
GetRateInfoByFromToAndCompany = 24,
|
||||||
|
/// <summary>
|
||||||
|
/// 客户仓库-根据客户和组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerStockByCustomerAndOrgAndCompany = 25,
|
||||||
|
/// <summary>
|
||||||
|
/// 付款条件,结算币别,结算方式,采购员,采购部门-根据供应商和组织
|
||||||
|
/// </summary>
|
||||||
|
GetPtAndScAndSmAndBuyerAndDeptBySupplierAndOrg = 26,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取仓库:根据仓库id
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByIds = 27,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取库存:根据组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerByOrgAndCompany = 28,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取客户仓库:根据客户IDS和组织和公司
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerStockByCustomerListAndOrgAndCompany = 29,
|
||||||
|
/// <summary>
|
||||||
|
/// 汇率(所有)
|
||||||
|
/// </summary>
|
||||||
|
GetRateListByFromToAndCompany = 30,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商选择后获取:付款条件,结算币别,结算方式,采购员,采购部门,根据组织IDS
|
||||||
|
/// </summary>
|
||||||
|
GetPtAndScAndSmAndBuyerAndDeptByOrgs = 31,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取客户仓库:根据code集合
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerStockListByCodes = 32,
|
||||||
|
/// <summary>
|
||||||
|
/// 供应商:根据ids
|
||||||
|
/// </summary>
|
||||||
|
GetSupperByIds = 33,
|
||||||
|
/// <summary>
|
||||||
|
/// 根据公司搜索所有仓库(计算补货频次)
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseReplenDatebyCompany = 34,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取仓库:根据codes
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByCodes = 35,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取客户仓库:根据codes
|
||||||
|
/// </summary>
|
||||||
|
GetCustomerStockByCodes = 36,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取调拨中转仓库:根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseTransferByCompany = 37,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取供应商数据根据ids
|
||||||
|
/// </summary>
|
||||||
|
GetSupperAbout1ByIds = 38,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取仓库:根据默认补货客户
|
||||||
|
/// </summary>
|
||||||
|
GetWarehouseByDefaultReplenishCustomer = 39,
|
||||||
|
/// <summary>
|
||||||
|
/// 获取用户(ID和Name):根据公司
|
||||||
|
/// </summary>
|
||||||
|
GetUsersByCompany = 40,
|
||||||
|
/// <summary>
|
||||||
|
/// 全部部门-根据组织和公司:不处理子级
|
||||||
|
/// </summary>
|
||||||
|
GetDeptAllByOrgAndCompany = 41,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取全部员工:根据公司和组织
|
||||||
|
/// </summary>
|
||||||
|
GetStaffAllByOrgAndCompany = 42,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,11 +13,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Entitys\" />
|
<Folder Include="Entitys\" />
|
||||||
<Folder Include="Infrastructure\" />
|
<Folder Include="Infrastructure\" />
|
||||||
<Folder Include="IService\" />
|
|
||||||
<Folder Include="Mappers\" />
|
|
||||||
<Folder Include="Options\" />
|
|
||||||
<Folder Include="Services\" />
|
|
||||||
<Folder Include="Values\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user