1511 lines
51 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\core\BtWafService;
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;
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 btwaf()
{
// $m_oldIpWhite_data = MerchantService::instance()->db()->field('ip_white')->where(['id'=>6])->find();
//// $m_oldIpWhite = $m_oldIpWhite_data['ip_white'];
// if($m_oldIpWhite_data && isset($m_oldIpWhite_data['ip_white']) && $m_oldIpWhite_data['ip_white']){
// $old_ip_white_array = $m_oldIpWhite_data['ip_white']?explode(',', $m_oldIpWhite_data['ip_white']):[];
// $ip_white_array = [
// '223.5.5.5','122.234.200.204'
// ];
// foreach ($old_ip_white_array as $k => $v) {
// if(in_array($old_ip_white_array[$k], $ip_white_array)){
// var_dump($old_ip_white_array[$k]);
// }
//
// }
// }
// var_dump(123);die;
// $inf= '{"name":"ip白名单","servers":["apis.gcdat.com"],"status":1,"is_global":0,"priority":0,"root":{"logic":"or","type":"block","option":null,"children":[{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"125.122.178.235"}}]},{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"1.1.1.1"}}]},{"logic":"and","type":"block","option":null,"children":[{"type":"option","logic":"","children":[],"option":{"type":"ip","operator":"eq","left_factor":"","right_factor":"223.5.5.5"}}]}]},"action":{"type":"allow","response":{"type":"","response_id":0,"status":0,"headers":{},"body":""}}}';
// var_dump(json_decode($inf,true));die;
$api_domain = 'apis.gcdat.com';
$ip_white_data = '223.5.5.5,1.1.1.1,8.9.9.9';
$ip_white_array = $ip_white_data ? explode(',', $ip_white_data) : [];
$bt = new BtWafService();
$list = $bt->get_customize_list();
$ip_white_id = '';
if ($list) {
$rule_list = $list['msg']['rules'];
$name = 'ip白名单-' . '3';
foreach ($rule_list as $k => $v) {
if ($v['name'] == $name) {
$ip_white_id = $k;
break;
}
}
}
if ($ip_white_id) {
$data = $bt->update_waf_whiteIp($ip_white_id, $name, $api_domain, $ip_white_array);
var_dump($data);
}else{
$data = $bt->update_waf_whiteIp('', $name, $api_domain, $ip_white_array);
var_dump($data);
}
die;
$bt = new BtWafService();
$list = $bt->get_customize_list();
$ip_white_id = '';
if($list){
$rule_list = $list['msg']['rules'];
$name = 'ip白名单-'.'1';
foreach ($rule_list as $k=>$v){
if($v['name'] == $name){
$ip_white_id = $k;
break;
}
}
var_dump($list);
}
if($ip_white_id){
var_dump($ip_white_id);
}
// var_dump($rule_list);
}
public function check_oar()
{
$orderAutoService = OrderAutoService::instance();
$use = $orderAutoService->get('GC202410015956625258801961');
$use_product[] = 51;
foreach ($use as $k => $v) {
$use_product[] = $v['pid'];
}
$product_data = MerchantProductService::instance()->getAll(6, 'ydcz');
$where['mid'] = 6;
$where['pid'] = $use_product[0];
$data1 = MerchantProductService::instance()->db()->where($where)->find();
if ($product_data) {
foreach ($product_data as $k => $v) {
if ($v['cash']) {
if ($isp && (strstr($v['cash'], '联通') || strstr($v['cash'], '移动') || strstr($v['cash'], '电信'))) {
$cash = $isp;
}
$temp = explode(',', $v['cash']);
if (!in_array($cash, $temp)) {
continue;
}
}
if (!$data1) {
$data1 = ['sort' => '10'];
}
if (!in_array($v['pid'], $use_product) && $v['sort'] < $data1['sort']) {
return $v['pid'];
}
}
}
var_dump($this->use_product);
}
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);
}
}
}