1.在WeifuwuDemo.Order.Domain中新建Orders项目文件夹并创建聚合根对象:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Volo.Abp.Domain.Entities.Auditing;
namespace WeifuwuDemo.Order.Orders
{
/// <summary>
/// 订单模型
/// </summary>
public class OrderInfo:FullAuditedAggregateRoot<Guid>
{
// public Guid Id { set; get; } // 商品主键
public string OrderType { set; get; } // 订单类型
// public OrdstringerFlag { set; get; } // 订单标志
public Guid UserId { set; get; } // 用户Id
public string OrderSn { set; get; }// 订单号
public string OrderTotalPrice { set; get; } // 订单总价
public DateTime Createtime { set; get; } // 创建时间
public DateTime Updatetime { set; get; } // 更新时间
public DateTime Paytime { set; get; }// 支付时间
public DateTime Sendtime { set; get; }// 发货时间
public DateTime Successtime { set; get; }// 订单完成时间
public int OrderStatus { set; get; } // 订单状态
public string OrderName { set; get; } // 订单名称
public string OrderTel { set; get; } // 订单电话
public string OrderAddress { set; get; } // 订单地址
public string OrderRemark { set; get; }// 订单备注
public virtual ICollection<OrderInfoItem> OrderItems { get; set; }
public OrderInfo()
{
OrderItems = new Collection<OrderInfoItem>();
}
public OrderInfo(Guid id) : base(id)
{
OrderItems = new Collection<OrderInfoItem>();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Domain.Entities.Auditing;
namespace WeifuwuDemo.Order.Orders
{
public class OrderInfoItem:FullAuditedEntity<Guid>
{
public Guid OrderId { set; get; } // 订单编号
public string OrderSn { set; get; } // 订单号
public Guid ProductId { set; get; } // 商品编号
public string OrderUrl { set; get; } // 商品主图
public string OrderName { set; get; }// 商品名称
public decimal ItemPrice { set; get; } // 订单项单价
public int ItemCount { set; get; } // 订单项数量
public decimal ItemTotalPrice { set; get; } // 订单项总价
public OrderInfoItem()
{
}
public OrderInfoItem(Guid id) : base(id)
{
}
}
}
2.在WeifuwuDemo.Order.EntityFrameworkCore中的OrderDbContext文件中添加:
public DbSet<OrderInfo> OrderInfo { get; set; }
在OrderDbContextModelCreatingExtensions中添加:
// 3、订单领域创建
builder.Entity<OrderInfo>(b =>
{
b.ConfigureByConvention();
b.HasMany(u => u.OrderItems).WithOne().HasForeignKey(ur => ur.ProductId).IsRequired();
});
4.在 WeifuwuDemo.Order.HttpApi.Host的文件夹cmd命令中执行迁移命令:
dotnet ef migrations add ordertable
dotnet ef database update
完成数据库迁移
5.在WeifuwuDemo.Order.Domain下Orders文件夹下创建仓储接口:
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Domain.Repositories;
namespace WeifuwuDemo.Order.Orders
{
public interface IOrderInfoAbpRepository:IRepository<OrderInfo,Guid>
{
}
}
6.在WeifuwuDemo.Order.EntityFrameworkCore项目下新建Orders文件夹,实现仓储接口:
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using WeifuwuDemo.Order.EntityFrameworkCore;
namespace WeifuwuDemo.Order.Orders
{
public class OrderInfoAbpRepository:EfCoreRepository<OrderDbContext,OrderInfo,Guid>,IOrderInfoAbpRepository
{
public OrderInfoAbpRepository(IDbContextProvider<OrderDbContext> dbContextProvider):base(dbContextProvider)
{
}
public override async Task<OrderInfo> GetAsync(Guid id, bool includeDetails = true, CancellationToken cancellationToken = default)
{
DbSet<OrderInfo> Orders = await GetDbSetAsync();
return Orders.Include(p => p.OrderItems).Where(p => p.Id == id).FirstOrDefault();
}
}
}
7.在WeifuwuDemo.Order.Application.Contracts项目中新建Orders文件夹,创建服务接口及dto:
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace WeifuwuDemo.Order.Orders
{
public interface IOrderInfoAppService:ICrudAppService<OrderInfoDto,Guid,PagedAndSortedResultRequestDto,CreateOrderInfoDto,UpdateOrderInfoDto>
{
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace WeifuwuDemo.Order.Orders
{
public class CreateOrderInfoDto
{
public decimal OrderTotalPrice { set; get; } // 订单价格
public int ProductCount { set; get; }// 商品数量
public Guid UserId { set; get; }
public CreateOrderInfoItemDto[] OrderItems { set; get; } // 订单项集合
}
public class CreateOrderInfoItemDto
{
/*public CreateOrderItemDto()
{
Id = Guid.NewGuid();
}
public Guid Id { set; get; } // Guid*/
public Guid ProductId { set; get; } // 商品编号
public string ProductName { set; get; } // 商品名称
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace WeifuwuDemo.Order.Orders
{
public class DeleteOrderInfoDto
{
public string OrderUrl { set; get; } // 商品主图
public string OrderTitle { set; get; } //商品标题
public string OrderDescription { set; get; } // 图文描述
public decimal OrderVirtualprice { set; get; } //商品虚拟价格
public decimal OrderPrice { set; get; } //价格
}
public class DeleteOrderInfoImageDto
{
public Guid OrderImageId { set; get; } // 商品图片
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace WeifuwuDemo.Order.Orders
{
public class OrderInfoAttrQueryDto
{
public string OrderName { set; get; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Application.Dtos;
namespace WeifuwuDemo.Order.Orders
{
/// <summary>
/// 订单Dto
/// </summary>
public class OrderInfoDto:EntityDto<Guid>
{
public string OrderType { set; get; } // 订单类型
public Guid UserId { set; get; } // 用户Id
public string OrderSn { set; get; }// 订单号
public string OrderTotalPrice { set; get; } // 订单总价
public DateTime Createtime { set; get; } // 创建时间
public DateTime Updatetime { set; get; } // 更新时间
public DateTime Paytime { set; get; }// 支付时间
public DateTime Sendtime { set; get; }// 发货时间
public DateTime Successtime { set; get; }// 订单完成时间
public int OrderStatus { set; get; } // 订单状态
public string OrderName { set; get; } // 订单名称
public string OrderTel { set; get; } // 订单电话
public string OrderAddress { set; get; } // 订单地址
public string OrderRemark { set; get; }// 订单备注
public OrderInfoItemDto[] OrderItems { set; get; }// 订单项集合
}
public class OrderInfoItemDto
{
public Guid OrderId { set; get; } // 订单编号
public string OrderSn { set; get; } // 订单号
public Guid ProductId { set; get; } // 商品编号
public string ProductUrl { set; get; } // 商品主图
public string ProductName { set; get; }// 商品名称
public decimal ItemPrice { set; get; } // 订单项单价
public int ItemCount { set; get; } // 订单项数量
public decimal ItemTotalPrice { set; get; } // 订单项总价
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace WeifuwuDemo.Order.Orders
{
public class OrderInfoTotaLDto
{
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace WeifuwuDemo.Order.Orders
{
public class UpdateOrderInfoDto
{
public string OrderUrl { set; get; } // 商品主图
public string OrderTitle { set; get; } //商品标题
public string OrderDescription { set; get; } // 图文描述
public decimal OrderVirtualprice { set; get; } //商品虚拟价格
public decimal OrderPrice { set; get; } //价格
public int OrderStock { set; get; } //商品库存
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace WeifuwuDemo.Order.Orders
{
/// <summary>
/// 更新商品库存
/// </summary>
public class UpdateOrderInfoStockDto
{
// 商品编号
public Guid OrderId { set; get; }
// 商品数量
public int OrderCount { set; get; }
}
}
8.在WeifuwuDemo.Order.Application中创建项目文件夹Orders并实现服务接口:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace WeifuwuDemo.Order.Orders
{
/// <summary>
/// 商品服务实现
/// </summary>
[RemoteService(IsEnabled = false)]
public class OrderInfoAppService:CrudAppService<OrderInfo,OrderInfoDto,Guid,PagedAndSortedResultRequestDto,CreateOrderInfoDto,UpdateOrderInfoDto>,IOrderInfoAppService
{
private readonly IOrderInfoAbpRepository _orderInfoAbpRepository;
public OrderInfoAppService(IOrderInfoAbpRepository orderInfoAbpRepository):base(orderInfoAbpRepository)
{
_orderInfoAbpRepository = orderInfoAbpRepository;
}
}
}
并且在OrderApplicationAutoMapperProfile文件中添加映射关系:
CreateMap<OrderInfo, OrderInfoDto>();
CreateMap<PagedAndSortedResultRequestDto, OrderInfo>();
CreateMap<CreateOrderInfoDto, OrderInfo>();
CreateMap<UpdateOrderInfoDto, OrderInfo>();
CreateMap<OrderInfoAttrQueryDto, OrderInfo>();
CreateMap<OrderInfoItemDto, OrderInfoItem>();
CreateMap<OrderInfoItem, OrderInfoItemDto>();
CreateMap<CreateOrderInfoItemDto, OrderInfoItem>();
在OrderApplicationModule中将验证实体和dto改为false:
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;
using Volo.Abp.Application;
namespace WeifuwuDemo.Order;
[DependsOn(
typeof(OrderDomainModule),
typeof(OrderApplicationContractsModule),
typeof(AbpDddApplicationModule),
typeof(AbpAutoMapperModule)
)]
public class OrderApplicationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper<OrderApplicationModule>();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<OrderApplicationModule>(validate: false);
});
}
}
8.在WeifuwuDemo.Order.HttpApi中添加项目文件夹Orders并添加controller:
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
namespace WeifuwuDemo.Order.Orders
{
[ApiController]
[Route("api/[controller]/[action]")]
public class OrderInfoController:OrderController,IOrderInfoAppService
{
private readonly IOrderInfoAppService _orderInfoAppService;
public OrderInfoController(IOrderInfoAppService orderInfoAppService)
{
_orderInfoAppService = orderInfoAppService;
}
/// <summary>
/// 查询商品列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet]
public async Task<PagedResultDto<OrderInfoDto>> GetListAsync([FromQuery] PagedAndSortedResultRequestDto input)
{
return await _orderInfoAppService.GetListAsync(input);
}
/// <summary>
/// 查询单个商品
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public async Task<OrderInfoDto> GetAsync(Guid id)
{
var Order = await _orderInfoAppService.GetAsync(id);
return Order;
}
/// <summary>
/// 更新商品
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPut("{id}")]
public async Task<OrderInfoDto> UpdateAsync(Guid id, UpdateOrderInfoDto input)
{
return await _orderInfoAppService.UpdateAsync(id, input);
}
/// <summary>
/// 创建商品
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<OrderInfoDto> CreateAsync(CreateOrderInfoDto input)
{
return await _orderInfoAppService.CreateAsync(input);
}
/// <summary>
/// 删除商品
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id}")]
public async Task DeleteAsync(Guid id)
{
await _orderInfoAppService.DeleteAsync(id);
}
}
}