using FoodLabeling.Application.Contracts.Dtos.Common;
using FoodLabeling.Application.Contracts.Dtos.Group;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace FoodLabeling.Application.Contracts.IServices;
///
/// 组织(Group)管理接口(fl_group)
///
public interface IGroupAppService : IApplicationService
{
///
/// 组织分页列表(与导出使用相同筛选条件)
///
///
/// 数据范围(按登录 Token):
/// 管理员可见全部 Region;其它角色仅可见其 userlocation 绑定门店对应的组织(location.Partner + location.GroupName 与 fl_group 匹配)。
///
/// 分页与筛选;SkipCount 为页码(从 1 起)
Task> GetListAsync(GroupGetListInputVo input);
///
/// 组织详情
///
/// 主键(Guid,与 fl_group.Id 一致;约定路由 {id:guid},避免与 export-pdf 等路径冲突)
Task GetAsync(Guid id);
///
/// 新增组织
///
///
/// Company Admin(RoleCode CompanyAdmin / RoleName Company Admin)在其绑定 Company 下新建 Region 时,
/// 后端会将该 Region 下已有门店(location.Partner + location.GroupName 与新建 Region 一致)追加写入当前账号的 userlocation,
/// 以便 auth-scope、门店列表等依赖门店绑定的能力立即识别新 Region。
///
Task CreateAsync(GroupCreateInputVo input);
///
/// 编辑组织
///
Task UpdateAsync(Guid id, GroupUpdateInputVo input);
///
/// 删除组织(逻辑删除)
///
Task DeleteAsync(Guid id);
///
/// 按列表相同筛选条件全量导出组织(Region)为 PDF(不分页;与 相同筛选与 Token 数据范围;单次最多 5000 条)
///
///
/// 与 使用同一套 BuildGroupJoinedQueryAsync(含 ResolveGroupScopeAsync),导出行集与列表一致。
///
/// Keyword、PartnerId、State、Sorting;分页字段忽略
/// application/pdf
Task ExportPdfAsync(GroupGetListInputVo input);
///
/// JSON 在线批量导入 Region(逐行调用 ,部分成功)
///
///
/// 请求体为 JSON,每行字段与单条新增 一致。
///
/// 示例请求:
/// ```json
/// {
/// "items": [
/// {
/// "groupName": "NC Region",
/// "partnerId": "PARTNER_ID",
/// "state": true
/// }
/// ]
/// }
/// ```
///
/// 参数说明:
/// - items: 待导入行数组;index 从 0 起;单次最多 MaxImportRows 条(默认 5000)
///
/// 批量导入请求体
/// 成功数、失败数及失败明细(index、groupName、message)
/// 全部或部分行处理完成,见返回体中的计数与 errors
/// 整单校验失败(如 items 为空、超过单次条数上限)
/// 服务器错误
Task BatchImportOnlineAsync(GroupBatchImportOnlineInputVo input);
}