| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- <?php
- namespace App\Module\UrsPromotion\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Http\JsonResponse;
- use App\Module\UrsPromotion\Services\UrsProfitService;
- use App\Module\UrsPromotion\Services\UrsTalentService;
- use App\Module\UrsPromotion\Models\UrsUserReferral;
- use App\Module\UrsPromotion\Models\UrsUserTalent;
- use App\Module\UrsPromotion\Models\UrsTalentConfig;
- use Illuminate\Support\Facades\Validator;
- use Illuminate\Support\Facades\Log;
- /**
- * URS推广模块API控制器
- *
- * 提供URS推广系统的对外API接口
- */
- class UrsPromotionApiController
- {
- /**
- * 获取用户的达人信息
- *
- * @param Request $request
- * @return JsonResponse
- */
- public function getUserTalent(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');
- $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);
- }
- }
- }
|