跳到主要内容

Member 会员管理开发指南

FreeKit.Member 是 Identity 之上的会员(C 端用户)运营子模块:在 IdentityUser 之外,叠加会员等级、分组、标签、积分与收货地址等能力。注册/登录仍走完整 Identity 的 /api/identity/account,Member 只负责"成为会员之后"的运营数据。

配套概览页见 Member 会员管理

1. 数据模型(简述)

Member 不重复定义账号,而是通过 UserId 关联到 Identity 的用户:

  • MemberUserFullAuditEntity + ITenant)— 会员主记录,含 UserIdMemberLevelId、状态等;每个用户至多一条。
  • MemberLevel / MemberGroup / MemberTag — 等级 / 分组 / 标签定义。
  • MemberGroupUserUserId + GroupId)、MemberTagUserUserId + TagId)— 多对多关联,带唯一索引。
  • UserIntegral / UserIntegralLog — 用户积分余额与变动日志(按 CreateUserId 归属)。
  • UserAddress — 收货地址。

这些实体不罗列表字段,需要细节请直接看 FreeKit.Member/Application/Members/ModelsFreeKit.Member/Application/UserIntergrals/Models

2. 关键服务

  • IMemberServiceFreeKit.Member.Application.Members.Contracts)— 会员列表/详情/更新、锁定、指派等级、覆盖式设置标签与分组。
  • IMemberLevelService / IMemberGroupService / IMemberTagService — 各自 CRUD(实现 ICrudAppService)。
  • IUserAddressService — 地址 CRUD。
  • IUserIntegralServiceFreeKit.Member.Application.UserIntergrals.Contracts)— 积分查询、签到/增减、积分日志。
  • 内部使用 IdentityUserManager(来自 FreeKit.Identity.Domain.Identity)处理底层用户。

权限常量见 MemberPermissionsMembers.Default / Members.Lockout / Members.AssignLevel / Members.AssignTags / Members.AssignGroups

3. 业务能力(替代端点表的设计叙事)

具体 HTTP 接口见 Swagger,这里只描述能力边界:

  • 会员(Members):分页列表(可按等级/标签/分组过滤)、详情、更新、锁定/解锁、删除;以及"指派等级 / 覆盖式设置标签 / 覆盖式设置分组"三类运营操作。
  • 等级 / 分组 / 标签(MemberLevel / MemberGroup / MemberTag):标准 CRUD 的定义管理。
  • 积分(UserIntegral):积分记录分页、增减(写 UserIntegralLog)、当前用户积分汇总。
  • 地址(UserAddress):当前用户全部地址、分页列表、详情、增改删。

4. 配置与接入

// 框架自动发现并启动 MemberModuleStartup(IModuleStartup)
// 依赖完整 Identity 的用户体系,需先接入 Identity

5. 典型用法

public class PromotionService(IMemberService memberService, IUserIntegralService integralService)
{
public async Task PromoteAsync(Guid userId, Guid levelId)
{
var member = await memberService.GetAsync(userId); // 按会员(用户)Id
await memberService.AssignLevelAsync(userId, new MemberAssignLevelReq { LevelId = levelId });
}

public async Task RewardAsync(Guid userId, int points, string reason)
{
await integralService.AddAsync(userId, points, reason); // 写日志并累加余额
}
}

相关文档