using FoodLabeling.Application.Contracts.Dtos.UsAppAuth;
using Volo.Abp.Application.Services;
using Yi.Framework.Rbac.Application.Contracts.Dtos.Account;
namespace FoodLabeling.Application.Contracts.IServices;
///
/// 美国版移动端认证(登录返回绑定门店)
///
public interface IUsAppAuthAppService : IApplicationService
{
///
/// App 登录:使用邮箱 + 密码校验并签发 Token,同时返回 userlocation 绑定的门店
///
Task LoginAsync(UsAppLoginInputVo input);
///
/// 获取当前登录账号已绑定的门店(用于切换门店等场景)
///
Task> GetMyLocationsAsync();
///
/// 获取当前登录用户资料(My Profile:姓名、邮箱、电话、员工号、角色)
///
/// 资料 DTO
/// 成功
/// 未登录或用户不存在
/// 服务器错误
Task GetMyProfileAsync();
///
/// 当前登录用户修改密码(校验原密码与复杂度规则)
///
/// 当前密码、新密码、确认密码
///
/// 新密码需满足:至少 8 位;含大写与小写字母;至少 1 位数字;至少 1 个非字母数字特殊字符。
///
/// 成功
/// 参数或校验失败
/// 服务器错误
Task ChangePasswordAsync(UsAppChangePasswordInputVo input);
///
/// 按门店 Id 查询 Location 详情(须为当前账号 userlocation 绑定门店)
///
/// 门店 Guid 字符串
/// 店名、地址、电话、经营时间(operatingHours)、店长信息
/// 成功
/// 参数非法、未绑定或无权限
/// 服务器错误
Task GetLocationDetailAsync(string locationId);
///
/// App forgot password: send email verification code (same user store and rules as platform).
///
///
/// When RbacOptions.EnableCaptcha is true, pass Uuid and Code from platform captcha API.
///
/// Email and optional image captcha.
/// Accepted.
/// Validation or rate limit.
/// Server error
Task PostSendForgotPasswordCodeByEmailAsync(EmailCaptchaImageDto input);
///
/// App forgot password: reset password with email OTP.
///
/// Email, OTP, new password.
/// Account user name.
/// Password updated.
/// Invalid code or password policy.
/// Server error
Task PostResetPasswordByEmailAsync(RetrievePasswordByEmailDto input);
}