ILocationAppService.cs
3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using FoodLabeling.Application.Contracts.Dtos.Location;
using FoodLabeling.Application.Contracts.Dtos.Common;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace FoodLabeling.Application.Contracts.IServices;
/// <summary>
/// 门店管理接口(美国版)
/// </summary>
public interface ILocationAppService : IApplicationService
{
/// <summary>
/// 门店分页列表;管理员返回全部门店,非管理员仅返回其绑定门店所属 Region(Partner + GroupName)下的门店。
/// </summary>
/// <param name="input">查询条件</param>
Task<PagedResultWithPageDto<LocationGetListOutputDto>> GetListAsync(LocationGetListInputVo input);
/// <summary>
/// 新增门店
/// </summary>
/// <param name="input">门店信息</param>
Task<LocationGetListOutputDto> CreateAsync(LocationCreateInputVo input);
/// <summary>
/// 编辑门店
/// </summary>
/// <param name="id">门店Id</param>
/// <param name="input">门店信息</param>
Task<LocationGetListOutputDto> UpdateAsync(Guid id, LocationUpdateInputVo input);
/// <summary>
/// 删除门店(逻辑删除)
/// </summary>
/// <param name="id">门店Id</param>
Task DeleteAsync(Guid id);
/// <summary>
/// 下载 Location Manager 批量导入模板(读取服务器 <c>batchImportOfFiles</c> 目录下 xlsx)
/// </summary>
Task<IActionResult> DownloadLocationImportTemplateAsync();
/// <summary>
/// 按列表筛选条件全量导出门店为 Excel(与列表相同过滤与排序,不分页、不限条数)
/// </summary>
Task<IActionResult> ExportLocationsExcelAsync(LocationGetListInputVo input);
/// <summary>
/// 批量导入门店(Excel,multipart/form-data 字段 <c>file</c>)
/// </summary>
Task<LocationBatchImportResultDto> ImportLocationsBatchAsync(LocationBatchImportInputVo input);
/// <summary>
/// 批量编辑门店(网格保存全部,JSON 一次提交多行)
/// </summary>
/// <remarks>
/// 每行通过 <c>id</c> 定位门店,字段与单条 <c>PUT /location/{id}</c> 一致;<c>id</c> 为 <see cref="Guid.Empty"/> 的项忽略。
///
/// 示例请求:
/// ```json
/// {
/// "items": [
/// {
/// "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
/// "partner": "MedVantage Cafe Group",
/// "groupName": "NC Region",
/// "locationName": "UNCC store",
/// "street": "222 School House Lane",
/// "city": "Charlotte",
/// "stateCode": "NC",
/// "country": "USA",
/// "zipCode": "29889",
/// "phone": "2123456789",
/// "email": "nc@example.com",
/// "latitude": 35.3,
/// "longitude": -80.7,
/// "state": true
/// }
/// ]
/// }
/// ```
///
/// 参数说明:
/// - items: 编辑行数组;单行失败不影响其它行提交结果汇总
/// </remarks>
/// <param name="input">批量编辑请求体</param>
/// <returns>成功数、失败数及失败明细</returns>
/// <response code="200">全部或部分行处理完成,见返回体中的计数与 errors</response>
/// <response code="400">整单校验失败(如超过单次条数上限、items 为空)</response>
/// <response code="500">服务器错误</response>
Task<LocationBulkUpdateResultDto> UpdateLocationsBulkAsync(LocationBulkUpdateInputVo input);
}