当前位置: 首页 > news >正文

WPF实战项目十三(API篇):备忘录功能api接口、优化待办事项api接口

1、新建MenoDto.cs

/// <summary>/// 备忘录传输实体/// </summary>public class MenoDto : BaseDto{private string title;/// <summary>/// 标题/// </summary>public string Title{get { return title; }set { title = value; }}private string content;/// <summary>/// 内容/// </summary>public string Content{get { return content; }set { content = value; }}}

2、添加映射关系

CreateMap<Memo, MemoDto>().ReverseMap();

3、新建服务接口IMemoService

    public interface IMemoService : IBaseService<MemoDto>{}

4、新建服务MemoService

public class MemoService : IMemoService{private readonly IUnitOfWork _unitOfWork;private readonly IMapper mapper;public MemoService(IMapper mapper, IUnitOfWork unitOfWork){this.mapper = mapper;_unitOfWork = unitOfWork;}/// <summary>/// 新增备忘录/// </summary>/// <param name="model"></param>/// <returns></returns>public async Task<ApiResponse> AddEntityAsync(MemoDto model){try{var memo = mapper.Map<Memo>(model);await _unitOfWork.GetRepository<Memo>().InsertAsync(memo);if(await _unitOfWork.SaveChangesAsync() > 0){return new ApiResponse(true, memo);}else{return new ApiResponse(false, "添加数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 删除备忘录/// </summary>/// <param name="id"></param>/// <returns></returns>public async Task<ApiResponse> DeleteEntityAsync(int id){try{var repository = _unitOfWork.GetRepository<Memo>();var memo = await repository.GetFirstOrDefaultAsync(predicate: t => t.Id.Equals(id));if(memo != null){repository.Delete(memo);}if(await _unitOfWork.SaveChangesAsync() > 0){return new ApiResponse(true, "删除数据成功!");}else{return new ApiResponse(false, "删除数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 查询所有备忘录/// </summary>/// <returns></returns>public async Task<ApiResponse> GetAllAsync(){try{var repository = _unitOfWork.GetRepository<Memo>();var memo = await repository.GetAllAsync();if(memo != null){return new ApiResponse(true, memo);}else{return new ApiResponse(false, "查询数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 根据Id查询备忘录/// </summary>/// <param name="id"></param>/// <returns></returns>public async Task<ApiResponse> GetSingleAsync(int id){try{var repository = _unitOfWork.GetRepository<Memo>();var memo = await repository.GetFirstOrDefaultAsync(predicate: t => t.Id.Equals(id));if(memo != null){return new ApiResponse(true, memo);}else{return new ApiResponse(false, $"查询Id={id}的数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 更新备忘录/// </summary>/// <param name="model"></param>/// <returns></returns>public async Task<ApiResponse> UpdateEntityAsync(MemoDto model){try{var dbmemo = mapper.Map<Memo>(model);var repository = _unitOfWork.GetRepository<Memo>();var memo = await repository.GetFirstOrDefaultAsync(predicate: t => t.Id.Equals(dbmemo.Id));if( memo != null){memo.Title = dbmemo.Title;memo.Content = dbmemo.Content;memo.UpdateDate = DateTime.Now;repository.Update(memo);if(await _unitOfWork.SaveChangesAsync() > 0){return new ApiResponse(true, "更新数据成功!");}else{return new ApiResponse(false, "更新数据失败!");}}else{return new ApiResponse(false, $"未查询到Id={dbmemo.Id}的数据!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}}

5、新增MemoController控制器

    public class MemoController : BaseApiController{private readonly IUnitOfWork _unitOfWork;private readonly IMemoService memoService;public MemoController(IMemoService memoService, IUnitOfWork unitOfWork){this.memoService = memoService;_unitOfWork = unitOfWork;}[HttpGet]public async Task<ApiResponse> GetMemoById(int Id){return await memoService.GetSingleAsync(Id);}[HttpPost]public async Task<ApiResponse> AddMemo([FromBody] MemoDto memoDto){return await memoService.AddEntityAsync(memoDto);}[HttpDelete]public async Task<ApiResponse> DeleteMemo(int Id){return await memoService.DeleteEntityAsync(Id);}[HttpGet]public async Task<ApiResponse> GetAllMemo(){return await memoService.GetAllAsync();}[HttpPost]public async Task<ApiResponse> UpdateMemo(MemoDto memoDto){return await memoService.UpdateEntityAsync(memoDto);}}

6、在program.cs添加服务

builder.Services.AddTransient<IMemoService, MemoService>();

7、F5运行项目

 

 

