初始化项目

This commit is contained in:
2026-09-01 22:15:50 +08:00
commit b5a26a8848
11217 changed files with 1710987 additions and 0 deletions
@@ -0,0 +1,140 @@
<?php
namespace app\console\command;
use app\common\service\IdingjuOil;
use app\common\service\QueueService;
use app\store\model\Company as CompanyModel;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use app\common\model\partners\Order as OrderModel;
use think\facade\Db;
class PartnersQueue extends Command
{
protected $queueService;
protected function configure()
{
$this->setName('partners:queue')
->setDescription('Process messages from the Redis queue');
}
protected function execute(Input $input, Output $output)
{
$this->queueService = new QueueService();
while (true) {
$message = $this->queueService->pop('partners_queue');
if ($message) {
// 处理消息
$this->processMessage($message);
} else {
// 暂停一段时间再检查队列
sleep(1);
}
}
}
protected function processMessage($message)
{
$IdingjuOil = new IdingjuOil();
$IdingjuOil->saveLogStore('partners_queue队列数据处理:【'.$message.'】');
// 拿到队列数据处理
$data = json_decode($message, true);
// 检查解码是否成功
if ($data === false) {
$IdingjuOil->saveLogStore('partners_queue队列数据解码失败:' . json_last_error_msg());
return;
}
$order = OrderModel::detail($data['order_id']);
if (!$order) {
$IdingjuOil->saveLogStore('未找到对应订单:【' . $data['order_id'] . '】');
return;
}
// 此处可以根据业务逻辑处理接收到的数据
try {
if($order['order_status'] == 10 && $order['oil_status'] == 0 && $order['oilCardType'] == 'zsy_ticket'){
$data['amount'] = $order['total_price']; // 金额
$company = CompanyModel::detail(['orgNo' => $this->getCompany($order['goods_no'])]);
if (!$company) {
$IdingjuOil->saveLogStore('没有可用参数:【' . $order['goods_no'] . '】');
return;
}
// 对接平台接口
$res = $IdingjuOil->oilOilCardShare([
'goodsNo'=>$order['goods_no'],
'amount'=>$data['amount'],
'userNo'=>'',
'mobile'=>$order['mobile'],
'saleOrderNo'=>$order['oilCardNo'],
'oilCardType'=>$order['oilCardType'],
'notify_url'=>config('app.base_url') . 'partnersoil.php',
'use_notify_url'=>config('app.base_url') . 'partnersoiluse.php'
], $company);
if ($res['code'] != 1) {
$IdingjuOil->saveLogStore(($res['errMessage'] ?? $res['message']));
return;
}
$item['shareNo'] = $res['data']['trade_no'] ?? '';
$item['qrCode'] = $res['data']['useUrl'] ?? '';
$item['oil_status_zsy'] = $res['data']['state'] ?? 0;
$item['oil_time'] = time();
$item['oil_status'] = $item['oil_status_zsy'] == 2 ? 1 : 0; // 已发券 为1
$resUpdate = $order->save($item);
if (!$resUpdate) {
$IdingjuOil->saveLogStore("订单更新失败,order_id: {$data['order_id']}");
}
if($item['oil_status_zsy'] == 2) {
// 存入队列处理
$queueService = new QueueService();
$queueService->push('notify_queue', json_encode([
'order_id' => $order['order_id'],
'type' => 'add',
'optType' => 'share_oil',
'retry_count' => 0,
], 320));
}
}
} catch (\Exception $e) {
$IdingjuOil->saveLogStore(
'partners_queue队列处理异常:' . $e->getMessage() .
' 在文件:' . $e->getFile() .
' 第:' . $e->getLine() .
' 行。堆栈跟踪:' . $e->getTraceAsString()
);
}
}
/**
* @param $goodsNo
* @return string
*/
public function getCompany($goodsNo): string
{
switch ($goodsNo) {
case 'djgdface100':
case 'djgdface200':
case 'djgdface300':
return 'umQZhIHKofyA';
case 'jmgxyyface100':
case 'jmgxyyface200':
case 'jmgxyyface300':
case 'jmgzface100':
case 'jmgzface200':
case 'jmgzface300':
case 'jmfjface100':
case 'jmfjface200':
case 'jmfjface300':
return 'HpWqXIgYvTBg';
case 'face003':
return 'NKJBgaaRNdiL'; // 测试参数
default:
return '';
}
}
}