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; /// /// 门店管理接口(美国版) /// public interface ILocationAppService : IApplicationService { /// /// 门店分页列表;管理员返回全部门店,非管理员仅返回其绑定门店所属 Region(Partner + GroupName)下的门店。 /// /// 查询条件 Task> GetListAsync(LocationGetListInputVo input); /// /// 新增门店 /// /// 门店信息 Task CreateAsync(LocationCreateInputVo input); /// /// 编辑门店 /// /// 门店Id /// 门店信息 Task UpdateAsync(Guid id, LocationUpdateInputVo input); /// /// 删除门店(逻辑删除) /// /// 门店Id Task DeleteAsync(Guid id); /// /// 下载 Location Manager 批量导入模板(读取服务器 batchImportOfFiles 目录下 xlsx) /// Task DownloadLocationImportTemplateAsync(); /// /// 按列表筛选条件全量导出门店为 Excel(与列表相同过滤与排序,不分页、不限条数) /// Task ExportLocationsExcelAsync(LocationGetListInputVo input); /// /// 批量导入门店(Excel,multipart/form-data 字段 file) /// Task ImportLocationsBatchAsync(LocationBatchImportInputVo input); /// /// 批量编辑门店(网格保存全部,JSON 一次提交多行) /// /// /// 每行通过 id 定位门店,字段与单条 PUT /location/{id} 一致;id 的项忽略。 /// /// 示例请求: /// ```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: 编辑行数组;单行失败不影响其它行提交结果汇总 /// /// 批量编辑请求体 /// 成功数、失败数及失败明细 /// 全部或部分行处理完成,见返回体中的计数与 errors /// 整单校验失败(如超过单次条数上限、items 为空) /// 服务器错误 Task UpdateLocationsBulkAsync(LocationBulkUpdateInputVo input); }