REAPI/app/queue/command/kami91order/KamiOrderAssociation.php
e022dbff05 feat(queue): 新增临时锁卡任务
- 添加 LinSuoKa 类实现临时锁卡功能
- 优化卡密订单关联逻辑,处理状态为 4 的订单- 新增 redis 记录订单详情,用于限单和退款处理
- 修改 Qiling 类中的签名生成逻辑
- 更新 Test 控制器中的 test_ts 方法,增加对不同订单表的处理
2025-05-06 15:09:26 +08:00

110 lines
4.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\queue\command\kami91order;
use app\gateway\service\RedisService;
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 Book
* @package app\data\command
*/
class KamiOrderAssociation extends Command
{
protected function configure()
{
$this->setName('xQueue:KamiOrderAssociation')->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();
// $where = [
// 'status' => '1' ,
// ];
// $where[] = [
// 'product_key','like','%cardbuy%'
// ];
#优化掉无用的like此处全部为需要处理的卡密订单
list($count, $total) = [0, $kami91server->db()->where('status' ,'in', '1,4')->count()];
# 卡密订单关联
$kami91server->db()->where('status' ,'in', '1,4')->chunk(100, function (Collection $data) use (&$count, $total) {
// var_dump($orderlist);die;
foreach ($data->toArray() as $vo) {
$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);
}
if($vo['status'] == 1 ){
$order = OrderService::instance()->get('', $merchant_order_id, $vo['mid']);
if ($order) {
$count++;
$upData = array();
$upData['order_id'] = $order['order_id'];
$upData['status'] = 4;
if($vo['pid'] == '999999'){
#此为默认卡密订单无用,需要更新产品信息
$upData['product_key'] = $order['product_key'];
$upData['pid'] = $order['pid'];
}
Kami91OrderService::instance()->db()->where(array('merchant_order_id' => $vo['merchant_order_id']))->update($upData);
try{
$redis = RedisService::getInstance();
$redis_key = 'Kami_wait_'.$order['order_id'];
$getRedisData = $redis->get($redis_key);
if($getRedisData){
$redis->delete($redis_key);
$redis->push('submit', $getRedisData);
}
}catch (\Exception $e){
}
$this->setQueueProgress("同步关联订单 {$vo['order_id']} ", $count / $total * 100);
}
}elseif ($vo['status'] == 4){
#此处业务逻辑为优化同时进单导致后期识别的订单使用redis进行优化查询处理待核实1.状态为处理中的情况下订单列表是否已成功或者失败或者提单但是redis依旧存在卡密等待处理的记录
try{
$redis = RedisService::getInstance();
$redis_key = 'Kami_wait_'.$vo['order_id'];
$getRedisData = $redis->get($redis_key);
if($getRedisData){
$count++;
$redis->delete($redis_key);
$redis->push('submit', $getRedisData);
$this->setQueueProgress("优化重提订单 {$vo['order_id']} ", $count / $total * 100);
}
}catch (\Exception $e){
}
}
}
});
$this->setQueueSuccess("同步关联 {$count} 个订单完成!");
}
}