AI Assistant b5d4d338e4 修改 urs_promotion_user_talents 表字段名:urs_user_id 改为 user_id 6 months ago
..
README.md fceaa09ca8 优化UrsPromotion模块服务层,使用DTO替代直接返回Model对象 7 months ago
UrsProfitDto.php fceaa09ca8 优化UrsPromotion模块服务层,使用DTO替代直接返回Model对象 7 months ago
UrsTalentConfigDto.php fceaa09ca8 优化UrsPromotion模块服务层,使用DTO替代直接返回Model对象 7 months ago
UrsTransferFeeConfigDto.php f276214e14 扩展URS转账手续费配置支持转入/转出 6 months ago
UrsUserMappingDto.php ae5bfc9981 feat(urs-promotion):增加 URS 用户绑定关系的 userKey 支持 6 months ago
UrsUserReferralDto.php 00d826afbb 为URS用户推荐关系表添加农场用户ID字段 6 months ago
UrsUserTalentDto.php b5d4d338e4 修改 urs_promotion_user_talents 表字段名:urs_user_id 改为 user_id 6 months ago

README.md

URS推广模块 DTO 类

概述

本目录包含URS推广模块的数据传输对象(DTO)类,用于在服务层返回数据时避免直接暴露模型对象。

DTO 设计原则

  1. 继承BaseDto:所有DTO类都继承自UCore\Dto\BaseDto
  2. fromModel方法:每个DTO类都实现fromModel静态方法用于从模型创建DTO
  3. 驼峰命名:所有属性使用驼峰命名法
  4. 类型声明:所有属性都有明确的类型声明
  5. 避免暴露模型:服务层应返回DTO而不是直接返回Model对象

DTO 类列表

UrsUserMappingDto

  • 用途:URS用户映射数据传输
  • 对应模型UrsUserMapping
  • 主要属性:映射关系、状态信息

UrsUserReferralDto

  • 用途:URS用户推荐关系数据传输
  • 对应模型UrsUserReferral
  • 主要属性:推荐关系、状态信息

UrsUserTalentDto

  • 用途:URS用户达人等级数据传输
  • 对应模型UrsUserTalent
  • 主要属性:达人等级、团队统计、配置信息

UrsProfitDto

  • 用途:URS收益记录数据传输
  • 对应模型UrsProfit
  • 主要属性:收益信息、分成详情

UrsTalentConfigDto

  • 用途:URS达人等级配置数据传输
  • 对应模型UrsTalentConfig
  • 主要属性:等级配置、奖励设置

使用示例

use App\Module\UrsPromotion\Dtos\UrsUserMappingDto;
use App\Module\UrsPromotion\Models\UrsUserMapping;

// 从模型创建DTO
$mapping = UrsUserMapping::find(1);
$dto = UrsUserMappingDto::fromModel($mapping);

// 在服务层返回DTO
public static function getMappingDetail(int $ursUserId): ?UrsUserMappingDto
{
    $mapping = UrsUserMapping::where('urs_user_id', $ursUserId)->first();
    if (!$mapping) {
        return null;
    }
    
    return UrsUserMappingDto::fromModel($mapping);
}

注意事项

  1. 服务层优化:所有服务层方法都应该返回DTO对象而不是Model对象
  2. 向后兼容:在修改现有服务方法时要考虑向后兼容性
  3. 性能考虑:DTO转换会有一定的性能开销,但换来了更好的封装性
  4. 数据一致性:确保DTO属性与模型属性保持一致