- 新增30+业务枚举类型覆盖用户、宠物、商城、社区、积分等模块 - 完成实体类、DTO、服务层的字符串枚举替换为强类型枚举 - 修复用户状态枚举名称变更,将Frozen改为Disabled - 新增批量发布社区消息接口与控制器实现 - 新增操作日志、积分管理、补偿任务相关服务与DTO
350 lines
7.4 KiB
C#
350 lines
7.4 KiB
C#
using QYZH.InteractiveMagazine.Models.Dto;
|
||
using QYZH.InteractiveMagazine.Models.Enum;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace QYZH.InteractiveMagazine.Models.WeChat;
|
||
|
||
/// <summary>
|
||
/// 微信小程序初次登录输入
|
||
/// </summary>
|
||
public class WeChatLoginInput
|
||
{
|
||
/// <summary>
|
||
/// 微信登录凭证(wx.login 获取的 code)
|
||
/// </summary>
|
||
public string Code { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 手机号获取凭证(getPhoneNumber 按钮回调中的 code,可选)
|
||
/// </summary>
|
||
public string? PhoneCode { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信小程序快捷登录输入(通过 OpenId 登录)
|
||
/// </summary>
|
||
public class WeChatQuickLoginInput
|
||
{
|
||
/// <summary>
|
||
/// 微信OpenId(初次登录后客户端缓存的 OpenId)
|
||
/// </summary>
|
||
public string OpenId { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信登录输出
|
||
/// </summary>
|
||
public class WeChatLoginOutput
|
||
{
|
||
/// <summary>
|
||
/// 访问令牌
|
||
/// </summary>
|
||
public string Token { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 微信OpenId
|
||
/// </summary>
|
||
public string OpenId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 该 OpenId 下的用户列表
|
||
/// </summary>
|
||
public List<WxUserOutput> Users { get; set; } = [];
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信用户创建/更新输入
|
||
/// </summary>
|
||
public class WxUserInput
|
||
{
|
||
/// <summary>
|
||
/// 微信OpenId
|
||
/// </summary>
|
||
public string OpenId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 微信UnionId
|
||
/// </summary>
|
||
public string? UnionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 昵称
|
||
/// </summary>
|
||
public string? NickName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 头像地址
|
||
/// </summary>
|
||
public string? AvatarUrl { get; set; }
|
||
|
||
/// <summary>
|
||
/// 手机号
|
||
/// </summary>
|
||
public string? Phone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 积分余额
|
||
/// </summary>
|
||
public int Points { get; set; } = 0;
|
||
|
||
/// <summary>
|
||
/// 用户类型: Normal, VIP
|
||
/// </summary>
|
||
public string Type { get; set; } = UsersTypeEnum.Normal.ToString();
|
||
|
||
/// <summary>
|
||
/// 状态: Active, Disabled
|
||
/// </summary>
|
||
public string Status { get; set; } = UserStatusEnum.Active.ToString();
|
||
|
||
/// <summary>
|
||
/// 密码,默认手机后4位
|
||
/// </summary>
|
||
public string? Pwd { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前成长值
|
||
/// </summary>
|
||
public int GrowthPoints { get; set; } = 0;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信用户输出
|
||
/// </summary>
|
||
public class WxUserOutput
|
||
{
|
||
/// <summary>
|
||
/// 主键ID
|
||
/// </summary>
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 微信OpenId
|
||
/// </summary>
|
||
public string OpenId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 微信UnionId
|
||
/// </summary>
|
||
public string? UnionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 昵称
|
||
/// </summary>
|
||
public string? NickName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 头像地址
|
||
/// </summary>
|
||
public string? AvatarUrl { get; set; }
|
||
|
||
/// <summary>
|
||
/// 手机号
|
||
/// </summary>
|
||
public string? Phone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 积分余额
|
||
/// </summary>
|
||
public int Points { get; set; }
|
||
|
||
/// <summary>
|
||
/// 用户类型
|
||
/// </summary>
|
||
public string Type { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 状态
|
||
/// </summary>
|
||
public string Status { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 当前成长值
|
||
/// </summary>
|
||
public int GrowthPoints { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否上次在线用户
|
||
/// </summary>
|
||
public bool IsLastOnline { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人
|
||
/// </summary>
|
||
public string? CreatedBy { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间
|
||
/// </summary>
|
||
public DateTime CreatedAt { get; set; }
|
||
|
||
/// <summary>
|
||
/// 更新人
|
||
/// </summary>
|
||
public string? UpdatedBy { get; set; }
|
||
|
||
/// <summary>
|
||
/// 更新时间
|
||
/// </summary>
|
||
public DateTime? UpdatedAt { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信用户分页查询输入
|
||
/// </summary>
|
||
public class WxUserQueryInput : PageQueryModel
|
||
{
|
||
/// <summary>
|
||
/// 昵称(模糊查询)
|
||
/// </summary>
|
||
public string? NickName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 手机号(模糊查询)
|
||
/// </summary>
|
||
public string? Phone { get; set; }
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信 code2session 接口响应
|
||
/// </summary>
|
||
public class WxCode2SessionResponse
|
||
{
|
||
/// <summary>
|
||
/// 用户唯一标识
|
||
/// </summary>
|
||
[JsonProperty("openid")]
|
||
public string? OpenId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 会话密钥
|
||
/// </summary>
|
||
[JsonProperty("session_key")]
|
||
public string? SessionKey { get; set; }
|
||
|
||
/// <summary>
|
||
/// 用户统一标识(在开放平台绑定了多个应用时使用)
|
||
/// </summary>
|
||
[JsonProperty("unionid")]
|
||
public string? UnionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 错误码
|
||
/// </summary>
|
||
[JsonProperty("errcode")]
|
||
public int ErrCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 错误信息
|
||
/// </summary>
|
||
[JsonProperty("errmsg")]
|
||
public string? ErrMsg { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信获取手机号接口响应
|
||
/// </summary>
|
||
public class WxPhoneNumberResponse
|
||
{
|
||
/// <summary>
|
||
/// 错误码
|
||
/// </summary>
|
||
[JsonProperty("errcode")]
|
||
public int ErrCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 错误信息
|
||
/// </summary>
|
||
[JsonProperty("errmsg")]
|
||
public string? ErrMsg { get; set; }
|
||
|
||
/// <summary>
|
||
/// 手机号信息
|
||
/// </summary>
|
||
[JsonProperty("phone_info")]
|
||
public WxPhoneInfo? PhoneInfo { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信手机号信息
|
||
/// </summary>
|
||
public class WxPhoneInfo
|
||
{
|
||
/// <summary>
|
||
/// 用户绑定的手机号(国外手机号会有区号)
|
||
/// </summary>
|
||
[JsonProperty("phoneNumber")]
|
||
public string? PhoneNumber { get; set; }
|
||
|
||
/// <summary>
|
||
/// 没有区号的手机号
|
||
/// </summary>
|
||
[JsonProperty("purePhoneNumber")]
|
||
public string? PurePhoneNumber { get; set; }
|
||
|
||
/// <summary>
|
||
/// 区号
|
||
/// </summary>
|
||
[JsonProperty("countryCode")]
|
||
public string? CountryCode { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信 access_token 接口响应
|
||
/// </summary>
|
||
public class WxAccessTokenResponse
|
||
{
|
||
/// <summary>
|
||
/// 获取到的凭证
|
||
/// </summary>
|
||
[JsonProperty("access_token")]
|
||
public string? AccessToken { get; set; }
|
||
|
||
/// <summary>
|
||
/// 凭证有效时间(秒)
|
||
/// </summary>
|
||
[JsonProperty("expires_in")]
|
||
public int ExpiresIn { get; set; }
|
||
|
||
/// <summary>
|
||
/// 错误码
|
||
/// </summary>
|
||
[JsonProperty("errcode")]
|
||
public int ErrCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 错误信息
|
||
/// </summary>
|
||
[JsonProperty("errmsg")]
|
||
public string? ErrMsg { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信切换用户输入
|
||
/// </summary>
|
||
public class WeChatSwitchUserInput
|
||
{
|
||
/// <summary>
|
||
/// 目标用户ID
|
||
/// </summary>
|
||
public long UserId { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 微信切换用户输出
|
||
/// </summary>
|
||
public class WeChatSwitchUserOutput
|
||
{
|
||
/// <summary>
|
||
/// 新的访问令牌
|
||
/// </summary>
|
||
public string Token { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 当前切换的用户详情
|
||
/// </summary>
|
||
public WxUserOutput User { get; set; } = new();
|
||
}
|
||
|