Skip to content

会员管理

MineShop 的会员系统提供完整的用户档案管理、标签分组、等级体系和积分管理功能。

🎯 系统架构

┌─────────────────────────────────────────────────────────────┐
│                      会员档案 (Member)                        │
│              • 基本信息、联系方式、状态                         │
├─────────────────────────────────────────────────────────────┤
│     标签系统      │     等级体系      │     积分系统           │
│   MemberTag      │   MemberLevel    │   MemberPoints        │
└─────────────────────────────────────────────────────────────┘

✨ 核心特性

1. 会员档案

字段说明
基本信息昵称、头像、性别、生日
联系方式手机号、邮箱
账户状态正常、禁用、注销
来源渠道注册来源、推荐人

2. 标签系统

支持为会员打标签,便于精细化运营:

php
// DomainMemberService.php
public function syncTags(int $memberId, array $tagIds): void
{
    $this->ensureMemberExists($memberId);
    $this->applyTags($memberId, $tagIds);
}

private function applyTags(int $memberId, array $tagIds): void
{
    $available = $tagIds === [] ? [] : $this->memberTagRepository
        ->getQuery()
        ->whereIn('id', $tagIds)
        ->pluck('id')
        ->toArray();

    $this->repository->syncTags($memberId, $available);
}

3. 等级体系

php
// MemberSetting 值对象
public function __construct(
    public readonly bool $enableGrowth,      // 启用成长值
    public readonly int $registerPoints,     // 注册赠送积分
    public readonly int $signInReward,       // 签到奖励
    public readonly int $inviteReward,       // 邀请奖励
    public readonly int $pointsExpireMonths, // 积分过期月数
    public readonly array $vipLevels,        // VIP 等级定义
    public readonly int $defaultLevel,       // 默认等级
    public readonly int $pointsRatio,        // 积分兑换比例
) {}

🔄 状态管理

┌──────────┐    禁用操作    ┌──────────┐    启用操作    ┌──────────┐
│  active  │ ───────────→ │ disabled │ ───────────→ │  active  │
│   正常    │              │   禁用    │              │   正常    │
└──────────┘              └──────────┘              └──────────┘

      │ 注销申请

┌──────────┐
│ cancelled│
│  已注销   │
└──────────┘

📦 核心服务

php
// DomainMemberService.php
final class DomainMemberService extends IService
{
    /**
     * 创建会员
     */
    public function create(MemberEntity $entity): Member
    {
        $member = $this->repository->save($entity);

        // 同步标签
        if ($entity->getTagIds() !== []) {
            $this->applyTags($member->id, $entity->getTagIds());
        }

        return $member;
    }

    /**
     * 更新会员状态
     */
    public function updateStatus(int $memberId, string $status): Member
    {
        $entity = $this->getEntity($memberId);
        $entity->updateStatus($status);
        $this->repository->updateEntity($entity);

        return $this->repository->findById($memberId);
    }

    /**
     * 获取会员统计
     */
    public function stats(array $filters): array
    {
        return $this->repository->stats($filters);
    }

    /**
     * 获取会员概览
     */
    public function overview(array $filters): array
    {
        return $this->repository->overview($filters);
    }
}

💻 API 接口

后台管理

接口方法说明
/admin/memberGET会员列表
/admin/member/{id}GET会员详情
/admin/memberPOST创建会员
/admin/member/{id}PUT更新会员
/admin/member/{id}/statusPUT更新状态
/admin/member/{id}/tagsPUT同步标签
/admin/member/statsGET统计数据
/admin/member/overviewGET概览数据

前端 API

接口方法说明
/api/member/profileGET个人信息
/api/member/profilePUT更新信息
/api/member/pointsGET积分记录
/api/member/levelGET等级信息

📊 数据统计

  • 新增会员趋势
  • 活跃会员分析
  • 等级分布统计
  • 标签覆盖率

⚠️ 注意事项

  1. 数据安全: 敏感信息加密存储
  2. 隐私合规: 支持数据导出和注销
  3. 标签管理: 标签删除时自动解除关联
  4. 等级计算: 支持自动升降级

📚 相关文档

基于 Apache-2.0 许可发布 | 感谢 MineAdmin 提供的优秀基础框架