using FoodLabeling.Application.Contracts.Dtos.Common; using FoodLabeling.Application.Contracts.Dtos.TeamMember; using Microsoft.AspNetCore.Mvc; namespace FoodLabeling.Application.Contracts.IServices; public interface ITeamMemberAppService { /// /// 成员分页列表。数据范围:系统管理员(admin / 超管)可查全部成员;其它账号仅返回其 /// userlocation 绑定门店所属公司下的成员(与 partner 列表 Token 范围一致),再与 Query 筛选求交。 /// Task> GetListAsync(TeamMemberGetListInputVo input); Task GetAsync(Guid id); /// /// 新增成员(POST /api/app/team-member)。locationIds / regionIds / groupIds / locations 可传 ALL 哨兵。 /// Task CreateAsync(TeamMemberCreateInputVo input); /// /// 更新成员(PUT /api/app/team-member/{id})。范围传参规则与 相同。 /// Task UpdateAsync(Guid id, TeamMemberUpdateInputVo input); Task DeleteAsync(Guid id); /// /// 下载 Team Member 批量导入模板(服务器 batchImportOfFiles 目录下 xlsx) /// Task DownloadTeamMemberImportTemplateAsync(); /// /// 按列表筛选条件全量导出成员为 PDF(与列表相同过滤;不分页、不限条数) /// Task ExportTeamMembersPdfAsync(TeamMemberGetListInputVo input); /// /// 批量导入成员(Excel,multipart/form-data 字段 file) /// Task ImportTeamMembersBatchAsync(TeamMemberBatchImportInputVo input); /// /// 批量编辑成员(JSON 一次提交多行) /// Task UpdateTeamMembersBulkAsync(TeamMemberBulkUpdateInputVo input); /// /// JSON 在线批量导入成员(逐行调用 ,部分成功) /// /// /// 请求体为 JSON,每行字段与单条新增 一致; /// password 为空时使用配置 TeamMemberImportDefaultPassword。 /// /// 示例请求: /// ```json /// { /// "items": [ /// { /// "fullName": "John Doe", /// "userName": "john@example.com", /// "email": "john@example.com", /// "roleId": "ROLE_GUID", /// "locationIds": ["LOCATION_GUID"], /// "state": true /// } /// ] /// } /// ``` /// /// 参数说明: /// - items: 待导入行数组;index 从 0 起;单次最多 MaxImportRows 条(默认 5000) /// /// 批量导入请求体 /// 成功数、失败数及失败明细(indexuserNamemessage /// 全部或部分行处理完成,见返回体中的计数与 errors /// 整单校验失败(如 items 为空、超过单次条数上限) /// 服务器错误 Task BatchImportOnlineAsync(TeamMemberBatchImportOnlineInputVo input); }