using System.ComponentModel.DataAnnotations; namespace SimpleAdmin.Api.WeChat.Dtos; public class WxLoginQrcodeOutput { /// PC 端轮询用的扫码 key(与二维码 scene 一致)。 public string LoginKey { get; set; } = string.Empty; public string QrCodeUrl { get; set; } = string.Empty; public int ExpiresIn { get; set; } = 600; } /// H5 网页授权所需公开配置(不含 Secret/Token)。 public class WxOAuthConfigOutput { /// 公众号 AppId(来自其他配置 wechat_mp.AppKey)。 public string AppId { get; set; } = string.Empty; /// /// OAuth 回调根地址(来自 wechat_mp.BaseUrl),如 https://ideship.com。 /// 为空时前端回退到当前页面 origin。 /// public string? OAuthRedirectBase { get; set; } } /// 引导关注公众号:优先返回可直接跳转的公众号链接。 public class WxFollowQrcodeOutput { /// 微信内 location 跳转用(公众号主页 / 名片 / 引导图文)。 public string JumpUrl { get; set; } = string.Empty; /// 兼容旧字段;与 JumpUrl 相同。 public string QrCodeUrl { get; set; } = string.Empty; /// scene_str,固定 oms_follow(仅当走扫码兜底时有意义)。 public string Scene { get; set; } = "oms_follow"; } public class WxLoginStatusOutput { public bool Ready { get; set; } public string? Account { get; set; } } public class WeChatOAuthCodeInput { [Required] public string Code { get; set; } = string.Empty; } public class WeChatOAuthUserInfoOutput { public string Openid { get; set; } = string.Empty; public string? Nickname { get; set; } public int Sex { get; set; } public string? Province { get; set; } public string? City { get; set; } public string? Country { get; set; } public string? Headimgurl { get; set; } public string? Unionid { get; set; } public bool AlreadyBound { get; set; } } public class WeChatProfileInput { [Required] public string Openid { get; set; } = string.Empty; public string? Nickname { get; set; } public string? Avatar { get; set; } public string? Unionid { get; set; } } public class WeChatCustomerRegisterInput { public string? CustomerCode { get; set; } [Required] public string CustomerName { get; set; } = string.Empty; /// 可选;下单前再补全。 [StringLength(16)] public string? Phone { get; set; } /// 可选;下单前再补全。 [EmailAddress] [StringLength(64)] public string? Email { get; set; } [Required] [MinLength(6)] public string Password { get; set; } = string.Empty; /// /// 邀请码(可选)。来自邀请链接 / 二维码 ?ref=,注册时一次性绑定引荐人。 /// public string? InviteCode { get; set; } /// /// 顾问邀请码(可选)。来自 ?advisor=,值为员工登录账号;注册时写入所属顾问 CustomerService。 /// public string? AdvisorCode { get; set; } /// /// 渠道代理编号(可选)。来自 ?agent=;有值时不走 C2C 邀请。 /// public string? AgentCode { get; set; } [Required] public WeChatProfileInput Wechat { get; set; } = new(); } public class WeChatCustomerRegisterOutput { public string CustomerCode { get; set; } = string.Empty; } public class WeChatCustomerBindInput { [Required] public string Account { get; set; } = string.Empty; [Required] public string Password { get; set; } = string.Empty; [Required] public WeChatProfileInput Wechat { get; set; } = new(); }