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 = ;
[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()]
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= ;
// 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);
}
}
}

abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十二)的更多相关文章

  1. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  2. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十五)

    core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+e ...

  3. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  4. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之六(四十二)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  5. abp(net core)+easyui+efcore实现仓储管理系统——出库管理之三(五十二)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...

  6. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之四(四十)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

随机推荐

  1. 面试中的作用域题和THIS 指向的问题

    作用域的面试题 1. fn() function fn () { console.log(12) } var as = function () { console.log(45) } 2. var a ...

  2. 通用shell函数库

    1.输出字体颜色库 #!/bin/bash export black='\E[0m\c' export boldred='\E[1;31m\c' export boldgreen='\E[1;32m\ ...

  3. ASP.Net Core2.1 秒杀项目一步一步实现CI/CD系列一

    前言:有一段时间没写博客了,那是因为博主菜,需要学习和准备,这不带来了本系列的文章.在这里我把学习的心得分享出来,有些点理解的也不是太到位,希望大佬们能多多给点建议和指导.下半年就把这个系列的文章写完 ...

  4. MySQL metalock的一些技巧(写大于读的案例,以及获得锁的顺序)

    前言:元数据锁不是锁定数据,而是锁定描述数据的元数据信息.就像很多装修工人(工作线程)在室内(对象上)装修(操作),不能有其他工人(线程)把屋子拆了(表删除了). MySQL 为了数据一致性使用元数据 ...

  5. python generator与coroutine

    python  generator与coroutine 协程 简单介绍 协程,又称微线程,纤程,英文名Coroutine.协程是一种用户态的轻量级线程,又称微线程.协程拥有自己的寄存器上下文和栈,调度 ...

  6. c++ 求int数组的长度

    c++ 求int数组的长度 网上有一些方法是 sizeof(arr) / sizeof(arr[0]); 这种方法放在函数中,是不对的 我自己的方法是 #include <bits/stdc++ ...

  7. kuangbin专题 专题二 搜索进阶 哈密顿绕行世界问题 HDU - 2181

    题目链接:https://vjudge.net/problem/HDU-2181 题意:一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发 ...

  8. 嵊州D4T2 硬币 有人来教教我吗!

    嵊州D4T2 硬币 [问题描述] 卡拉赞的展览馆被入侵了. 展览馆是一条长长的通道,依次摆放着 n 个展柜(从西到东编号依次 为 1—n). 入侵者玛克扎尔在第 n 个展柜东边召唤了一个传送门,一共施 ...

  9. 9.5 考试 第三题 奇袭题解(codeforce 526f)

    问题 C: 奇袭 时间限制: 1 Sec  内存限制: 256 MB 题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上 要迎来最终的压力测试——魔界入侵. 唯 ...

  10. 开设“C程序答疑解惑”的初衷

    博主经常在QQ群里.论坛里看到好多C语言初学者,甚至是有一定编程经验的人,咨询在编程中遇到的一些稀奇古怪的问题.博主对这些问题做过分析汇总,有些问题确实隐蔽的非常深,像break关键字用的不对啦,局部 ...