(九)待办事项接口

待办接口

1. service层

通常我们把具体实现放在service层
image
apiresponse是一个通用返回类型

 public class ApiResponse
 {//通用返回类型
     public string Message { get; set; }
     public bool Status { get; set; }
     public object Result { get; set; }
     public ApiResponse(bool status, object result)
     {//成功
         this.Status = status;
         this.Result = result;
     }
     public ApiResponse(string message, bool status = false)
     {//失败
         this.Status = status;
         this.Message = message;
     }
 }

通用接口

 public interface IBaseService<T>
 {
     //通用接口
     Task<ApiResponse> GetAll();
     Task<ApiResponse> GetString(int id);
     Task<ApiResponse> Add(T model);
     Task<ApiResponse> Update(T model);
     Task<ApiResponse> Delete(int id);
 }

待办service接口继承通用接口

 public interface IToDoService : IBaseService<ToDo>
 {
 }

待办的CRUD

 //待办的实现CRUD
 public class ToDoService : IToDoService
 {
     private readonly IUnitOfWork work;

     public ToDoService(IUnitOfWork work)//通过构造函数引入工作单元
     {
         this.work = work;
     }
     public async Task<ApiResponse> Add(ToDo model)
     {
         try
         {
             await work.GetRepository<ToDo>().InsertAsync(model);
             if (await work.SaveChangesAsync() > 0)
             {
                 return new ApiResponse(true, model);
             }
             return new ApiResponse(false, "添加数据失败");
         }
         catch (Exception ex)
         {
             return new ApiResponse(ex.Message);
         }

     }

     public async Task<ApiResponse> Delete(int id)
     {
         try
         {
             var repository = work.GetRepository<ToDo>();
             var todo = await repository.GetFirstOrDefaultAsync(predicate: x => x.Id.Equals(id));
             repository.Delete(todo);
             if (await work.SaveChangesAsync() > 0)
             {
                 return new ApiResponse(true, "");
             }
             return new ApiResponse("删除数据失败");
         }
         catch (Exception ex)
         {
             return new ApiResponse(ex.Message);
         }
     }

     public async Task<ApiResponse> GetAll()
     {
         try
         {
             var repository = work.GetRepository<ToDo>();
             var todos = await repository.GetAllAsync();
             return new ApiResponse(true, todos);
         }
         catch (Exception ex)
         {
             return new ApiResponse(ex.Message);
         }
     }

     public async Task<ApiResponse> GetString(int id)
     {
         try
         {
             var repository = work.GetRepository<ToDo>();
             var todo = await repository.GetFirstOrDefaultAsync(predicate: x => x.Id.Equals(id));
             return new ApiResponse(true, todo);
         }
         catch (Exception ex)
         {
             return new ApiResponse(ex.Message);
         }
     }

     public async Task<ApiResponse> Update(ToDo model)
     {
         try
         {
             var repository = work.GetRepository<ToDo>();
             var todo = await repository.GetFirstOrDefaultAsync(predicate: x => x.Id.Equals(model.Id));

             todo.Title = model.Title;
             todo.Content = model.Content;
             todo.Status = model.Status;
             todo.UpdateDate = DateTime.Now;

             repository.Update(todo);
             if (await work.SaveChangesAsync() > 0)
             {
                 return new ApiResponse(true, todo);
             }
             return new ApiResponse("更新数据异常");
         }
         catch (Exception ex)
         {
             return new ApiResponse(ex.Message);
         }
     }
 }

在program中注入service
image

2.controller层

 //待办控制器
 [ApiController]
 [Route("api/[controller]/[action]")]
 public class ToDoController : ControllerBase
 {
     private readonly IToDoService service;

     public ToDoController(IToDoService service)
     {
         this.service = service;
     }
     [HttpGet]
     public async Task<ApiResponse> Get(int id)
     {
         return await service.GetString(id);
     }
     [HttpGet]
     public async Task<ApiResponse> GetAll(int id) => await service.GetAll();

     [HttpPost]
     public async Task<ApiResponse> Add([FromBody] ToDo model) => await service.Add(model);
     [HttpPost]
     public async Task<ApiResponse> Update([FromBody] ToDo model) => await service.Update(model);
     [HttpDelete]
     public async Task<ApiResponse> Delete(int id) => await service.Delete(id);
 }

启动测试一下

posted @ 2023-10-07 13:27  huihui不会写代码  阅读(121)  评论(0)    收藏  举报