 8、针对查询数据可以做个优化,增加查询的页数、内容、数据量等,新建查询参数类

 

    public class QueryParameter{public int PageIndex { get; set; }public int PageSize { get; set; }public string Search { get; set; }}

 9、在IToDoService.cs和IMemoService.cs中添加分页查询的接口 

    public interface IToDoService : IBaseService<TodoDto>{Task<ApiResponse> GetPageListAllAsync(QueryParameter parameter);}public interface IMemoService : IBaseService<MemoDto>{Task<ApiResponse> GetPageListAllAsync(QueryParameter parameter);}

 10、在ToDoService.cs中实现接口和MemoService.cs中实现接口

/// <summary>/// 分页查询所有数据/// </summary>/// <param name="parameter"></param>/// <returns></returns>/// <exception cref="NotImplementedException"></exception>public async Task<ApiResponse> GetPageListAllAsync(QueryParameter parameter){try{var repository = unitOfWork.GetRepository<ToDo>();var todo = await repository.GetPagedListAsync(predicate: x => string.IsNullOrWhiteSpace(parameter.Search) ? true : x.Title.Contains(parameter.Search),pageIndex: parameter.PageIndex,pageSize: parameter.PageSize,orderBy: y => y.OrderByDescending(t => t.CreateDate));if (todo != null){return new ApiResponse(true, todo);}else{return new ApiResponse(false, "查询数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}
/// <summary>/// 分页查询所有备忘录/// </summary>/// <param name="parameter"></param>/// <returns></returns>/// <exception cref="NotImplementedException"></exception>public async Task<ApiResponse> GetPageListAllAsync(QueryParameter parameter){try{var repository = _unitOfWork.GetRepository<Memo>();var memo = await repository.GetPagedListAsync(predicate: x => string.IsNullOrWhiteSpace(parameter.Search) ? true : x.Title.Contains(parameter.Search),pageIndex: parameter.PageIndex,pageSize: parameter.PageSize,orderBy: y => y.OrderByDescending(t => t.CreateDate));if (memo != null){return new ApiResponse(true, memo);}else{return new ApiResponse(false, "查询数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}

 11、在ToDoController和MemoController中添加代码

        [HttpGet]public async Task<ApiResponse> GetAllPageListToDo([FromQuery] QueryParameter parameter){return await toDoService.GetPageListAllAsync(parameter);}
[HttpGet]public async Task<ApiResponse> GetAllPageListMemo([FromQuery] QueryParameter parameter){return await memoService.GetPageListAllAsync(parameter);}

12、F5运行项目

 

 

http://www.lryc.cn/news/144698.html

相关文章:

  • clickhouse(十四、分布式DDL阻塞及同步阻塞问题)
  • 怎么入门网络安全(黑客)?
  • c++ boost::json
  • 《Flink学习笔记》——第九章 多流转换
  • openmmlab出现KeyError: ‘xxx is not in the model registry....‘
  • 错误代码0x80131500要怎么解决?快速修复方法
  • PMO(Project Management Office)
  • STM32 CUBEMX CAN通信数据发送失败原因分析
  • 长安链并行调度机制(2):DAG构建和从节点执行流程
  • leetcode做题笔记110. 平衡二叉树
  • iOS开发Swift-字符串与字符
  • Linux Kernel:syscall之fork与exec
  • CentOS 修改MySQL密码
  • Android通过setaffinity实现绑核
  • stm32的位带操作
  • Java 电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  • https协议经过SpringMVC重定向之后变成http协议
  • iOS 分别对一张图的局部进行磨砂,拼接起来不能贴合
  • 与面试官互动:建立积极的技术讨论氛围
  • 计算机竞赛 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习
  • 完美解决Ubuntu网络故障,连接异常,IP地址一直显示127.0.0.1
  • 手机无人直播软件有哪些,又有哪些优势?
  • 解密算法与数据结构面试:程序员如何应对挑战
  • 分布式事务7种(秒懂-2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通)
  • 基于Java+SpringBoot+Vue前后端分离美食推荐商城设计和实现
  • 最新ChatGPT程序源码+AI系统+详细图文搭建教程/支持GPT4/AI绘画/H5端/完整Prompt知识库
  • 本地启动若依微服务版本
  • HTML的span标签的作用是什么?答:对文本内容进行精细的样式化和标记。
  • 基于微服务、Java、Springcloud、Vue、MySQL开发的智慧工地管理系统源码
  • Redis内存策略