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;
|
|
|
|
|
|
2024-10-02 21:45:47 +08:00
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-07 12:45:21 +08:00
|
|
|
|
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'];
|
2024-12-08 15:36:30 +08:00
|
|
|
|
$cash = $order['cash'];
|
2024-12-07 12:45:21 +08:00
|
|
|
|
$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'];
|
2024-12-08 15:36:30 +08:00
|
|
|
|
$cash = $order['cash'];
|
2024-12-07 12:45:21 +08:00
|
|
|
|
$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);
|
2024-12-07 12:45:21 +08:00
|
|
|
|
// 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);
|
2024-12-07 12:45:21 +08:00
|
|
|
|
// 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{
|
2024-12-07 12:45:21 +08:00
|
|
|
|
$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();
|
2024-12-07 12:45:21 +08:00
|
|
|
|
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-20 16:14:52 +08:00
|
|
|
|
}
|
2024-12-04 12:33:47 +08:00
|
|
|
|
|
2024-12-20 16:14:52 +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
|
|
|
|
|
2024-12-20 16:14:52 +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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|