소스 검색

Merge branch 'stable' into liuzj-test

liuzejian 1 년 전
부모
커밋
e1b98debd1
1개의 변경된 파일0개의 추가작업 그리고 249개의 파일을 삭제
  1. 0 249
      app/Jobs/Callback/RechargeReport.php

+ 0 - 249
app/Jobs/Callback/RechargeReport.php

@@ -1,249 +0,0 @@
-<?php
-
-namespace App\Jobs\OrangeSite;
-
-use App\Modules\Callback\Models\ChannelCallbackConfig;
-use App\Modules\Callback\Services\CallbackBaseService;
-use App\Modules\OrangeSite\Services\CheckReport\EnableReportCheck;
-use App\Modules\OrangeSite\Services\CheckReport\OrderAlreadyReportCheck;
-use App\Modules\OrangeSite\Services\CheckReport\PromotionProtectCheck;
-use App\Modules\OrangeSite\Services\CheckReport\RechargeAmountCheck;
-use App\Modules\OrangeSite\Services\CheckReport\ReportRateCheck;
-use App\Modules\OrangeSite\Services\CheckReport\ReportRechargeTypeCheck;
-use App\Modules\OrangeSite\Services\OrangeSitePromotionService;
-use App\Modules\OrangeSite\Services\OrangeSiteRechargeReportCheckContext;
-use App\Modules\OrangeSite\Services\OrangeSiteReportRateService;
-use App\Modules\Order\Models\ReportUserChargeRecord;
-use App\Modules\Trace\TraceContext;
-use Illuminate\Bus\Queueable;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Foundation\Bus\Dispatchable;
-use Illuminate\Pipeline\Pipeline;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-use Illuminate\Support\Facades\DB;
-
-class RechargeReport implements ShouldQueue
-{
-    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
-
-    public const QUEUE = '{orangeSite}.report.recharge';
-    public const CONNECTION = 'redis_queue';
-
-    public const PLATFORM = 'orange';
-    /**
-     * @var array
-     * <pre>
-     * [
-     *      'channelId' => 'xxx, // 站点id
-     *      'orderId' => 'xxx', // 订单id
-     *      'uid' => 'xxx', // 充值用户uid
-     * ]
-     * </pre>
-     */
-    private $reportInfo;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(array $reportInfo)
-    {
-        $this->reportInfo = $reportInfo;
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle()
-    {
-        $traceContext = new TraceContext();
-        \Log::info('[orangeSiteRechargeReport]开始回传', [
-            'reportInfo' => $this->reportInfo,
-            'traceInfo' => $traceContext->getTraceInfo()
-        ]);
-        $user = DB::table('users')->find(($this->reportInfo['uid'] ?? -1));
-        $order = DB::table('orders')->where([
-            ['id', '=', ($this->reportInfo['orderId'] ?? -1)],
-            ['status', '=', 'PAID']
-        ])->first();
-        $channelCallbackConfig = ChannelCallbackConfig::where('channel_id', ($this->reportInfo['channelId'] ?? -1))
-            ->where('platform', self::PLATFORM)->first();
-
-        $channelSettingRate = OrangeSiteReportRateService::getChannelSettingReportRate($user->distribution_channel_id);
-        $reportCheckContext = new OrangeSiteRechargeReportCheckContext($user, $order, $channelCallbackConfig,
-            $traceContext, $channelSettingRate);
-
-        try {
-            $reportCheckContext->checkNecessaryInfo();
-        } catch (\Exception $exception) {
-            \Log::error('[orangeSiteRechargeReport]回传基础信息有误', [
-                'message' => $exception->getMessage(),
-                'traceInfo' => $traceContext->getTraceInfo()
-            ]);
-            dingTalkAlert(config('common.orangeSite.dingTalkUrl'), "[orangeSite]订单回传基础信息有误报警:\r\n" .
-                \json_encode([
-                    'reportInfo' => $this->reportInfo,
-                    'message' => $exception->getMessage(),
-                    'traceInfo' => $traceContext->getTraceInfo()
-                ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
-            return;
-        }
-
-
-        $pipes = [
-            EnableReportCheck::class,
-            OrderAlreadyReportCheck::class,
-            ReportRechargeTypeCheck::class,
-            RechargeAmountCheck::class,
-            PromotionProtectCheck::class,
-            ReportRateCheck::class
-        ];
-
-        $content = app(Pipeline::class)
-            ->send($reportCheckContext)
-            ->through($pipes)
-            ->then(function ($content) {
-                return $content;
-            });
-        $result = $content->result;
-        \Log::info('[orangeSiteRechargeReport]回传判定结果', [
-            'result' => $result,
-            'traceInfo' => $traceContext->getTraceInfo()]);
-        if ($result['needRecord'] ?? true) {
-            $this->saveReportUserChargeReportInfo($reportCheckContext, $result);
-        }
-        if ($result['result']) {
-            $this->reportRecharge($reportCheckContext, $result);
-        }
-    }
-
-    private function reportRecharge(OrangeSiteRechargeReportCheckContext $reportCheckContext, array $checkResult)
-    {
-        $params = [
-            'uid' => $reportCheckContext->user->id,
-            'source' => 'zsy',
-            'amount' => $reportCheckContext->order->price ?? 0,
-            'link_source' => 'tiktok_event',
-        ];
-
-
-        $result = $this->reprotResultDeal(CallbackBaseService::directlyCharge($params));
-
-        $resultContent = \json_decode(($result['content'] ?? '[]'), true);
-
-        $updateInfo = [
-            'status' => $result['status'] ?? 0,
-            'request_param' => $result['request_param'] ?? '',
-            'updated_at' => date('Y-m-d H:i:s'),
-            'content' => \json_encode(array_merge($resultContent,
-                ['log_content' => ($reportCheckContext->result['content'] ?? '')]))
-        ];
-
-        \Log::info('[orangeSiteRechargeReport]请求回传接口结果:' . ($updateInfo['status'] ? '成功' : '失败'), [
-            'status' => $updateInfo['status'],
-            'traceInfo' => $reportCheckContext->traceContext->getTraceInfo()]);
-
-        DB::transaction(function () use ($reportCheckContext, $updateInfo, $checkResult, $result) {
-            DB::table('report_user_charge_records')->where([
-                'order_no' => $reportCheckContext->order->trade_no,
-                'uid' => $reportCheckContext->order->uid,
-                'link_source' => $reportCheckContext->platform,
-            ])->update($updateInfo);
-
-            if (1 == $result['status']) {
-                /**
-                 * 如果是计划保护回传成功的,只增加 orange_site_recharge_report_protect_records.current_protect_num,
-                 * 而不增加 orange_site_recharge_report_records.rate_total_num 和 orange_site_recharge_report_records.rate_success_num
-                 */
-                if ('promotionProtect' == ($checkResult['result_ok_reason'] ?? '')) {
-                    \Log::debug('[orangeSiteRechargeReport]回传成功,增加对应计划的成功数', [
-                        'traceInfo' => $reportCheckContext->traceContext->getTraceInfo(),
-                        'promotionId' => $reportCheckContext->reportInfo['promotionId']]);
-
-                    OrangeSitePromotionService::setCurrentPromotionProtectNum($reportCheckContext->user->distribution_channel_id,
-                        $reportCheckContext->reportInfo['promotionId'],
-                        $reportCheckContext->channelCallbackConfig->eligible_count ?: 0);
-                } else {
-                    OrangeSiteReportRateService::increaseSuccessNum($reportCheckContext->user->distribution_channel_id,
-                        $reportCheckContext->reportInfo['configRate']);
-                }
-
-            } else {
-                if ('promotionProtect' != ($checkResult['result_ok_reason'] ?? '')) {
-                    \Log::error('[orangeSiteRechargeReport]订单回传失败', [
-                        'traceInfo' => $reportCheckContext->traceContext->getTraceInfo()]);
-                    OrangeSiteReportRateService::increaseFailNum($reportCheckContext->user->distribution_channel_id,
-                        $reportCheckContext->reportInfo['configRate']);
-                } else {
-                    \Log::error('[orangeSiteRechargeReport]计划保护订单回传失败', [
-                        'traceInfo' => $reportCheckContext->traceContext->getTraceInfo()]);
-                }
-            }
-        });
-    }
-
-
-    /**
-     * [调用tiktok 接口回传后,数据处理逻辑]
-     * @return [type]          [description]
-     */
-    public function reprotResultDeal($result)
-    {
-        $status = 0;
-        $content = '';
-        $result_data = isset($result['data']) ? $result['data'] : [];
-        if (!empty($result_data['content'])) {
-            $content = $result_data['content'];
-            $con_arr = json_decode($content, true);
-            $content = json_encode($con_arr);
-            if (isset($con_arr['code']) && 0 == $con_arr['code']) {
-                //tiktok_event
-                $status = 1;
-            }
-        }
-        //处理请求参数
-        $request_param = '';
-        if (isset($result_data['query_params'])) {
-            if (is_string($result_data['query_params'])) {
-                $request_param = $result_data['query_params'];
-            }
-            if (is_array($result_data['query_params'])) {
-                $request_param = json_encode($result_data['query_params']);
-            }
-        }
-        $data = [
-            'status' => $status,
-            'request_param' => $request_param,
-        ];
-        if ($content) {
-            $data['content'] = $content;
-        }
-        return $data;
-    }
-
-    private function saveReportUserChargeReportInfo(OrangeSiteRechargeReportCheckContext $reportCheckContext, array $result)
-    {
-        $data = [
-            'uid' => $this->reportInfo['uid'],
-            'config_percent' => round($reportCheckContext->reportInfo['configRate'] / 100, 4),
-            'report_percent' => round($reportCheckContext->reportInfo['reportRate'] / 100, 4),
-            'order_no' => $reportCheckContext->order->trade_no,
-            'timestamp' => time(),
-            'status' => 0,
-            'type' => $result['type'] ?? '',
-            'content' => $result['content'] ?? '',
-            'channel_id' => $reportCheckContext->user->distribution_channel_id,
-            'request_param' => '',
-            'link_source' => $reportCheckContext->platform,
-        ];
-        ReportUserChargeRecord::updateOrCreate([
-            'order_no' => $data['order_no'],
-            'uid' => $data['uid'],
-            'link_source' => $data['link_source'],
-        ], $data);
-    }
-}