REAPI/app/queue/command/kami91order/KamiOrderStatusIncorrectSync.php
mzeros b8c34de8c8 refactor(merchant): 优化账户数据处理和订单逻辑
- 添加 endsWithDoubleZero 函数,用于处理数值字符串末尾的两个零
- 修改 Core.php 中的 queue 方法,增加对卡库提单的特殊处理逻辑
-调整 Feedov.php 中的订单查询和充值逻辑,提高系统稳定性
- 优化数据库配置,连接测试数据库以确保数据安全
2025-02-15 19:00:17 +08:00

146 lines
6.2 KiB
PHP

<?php
namespace app\queue\command\kami91order;
use app\merchant\service\OrderService;
use app\order\service\Kami91OrderService;
use think\admin\Command;
use think\console\Input;
use think\console\Output;
use think\Collection;
/**
* 同步订单状态
* Class KamiOrderStatusSync
* @package app\data\command
*/
class KamiOrderStatusIncorrectSync extends Command
{
protected function configure()
{
// $this->setName('xQueue:Book');
// $this->setDescription('导入章节内容');
$this->setName('xQueue:KamiOrderStatusIncorrectSync')->setDescription('[ 卡密列表 - 自动同步 ] 状态不正确同步');
}
/**
* @param Input $input
* @param Output $output
* @throws \think\admin\Exception
*/
protected function execute(Input $input, Output $output)
{
ini_set('memory_limit', '1024M');
$kami91server = Kami91OrderService::instance();
$where1[] = [
'status' ,'in', [4, 5]
];
// $where[] = [
// 'product_key', 'like', '%cardbuy%'
// ];
list($count, $total) = [0, $kami91server->db()->where($where1)->count()];
// print_r(1);die;
// $orderlist = $kami91server->db()->where($where)->where($where1)->order('id asc')->select()->toArray();
$kami91server->db()->where($where1)->chunk(100, function (Collection $data) use (&$count, $total, $kami91server) {
// var_dump($orderlist);die;
foreach ($data->toArray() as $vo) {
$count++;
// $orderService = OrderService::instance();
$merchant_order_id = $vo['merchant_order_id'];
// $orderService = OrderService::instance();
if(str_ends_with($merchant_order_id, '-00')){
$merchant_order_id = substr($merchant_order_id, 0, -3);
}
$order = OrderService::instance()->get('',$merchant_order_id, $vo['mid']);
if ($order) {
if ($vo['status'] == '4') {
$upData = [];
if ($order['status'] == '3') {
if (empty($order['merchant_callback_msg']) || $order['merchant_callback_msg'] == '{}') {
$upData['order_id'] = $order['order_id'];
$upData['status'] = '3';
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
} elseif (isset($order['response'])) {
$response = json_decode($order['response'], true);
if (isset($response['kami'])) {
$upData = [
'cardno' => $response['kami']['cardno'],
'cardpwd' => $response['kami']['cardpwd'],
'expire_time' => $response['kami']['expired'],
];
$upData['order_id'] = $order['order_id'];
$upData['status'] = '7';
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
} else {
$upData['order_id'] = $order['order_id'];
$upData['status'] = '3';
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
}
} else {
$upData['order_id'] = $order['order_id'];
$upData['status'] = '3';
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
}
} elseif ($order['status'] == '2') {
if (isset($order['response'])) {
$response = json_decode($order['response'], true);
if (isset($response['kami'])) {
$upData = [
'cardno' => $response['kami']['cardno'],
'cardpwd' => $response['kami']['cardpwd'],
'expire_time' => $response['kami']['expired'],
];
}
}
$upData['order_id'] = $order['order_id'];
$upData['status'] = '2';
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
}
} else {
$upData = [];
if ($order['status'] == '3') {
$kami91 = new \app\openapi\controller\Kami91($this->app);
$check = $kami91->queryFaka($vo['merchant_order_id']);
$upData['order_id'] = $order['order_id'];
if ($check == 'ok') {
$upData['status'] = '5';
//
} else {
$upData['status'] = '7';
}
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
} elseif ($order['status'] == '2') {
$upData['order_id'] = $order['order_id'];
$upData['status'] = '2';
$kami91server->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
}
}
$this->setQueueProgress("同步订单状态 {$vo['order_id']} ", $count / $total * 100);
}
}
});
$this->setQueueSuccess("同步 {$count} 个订单状态完成!");
}
}