跳到主要内容

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 API

Member — /api/identity/members

方法路由权限说明
GET/Members.Default会员分页列表(MemberQuery,可按等级/标签/分组过滤)
GET/{id:guid}Members.Default会员详情
PUT/{id:guid}Members.Default更新会员资料
PUT/{id:guid}/lockoutMembers.Lockout锁定/解锁会员
DELETE/{id:guid}Members.Default删除会员
PUT/{id:guid}/levelMembers.AssignLevel指派会员等级(传 null 清除)
PUT/{id:guid}/tagsMembers.AssignTags覆盖式设置标签
PUT/{id:guid}/groupsMembers.AssignGroups覆盖式设置分组

等级 / 分组 / 标签(标准 CRUD)

控制器前缀方法 + 路由
MemberLevelController/api/identity/member-levelsGET /GET /{id:guid}POST /PUT /{id:guid}DELETE /{id:guid}
MemberGroupController/api/identity/member-groups同上
MemberTagController/api/identity/member-tags同上

积分 — /api/plat/user-integral

方法路由说明
GET/积分记录分页列表
POST/积分增减(写 UserIntegralLog
GET/current当前用户积分汇总

地址 — /api/plat/user-address

方法路由说明
GET/all当前用户全部地址
GET/地址分页列表
GET/{id}地址详情
POST/新增地址
PUT/{id}更新地址
DELETE/{id}删除地址

4. 配置与接入

// 框架自动发现并启动 MemberModuleStartup(IModuleStartup)
// 依赖完整 Identity 的用户体系,需先接入 Identity
# 给某会员指派等级
curl -X PUT https://localhost:7002/kit_api/api/identity/members/{memberId}/level \
-H "Content-Type: application/json" \
-d '{"levelId":"level-guid"}'

# 覆盖式打标签
curl -X PUT https://localhost:7002/kit_api/api/identity/members/{memberId}/tags \
-H "Content-Type: application/json" \
-d '{"tagIds":["tag-guid-1","tag-guid-2"]}'

# 查当前积分
curl https://localhost:7002/kit_api/api/plat/user-integral/current \
-H "Authorization: Bearer <accessToken>"

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 });
}
}

相关文档