|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace App\Module\UrsPromotion\Services;
|
|
|
|
|
|
+use App\Module\UrsPromotion\Dtos\UrsUserTalentDto;
|
|
|
use App\Module\UrsPromotion\Models\UrsUserTalent;
|
|
|
use App\Module\UrsPromotion\Models\UrsTalentConfig;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
@@ -18,9 +19,9 @@ class UrsTalentService
|
|
|
* 计算并更新用户的达人等级
|
|
|
*
|
|
|
* @param int $ursUserId URS用户ID
|
|
|
- * @return UrsUserTalent
|
|
|
+ * @return UrsUserTalentDto
|
|
|
*/
|
|
|
- public static function updateTalentLevel(int $ursUserId): UrsUserTalent
|
|
|
+ public static function updateTalentLevel(int $ursUserId): UrsUserTalentDto
|
|
|
{
|
|
|
try {
|
|
|
DB::beginTransaction();
|
|
|
@@ -67,7 +68,24 @@ class UrsTalentService
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
- return $talent;
|
|
|
+ // 获取配置信息用于创建DTO
|
|
|
+ $config = UrsTalentConfig::where('level', $talent->talent_level)->first();
|
|
|
+ $nextConfig = UrsTalentConfig::where('level', $talent->talent_level + 1)->first();
|
|
|
+
|
|
|
+ $currentConfig = $config ? [
|
|
|
+ 'name' => $config->name,
|
|
|
+ 'description' => $config->description,
|
|
|
+ 'icon' => $config->icon,
|
|
|
+ ] : null;
|
|
|
+
|
|
|
+ $nextConfigArray = $nextConfig ? [
|
|
|
+ 'level' => $nextConfig->level,
|
|
|
+ 'name' => $nextConfig->name,
|
|
|
+ 'direct_count_required' => $nextConfig->direct_count_required,
|
|
|
+ 'promotion_count_required' => $nextConfig->promotion_count_required,
|
|
|
+ ] : null;
|
|
|
+
|
|
|
+ return UrsUserTalentDto::fromModel($talent, $currentConfig, $nextConfigArray);
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
DB::rollBack();
|
|
|
@@ -107,9 +125,9 @@ class UrsTalentService
|
|
|
* 获取用户的达人信息
|
|
|
*
|
|
|
* @param int $ursUserId URS用户ID
|
|
|
- * @return array|null
|
|
|
+ * @return UrsUserTalentDto|null
|
|
|
*/
|
|
|
- public static function getTalentInfo(int $ursUserId): ?array
|
|
|
+ public static function getTalentInfo(int $ursUserId): ?UrsUserTalentDto
|
|
|
{
|
|
|
$talent = UrsUserTalent::where('urs_user_id', $ursUserId)->first();
|
|
|
if (!$talent) {
|
|
|
@@ -119,31 +137,20 @@ class UrsTalentService
|
|
|
$config = UrsTalentConfig::where('level', $talent->talent_level)->first();
|
|
|
$nextConfig = UrsTalentConfig::where('level', $talent->talent_level + 1)->first();
|
|
|
|
|
|
- return [
|
|
|
- 'urs_user_id' => $talent->urs_user_id,
|
|
|
- 'talent_level' => $talent->talent_level,
|
|
|
- 'talent_name' => $config->name ?? '普通用户',
|
|
|
- 'direct_count' => $talent->direct_count,
|
|
|
- 'indirect_count' => $talent->indirect_count,
|
|
|
- 'third_count' => $talent->third_count,
|
|
|
- 'promotion_count' => $talent->promotion_count,
|
|
|
- 'last_level_update_time' => $talent->last_level_update_time,
|
|
|
- 'current_config' => $config ? [
|
|
|
- 'name' => $config->name,
|
|
|
- 'description' => $config->description,
|
|
|
- 'icon' => $config->icon,
|
|
|
- 'promotion_reward_rates' => $config->promotion_reward_rates,
|
|
|
- 'planting_reward_rates' => $config->planting_reward_rates,
|
|
|
- ] : null,
|
|
|
- 'next_config' => $nextConfig ? [
|
|
|
- 'level' => $nextConfig->level,
|
|
|
- 'name' => $nextConfig->name,
|
|
|
- 'direct_count_required' => $nextConfig->direct_count_required,
|
|
|
- 'promotion_count_required' => $nextConfig->promotion_count_required,
|
|
|
- 'direct_count_gap' => max(0, $nextConfig->direct_count_required - $talent->direct_count),
|
|
|
- 'promotion_count_gap' => max(0, $nextConfig->promotion_count_required - $talent->promotion_count),
|
|
|
- ] : null,
|
|
|
- ];
|
|
|
+ $currentConfig = $config ? [
|
|
|
+ 'name' => $config->name,
|
|
|
+ 'description' => $config->description,
|
|
|
+ 'icon' => $config->icon,
|
|
|
+ ] : null;
|
|
|
+
|
|
|
+ $nextConfigArray = $nextConfig ? [
|
|
|
+ 'level' => $nextConfig->level,
|
|
|
+ 'name' => $nextConfig->name,
|
|
|
+ 'direct_count_required' => $nextConfig->direct_count_required,
|
|
|
+ 'promotion_count_required' => $nextConfig->promotion_count_required,
|
|
|
+ ] : null;
|
|
|
+
|
|
|
+ return UrsUserTalentDto::fromModel($talent, $currentConfig, $nextConfigArray);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -161,9 +168,9 @@ class UrsTalentService
|
|
|
$talent = self::updateTalentLevel($ursUserId);
|
|
|
$results[$ursUserId] = [
|
|
|
'success' => true,
|
|
|
- 'talent_level' => $talent->talent_level,
|
|
|
- 'direct_count' => $talent->direct_count,
|
|
|
- 'promotion_count' => $talent->promotion_count,
|
|
|
+ 'talent_level' => $talent->talentLevel,
|
|
|
+ 'direct_count' => $talent->directCount,
|
|
|
+ 'promotion_count' => $talent->promotionCount,
|
|
|
];
|
|
|
} catch (\Exception $e) {
|
|
|
$results[$ursUserId] = [
|