.NET 實現JWT登錄認證 在ASP.NET Core應用程式中,使用JWT進行身份驗證和授權已成為一種流行的方式。JWT是一種安全的方式,用於在客戶端和伺服器之間傳輸用戶信息。 添加NuGet包 首先,我們需要添加一些NuGet包來支持JWT身份驗證。在您的ASP.NET Core項目中,打開S ...
Abp(net core)+easyui+efcore實現倉儲管理系統目錄
abp(net core)+easyui+efcore實現倉儲管理系統——ABP總體介紹(一) abp(net core)+easyui+efcore實現倉儲管理系統——解決方案介紹(二) abp(net core)+easyui+efcore實現倉儲管理系統——領域層創建實體(三) abp(net core)+easyui+efcore實現倉儲管理系統——定義倉儲並實現 (四) abp(net core)+easyui+efcore實現倉儲管理系統——創建應用服務(五) abp(net core)+easyui+efcore實現倉儲管理系統——使用 WEBAPI實現CURD (十一) abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI之貨物管理一 (十九) abp(net core)+easyui+efcore實現倉儲管理系統——ABP WebAPI與EasyUI結合增刪改查之一(二十七) abp(net core)+easyui+efcore實現倉儲管理系統——入庫管理之一(三十七) abp(net core)+easyui+efcore實現倉儲管理系統——出庫管理之一(四十九) abp(net core)+easyui+efcore實現倉儲管理系統——ABP升級7.3上(五十八)
有了前一篇文章(abp(net core)+easyui+efcore實現倉儲管理系統——模塊管理升級(六十) ),對於模塊管理的升級過程中解決升級中出現的問題的一些經驗。我們對組織管理這個模塊進行升級。
一、添加Profile定義文件
1. 在Visual Studio 2022的“解決方案資源管理器”中,右鍵單擊“ABP.TPLMS.Application”項目,使用滑鼠左鍵展開“Orgs” > “Dto”文件夾
2. 使用滑鼠右鍵單擊“Dto”文件夾,然後選擇“添加” > “類”。 將類命名為 OrgMapProfile,然後選擇“添加”。代碼如下。
using ABP.TPLMS.Authorization.Users;
using ABP.TPLMS.Entitys;
using ABP.TPLMS.Users.Dto;
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ABP.TPLMS.Orgs.Dto
{
public class OrgMapProfile:Profile
{
public OrgMapProfile()
{
CreateMap<OrgDto, Org>();
CreateMap<OrgDto, CreateUpdateOrgDto>();
CreateMap<CreateUpdateOrgDto, Org>();
}
}
}
二、修改OrgAppService類
3.在Visual Studio 2022的“解決方案資源管理器”中,在“Orgs”文件夾中找到OrgAppService.cs文件,雙擊在文本編輯器中打開,修改代碼如下。
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Domain.Repositories;
using Abp.Web.Models;
using ABP.TPLMS.Entitys;
using ABP.TPLMS.Modules.Dto;
using ABP.TPLMS.Orgs.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ABP.TPLMS.Orgs
{
public class OrgAppService : AsyncCrudAppService<Org, OrgDto, int, PagedOrgResultRequestDto,
CreateUpdateOrgDto, CreateUpdateOrgDto>, IOrgAppService
{
public OrgAppService(IRepository<Org, int> repository)
: base(repository)
{
}
[DontWrapResult]
public PagedOrgResultDto<OrgDto> GetAllOrgs(PagedOrgResultRequestDto input)
{
PagedOrgResultDto<OrgDto> orgs = new PagedOrgResultDto<OrgDto>();
input.SkipCount = 0;//這裡需要進行參數傳遞
input.MaxResultCount= 1000;
var allOrgs=GetAllAsync(input);
IReadOnlyList<OrgDto> result = AddParentOrgs(input, allOrgs.Result.Items).AsReadOnly();
orgs.Rows = result;
orgs.Total = result.Count;
return orgs;
}
private List<OrgDto> AddParentOrgs(PagedOrgResultRequestDto input,IReadOnlyList<OrgDto> list)
{
List<OrgDto> result = new List<OrgDto>();
if (list == null)
return result;
var qry1 = base.CreateFilteredQuery(input);
List<Org> listParent = new List<Org>();
GetParentOrgs(listParent, list[0].ParentId, qry1);
foreach (var item in listParent)
{
result.Add(ObjectMapper.Map<OrgDto>(item));
}
result.AddRange(list.ToArray());
return result;
}
protected override IQueryable<Org> CreateFilteredQuery(PagedOrgResultRequestDto input)
{
var qry = base.CreateFilteredQuery(input)
.Where(t => t.Name.Contains(input.OrgName == null ? string.Empty : input.OrgName))
.Where(t => t.BizCode.Contains(input.OrgCode == null ? string.Empty : input.OrgCode))
.Where(t => t.CustomCode.Contains(input.CustomCode == null ? string.Empty : input.CustomCode));
return qry;
}
private void GetParentOrgs(List<Org> orgs, int ParentId, IQueryable<Org> listOrgs)
{
List<Org> drs = listOrgs.Where(x => x.Id == ParentId).ToList();
if (drs == null || drs.Count <= 0)
{
return;
}
else
{
for (int i = 0; i < drs.Count; i++)
{
var dr = drs[i];
if (!orgs.Contains(dr))
{
orgs.Add(dr);
}
GetParentOrgs(orgs, dr.ParentId, listOrgs);
}
}
}
}
}
4. 上面代碼中需要特別註意的一點,是GetAllOrgs方法中的input.SkipCount=0這一行代碼,如果將這一行代碼註釋掉,在進行條件查詢時,會報錯。在組織管理頁面的海關代碼中輸入“2011”,然後點擊“查詢”按鈕。如下圖。
5.Visual Studio 2022會彈出一個用記未處理的異常,錯誤信息,如下圖。
6.在Visual Studio 2022的解決方案資源管理器中,將剛纔註釋掉的那一條代碼“input.SkipCount=0”,還原。按F5運行應用程式。
7.在瀏覽器中的登錄頁面中輸入管理員用戶名和密碼進行登錄。
8.在主界面的菜單中,選擇“Business->組織管理”菜單項,瀏覽器中呈現一個組織信息列表與四個按鈕。組織信息能正常顯示。如下圖。
9. 在“組織管理”列表頁面的海關代碼輸入框中輸入“2011”,然後點擊“查詢”按鈕。如下圖。
10.這一次程式運行正常,查詢出了結果,結果如下圖。
11.在“組織管理”列表頁面中使用滑鼠點擊“添加”按鈕,彈出“添加組織信息”界面。如下圖。
12.在“添加組織信息”中填寫完信息,然後點擊“保存”按鈕,將新添加的組織信息保存到資料庫。如下圖。