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() { $LockCardService = LockCardService::instance(); // $cardno = $response['kami']['cardno']; // $cardpwd = $response['kami']['cardpwd']; // $expire_time = $response['kami']['expired']; $suoka = $LockCardService->call('',12, 2409301790976058, 123456, 123, 100,'Whymcl'); return $suoka; } public function stat_amount() { $day = input('day'); if (!$day) { $day = date('Y-m-d', strtotime('-1 day')); // var_dump($day);die; } // $orderHistoryService = OrderHistoryService::instance(); $orderHistoryService = OrderLastweekHistoryService::instance(); // if (!$day) { // $day = date('Y-m-d', strtotime('-1 day')); // } $begin = $day . ' 00:00:00'; $after = $day . ' 23:59:59'; // $begin = '2024-08-01' . ' 00:00:00'; // $after = $day . ' 23:59:59'; $time = [$begin, $after]; $db = $orderHistoryService->db()->whereRaw('status in(2,3) '); $where = array(); if ($where) { $db->where($where); } $data = $db->whereBetween('create_at', $time)->field('cash,mid,cid,id,order_id,actual_cash,product_key,account,status,isp')->order('id asc')->select()->toArray(); // var_dump($data);die; if ($data) { $productService = ProductService::instance(); $zhekou = PercentService::instance(); $merchant = MerchantService::instance(); // $rule = $zhekou->get(1, 'jxk_cardbuy'); // var_dump($rule);die; foreach ($data as $k => $v) { $rule = $zhekou->get($v['mid'], $v['product_key']); if ($rule && $rule['percent']) { $percent = $rule['percent']; if (isset($rule['percent_type']) && $rule['percent_type']) { $percent_type = $rule['percent_type']; } $percent = $merchant->getPercent($percent, $v['account'], $v['product_key'], $v['cash'], $rule['rule'], $v['isp']); }else{ $info = $merchant->getInfo($v['mid']); $percent=$info['percent']; $percent_type= 1; } if ($percent > 0) { if ($percent_type == 2) { $new_cash = $percent; } else { $new_cash = $percent*$v['cash']; } } // var_dump($new_cash); $orderHistoryService->db()->where(['order_id'=>$v['order_id']])->update(['actual_cash'=>$new_cash]); // var_dump($expression);die; } die; # 检查是否是固定数值 // var_dump($product);die; } print_r($data); } public function test_daochu(){ $data = Db::name('test_daochu')->whereNull('cardno')->select()->toArray(); foreach ($data as $k => $v) { $order = Db::name('merchant_order_lastweek_history')->where(['merchant_order_id'=>$v['merchant_order_id']])->field('merchant_order_id,order_id,mid,response,channel_callback_msg,status')->find(); if(!$order){ $order = Db::name('merchant_order_last_history')->where(['merchant_order_id'=>$v['merchant_order_id']])->field('merchant_order_id,order_id,mid,response,channel_callback_msg,status')->find(); } if(!$order){ $order = Db::name('merchant_order_two_history')->where(['merchant_order_id'=>$v['merchant_order_id']])->field('merchant_order_id,order_id,mid,response,channel_callback_msg,status')->find(); } if(!$order){ var_dump($v);continue; } if($order){ $response = json_decode($order['response'],true); if(isset($response['kami'])){ $up = [ 'cardno'=>$response['kami']['cardno'], 'cardpwd'=>$response['kami']['cardpwd'] ]; }else{ $json = json_decode($$order['channel_callback_msg'],true); if(isset($json['kami'])){ $up = [ 'cardno'=>$json['kami']['cardno'], 'cardpwd'=>$json['kami']['cardpwd'] ]; } } if(!$up){ var_dump($v);continue; } if($up){ Db::name('test_daochu')->where(['merchant_order_id'=>$v['merchant_order_id']])->update($up); } } } } public function test_wyk(){ $data = Db::name('wyk_kmi')->whereNotNull('orderno')->select()->toArray(); foreach ($data as $vo) { $order = Db::name('merchant_order_history')->where(['order_id'=>$vo['orderno']])->find(); if(!$order){ var_dump($vo);continue; } $response = json_decode($order['response'],true); if(isset($response['kami'])){ $cardno=$response['kami']['cardno']; $cardpwd=$response['kami']['cardpwd']; $cash = $order['cash']; $expire_time = $response['kami']['expired']; $group_id = '70059'; }else{ $json = json_decode($order['channel_callback_msg'],true); if(isset($json['kami'])){ $cardno=$json['kami']['cardno']; $cardpwd=$json['kami']['cardpwd']; $cash = $order['cash']; $expire_time = $json['kami']['expired']; $group_id = '70059'; } } if(isset($cardno)){ $KamiService = KamiService::instance(); // var_dump($cardno); $upkami = $KamiService->upKami($cardno, $cardpwd, $cash,$expire_time,$group_id); if($upkami){ Db::name('wyk_kmi')->whereLike('orderno', $vo['orderno'])->delete();//这个用like会不会太范了?不会,因为order是唯一只是怕空格影响 } } // $suoka = $channelService->call('lockCard', $order['cid'], $order); } } 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 daoru_card() { $data = Db::name('daoru_card')->whereNotNull('order')->select()->toArray(); foreach ($data as $vo) { #{"Cards":"boqavdDEDS0hRpC+9o69Cgt+tjcep22QutcBBEVyPk4mff+KtczalI3DXkorDd54bk\/CNn3eblgAVTfiqgcHGuHpjjtwFfXOhvCbQFnB228=","OrderId":"13738532335529984","Sign":"f2eef4f7ce4d6408464f5c6e65f6546f","Status":"1","TimeStamp":"20240823152933","UserId":"20832","UserOrderId":"X202408239816683082901021","kami":{"cardno":"2404231940911308","cardpwd":"7732100002366491","expired":"2027-08-23 00:00:00"},"s_nubmer":"2404231940911308"} $order = Db::name('merchant_order_history')->where(['order_id'=>$vo])->field('order_id,pid,cash,cid,channel_callback_msg,mid')->find(); if($order){ #宝蓝那边的问题是这个原因吗/1 $KamiService = KamiService::instance(); $card =json_decode($order['channel_callback_msg'],true); // var_dump($order);die; if(isset($card['kami'])){ // var_dump($card['kami']); $upkami = $KamiService->upKami($card['kami']['cardno'], $card['kami']['cardpwd'], $order['cash'],$card['kami']['expired'],$order['cid'].'00'.$order['pid'],-1); // var_dump($upkami); if($upkami){ Db::name('daoru_card')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了?不会,因为order是唯一只是怕空格影响 }else{ $data = array(); $data['cnum'] = $card['kami']['cardno']; $data['cpwd'] = $card['kami']['cardpwd']; $data['value'] = $order['cash']; // $data['kami_group_id'] = $sid; $info = $KamiService->db()->where($data)->find(); if($info){ $infos = $KamiService->db()->where($data)->update(['use'=>1,'status'=>1]); if($infos){ Db::name('daoru_card')->whereLike('order', $vo['order'])->delete();//这个用like会不会太范了?不会,因为order是唯一只是怕空格影响 }else{ var_dump($vo); } }else{ var_dump($vo); } // $KamiService->db()->whereLike('order', $vo['order'])->delete(); } }else{ var_dump($vo); } // var_dump($cardno); }else{ var_dump($vo); } } } public function test_ts() { $data = Db::name('test_ts')->whereNotNull('order')->select()->toArray(); $channelService = ChannelService::instance(); foreach ($data as $vo) { $order = Db::name('merchant_order_history')->where(['order_id'=>$vo['order']])->find(); if(!$order){ continue; } $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是唯一只是怕空格影响 } } } 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.']); } // 将要保留的 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() ]); } } #获取买家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是唯一只是怕空格影响 } } } } 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); } public function execute() { ini_set('memory_limit', '1024M'); $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++; } } 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) { # 先插入一条历史数据 $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; } } return true; }); } #上个月 // 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')); } 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; } $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; } 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); } } }