app和小程序登录接口

This commit is contained in:
tongfei
2023-10-28 16:47:28 +08:00
parent 25e8a9e30a
commit 12073c36de
20 changed files with 997 additions and 5 deletions

View File

@@ -36,6 +36,19 @@ namespace WMS.Web.Api.Controllers
return result;
}
/// <summary>
/// 登录-APP和小程序
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
[Route("LoginInPwd")]
public async Task<Result<LoginInDto>> LoginInPwd([FromBody] LoginRequest dto)
{
var result = await _loginService.GetUserInfo(dto.UserName,dto.Password);
return result;
}
/// <summary>
/// 退出登录
/// </summary>

View File

@@ -28,6 +28,7 @@
},
"SoaOptions": {
"ModuleID": 25,
"Url_V3": "http://dev.uc.v3.f2b211.com",
"Url": "http://dev.uc.f2b211.com",
"AppId": "100528847652388864",
"AppSecret": "fa950a1fe690fe610338084b49db7db9",

View File

@@ -59,6 +59,13 @@
<param name="code"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.LoginController.LoginInPwd(WMS.Web.Core.Dto.Login.LoginRequest)">
<summary>
登录-APP和小程序
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.LoginController.LoginOut">
<summary>
退出登录
@@ -91,6 +98,44 @@
<param name="dto"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Api.Controllers.OutStockController">
<summary>
出库单
</summary>
</member>
<member name="M:WMS.Web.Api.Controllers.OutStockController.GetPagedList(WMS.Web.Core.Dto.OutStock.OutStockQueryRequest)">
<summary>
列表
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.OutStockController.Save(System.Collections.Generic.List{WMS.Web.Core.Dto.OutStock.SaveOutStockRequest})">
<summary>
保存
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.OutStockController.Sync(System.Int32)">
<summary>
同步金蝶
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Api.Controllers.OutStockTaskController">
<summary>
出库计划单
</summary>
</member>
<member name="M:WMS.Web.Api.Controllers.OutStockTaskController.GetPagedList(WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest)">
<summary>
列表
</summary>
<param name="dto"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Api.Controllers.SysConfigController">
<summary>
系统配置

View File

@@ -510,6 +510,11 @@
用户信息
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginInDto.UserInfoV3">
<summary>
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginInDto.TokenInfo">
<summary>
token信息
@@ -550,6 +555,36 @@
ops自己产生的token 给前端验证用的
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.Login.LoginRequest">
<summary>
登录请求对象
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginRequest.UserName">
<summary>
账号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginRequest.Password">
<summary>
密码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginAuthorizeRequest.ClientId">
<summary>
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginAuthorizeRequest.ClientSecret">
<summary>
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.LoginAuthorizeRequest.GrantType">
<summary>
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.Login.LoginSingleRequest">
<summary>
登录后:请求相关全部信息对象
@@ -735,6 +770,36 @@
加密后的用户数据
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.Login.Temp.LoginTempV2Dto">
<summary>
登录后获取的:token 信息-和单点系统的字段一一对应
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.Temp.LoginTempV2Dto.access_token">
<summary>
后续与单点通信验证token
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.Temp.LoginTempV2Dto.access_expired_at">
<summary>
access token过期时间
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.Temp.LoginTempV2Dto.refresh_token">
<summary>
用于access_token过期后刷新用
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.Temp.LoginTempV2Dto.encrypted_data">
<summary>
加密后的用户数据
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.Temp.v3.LoginJsonTokenV3TempDto.id">
<summary>
用户在单点中维一ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.UserInfoDto.StaffId">
<summary>
人员ID
@@ -795,6 +860,11 @@
用户类型1为员工2为供应商3为客户
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Login.UserInfoV3Dto.Id">
<summary>
用户在单点中维一ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.MoveBoxRecord.MoveBoxRecordQueryInfoResponse.Specifications">
<summary>
物料规格型号
@@ -895,6 +965,326 @@
类型1-整箱移货上级2-整箱移货下级
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse">
<summary>
出库单任务列表
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Id">
<summary>
单据Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.BillNo">
<summary>
单据编号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Status">
<summary>
单据状态
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Type">
<summary>
单据类型
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Operator">
<summary>
操作人(出库人)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.OperateTime">
<summary>
操作时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.SaleBillNo">
<summary>
销售订单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.DeliveryOrg">
<summary>
发货组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.ReceiptCustomer">
<summary>
收货客户
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Stock">
<summary>
仓库ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.AccruedQty">
<summary>
应出库数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.RealityQty">
<summary>
已出库数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.Remark">
<summary>
订单明细备注
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryInfoResponse.CreateTime">
<summary>
创建时间erp那边的创建时间
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest">
<summary>
出库单任务
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.Type">
<summary>
单据类型(出库单下拉列表)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.Status">
<summary>
单据状态
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.CreateBeginDate">
<summary>
创建时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.CreateEndDate">
<summary>
创建时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.DeliveryOrgId">
<summary>
发货组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.ReceiptCustomer">
<summary>
收货客户
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStockTask.OutStockTaskQueryRequest.StockId">
<summary>
仓库ID
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse">
<summary>
出库列表详情
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Id">
<summary>
主键 订单编号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Status">
<summary>
单据状态
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Type">
<summary>
单据类型
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Creator">
<summary>
创建人
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.CreateTime">
<summary>
创建时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.SuccessSync">
<summary>
同步成功或者失败 null 就是未同步
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.SaleBillNo">
<summary>
销售订单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.DeliveryOrg">
<summary>
发货组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.ReceiptCustomer">
<summary>
收货客户
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Stock">
<summary>
仓库ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.Qty">
<summary>
出库数量
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest">
<summary>
出库单列表请求
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.Type">
<summary>
单据类型(出库单下拉列表)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.Creator">
<summary>
创建人
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.CreateBeginDate">
<summary>
创建时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.CreateEndDate">
<summary>
创建时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.SuccessSync">
<summary>
同步成功或者失败 null 就是未同步
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.DeliveryOrgId">
<summary>
发货组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.ReceiptCustomer">
<summary>
收货客户
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryRequest.StockId">
<summary>
仓库ID
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest">
<summary>
出库单保存
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.SaleBillNo">
<summary>
销售订单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.DeliveryOrgId">
<summary>
发货组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.ReceiptCustomerId">
<summary>
收货客户
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.MaterialId">
<summary>
物料Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.StockId">
<summary>
仓库ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.SaveOutStockRequest.Qty">
<summary>
出库数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.PaginationRequestDto.OrgId">
<summary>
组织Id(所有列表页都需要 全局)
@@ -955,6 +1345,46 @@
盘点单明细
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.BoxId">
<summary>
箱Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.MaterialId">
<summary>
物料ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.UnitId">
<summary>
单位ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.StockId">
<summary>
仓库ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.SubStockId">
<summary>
仓位ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.BeforeQty">
<summary>
盘点前数量wms系统数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.AfterQty">
<summary>
盘点实际数量(实际仓库数量)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.SaveTakeStockRequest.Remark">
<summary>
备注
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.TakeStock.TakeStockQueryInfoResponse">
<summary>
盘点单列表

View File

@@ -582,6 +582,12 @@
明细
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.OutStock.Create(System.Int32)">
<summary>
创建
</summary>
<param name="creatorId"></param>
</member>
<member name="T:WMS.Web.Domain.Entitys.OutStockDetails">
<summary>
wms出库单明细
@@ -921,6 +927,11 @@
改箱 移箱服务
</summary>
</member>
<member name="T:WMS.Web.Domain.IService.IOutStockService">
<summary>
出库服务
</summary>
</member>
<member name="T:WMS.Web.Domain.IService.ITakeStockService">
<summary>
盘点单服务
@@ -950,6 +961,14 @@
<param name="code"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.GetUserInfo(System.String,System.String)">
<summary>
获取单点用户信息
</summary>
<param name="username"></param>
<param name="password"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.Public.ILoginService.LoginOutAsync(WMS.Web.Core.Dto.Login.LoginOutDto)">
<summary>
登录退出
@@ -1340,6 +1359,11 @@
单点系统地址
</summary>
</member>
<member name="P:WMS.Web.Domain.Options.SoaOptions.Url_V3">
<summary>
单点系统地址
</summary>
</member>
<member name="P:WMS.Web.Domain.Options.SoaOptions.ModuleID">
<summary>
应用id
@@ -1396,6 +1420,18 @@
<param name="loginInfo"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Services.OutStockService">
<summary>
出库服务
</summary>
</member>
<member name="M:WMS.Web.Domain.Services.OutStockService.Sync(System.Int32)">
<summary>
同步金蝶
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Services.Public.ErpService">
<summary>
erp数据交互服务
@@ -1507,6 +1543,15 @@
<param name="NewToken"></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.LoginTempV2Dto,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>
得到单点用户信息
@@ -1514,6 +1559,14 @@
<param name="code"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.Public.LoginService.GetUserInfo(System.String,System.String)">
<summary>
获取单点用户信息
</summary>
<param name="username"></param>
<param name="password"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.Public.LoginService.LoginOutAsync(WMS.Web.Core.Dto.Login.LoginOutDto)">
<summary>
登录退出
@@ -1758,6 +1811,13 @@
<param name="loginInfo"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.TakeStockService.Sync(System.Int32)">
<summary>
同步金蝶
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.Values.BackRecordType">
<summary>
出入库回退类型

View File

@@ -17,6 +17,11 @@ namespace WMS.Web.Core.Dto.Login
/// </summary>
public UserInfoDto UserInfo { get; set; }
/// <summary>
///
/// </summary>
public UserInfoV3Dto UserInfoV3 { get; set; }
/// <summary>
/// token信息
/// </summary>

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login
{
/// <summary>
/// 登录请求对象
/// </summary>
public class LoginRequest
{
/// <summary>
/// 账号
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; }
}
public class LoginAuthorizeRequest : LoginRequest
{
/// <summary>
///
/// </summary>
public string ClientId { get; set; }
/// <summary>
///
/// </summary>
public string ClientSecret { get; set; }
/// <summary>
///
/// </summary>
public string GrantType { get; set; }
public string Scope { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login
{
public class TagInfoDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
}
}

View File

@@ -40,4 +40,31 @@ namespace WMS.Web.Core.Dto.Login.Temp
/// </summary>
public string encryptedData { get; set; }
}
/// <summary>
/// 登录后获取的:token 信息-和单点系统的字段一一对应
/// </summary>
public class LoginTempV2Dto
{
/// <summary>
/// 后续与单点通信验证token
/// </summary>
public string access_token { get; set; }
/// <summary>
///access token过期时间
/// </summary>
public int access_expired_at { get; set; }
/// <summary>
/// 用于access_token过期后刷新用
/// </summary>
public string refresh_token { get; set; }
/// <summary>
/// 加密后的用户数据
/// </summary>
public string encrypted_data { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login.Temp
{
public class LoginJsonCompanyTempDto
{
public int company_id { get; set; }
public string company_name { get; set; }
public string company_code { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login.Temp.v3
{
public class LoginJsonDeptV3TempDto
{
public int dept_id { get; set; }
public string dept_name { get; set; }
public string dept_code { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login.Temp
{
public class LoginJsonOrgTempDto
{
public int org_id { get; set; }
public string org_name { get; set; }
public string org_code { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login.Temp.v3
{
public class LoginJsonRoleTempDto
{
public int role_id { get; set; }
public string role_name { get; set; }
public string role_code { get; set; }
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login.Temp.v3
{
public class LoginJsonTokenV3TempDto
{
/// <summary>
/// 用户在单点中维一ID
/// </summary>
public int id { get; set; }
public string dingtalk_uid { get; set; }
public string dingtalk_unionid { get; set; }
public string nickname { get; set; }
public string realname { get; set; }
public string mobile { get; set; }
public int identity { get; set; }
public LoginJsonCompanyTempDto company { get; set; }
public List<LoginJsonOrgTempDto> orgs { get; set; }
public List<LoginJsonDeptV3TempDto> depts { get; set; }
public List<LoginJsonRoleTempDto> roles { get; set; }
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.Login
{
public class UserInfoV3Dto
{
/// <summary>
/// 用户在单点中维一ID
/// </summary>
public int Id { get; set; }
public string DingtalkUid { get; set; }
public string DingtalkUnionid { get; set; }
public string Nickname { get; set; }
public string Realname { get; set; }
public string Mobile { get; set; }
public int Identity { get; set; }
public TagInfoDto Company { get; set; }
public List<TagInfoDto> Orgs { get; set; } = new List<TagInfoDto>();
public List<TagInfoDto> Depts { get; set; }= new List<TagInfoDto>();
public List<TagInfoDto> Roles { get; set; }= new List<TagInfoDto>();
}
}

View File

@@ -9,6 +9,7 @@ using System.Net.Http.Headers;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.Login;
namespace WMS.Web.Core.Help
{
@@ -81,6 +82,36 @@ namespace WMS.Web.Core.Help
return respData;
}
public string PostHttp(string url, LoginAuthorizeRequest reqData)
{
var str = string.Format("client_id={0}&client_secret={1}&grant_type={2}&username={3}&password={4}&scope={5}",
reqData.ClientId, reqData.ClientSecret, reqData.GrantType, reqData.UserName, reqData.Password,reqData.Scope);
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(str);
HttpContent httpContent = new StringContent(str);
httpContent.Headers.Expires = DateTime.Now;
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
httpContent.Headers.ContentLength = byte1.Length;
httpContent.Headers.ContentType.CharSet = "utf-8";
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(url);
httpClient.Timeout = new TimeSpan(0, 0, 10);
HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
if (response.IsSuccessStatusCode)
{
var resData = response.Content.ReadAsStringAsync().Result;
return resData;
}
else
{
var resData = response.Content.ReadAsStringAsync().Result;
return resData;
}
}
public string PostHttpNoData(string url, string cookieValue = "")
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

View File

@@ -19,6 +19,14 @@ namespace WMS.Web.Domain.IService.Public
/// <returns></returns>
Task<Result<LoginInDto>> GetUserInfoAsync(string code);
/// <summary>
/// 获取单点用户信息
/// </summary>
/// <param name="username"></param>
/// <param name="password"></param>
/// <returns></returns>
Task<Result<LoginInDto>> GetUserInfo(string username, string password);
/// <summary>
/// 登录退出
/// </summary>

View File

@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Text;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Dto.Login.Temp;
using WMS.Web.Core.Dto.Login.Temp.v3;
namespace WMS.Web.Domain.Mappers
{
@@ -14,7 +15,7 @@ namespace WMS.Web.Domain.Mappers
{
public AppMapper()
{
//pc端登录的相关dto
CreateMap<LoginJsonTokenTempDto, UserInfoDto>()
.ForMember(x => x.Email, ops => ops.MapFrom(x => x.email))
.ForMember(x => x.Avatar, ops => ops.MapFrom(x => x.avatar))
@@ -25,10 +26,42 @@ namespace WMS.Web.Domain.Mappers
.ReverseMap();
CreateMap<LoginJsonDeptTempDto, DeptInfoDto>()
.ForMember(x => x.Id, ops => ops.MapFrom(x => x.id))
.ForMember(x => x.DeptCode, ops => ops.MapFrom(x => x.dept_code))
.ForMember(x => x.DeptName, ops => ops.MapFrom(x => x.dept_name))
.ForMember(x => x.ManagerId, ops => ops.MapFrom(x => x.manager)).ReverseMap();
.ForMember(x => x.Id, ops => ops.MapFrom(x => x.id))
.ForMember(x => x.DeptCode, ops => ops.MapFrom(x => x.dept_code))
.ForMember(x => x.DeptName, ops => ops.MapFrom(x => x.dept_name))
.ForMember(x => x.ManagerId, ops => ops.MapFrom(x => x.manager)).ReverseMap();
//app端和小程序端登录的相关dto
CreateMap<LoginJsonDeptV3TempDto, TagInfoDto>()
.ForMember(x => x.Id, ops => ops.MapFrom(x => x.dept_id))
.ForMember(x => x.Name, ops => ops.MapFrom(x => x.dept_name))
.ForMember(x => x.Code, ops => ops.MapFrom(x => x.dept_code)).ReverseMap();
CreateMap<LoginJsonCompanyTempDto, TagInfoDto>()
.ForMember(x => x.Id, ops => ops.MapFrom(x => x.company_id))
.ForMember(x => x.Name, ops => ops.MapFrom(x => x.company_name))
.ForMember(x => x.Code, ops => ops.MapFrom(x => x.company_code)).ReverseMap();
CreateMap<LoginJsonRoleTempDto, TagInfoDto>()
.ForMember(x => x.Id, ops => ops.MapFrom(x => x.role_id))
.ForMember(x => x.Name, ops => ops.MapFrom(x => x.role_name))
.ForMember(x => x.Code, ops => ops.MapFrom(x => x.role_code)).ReverseMap();
CreateMap<LoginJsonTokenV3TempDto, UserInfoV3Dto>()
.ForMember(x => x.Id, ops => ops.MapFrom(x => x.id))
.ForMember(x => x.DingtalkUid, ops => ops.MapFrom(x => x.dingtalk_uid))
.ForMember(x => x.DingtalkUnionid, ops => ops.MapFrom(x => x.dingtalk_unionid))
.ForMember(x => x.Nickname, ops => ops.MapFrom(x => x.nickname))
.ForMember(x => x.Realname, ops => ops.MapFrom(x => x.realname))
.ForMember(x => x.Mobile, ops => ops.MapFrom(x => x.mobile))
.ForMember(x => x.Identity, ops => ops.MapFrom(x => x.identity))
.ForMember(x => x.Company, ops => ops.MapFrom(x => x.company))
.ForMember(x => x.Orgs, opt => opt.Ignore())
.ForMember(x => x.Depts, opt => opt.Ignore())
.ForMember(x => x.Roles, opt => opt.Ignore()).ReverseMap();
}
}
}

View File

@@ -11,6 +11,11 @@ namespace WMS.Web.Domain.Options
/// </summary>
public string Url { get; set; }
/// <summary>
/// 单点系统地址
/// </summary>
public string Url_V3 { get; set; }
/// <summary>
/// 应用id
/// </summary>

View File

@@ -10,6 +10,7 @@ using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Dto.Login.Temp;
using WMS.Web.Core.Dto.Login.Temp.v3;
using WMS.Web.Core.Help;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Core.Internal.Security;
@@ -67,6 +68,30 @@ namespace WMS.Web.Domain.Services.Public
});
}
/// <summary>
/// 创建token
/// </summary>
/// <param name="data"></param>
/// <param name="tempDto"></param>
/// <param name="NewToken"></param>
/// <returns></returns>
private async Task<AccessTokenDto> CreateToken(UserInfoDto data, LoginTempV2Dto tempDto, string NewToken)
{
return await Task.Run(() =>
{
DateTime expires_time = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)).AddSeconds(tempDto.access_expired_at);
AccessTokenDto accessToken = new AccessTokenDto()
{
Token = NewToken,
PhpToken = tempDto.access_token,
RefreshToken = tempDto.refresh_token,
Expired = expires_time
};
return accessToken;
});
}
/// <summary>
/// 得到单点用户信息
/// </summary>
@@ -190,6 +215,148 @@ namespace WMS.Web.Domain.Services.Public
}
}
/// <summary>
/// 获取单点用户信息
/// </summary>
/// <param name="username"></param>
/// <param name="password"></param>
/// <returns></returns>
public async Task<Result<LoginInDto>> GetUserInfo(string username, string password)
{
//JsonObject reqData = new JsonObject();
//reqData.Add("client_id", _soaOptions.AppId);
//reqData.Add("client_secret", _soaOptions.AppSecret);
//reqData.Add("grant_type", "password");
//reqData.Add("username", username);
//reqData.Add("password", password);
var reqData = new LoginAuthorizeRequest();
reqData.ClientId = _soaOptions.AppId;
reqData.ClientSecret = _soaOptions.AppSecret;
reqData.GrantType = "password";
reqData.UserName = username;
reqData.Scope = "credentials";
var md5 = System.Security.Cryptography.MD5.Create();
var md5Pwd= BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(password)));
md5Pwd = md5Pwd.Replace("-", string.Empty);
reqData.Password = md5Pwd.ToLower();
//这个是登录的时候给前端验证的token,以及传给php单点那边的一个session值用于单点退出时通知ops退出
string NewToken = Guid.NewGuid().ToString("N");
try
{
string result = _httpClientHelp.PostHttp(_soaOptions.Url_V3 + "/uc/authorize", reqData);
var jObject = JsonObject.Parse(result);
LoginInDto r = new LoginInDto();
r.UserInfo = new UserInfoDto();
r.TokenInfo = new AccessTokenDto();
var login_result = jObject["code"] == 0 ? "成功" : "失败";
_logger.LogInformation($"登录信息APP和小程序单点->{login_result}");
if (jObject["code"] == 0)
{
string datajson = jObject["data"].ToString();
var _loginDto = JsonConvert.DeserializeObject<LoginTempV2Dto>(datajson);
#region
string enptStr = _loginDto.encrypted_data;
List<string> enptlist = enptStr.Trim().Split(',').ToList();
string str = RSA.DecryptSection(_soaOptions.PrivateKey, enptlist);
var entity = JsonConvert.DeserializeObject<LoginJsonTokenV3TempDto>(str);
#endregion
//映射登录信息
var userInfo_v3 = _mapper.Map<UserInfoV3Dto>(entity);
//userInfo_v3.Orgs = _mapper.Map<List<TagInfoDto>>(entity.orgs);
//userInfo_v3.Depts = _mapper.Map<List<TagInfoDto>>(entity.depts);
//userInfo_v3.Roles = _mapper.Map<List<TagInfoDto>>(entity.roles);
_logger.LogInformation($"登录信息用户ID->{entity.id}");
//HTTP请求获取登录信息人员客户供应商公司
var loginRequest = new LoginSingleRequest()
{
UserId = entity.id,
};
var loginResponse_result = await _singleDataService.GetSingleDataNoCache<Result<LoginSingleResponse>, LoginSingleRequest, SingleLoginAction>
(loginRequest, SingleLoginAction.Staff, 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.Staff != null)
{
r.UserInfo.StaffId = loginResponse.Staff.Id;
staffName = loginResponse.Staff.Name;
}
}
r.UserInfo.CompanyId = userInfo_v3.Company.Id;
r.UserInfo.CompanyName = userInfo_v3.Company.Name;
r.UserInfo.UcId = userInfo_v3.Id;
r.UserInfo.SeesionId ="";//app和程序类型登录授权没有这个字段
r.UserInfo.Identity = userInfo_v3.Identity;
r.UserInfo.OrgId = entity.orgs.FirstOrDefault()?.org_id;
r.UserInfo.CustomerId = null;
r.UserInfo.SupplierId = null;
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>($"wms_login_{token.Token}", loginInfo, ops_login_time);
//登录成功移出对应的用户token黑名单应为新的token产生,移除登录的信息
string blacktoken = _redisClientService.GetStringKey($"wms_black_token_{r.UserInfo.UcId}");
if (!string.IsNullOrEmpty(blacktoken))
{
this.RemoveLoginInfo(blacktoken);
_redisClientService.RemoveStringKey($"wms_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>