Appearance
会员管理
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/member | GET | 会员列表 |
/admin/member/{id} | GET | 会员详情 |
/admin/member | POST | 创建会员 |
/admin/member/{id} | PUT | 更新会员 |
/admin/member/{id}/status | PUT | 更新状态 |
/admin/member/{id}/tags | PUT | 同步标签 |
/admin/member/stats | GET | 统计数据 |
/admin/member/overview | GET | 概览数据 |
前端 API
| 接口 | 方法 | 说明 |
|---|---|---|
/api/member/profile | GET | 个人信息 |
/api/member/profile | PUT | 更新信息 |
/api/member/points | GET | 积分记录 |
/api/member/level | GET | 等级信息 |
📊 数据统计
- 新增会员趋势
- 活跃会员分析
- 等级分布统计
- 标签覆盖率
⚠️ 注意事项
- 数据安全: 敏感信息加密存储
- 隐私合规: 支持数据导出和注销
- 标签管理: 标签删除时自动解除关联
- 等级计算: 支持自动升降级