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實現倉儲管理系統——展現層實現增刪改查之控制器(六)
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實現倉儲管理系統——使用 WEBAPI實現CURD (十一)),在這一篇文章中我們建立服務介面與服務實現類,並建立控制器類。
二、定義應用服務介面需要用到的分頁類
為了在進行查詢時使用, PagedSupplierResultRequestDto被用來將模組資料傳遞到基礎設施層.
1. 在Visual Studio 2017的“解決方案資源管理器”中,右鍵單擊“ABP.TPLMS.Application”專案,在彈出選單中選擇“新增” > “新建資料夾”,並重新命名為“Suppliers”
2. 使用滑鼠右鍵單擊我們剛才建立的“Suppliers”資料夾,在彈出選單中選擇“新增” > “新建資料夾”,並重新命名為“Dto”。
3.右鍵單擊“Dto”資料夾,然後選擇“新增” > “類”。 將類命名為 PagedSupplierResultRequestDto,然後選擇“新增”。程式碼如下。
using Abp.Application.Services.Dto; using System; using System.Collections.Generic; using System.Text; namespace ABP.TPLMS.Supplier.Dto { public class PagedSupplierResultRequestDto : PagedResultRequestDto { public string Keyword { get; set; } } }
4.右鍵單擊“Dto”資料夾,然後選擇“新增” > “類”。 將類命名為 SupplierDto,然後選擇“新增”。程式碼如下。
using Abp.Application.Services.Dto; using Abp.AutoMapper; using ABP.TPLMS.Entitys; using System; using System.Collections.Generic; using System.Text; namespace ABP.TPLMS.Suppliers.Dto { [AutoMapFrom(typeof(Supplier))] public class SupplierDto : EntityDto<int> { public string Address { get; set; } public string Name { get; set; } public string Email { get; set; } public string Code { get; set; } public int Sex { get; set; } public string LinkName { get; set; } public int Status { get; set; } public string Tel { get; set; } public string Mobile { get; set; } public DateTime CreationTime { get; set; } } }
5.右鍵單擊“Dto”資料夾,然後選擇“新增” > “類”。 將類命名為 CreateUpdateSupplierDto,然後選擇“新增”。程式碼如下。
using Abp.Application.Services.Dto; using Abp.AutoMapper; using ABP.TPLMS.Entitys; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text; namespace ABP.TPLMS.Suppliers.Dto { [AutoMapTo(typeof(Supplier))] public class CreateUpdateSupplierDto : EntityDto<int> { public const int MaxLength = 255; [StringLength(MaxLength)] public string Address { get; set; } [Required] [StringLength(MaxLength)] public string Name { get; set; } [Required] [StringLength(MaxLength)] public string Email { get; set; } [Required] [StringLength(50)] public string Code { get; set; } public int Sex { get; set; } [StringLength(MaxLength)] public string LinkName { get; set; } public int Status { get; set; } [Required] [StringLength(MaxLength)] public string Tel { get; set; } [StringLength(MaxLength)] public string Mobile { get; set; } } }
三、定義ISupplierAppService介面
6. 在Visual Studio 2017的“解決方案資源管理器”中,滑鼠右鍵單擊“Suppliers”資料夾,然後選擇“新增” > “新建項”,在彈出對話方塊中選擇“介面”。為應用服務定義一個名為 ISupplierAppService
的介面。程式碼如下。
using Abp.Application.Services; using ABP.TPLMS.Suppliers.Dto; using System; using System.Collections.Generic; using System.Text; namespace ABP.TPLMS.Suppliers { public interface ISupplierAppService : IAsyncCrudAppService<//定義了CRUD方法 SupplierDto, //用來展示供應商 int, //Supplier實體的主鍵 PagedSupplierResultRequestDto, //獲取供應商的時候用於分頁 CreateUpdateSupplierDto, //用於建立供應商 CreateUpdateSupplierDto> //用於更新供應商 { } }
四、實現ISupplierAppService
7.在Visual Studio 2017的“解決方案資源管理器”中,右鍵單擊“Suppliers”資料夾,然後選擇“新增” > “新建項”,在彈出對話方塊中選擇“類”。為應用服務定義一個名為 SupplierAppService
的服務類。程式碼如下。
using Abp.Application.Services; using Abp.Domain.Repositories; using ABP.TPLMS.Entitys; using ABP.TPLMS.Suppliers.Dto; using System; using System.Collections.Generic; using System.Text; namespace ABP.TPLMS.Suppliers { public class SupplierAppService :AsyncCrudAppService<Supplier, SupplierDto, int, PagedSupplierResultRequestDto, CreateUpdateSupplierDto, CreateUpdateSupplierDto>,ISupplierAppService { public SupplierAppService(IRepository<Supplier, int> repository) : base(repository) { } public override Task<SupplierDto> Create(CreateUpdateSupplierDto input) { var sin = input; return base.Create(input); } } }
五 建立SupplierController繼承自TPLMSControllerBase
1. 在Visual Studio 2017的“解決方案資源管理器”中,右鍵單擊在領域層“ABP.TPLMS.Web.Mvc”專案中的Controller目錄。 選擇“新增” > “新建項…”。如下圖。
2. 在彈出對話方塊“新增新項-ABP.TPLMS.Web.Mvc”中選擇“控制器類”,然後在名稱輸入框中輸入“SupplierController”,然後點選“新增”按鈕。如下圖。
3.在SupplierController.cs檔案中輸入如下程式碼,通過建構函式注入對應用服務的依賴。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Abp.Application.Services.Dto; using Abp.AspNetCore.Mvc.Authorization; using Abp.Runtime.Validation; using ABP.TPLMS.Controllers; using ABP.TPLMS.Suppliers; using ABP.TPLMS.Suppliers.Dto; using ABP.TPLMS.Web.Models.Supplier; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace ABP.TPLMS.Web.Controllers { [AbpMvcAuthorize] public class SupplierController : TPLMSControllerBase { const int MaxNum= 10; // GET: /<controller>/ public async Task<IActionResult> Index() { var module = (await _supplierAppService.GetAll(new PagedSupplierResultRequestDto { MaxResultCount = MaxNum })).Items;
// Paging not implemented yet SupplierDto cuModule = module.First(); var model = new SupplierListViewModel { Supplier = cuModule, Suppliers=module }; return View(model); } private readonly ISupplierAppService _supplierAppService; public SupplierController(ISupplierAppService supplierAppService) { _supplierAppService = supplierAppService; } public async Task<ActionResult> EditSupplierModal(int moduleId) { var module = await _supplierAppService.Get(new EntityDto<int>(moduleId)); CreateUpdateSupplierDto cuSupplier = AutoMapper.Mapper.Map<CreateUpdateSupplierDto>(module); var model = new EditSupplierModalViewModel { Supplier = cuSupplier }; return View("_EditSupplierModal", model); } } }