all(), [ 'user_id' => 'required|integer|min:1', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'message' => '参数错误', 'errors' => $validator->errors(), ], 400); } try { $userId = $request->input('user_id'); $stats = UrsTalentService::getUserTeamStats($userId); return response()->json([ 'code' => 200, 'message' => '获取成功', 'data' => $stats, ]); } catch (\Exception $e) { Log::error('获取用户达人信息失败', [ 'user_id' => $request->input('user_id'), 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } /** * 获取用户的推荐关系树 * * @param Request $request * @return JsonResponse */ public function getUserReferralTree(Request $request): JsonResponse { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer|min:1', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'message' => '参数错误', 'errors' => $validator->errors(), ], 400); } try { $userId = $request->input('user_id'); $tree = UrsTalentService::getUserReferralTree($userId); return response()->json([ 'code' => 200, 'message' => '获取成功', 'data' => $tree, ]); } catch (\Exception $e) { Log::error('获取用户推荐关系树失败', [ 'user_id' => $request->input('user_id'), 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } /** * 获取用户的收益统计 * * @param Request $request * @return JsonResponse */ public function getUserProfitStats(Request $request): JsonResponse { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer|min:1', 'profit_type' => 'nullable|string|in:promotion_reward,planting_reward', 'start_date' => 'nullable|date', 'end_date' => 'nullable|date|after_or_equal:start_date', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'message' => '参数错误', 'errors' => $validator->errors(), ], 400); } try { $userId = $request->input('user_id'); $profitType = $request->input('profit_type'); $startDate = $request->input('start_date'); $endDate = $request->input('end_date'); $stats = UrsProfitService::getUserProfitStats($userId, $profitType, $startDate, $endDate); return response()->json([ 'code' => 200, 'message' => '获取成功', 'data' => $stats, ]); } catch (\Exception $e) { Log::error('获取用户收益统计失败', [ 'user_id' => $request->input('user_id'), 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } /** * 分发推广收益 * * @param Request $request * @return JsonResponse */ public function distributePromotionReward(Request $request): JsonResponse { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer|min:1', 'source_type' => 'required|string|max:32', 'source_id' => 'required|integer|min:1', 'original_amount' => 'required|numeric|min:0', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'message' => '参数错误', 'errors' => $validator->errors(), ], 400); } try { $userId = $request->input('user_id'); $sourceType = $request->input('source_type'); $sourceId = $request->input('source_id'); $originalAmount = $request->input('original_amount'); $profits = UrsProfitService::distributePromotionReward( $userId, $sourceType, $sourceId, (string)$originalAmount ); return response()->json([ 'code' => 200, 'message' => '分发成功', 'data' => [ 'profit_count' => count($profits), 'profits' => $profits, ], ]); } catch (\Exception $e) { Log::error('分发推广收益失败', [ 'user_id' => $request->input('user_id'), 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } /** * 分发种植收益 * * @param Request $request * @return JsonResponse */ public function distributePlantingReward(Request $request): JsonResponse { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer|min:1', 'source_type' => 'required|string|max:32', 'source_id' => 'required|integer|min:1', 'original_amount' => 'required|numeric|min:0', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'message' => '参数错误', 'errors' => $validator->errors(), ], 400); } try { $userId = $request->input('user_id'); $sourceType = $request->input('source_type'); $sourceId = $request->input('source_id'); $originalAmount = $request->input('original_amount'); $profits = UrsProfitService::distributePlantingReward( $userId, $sourceType, $sourceId, (string)$originalAmount ); return response()->json([ 'code' => 200, 'message' => '分发成功', 'data' => [ 'profit_count' => count($profits), 'profits' => $profits, ], ]); } catch (\Exception $e) { Log::error('分发种植收益失败', [ 'user_id' => $request->input('user_id'), 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } /** * 更新用户达人等级 * * @param Request $request * @return JsonResponse */ public function updateUserTalent(Request $request): JsonResponse { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer|min:1', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'message' => '参数错误', 'errors' => $validator->errors(), ], 400); } try { $userId = $request->input('user_id'); $talent = UrsTalentService::updateUserTalent($userId); if ($talent) { return response()->json([ 'code' => 200, 'message' => '更新成功', 'data' => [ 'user_id' => $talent->user_id, 'talent_level' => $talent->talent_level, 'talent_level_name' => $talent->getTalentLevelName(), 'direct_count' => $talent->direct_count, 'indirect_count' => $talent->indirect_count, 'third_count' => $talent->third_count, 'promotion_count' => $talent->promotion_count, ], ]); } else { return response()->json([ 'code' => 500, 'message' => '更新失败', ], 500); } } catch (\Exception $e) { Log::error('更新用户达人等级失败', [ 'user_id' => $request->input('user_id'), 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } /** * 获取达人等级配置列表 * * @return JsonResponse */ public function getTalentConfigs(): JsonResponse { try { $configs = UrsTalentService::getTalentConfigs(); return response()->json([ 'code' => 200, 'message' => '获取成功', 'data' => $configs, ]); } catch (\Exception $e) { Log::error('获取达人等级配置失败', [ 'error' => $e->getMessage(), ]); return response()->json([ 'code' => 500, 'message' => '服务器内部错误', ], 500); } } }