1297 lines
43 KiB
PHP
Raw Normal View History

2024-09-29 15:43:18 +08:00
<?php
namespace app\openapi\controller;
set_time_limit(0);
ini_set('memory_limit','512M');
ini_set('default_socket_timeout', -1); //不超时
use app\channel\service\CardService;
use app\channel\service\ChannelService;
use app\channel\service\KamiService;
use app\channel\service\ProductService;
use app\gateway\controller\api\Notify;
use app\gateway\service\RedisService;
use app\kami\controller\getcookie\KaiDianBao;
use app\kami\controller\getcookie\ZhongZhao;
use app\kami\controller\suoka\JunKa;
//use app\kami\controller\suoka\ZhongZhao as ZhongZhaoSuoKA;
use app\kami\service\LockCardService;
use app\merchant\service\MerchantLogService;
use app\merchant\service\MerchantService;
use app\merchant\service\OrderAutoService;
2024-09-29 15:43:18 +08:00
use app\merchant\service\OrderHistoryService;
use app\merchant\service\OrderLastHistoryService;
use app\merchant\service\OrderLastweekHistoryService;
use app\merchant\service\OrderTwoHistoryService;
use app\merchant\service\PercentService;
use app\merchant\service\ProductService as MerchantProductService;
use app\merchant\service\ProjectProductService as MerchantProjectProductService;
use app\merchant\service\ProjectService;
use app\openapi\controller\Coretb;
use app\merchant\service\OrderService;
//use app\kami\controller\suoka\ZhongZhao as ZhongZhaoM;
//use app\openapi\controller\Coretb;
use app\order\controller\Order;
use app\order\service\AfterSalesOrderService;
use app\order\service\Kami91OrderService;
use app\order\service\OrderService as OrderBase;
use app\robot\controller\api\Qqbot;
use app\setting\service\BlackCardService;
use app\setting\service\StatService;
use dever\Log;
use think\Collection;
use think\console\Input;
use think\console\Output;
use think\exception\HttpResponseException;
use think\facade\Db;
/**
* 测试接口 上线取消
* Class Test
* @package app\gateway\api
*/
class Test extends Core
{
# 是否检测数据
protected $redis = false;
protected $check = false;
// public function __construct($async = false, $data = array(), $channel = array(), $product = array())
// {
// parent::__construct($async, $data, $channel, $product);
// $actionName = request()->action();
// $param=func_get_args();
// if(strpos($actionName, '_cardbuy') !== false){
// if(!method_exists($this,$actionName)){
//// $param = request()->param();
// $this->cardbuy($param);
// }
// }
//
// }
2024-12-04 12:33:47 +08:00
2024-09-29 15:43:18 +08:00
public function cardbuy($param)
{
var_dump($param);die;
}
public function check_merchant_limit()
{
$mid = input('mid');
$count = OrderBase::instance()->countMerchantCash($mid);
var_dump($count);
}
# 计算利润
public function profit()
{
$day = input('day');
if (!$day) {
$day = date('Y-m-d', strtotime('-1 day'));
}
// $orderHistoryService = OrderHistoryService::instance();
$orderHistoryService = OrderLastHistoryService::instance();
$data = $orderHistoryService->getTotalData($day);
// var_dump($data);
if ($data) {
StatService::instance()->handle($day, $data);
}
}
public function upblacks()
{
$infoArray = BlackCardService::instance()->db()->select()->toArray();
foreach ($infoArray as $k=>$v){
if(str_contains($v['desc'], "")){
$order_id = explode('', $v['desc']);
if(str_contains($order_id[1], "C")){
// var_dump($order[1]);die;
$order = OrderLastHistoryService::instance();
$info = $order->db()->field('mid,merchant_order_id,mid,param,order_id')->where(['order_id' => $order_id[1]])->find();
if(!$info){
$order = OrderTwoHistoryService::instance();
$info = $order->db()->field('mid,merchant_order_id,mid,param,order_id')->where(['order_id' => $order_id[1]])->find();
}
if(!$info){
$order = OrderHistoryService::instance();
$info = $order->db()->field('mid,merchant_order_id,mid,param,order_id')->where(['order_id' => $order_id[1]])->find();
}
if($info){
$param = json_decode($info['param'],true);
$merchant = MerchantService::instance()->get($info['mid']);
$Seesionkey = $merchant['refresh_token'];#淘宝此token为直充系统授权token
$request = [];
$request['agentId'] = $merchant['agentId'];
$request['agentkey'] = $merchant['agentkey'];
if(isset($merchant['other_param']) && $merchant['other_param'] && str_contains($merchant['other_param'], "reapi_appkey"))
{
$other_param = json_decode($merchant['other_param'], true);
$request['agentId'] = $other_param['reapi_appkey'];
$request['agentkey'] = $other_param['reapi_appsecret'];
$Seesionkey = $merchant['access_token'];
}
$request['tid'] = $info['merchant_order_id'];
$request['access_token'] = $Seesionkey;
$response = Coretb::taobaosdk('getByTrade',$request);
$json = json_encode($response);
$array = json_decode($json,true);
if(is_array($array)){
if(isset($array['open_uid']) && $array['open_uid']){
$uid = $array['open_uid'];
BlackCardService::instance()->db()->where(array('id' => $v['id']))->update(['value'=>$uid]);
// var_dump($uid);
}
}
}
}
// $infoss = json_decode($v,true);
}
// var_dump($data);die;
}
}
public function test()
{
2024-12-04 12:33:47 +08:00
$LockCardService = LockCardService::instance();
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
// $cardno = $response['kami']['cardno'];
// $cardpwd = $response['kami']['cardpwd'];
// $expire_time = $response['kami']['expired'];
$suoka = $LockCardService->call('',12, 2409301790976058, 123456, 123, 100,'Whymcl');
return $suoka;
2024-09-29 15:43:18 +08:00
}
public function stat_amount()
{
$day = input('day');
if (!$day) {
$day = date('Y-m-d', strtotime('-1 day'));
// var_dump($day);die;
}
// $orderHistoryService = OrderHistoryService::instance();
$orderHistoryService = OrderLastweekHistoryService::instance();
// if (!$day) {
// $day = date('Y-m-d', strtotime('-1 day'));
// }
$begin = $day . ' 00:00:00';
$after = $day . ' 23:59:59';
// $begin = '2024-08-01' . ' 00:00:00';
// $after = $day . ' 23:59:59';
$time = [$begin, $after];
$db = $orderHistoryService->db()->whereRaw('status in(2,3) ');
$where = array();
if ($where) {
$db->where($where);
}
$data = $db->whereBetween('create_at', $time)->field('cash,mid,cid,id,order_id,actual_cash,product_key,account,status,isp')->order('id asc')->select()->toArray();
// var_dump($data);die;
if ($data) {
$productService = ProductService::instance();
$zhekou = PercentService::instance();
$merchant = MerchantService::instance();
// $rule = $zhekou->get(1, 'jxk_cardbuy');
// var_dump($rule);die;
foreach ($data as $k => $v) {
$rule = $zhekou->get($v['mid'], $v['product_key']);
if ($rule && $rule['percent']) {
$percent = $rule['percent'];
if (isset($rule['percent_type']) && $rule['percent_type']) {
$percent_type = $rule['percent_type'];
}
$percent = $merchant->getPercent($percent, $v['account'], $v['product_key'], $v['cash'], $rule['rule'], $v['isp']);
}else{
$info = $merchant->getInfo($v['mid']);
$percent=$info['percent'];
$percent_type= 1;
}
if ($percent > 0) {
if ($percent_type == 2) {
$new_cash = $percent;
} else {
$new_cash = $percent*$v['cash'];
}
}
// var_dump($new_cash);
$orderHistoryService->db()->where(['order_id'=>$v['order_id']])->update(['actual_cash'=>$new_cash]);
// var_dump($expression);die;
}
die;
# 检查是否是固定数值
// var_dump($product);die;
}
print_r($data);
}
public function test_daochu(){
$data = Db::name('test_daochu')->whereNull('cardno')->select()->toArray();
foreach ($data as $k => $v) {
$order = Db::name('merchant_order_lastweek_history')->where(['merchant_order_id'=>$v['merchant_order_id']])->field('merchant_order_id,order_id,mid,response,channel_callback_msg,status')->find();
if(!$order){
$order = Db::name('merchant_order_last_history')->where(['merchant_order_id'=>$v['merchant_order_id']])->field('merchant_order_id,order_id,mid,response,channel_callback_msg,status')->find();
}
if(!$order){
$order = Db::name('merchant_order_two_history')->where(['merchant_order_id'=>$v['merchant_order_id']])->field('merchant_order_id,order_id,mid,response,channel_callback_msg,status')->find();
}
if(!$order){
var_dump($v);continue;
}
if($order){
$response = json_decode($order['response'],true);
if(isset($response['kami'])){
$up = [
'cardno'=>$response['kami']['cardno'],
'cardpwd'=>$response['kami']['cardpwd']
];
}else{
$json = json_decode($$order['channel_callback_msg'],true);
if(isset($json['kami'])){
$up = [
'cardno'=>$json['kami']['cardno'],
'cardpwd'=>$json['kami']['cardpwd']
];
}
}
if(!$up){
var_dump($v);continue;
}
if($up){
Db::name('test_daochu')->where(['merchant_order_id'=>$v['merchant_order_id']])->update($up);
}
}
}
}
public function test_wyk(){
$data = Db::name('wyk_kmi')->whereNotNull('orderno')->select()->toArray();
foreach ($data as $vo) {
$order = Db::name('merchant_order_history')->where(['order_id'=>$vo['orderno']])->find();
if(!$order){
var_dump($vo);continue;
}
$response = json_decode($order['response'],true);
if(isset($response['kami'])){
$cardno=$response['kami']['cardno'];
$cardpwd=$response['kami']['cardpwd'];
$cash = $order['cash'];
$expire_time = $response['kami']['expired'];
$group_id = '70059';
}else{
$json = json_decode($order['channel_callback_msg'],true);
if(isset($json['kami'])){
$cardno=$json['kami']['cardno'];
$cardpwd=$json['kami']['cardpwd'];
$cash = $order['cash'];
$expire_time = $json['kami']['expired'];
$group_id = '70059';
}
}
if(isset($cardno)){
$KamiService = KamiService::instance();
// var_dump($cardno);
$upkami = $KamiService->upKami($cardno, $cardpwd, $cash,$expire_time,$group_id);
if($upkami){
Db::name('wyk_kmi')->whereLike('orderno', $vo['orderno'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}
}
// $suoka = $channelService->call('lockCard', $order['cid'], $order);
}
}
2024-09-29 15:43:18 +08:00
public function taobao_notify(){
$input = input();
$merchant_order_id = $input['merchant_order_id'];
$order = Db::name('merchant_order')->where(['merchant_order_id'=>$merchant_order_id])->find();
// if($order['status'] == 2){
// #成功1
//
// $apiParams['coop_order_status'] = 'SUCCESS';
//
//// $rsp_info = '';
// } elseif ($order['status'] == 3) {
// # 失败...
//
// $apiParams['coop_order_status'] = 'FAILED';
// $apiParams['failed_code'] = '0503';
// $apiParams['failed_reason'] = '充值失败';
// }
//
////
//
// }
//
// $taobao=new \app\openapi\controller\Taobao($this->app);
// $msg = $taobao ->notify($url,$param['merchant_order_id'] ,$merchant,$apiParams);
}
public function upkami()
{
$group_id = input('group_id');
$mid = input('mid');
$data = DB::name('ssss1234')->whereLike('status', '%已锁定%')->select()->toArray();
foreach ($data as $vo) {
// $m = DB::name('ssss1234')->whereLike('order', $vo['order'])->select()->toArray();//这个查出来的是很多
// var_dump($vo);die;//还不行?
#这个出来的是有空格的我要去掉空格hao空格可能好长的那种;等会把身份证给我我要去程序员客栈认证//////可以吗?
$pattern = '/\s+/';
// $cardno = trim($pattern,'', $vo['卡号']);//正则判断去掉所有空格
$cardno = trim($vo['卡号']);//这是去掉首尾的空格
$cardpwd = trim( $vo['卡密']);
$cash = trim($vo['面值']);
$experid = rtrim($vo['过期时间']);#这个前面空格保留我要去掉最后面的空格比如2024-04-09 12:00:00 我要去掉00后面的空格
#宝蓝那边的问题是这个原因吗/1
$KamiService = KamiService::instance();
// var_dump($cardno);
$upkami = $KamiService->upKami($cardno, $cardpwd, $cash,$experid,$group_id,$mid);
if($upkami){
Db::name('ssss1234')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}else{
#判断是否为之前的订单二锁定二次销售
$data = array();
$data['cnum'] = $cardno;
$data['cpwd'] = $cardpwd;
$data['value'] = $cash;
// $data['kami_group_id'] = $sid;
$info = $KamiService->db()->where($data)->find();
if($info && $info['use'] == 2){
#更新为1
$KamiService->db()->where($data)->update(['use'=>1]);
var_dump($cardno);
$erorder = $KamiService->db()->where($data)->find();
if($erorder['use'] == 1){
Db::name('ssss1234')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格
}
// 影响
}
}
// var_dump($upkami);die;
}
}
public function refuse()
{
$merchant_order_id = '2152497721850058778';
$merchant = MerchantService::instance()->get(1);
$app_data = json_decode($merchant['other_param'],true);
// $request['agentId'] = '34615444';
// $request['agentkey'] = '2e59a0c00b4fafd9ae46bedced6eccc3';
$request['agentId'] = $app_data['reapi_appkey'];
$request['agentkey'] = $app_data['reapi_appsecret'];
$request['access_token'] = $merchant['access_token'];
$request['refund_id'] = "156290305490057887";
$request['RefuseMessage'] = "测试一下";
$request['tid'] = $merchant_order_id;
$request['oid'] = $merchant_order_id;
$request['proof'] = "/www/sites/reapi/index/extend/refuse/QN_2137603910451763869.jpg";
$request['Phase'] = "aftersale";
$request['RefundVersion'] = "1715680501592";
$request['refuse_reason_id'] = "999";
//附件上传的机制参见PHP CURL文档在文件路径前加@符号即可
// $request;
$requests = \app\openapi\controller\Coretb::taobaosdk("refundRefuse", $request);
var_dump($requests);
}
public function chuli_bug(){
$yema = input('yema');
$order = Db::name('merchant_order')->where(['status'=>'7','cid'=>4])->page($yema,20)->select()->toArray();
$LockCardService = LockCardService::instance();
foreach ($order as $vo => $value) {
$response = json_decode($value['response'], true);
$cardno = $response['kami']['cardno'];
$cardpwd = $response['kami']['cardpwd'];
$expire_time = $response['kami']['expired'];
$suoka = $LockCardService->call('suoka', $value['cid'], $cardno, $cardpwd, $value['pid'], $value['cash']);
var_dump($value['order_id'].'状态:'.$suoka);
if ($suoka == 'ok' || $suoka == 'old_ok') {
Db::name('merchant_order')->where(['order_id'=>$value['order_id']])->update(['status'=>'3']);
}
}
2024-12-04 12:33:47 +08:00
}
public function daoru_card()
{
$data = Db::name('daoru_card')->whereNotNull('order')->select()->toArray();
foreach ($data as $vo) {
#{"Cards":"boqavdDEDS0hRpC+9o69Cgt+tjcep22QutcBBEVyPk4mff+KtczalI3DXkorDd54bk\/CNn3eblgAVTfiqgcHGuHpjjtwFfXOhvCbQFnB228=","OrderId":"13738532335529984","Sign":"f2eef4f7ce4d6408464f5c6e65f6546f","Status":"1","TimeStamp":"20240823152933","UserId":"20832","UserOrderId":"X202408239816683082901021","kami":{"cardno":"2404231940911308","cardpwd":"7732100002366491","expired":"2027-08-23 00:00:00"},"s_nubmer":"2404231940911308"}
$order = Db::name('merchant_order_history')->where(['order_id'=>$vo])->field('order_id,pid,cash,cid,channel_callback_msg,mid')->find();
if($order){
#宝蓝那边的问题是这个原因吗/1
$KamiService = KamiService::instance();
$card =json_decode($order['channel_callback_msg'],true);
// var_dump($order);die;
2024-12-04 12:33:47 +08:00
if(isset($card['kami'])){
// var_dump($card['kami']);
$upkami = $KamiService->upKami($card['kami']['cardno'], $card['kami']['cardpwd'], $order['cash'],$card['kami']['expired'],$order['cid'].'00'.$order['pid'],-1);
// var_dump($upkami);
2024-12-04 12:33:47 +08:00
if($upkami){
Db::name('daoru_card')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}else{
$data = array();
$data['cnum'] = $card['kami']['cardno'];
$data['cpwd'] = $card['kami']['cardpwd'];
$data['value'] = $order['cash'];
// $data['kami_group_id'] = $sid;
$info = $KamiService->db()->where($data)->find();
if($info){
$infos = $KamiService->db()->where($data)->update(['use'=>1,'status'=>1]);
if($infos){
Db::name('daoru_card')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}else{
var_dump($vo);
}
}else{
var_dump($vo);
}
// $KamiService->db()->whereLike('order', $vo['order'])->delete();
2024-12-04 12:33:47 +08:00
}
}else{
var_dump($vo);
}
// var_dump($cardno);
}else{
var_dump($vo);
}
}
}
public function test_ts()
{
$data = Db::name('test_ts')->whereNotNull('order')->select()->toArray();
$channelService = ChannelService::instance();
foreach ($data as $vo) {
$order = Db::name('merchant_order_history')->where(['order_id'=>$vo['order']])->find();
if(!$order){
continue;
}
2024-12-04 12:33:47 +08:00
$suoka = $channelService->call('lockCard', $order['cid'], $order);
if($suoka !== 'ok' && $suoka !== 'old_ok'){
var_dump($vo);
}else{
Db::name('test_ts')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}
}
}
2024-12-04 12:33:47 +08:00
public function cleanDuplicateOrders()
{
// 批次大小
$idsToKeep = Db::table('merchant_order_history')
->field('id, order_id')
->order('id')
->limit(700)
->select()
->toArray();
// var_dump($idsToKeep);
if (empty($idsToKeep)) {
return json(['message' => 'No records found.']);
}
2024-12-04 12:33:47 +08:00
// 将要保留的 id 和 order_id 转换为数组
$keepIds = array_column($idsToKeep, 'id');
$keepOrderIds = array_column($idsToKeep, 'order_id');
// 开始事务
Db::startTrans();
try {
// 删除与这些 order_id 相同但 id 不同的数据
$affectedRows = Db::table('merchant_order_history')
->whereIn('order_id', $keepOrderIds)
->whereNotIn('id', $keepIds)
->delete();
// 提交事务
Db::commit();
return json([
'message' => "Deleted $affectedRows records with matching order_id but different id."
]);
} catch (\Exception $e) {
// 如果发生错误,回滚事务
Db::rollback();
return json([
'error' => "Error cleaning orders: " . $e->getMessage()
]);
}
2024-12-04 12:33:47 +08:00
2024-09-29 15:43:18 +08:00
}
#获取买家id
public function get_nick($merchant_order_id,$mid)
{
$merchant = MerchantService::instance()->get($mid);
$Seesionkey = $merchant['refresh_token'];#淘宝此token为直充系统授权token
$request = [];
$request['agentId'] = $merchant['agentId'];
$request['agentkey'] = $merchant['agentkey'];
$request['tid'] = $merchant_order_id;
$request['access_token'] = $Seesionkey;
$response = Coretb::taobaosdk('getByTrade',$request);
$json = json_encode($response);
$array = json_decode($json,true);
if(is_array($array)){
if(isset($array['open_uid']) && $array['open_uid']){
return $array['open_uid'];
}
}
Log::write('openapi', 'taobao_getnick', $json);#写入到日志里
return 'error';
}
public function finishafter()
{
$day = input('day');
/*
if (!$day) {
$day = date('Y-m-d', strtotime('-1 day'));
}
*/
$page = 1;
while($this->finishOne_after($day, $page)) {
$page++;
}
}
public function finishOne_after($day, $page)
{
$orderService = AfterSalesOrderService::instance();
$data = $orderService->getFinishData($day, $page);
if ($data) {
foreach ($data as $k => $v) {
# 先插入一条历史数据
$id = $v['id'];
unset($v['id']);
$state = Db::name('merchant_order_history_aftersales')->insert($v);
if ($state) {
$orderService->del($id);
}
}
return true;
} else {
return false;
}
}
public function finishkami()
{
$day = input('day');
/*
if (!$day) {
$day = date('Y-m-d', strtotime('-1 day'));
}
*/
$page = 1;
while($this->finishOne_kami($day, $page)) {
$page++;
}
}
public function finishOne_kami($day, $page)
{
$orderService = Kami91OrderService::instance();
$data = $orderService->getFinishData($day, $page);
if ($data) {
foreach ($data as $k => $v) {
# 先插入一条历史数据
$id = $v['id'];
unset($v['id']);
$state = Db::name('merchant_order_history_kami91')->insert($v);
if ($state) {
$orderService->del($id);
}
}
return true;
} else {
return false;
}
}
public function checkkami()
{
$order = $this->getOrderInfo(input('order_id'),'','');
$order_id = $order['order_id'].'_R';
// var_dump($order);die;
$channelService = ChannelService::instance();
$check = $channelService->call('replaceCard_query', $order['cid'], $order_id);
var_dump($check);
}
public function cancel(){
$order_id = input('order_id');
$data = OrderService::instance()->get($order_id);
if(isset($data['num']) && $data['num']>0) {
$data['order_id'] = $data['order_id'].'_'.$data['num'];
}
$channelService = ChannelService::instance();
if($data['cid'])
$channelList = $channelService->db()->where(['id'=>$data['cid'],'status'=>1,'cancel_status'=>1])->find();
if(!$channelList){
var_dump('渠道不支持');die;
}
$result = $channelService->call('cancel', $data['cid'], $data);
var_dump($result);die;
}
public function cancel_list(){
$mid = input('mid');
$timeout_cancel = input('timeout');
$timeout_cancel = intval($timeout_cancel);
$cid = input('cid');
$product_key = input('product_key');
$cash = input('cash');
$num = input('num');
// if($num){
// $num
// }
$where = [['status','=',4],['mid','=',$mid],['cid','=',$cid],['cash','=',$cash],['product_key','=',$product_key],['expire_time','<=',date('Y-m-d H:i:s',time()+$timeout_cancel)],['num','=',$num]];
// list($count, $total) = [0, OrderService->db()->where($where)->order('id asc')->count()];
// $order_id = input('order_id');
$data = OrderService::instance()->db()->where($where)->order('id asc')->select()->toArray();
$channelService = ChannelService::instance();
foreach ($data as $k => $vo) {
if(isset($vo['num']) && $vo['num']>0) {
$vo['order_id'] = $vo['order_id'].'_'.$vo['num'];
}
$result = $channelService->call('cancel', $vo['cid'], $vo);
var_dump($result);
}
}
public function arrayToJson()
{
$input = input();
throw new HttpResponseException(json($input));
}
public function test_test(){
$where['mid'] = 1;
// $where['product_key'] = $product_key;
$data = MerchantProductService::instance()->db()->where($where)->order('sort desc')->orderRand()->select()->toArray();
var_dump($data);
}
public function renwu()
{
$input=input();
// $this->_queue('[ 淘宝直充 - 自动同步 ] 主动更新售后订单信息', "xQueue:TaobaoAfterSalesOrderInfo", 0, [], 0,60);
// $this->_queue('[ 淘宝直充 - 自动同步 ] 自动同步关联售后订单并尝试锁卡', "xQueue:TaobaoAfterSalesOrdeRelated", 0, [], 0,60);
// $this->_queue('[ 订单列表 ] 订单主动查单', "xQueue:OrderQuery", 0, [], 0,1800);
// $this->_queue('[ 淘宝直充 - 自动同步 ] 主动更新售后订单信息', "xQueue:TaobaoAfterSalesOrderInfo", 0, [], 0,60);
// $this->_queue('[ 淘宝直充 - 自动同步 ] 自动同步关联售后订单并尝试锁卡', "xQueue:TaobaoAfterSalesOrdeRelated", 0, [], 0,60);
// $this->_queue('[ 快手商家-订单列表 ] 渠道超时订单拦截', "xQueue:KsOrderChanelTimeoutInt", 0, [], 0, 60);
// $this->_queue('[ 淘宝直充 - 自动同步 ] 特定渠道库存或余额不足自动下架', "xQueue:TaobaoAutoUpOrDown", 0, [], 0, 180);
// $this->_queue('[ 淘宝直充 - 自动同步 ] 主动更新订单状态', "xQueue:TaobaoAfterSalesOrderUpStatus", 0, [], 0, 300);
// $this->_queue('[ 淘宝直充 - 自动同步 ] 失败订单二次通知', "xQueue:TaobaoFailOrderSecondNotify", 0, [], 0, 600);
// $this->_queue('[ 淘宝直充 - 黑名单 ] 自动拉黑规则', "xQueue:TaobaoBlacklistRules", 0, [], 0, 3600);
// $this->_queue('[ 卡密列表 - 自动同步 ] 标准商户默认更新', "xQueue:KamiOrderStatusStandardUp", 0, [], 0, 1);
// $this->_queue('[ 淘宝订单 - 自动同步 ] 强行更新', "xQueue:KamiOrderStatusForceUpdate", 0, [], 0, 180);
// $this->_queue('[ 订单列表 ] 卡密完成订单迁移', "xQueue:KamiOrderFinish", 0, [], 0, 72400);
// $this->_queue('[ 订单列表 ] 完成订单迁移', "xQueue:OrderFinish", 0, [], 0, 28800);
$this->_queue($input['title'], $input['command'], 0, [], 0, $input['loops']);
}
//
public function getOrderInfo($order_id,$merchant_order_id,$mid)
{
$orderService = OrderService::instance();
$order = $orderService->get($order_id, $merchant_order_id, $mid);
if (!$order) {
$orderHistoryService = OrderHistoryService::instance();
$order = $orderHistoryService->get($order_id, $merchant_order_id, $mid);
}
return $order;
}
public function cgetkami(){
// var_dump('123');die;
$request['username'] = input('username');
$request['password'] = input('password');
$request['sporder_id'] = input('sporder_id');
$request['version'] = '1.0';
$sign = md5('username='.$request['username'].'&sporder_id='.$request['sporder_id'].'||25f570cb9244088641124df31f12aaa4');
$request['sign'] = $sign;
$url = 'http://pfapi.anh618.com/queryorder.aspx';
$response = http_get($url,$request);
$array = (array) simplexml_load_string($response);
// var_dump($array);die;
// $array = (array) $array['info'];
// var_dump($array);die;
if (isset($array['Order']) && $array['Order']) {
$array['Order'] = (array) $array['Order'];
}
if (isset($array['info']) && $array['info']) {
$array['info'] = (array) $array['info'];
}
if (isset($array['Card']) && $array['Card']) {
$array['Card'] = (array) $array['Card'];
}
if (!$array) {
$msg = 'error';
} elseif (isset($array['info']['ret']) && $array['info']['ret'] == '0' && isset($array['Order']['orderid']) && $array['Order']['orderid']) {
$array['kami'] = [];
if(isset($array['Card'][0])){
foreach ($array['Card'] as $key=>$value){
$value = (array) $value;
$up = array
(
'cardno' => $value['cardnum'],
'cardpwd' => $value['cardpass'],
'ex' => $value['expriedate'],
// 'value' => $array['Order']['rtlprice'],
);
DB::name('test_kami_zm')->insert($up);
}
var_dump($array['kami']);die;
}
}
}
public function refundget($vo,$request)
{
if(isset($request['sub_code'])){
unset($request['sub_code']);
}
$request['refundId'] = $vo['refund_id'];
// $request['access_token'] = $merchant['access_token'];
$response = Coretb::taobaosdk('refundInfo', $request);
$json = json_encode($response);
$array = json_decode($json, true);
if (isset($array['refund'])) {
$array = $array['refund'];
$RefundVersion = $array['refund_version'];
return $RefundVersion;
} else {
return 'error';
}
}
public function quchong()
{
// 'linshi_order'
// $page = 1;
// while ($this->finishOnes( $page)) {
// $page++;
// }
$start = date('Y-m-d', strtotime('-8 day'));
$day = date('Y-m-d', strtotime('-3 day'));
$begin = $start . ' 00:00:00';
$after = $day . ' 23:59:59';
$time = [$begin, $after];
$OrderLastweekHistoryService = OrderLastweekHistoryService::instance();
$order_data = $OrderLastweekHistoryService->db()->whereBetween('create_at', $time)->order('id asc')->select()->toArray();;
// $order_data = $OrderLastweekHistoryService->db()->limit(78,1000)->select()->toArray();
foreach ($order_data as $vo) {
$order_datas = Db::name('linshi_order')->where('order_id', $vo['order_id'])->find();
if(!$order_datas){
$state = Db::name('linshi_order')->insert($vo);
}else{
$m = $OrderLastweekHistoryService->db()->where('order_id', $vo['order_id'])->count();
if($m > 1){
$OrderLastweekHistoryService->db()->where('id', $vo['id'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}
}
}
}
public function finishOnes($page){
$OrderLastweekHistoryService = OrderLastweekHistoryService::instance();
// $order_data = $OrderLastweekHistoryService->db()->limit(5000)->select()->toArray();
if ($page) {
$limit = 10000;
$page = $page - 1;
$page = $page * $limit;
$order_data = $OrderLastweekHistoryService->db()->limit(2,1000)->select()->toArray();
// $db->limit($page, $limit);
}
$order_data = $OrderLastweekHistoryService->db()->limit(2,1000)->select()->toArray();
foreach ($order_data as $vo) {
$order_datas = Db::name('linshi_order')->where('order_id', $vo['order_id'])->find();
if(!$order_datas){
$state = Db::name('linshi_order')->insert($vo);
}else{
$m = $OrderLastweekHistoryService->db()->where('order_id', $vo['order_id'])->count();
if($m > 1){
$OrderLastweekHistoryService->db()->whereLike('id', $vo['id'])->delete();//这个用like会不会太范了不会因为order是唯一只是怕空格影响
}
}
}
}
2024-11-02 15:27:08 +08:00
public function order_test()
{
$order = input('order_id');
$num = 0;
$orderService = OrderService::instance();
if(str_contains($order,'_')){
$orders = explode('_',$order);
$order = $orders[0];
$num = $orders[1];
}
$data = $orderService->get($order, '');
if($num != $data['num']){
$this->no(-101);
}
if (!$data) {
$this->no(-101);
}
$result['cash'] = $data['cash'];
$result['order_id'] = $data['order_id'];
$result['merchant_order_id'] = $data['merchant_order_id'];
// $result['status'] = $data['status'];
if ($data['status'] < 0) {
$data['status'] = 1;
}
$result['status'] = $data['status'];
if (!$data['channel_callback_msg']) {
$data['channel_callback_msg'] = '{}';
}
$request = json_decode($data['channel_callback_msg'], true);
$number = '';
if (isset($request['s_number']) && $request['s_number']) {
$number = $request['s_number'];
}
$order_name = sysconf('order_name');
if ($number && $order_name) {
$result[$order_name] = $number;
} elseif ($number) {
$result['s_number'] = $number;
}
$this->yes($result);
}
2024-09-29 15:43:18 +08:00
public function execute()
{
ini_set('memory_limit', '1024M');
2024-12-04 12:33:47 +08:00
$day = input('day');
$page = 1;
$this->finishOne_lastWeek($day, $page);
// var_dump($day);die;
// var_dump($day);die;
// MerchantService::instance()->init($day);
/*
if (!$day) {
$day = date('Y-m-d', strtotime('-1 day'));
}
*/
$page = 1;
while ($this->finishOne_lastWeek($day, $page)) {
$page++;
}
}
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
public function finishOne_lastWeek($day, $page)
{
$orderLastHistoryService = OrderHistoryService::instance();
$orderLastWeekHistoryService = OrderTwoHistoryService::instance();
$data = $this->getFinishDatas($day, $page, $orderLastWeekHistoryService,4);
list($count, $total) = [0, $data->count()];
if($total==0){
return false;
}
return $data->chunk(1000, function (Collection $data) use (&$count, $total, $orderLastHistoryService, $orderLastWeekHistoryService) {
foreach ($data->toArray() as $vo) {
if ($vo) {
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
# 先插入一条历史数据
$id = $vo['id'];
unset($vo['id']);
$state = $orderLastHistoryService->up($vo);
if ($state) {
$orderLastWeekHistoryService->del($id);
$count++;
// $this->setQueueProgress("迁移最近一个月订单 {$vo['order_id']} ", $count / $total * 100);
}
}else{
return false;
2024-11-02 15:27:08 +08:00
}
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
}
return true;
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
});
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
}
#上个月
2024-09-29 15:43:18 +08:00
2024-12-04 12:33:47 +08:00
// return true;
public function getFinishDatas($day, $page, $orderService ,$type = 1)
{
if (!$day) {
$start = date('Y-m-d', strtotime('-360 day'));
$day = date('Y-m-d', strtotime('-1 day'));
if($type == 5){
$start = date('Y-m-d', strtotime('-7 day'));
$day = date('Y-m-d', strtotime('-1 day'));
2024-11-02 15:27:08 +08:00
}
2024-12-04 12:33:47 +08:00
if($type == 2){
$start = date('Y-m-d', strtotime('-360 day'));
$day = date('Y-m-d', strtotime('-8 day'));
}
if($type == 3){
$start = date('Y-m-d', strtotime('-360 day'));
$day = date('Y-m-d', strtotime('-31 day'));
}
if($type == 4){
$start = date('Y-m-d', strtotime('-365 day'));
$day = date('Y-m-d', strtotime('-91 day'));
}
} else {
$start = $day;
2024-11-02 15:27:08 +08:00
}
2024-12-04 12:33:47 +08:00
$begin = $start . ' 00:00:00';
$after = $day . ' 23:59:59';
$time = [$begin, $after];
$db = $orderService->db()->whereRaw('status in(2,3) ');
$db = $db->whereBetween('create_at', $time)->order('id asc');
if ($page) {
$limit = 10000;
$page = $page - 1;
$page = $page * $limit;
$db->limit($page, $limit);
}
// var_dump($db);die;
return $db;
2024-09-29 15:43:18 +08:00
}
public function finishOne($day, $page)
{
$orderHistoryService = OrderLastweekHistoryService::instance();
// $orderService = OrderHistoryService::instance();
$orderService = OrderLastHistoryService::instance();
$data = $this->getFinishData($day, $page, $orderService);
//??//
list($count, $total) = [0, $data->count()];
$data->chunk(1000, function (Collection $data) use (&$count, $total, $orderService, $orderHistoryService) {
// var_dump($orderlist);die;
foreach ($data->toArray() as $vo) {
if ($vo) {
# 先插入一条历史数据
$id = $vo['id'];
unset($vo['id']);
$state = $orderHistoryService->up($vo);
if ($state) {
$orderService->del($id);
$count++;
var_dump($count);
}
}
}
});
}
public function getFinishData($day, $page, $orderService)
{
if (!$day) {
$start = date('Y-m-d', strtotime('-7 day'));
$day = date('Y-m-d', strtotime('-1 day'));
} else {
$start = $day;
}
$begin = $start . ' 00:00:00';
$after = $day . ' 23:59:59';
$time = [$begin, $after];
$db = $orderService->db()->whereRaw('status in(2,3) ');
$db = $db->whereBetween('create_at', $time)->order('id asc');
if ($page) {
$limit = 10000;
$page = $page - 1;
$page = $page * $limit;
$db->limit($page, $limit);
}
return $db;
}
public function upBlack($type, $value, $desc = '')
{
$BlackCardService = BlackCardService::instance();
$where['type'] = $type;
$where['value'] = $value;
$info = $BlackCardService->db()->where($where)->find();
if($info){
return 'false';
}else{
$update['type'] = $type;
$update['value'] = $value;
$update['desc'] = $desc;
$update['status'] = 1;
$BlackCardService->db()->insert($update);
return '1';
}
}
//
#==================================================================================
protected function redis()
{
if (!$this->redis) {
$this->redis = RedisService::getInstance();
}
}
public function test_shuju(){
$orderhistory = OrderHistoryService::instance();
$where = ['cid' =>4];
$where1[] = [
'response','like','%kami%'
];
$start = '2024-05-22';
$day = '2024-06-01';
$begin = $start . ' 00:00:00';
$after = $day . ' 23:59:59';
$time = [$begin, $after];
$order = $orderhistory->db()->where($where)->where($where1)->whereBetween('create_at', $time)->select()->toArray();
$LockCardService = LockCardService::instance();
foreach ($order as $vo) {
$response= json_decode($vo['response'],true);
$cardno = $response['kami']['cardno'];
$cardpwd = $response['kami']['cardpwd'];
$expire_time = $response['kami']['expired'];
$suoka = $LockCardService->call('suoka', $vo['cid'],$cardno,$cardpwd,$vo['pid'],$vo['cash']);
Log::write('card', "kaidianbao", $suoka.$cardno);
// var_dump($suoka,$cardno);
}
}
}