Extension3059ModuleController.php 4.9 KB
<?php
/**
 * @remark :
 * @name   :Extension3059ModuleController.php
 * @author :lyh
 * @method :post
 * @time   :2024/12/25 9:44
 */

namespace App\Http\Controllers\Bside\ExtensionModule;

use App\Enums\Common\Code;
use App\Helper\PayStripeApi;
use App\Http\Controllers\Bside\BaseController;
use App\Models\ExtentModule\ExtensionModuleField;
use App\Models\ExtentModule\ExtensionModuleValue;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;

class Extension3059ModuleController extends BaseController
{
    /**
     * @remark :获取所有的支付方式
     * @name   :getPayMethod
     * @author :lyh
     * @method :post
     * @time   :2024/12/25 16:01
     */
    public function getPayMethod(){
        $pay = new PayStripeApi();
        $data = $pay->currency_types;
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :获取当前所有的商品列表
     * @name   :getProductLists
     * @author :lyh
     * @method :post
     * @time   :2024/12/25 9:37
     */
    public function get3059Product(){
        ProjectServer::useProject(3059);
        $this->param['module_id'] = $this->param['module_id'] ?? 2;//默认加载商品数据
        $searchParam = [
            'module_id'=>$this->param['module_id'],
        ];
        $moduleValueModel = new ExtensionModuleValue();
        if(isset($this->param['product_id'])){
            $info = $moduleValueModel->read(['value'=>$this->param['product_id']]);
            if($info === false){
                $this->response('success');
            }
            $searchParam['uuid'] = $info['uuid'];
        }
        $data = [];
        $filedData = $this->getFiledList();
        $moduleValueModel = new ExtensionModuleValue();
        $lists = $moduleValueModel->list($searchParam);
        if(!empty($lists)){
            foreach ($lists as $k => $v){
                $data[$v['uuid']][$filedData[$v['field_id']]] = $v['value'];
                $data[$v['uuid']]['created_at'] = $v['created_at'];
            }
        }
        $resultData = [];
        foreach ($data as $k => $v){
            $v['uuid'] = $k;
            $resultData[] = $v;
        }
        DB::disconnect('custom_mysql');
        $this->response('success',Code::SUCCESS,$resultData);
    }

    /**
     * @remark :获取所有字段
     * @name   :getFiledList
     * @author :lyh
     * @method :post
     * @time   :2024/12/25 14:13
     */
    public function getFiledList(){
        $moduleFieldModel = new ExtensionModuleField();
        $this->param['module_id'] = 2;//商品的所有字段
        $filedList = $moduleFieldModel->list(['module_id'=>$this->param['module_id']],'sort',['id','field_name'],'desc');
        $data = [];
        if(!empty($filedList)){
            foreach ($filedList as $k => $v){
                $data[$v['id']] = $v['field_name'];
            }
        }
        return $data;
    }

    /**
     * @remark :编辑订单详情
     * @name   :editOrderDetail
     * @author :lyh
     * @method :post
     * @time   :2024/12/25 10:26
     */
    public function save3059OrderDetail(){
        ProjectServer::useProject(3059);
        $this->request->validate([
            'data'=>'required',
            'amount'=>'required',
            'currency'=>'required',
        ],[
            'data.required' => '数据不能为空',
            'amount.required' => '金额不能为空',
            'currency.required' => '币种不能为空',
        ]);
        $this->param['module_id'] = 1;//默认订单模块
        $moduleValueModel = new ExtensionModuleValue();
        $info = $moduleValueModel->where('module_id',$this->param['module_id'])->orderBy('uuid','desc')->first();
        if(empty($info)){
            $uuid = 1;
        }else{
            $info = $info->toArray();
            $uuid = $info['uuid'] + 1;
        }
        $saveData = [];
        try {
            //生成订单id
            $saveData[] =['uuid'=>$uuid,'module_id'=>$this->param['module_id'],'field_id'=>1,'value'=>md5(uniqid(mt_rand(), true))];
            $data = $this->param['data'];
            $moduleValueModel = new ExtensionModuleValue();
            foreach ($data as $k => $v){
                $saveData[] = [
                    'uuid'=>$uuid,
                    'module_id'=>$this->param['module_id'],
                    'field_id'=>$v['field_id'],
                    'value'=>$v['value']
                ];
            }
            $pay = new PayStripeApi();
            $payData = $pay->createPaymentIntent($this->param['amount'],$this->param['currency']);
            $saveData[] = ['uuid'=>$uuid,'module_id'=>$this->param['module_id'],'field_id'=>8,'value'=>$payData['id'] ?? '未获取到支付意愿,请重新获取'];
            $moduleValueModel->insertAll($saveData);
        }catch (\Exception $e){
            $this->fail('error,请联系管理员');
        }
        DB::disconnect('custom_mysql');
        $this->response('success',Code::SUCCESS,$payData);
    }
}