Member 会员管理开发指南
FreeKit.Member 是 Identity 之上的会员(C 端用户)运营子模块:在 IdentityUser 之外,叠加会员等级、分组、标签、积分与收货地址等能力。注册/登录仍走完整 Identity 的 /api/identity/account,Member 只负责"成为会员之后"的运营数据。
配套概览页见 Member 会员管理。
1. 数据模型(简述)
Member 不重复定义账号,而是通过 UserId 关联到 Identity 的用户:
MemberUser(FullAuditEntity+ITenant)— 会员主记录,含UserId、MemberLevelId、状态等;每个用户至多一条。MemberLevel/MemberGroup/MemberTag— 等级 / 分组 / 标签定义。MemberGroupUser(UserId+GroupId)、MemberTagUser(UserId+TagId)— 多对多关联,带唯一索引。UserIntegral/UserIntegralLog— 用户积分余额与变动日志(按CreateUserId归属)。UserAddress— 收货地址。
这些实体不罗列表字段,需要细节请直接看
FreeKit.Member/Application/Members/Models与FreeKit.Member/Application/UserIntergrals/Models。
2. 关键服务
IMemberService(FreeKit.Member.Application.Members.Contracts)— 会员列表/详情/更新、锁定、指派等级、覆盖式设置标签与分组。IMemberLevelService/IMemberGroupService/IMemberTagService— 各自 CRUD(实现ICrudAppService)。IUserAddressService— 地址 CRUD。IUserIntegralService(FreeKit.Member.Application.UserIntergrals.Contracts)— 积分查询、签到/增减、积分日志。- 内部使用
IdentityUserManager(来自FreeKit.Identity.Domain.Identity)处理底层用户。
权限常量见 MemberPermissions:Members.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); // 写日志并累加余额
}
}