2024-09-29 15:43:18 +08:00

1391 lines
46 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\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\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);
// }
// }
//
// }
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()
{
$begin = '2024-08-06 00:00:00';
$after = '2024-08-06 23:59:59';
$orderHistoryService = OrderLastHistoryService::instance();
$time = [$begin, $after];
// $db =Db::name('daxiangka_heidui');
// $db = $orderHistoryService->db()->whereRaw('status in(3) and cid = 5');
// $data = $db->whereBetween('create_at', $time)->order('id asc')->select()->toArray();
$data = Db::name('baka_hedui')->select();
foreach ($data as $k => $v) {
$id_order = $orderHistoryService->db()->whereRaw('status = 2 and cid = 8 and channel_order_id like '.$v['channel_order_id'])->find();
// if()
$sd = Db::name('daxiangka_heidui')->where(['order_id' => $v['order_id']])->delete();
// var_dump($id_order['order_id']);
// $id_order = $orderHistoryService->db()->whereBetween('create_at', $time)->whereRaw('status in(2) and cid = 5')->where(['merchant_order_id' => $v['merchant_order_id']])->findOrEmpty();
if (!$id_order) {
var_dump($v);
// var_dump($v['merchant_order_id']);
}
}
}
public function daxk()
{
$begin = '2024-08-06 00:00:00';
$after = '2024-08-06 23:59:59';
$orderHistoryService = OrderLastHistoryService::instance();
$time = [$begin, $after];
// $db =Db::name('daxiangka_heidui');
$db = $orderHistoryService->db()->whereRaw('status in(3) and cid = 5');
$data = $db->whereBetween('create_at', $time)->order('id asc')->select()->toArray();
// $data = Db::name('daxiangka_heidui')->select();
foreach ($data as $k => $v) {
$id_order = Db::name('daxiangka_heidui')->where(['merchant_order_id' => $v['merchant_order_id']])->find();
// $id_order = $orderHistoryService->db()->whereBetween('create_at', $time)->whereRaw('status in(2) and cid = 5')->where(['merchant_order_id' => $v['merchant_order_id']])->findOrEmpty();
if($id_order){
var_dump($id_order);
// var_dump($v['merchant_order_id']);
}
// foreach ($id_order as $ks => $vs) {
//
//// var_dump($sd);die;
////
//// $id = $vs['merchant_order_id'];
//// unset($vs['id']);
//
// $state = Db::name('test_error')->insert($vs);
// if ($state) {
// $sd = Db::name('daxiangka_heidui')->where(['order_id' => $vs['order_id']])->delete();
// }
//// $jine = $jine+($v['count']-1)*$v['cash'];
//// $jine = $jine+($v['count']-1);
//// var_dump($v);die;
//
// }
// $jine = $jine+($v['count']-1)*$v['cash'];
// $jine = $jine+($v['count']-1);
// var_dump($v);die;
}
die;
// $db = $orderHistoryService->db()->whereRaw('status in(2) and cid = 5');
// $data = $db->whereBetween('create_at', $time)->order('id asc')->select()->toArray();
// $data = $db->field('*, COUNT(*) as count')
// ->group('merchant_order_id')
// ->having('count > 1')
// ->select();
// $jine = 0;
////
// foreach ($data as $k => $v) {
//// $jine = $jine+($v['count']-1)*$v['cash'];
// $jine = $jine+($v['count']-1);
//// var_dump($v);die;
//
// }
//
// var_dump($jine);die;
//
$db =Db::name('daxiangka_heidui');
$s = $db->field('*, COUNT(*) as count')
->group('merchant_order_id')
->having('count > 1')
->select();
var_dump($s);die;
$jine = 0;
//
foreach ($s as $k => $v) {
$id_order = Db::name('daxiangka_heidui')->where(['merchant_order_id' => $v['merchant_order_id']])->select()->toArray();
foreach ($id_order as $ks => $vs) {
// var_dump($sd);die;
//
// $id = $vs['merchant_order_id'];
// unset($vs['id']);
$state = Db::name('test_error')->insert($vs);
if ($state) {
$sd = Db::name('daxiangka_heidui')->where(['order_id' => $vs['order_id']])->delete();
}
// $jine = $jine+($v['count']-1)*$v['cash'];
// $jine = $jine+($v['count']-1);
// var_dump($v);die;
}
// $jine = $jine+($v['count']-1)*$v['cash'];
// $jine = $jine+($v['count']-1);
// var_dump($v);die;
}
var_dump($jine);
}
public function kaidianbao_query()
{
$merchant_order = input('merchant_order_id');
$request['shop_id'] = input('mid');
$request['bill_id'] = $merchant_order;
$request['time_stamp'] =date('YmdHis');
$signature_string = '';
foreach ($request as $k => $v) {
// if (isset($request[$v]) && $request[$v]) {
$signature_string .= $k . '=' . $v . '&';
}
$signature_string = substr($signature_string, 0, -1);
$signature_string .= '|||'.(input('token'));
// var_dump($signature_string);die;
// $signature_string = iconv("UTF-8", "gbk", $signature_string);
$request['sign'] = md5($signature_string);
$url = 'http://papi.sx92577.com/api/UCardFetchQuery';
$response = http_get($url,$request);
$pairs = explode('&', $response);
$array = [];
foreach ($pairs as $pair) {
// 分割键和值
list($key, $value) = explode('=', $pair);
// 解码键和值
$array[urldecode($key)] = urldecode($value);
}
$result = array();
// $result['status'] = 4;
if (isset($array['ret_code']) && $array['ret_code'] == '0') {
if (isset($array['card_no_data'])) {
$cipher = "des-ede3"; // 3des-ebc 使用的是des-ede3算法
$mode = "ebc"; // 工作模式为ebc
$iv = ""; // EBC模式不需要IV留空即可
$deskey = input('deskey');
$kami = openssl_decrypt(hex2bin($array['card_no_data']), $cipher, $deskey, $options=OPENSSL_RAW_DATA, $iv); // 输出解密后的字符串
$kami = explode(',', $kami);
$kamidata = [
'cardno' => $kami[0],
'cardpwd' => $kami[1],
'expired' => $kami[2],
];
var_dump($kamidata);die;
}
}
var_dump($array);
}
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 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']);
}
}
}
public function lock_card(){
$order_id = input('order_id');
$order = Db::name('merchant_order')->where(['order_id'=>$order_id])->find();
$LockCardService = LockCardService::instance();
$response = json_decode($order['response'], true);
$cardno = $response['kami']['cardno'];
$cardpwd = $response['kami']['cardpwd'];
$expire_time = $response['kami']['expired'];
$suoka = $LockCardService->call('suoka', $order['cid'], $cardno, $cardpwd, $order['pid'], $order['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']);
}
}
public function test1()
{
$nick = $this->get_nick('2139549746248392952');
$value = $nick;
$desc = '该买家于' . date('Y-m-d H-i-s') . '系统导入黑名单黑名单关联订单号之一2139549746248392952';
if($value != 'error'){
$upStatus = $this->upBlack(1, $value, $desc);
}
}
#获取买家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 tradeUpdate($vo,$request,$beizhu = 1)
{
$request['merchant_order_id'] = $vo['merchant_order_id'];
if($beizhu == 1){
$request['beizhu'] = "卡密已使用,请操作拒绝退款,并上传退款凭证--Reapi系统自动化";
}elseif($beizhu == 2){
$request['beizhu'] = "卡密锁卡失败,请人工介入操作,核实拒绝退款,并上传拒绝退款凭证--Reapi系统自动化";
}elseif ($beizhu == 3){
$request['beizhu'] = "此订单不存在中控系统中,可能属于早期订单,请人工核实处理--Reapi系统自动化";
}
$request['flag'] = "1";
$request['reset'] = "false";
// $request['access_token'] = $merchant['access_token'];
$response = Coretb::taobaosdk('tradeUpdate', $request);
$json = json_encode($response);
$array = json_decode($json, true);
if (isset($array['Trade']['tid']) && $array['Trade']['tid'] == $vo['merchant_order_id']) {
return 'ok';
} else {
return 'error';
}
}
public function test23()
{
#成功
$apiParams['coop_order_status'] = 'SUCCESS';
$merchant = MerchantService::instance()->get('PT_34608230');
$taobao=new \app\openapi\controller\Taobao($this->app);
$request = $this->getOrder('', '2219313037572987070');
$requestParam = json_decode($request['param'],true);
var_dump($request);die;
$senddata = Coretb::doaction($merchant,$request,$requestParam,$apiParams);
// $msg = $taobao ->notify('https://eco.taobao.com/router/rest','' ,$apiParams);
var_dump($senddata);
}
public function refundsp($vo,$request)
{
$request['caozuo_name'] = '系统自动处理';
$request['refundId'] = $vo['refund_id'];
$request['phase'] = $vo['refund_phase'];
$RefundVersion = json_decode($vo['infodata'],true);
$RefundVersion = $RefundVersion['refund_version'];
$request['RefundVersion'] = $RefundVersion;
$request['RefundMsg'] = '未使用,同意退款';#默认同意
$request['RefundStatus'] = 'true';
// $request['access_token'] = $merchant['access_token'];
$response = Coretb::taobaosdk('refundSp', $request);
$json = json_encode($response);
$array = json_decode($json, true);
var_dump($request);
if(isset($array['is_success']) && $array['is_success'] == 'true'){
return 'true';
}elseif(isset($array['sub_msg']) && str_contains($array['sub_msg'], "退款版本号不一致,请重新获取最新的退款数据")){
$RefundVersion = $this->refundget($vo,$request);
// var_dump($RefundVersion);die;
if($RefundVersion != 'error'){
$request['RefundVersion'] = $RefundVersion;
sleep(3);
$response = Coretb::taobaosdk('refundSp', $request);
$json = json_encode($response);
$array = json_decode($json, true);
if(isset($array['is_success']) && $array['is_success'] == 'true'){
return 'true';
}else{
Log::write('queue', 'taobao_sp', $array);#写入到日志里
return 'error';
}
}else {
Log::write('queue', 'taobao_sp', $array);#写入到日志里
return 'error';
}
var_dump($array);die;
}else{
Log::write('queue', 'taobao_sp', $array);#写入到日志里
return 'error';
}
#判断响应是否成功
}
public function refundtk($vo,$request,$num = 0)
{
$RefundVersion = $this->refundget($vo,$request);
if($RefundVersion != 'error'){
$cash = $vo['refund_fee'] * 100;
$request['refund_infos'] = $vo['refund_id'].'|'.$cash.'|'.$RefundVersion .'|'.$vo['refund_phase'];
$response = Coretb::taobaosdk('refundAgree', $request);
$json = json_encode($response);
$array = json_decode($json, true);
if(isset($array['sub_msg']) ){
if(str_contains($array['sub_msg'], "未审核状态")){
while ($num<1) {
$num++;
sleep(3);
return $this->refundtk($vo,$request,$num,);
}
}
}
if (isset($array['succ'])) {
if(isset($array['message']) && $array['message']=='操作成功'){
return 'ok';
}else{
Log::write('queue', 'taobao_tk', $array);#写入到日志里
return 'error';
}
} else {
Log::write('queue', 'taobao_tk', $array);#写入到日志里
return 'error';
}
}else {
Log::write('queue', 'taobao_tk', $RefundVersion);#写入到日志里
return 'error';
}
}
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是唯一只是怕空格影响
}
}
}
}
public function execute()
{
ini_set('memory_limit', '1024M');
$channelService = ChannelService::instance();
$channelList = $channelService->db()->where(['query_status'=>1,'status'=>1])->select()->toArray();
$channelList_num = count($channelList);
$count_sum = 0;
$total_sum=0;
foreach($channelList as $channel) {
$class = OrderService::instance();
$where['cid'] = $channel['id'];
$where['status'] = 4;
list($count, $total) = [0, $class->db()->where($where)->order('id asc')->count()];
$total_sum += $total;
// $data = $class->db()->where($where)->limit(100)->select()->toArray();
$class->db()->where($where)->order('id asc')->chunk(100, function (Collection $data) use (&$count, $total,$channel,$channelService,&$count_sum) {
$array = $data->toArray();
foreach ($array as $k => $vo) {
if(isset($vo['num']) && $vo['num']>0) {
$vo['order_id'] = $vo['order_id'].'_'.$vo['num'];
}
$result = $channelService->call('query', $vo['cid'], $vo);
var_dump($result);die;
if ($result['status'] != 4) {
$count_sum++;
$count++;
$notifyClass = new Notify($this->app);
$notifyClass->queue_query($vo['order_id'], $result);
$this->setQueueProgress("查询 {$vo['order_id']} 新的状态进行主动更新", $count / $total * 100);
}
}
});
}
$this->setQueueSuccess("共处理 {$channelList_num} 个渠道,共有 {$total_sum} 个订单处理查询中, 完成{$count_sum} 个订单查询新状态更新!");
}
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 getOrderInfo($order_id)
// {
// $orderService = OrderService::instance();
//
// $order = $orderService->db()->where(['order_id' => $order_id])->find();
// if (!$order) {
// $orderHistoryService = OrderHistoryService::instance();
// $order = $orderHistoryService->db()->where(['order_id' => $order_id])->find();
// }
//
//
// return $order;
//
// }
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);
}
}
}