提交 cd3dddf1 authored 作者: 窦斌's avatar 窦斌

edit

上级 031766b7
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Api\SynJdPopDataController;
use Illuminate\Console\Command;
class SynJdPopCancel extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'SynJdPopCancel';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command SynJdPopCancel';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$getOrder = new SynJdPopDataController();
$ret = $getOrder->getRefundOrder();
print_r($ret);
}
}
......@@ -23,7 +23,8 @@ class Kernel extends ConsoleKernel
Commands\SynCancelAuditList::class,
Commands\GetJdOrderCancel::class,
Commands\GetJdPurchaseOrder::class,
Commands\GetJdPurchaseRefund::class
Commands\GetJdPurchaseRefund::class,
Commands\SynJdPopCancel::class
];
/**
......@@ -38,10 +39,11 @@ class Kernel extends ConsoleKernel
// ->hourly();
$schedule->command('getOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('decJdOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('SynJdPopCancel')->everyFiveMinutes();//每五分钟一次抓取十二小时内撤销的pop订单
// $schedule->command('getJdSelfOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('getJdSelfRefund')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('GetJdSelfShhOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('DeductionFee')->everyFiveMinutes();//每三十分钟执行一次 everyThirtyMinutes
// $schedule->command('DeductionFee')->everyFiveMinutes();//每三十分钟执行一次 everyThirtyMinutes 按月扣除100服务费
$schedule->command('SynJdOrderApi')->everyFiveMinutes();// 抓取京东社会化门店订单 //每五分钟执行一次
$schedule->command('SynCancelAuditList')->everyFiveMinutes();// 抓取京东社会化门店退款单 //每五分钟执行一次
$schedule->command('GetJdOrderCancel')->everyFifteenMinutes();// 抓取京东社会化门店12小时内撤销单 //每十五分钟执行一次
......
......@@ -537,6 +537,87 @@ class SynJdPopDataController extends BaseController
return $res;
}
/**|---------------------------------------------------------------------------------
* @name 获取十二小时内撤销订单信息
* @param string ju_ordernum 订单单号
* @retrun \Illuminate\Http\JsonResponse /multitype:array
* @author dou 2025/8/8 15:26
* |---------------------------------------------------------------------------------
*/
public function getRefundOrder (){
$url = "http://116.196.75.172/index.php/GetOrder/index";
$time_start = date("Y-m-d H:i:s",strtotime(" -720 minute".date("Y-m-d H:i:s")));
$time_end = date("Y-m-d H:i:s");
$goods = DB::table('pj_goods')->select('pg_id','brand_name','pg_series','version','goods_pic_path','national_version')->get()->toarray();
$goods = CommonService::jointArrayKey($goods, 'pg_id');
$token = DB::table('jdpop_token')->where('status',1)->where('type',1)->select('app_key','app_secret','access_token','pt_id','appName')->get()->toarray();
foreach ($token as $k =>$v){
// CommonService::addLog('token', json_encode($v['app_key']), $v['pt_id'],'jd_token');
$res_ult = [];
$res_ult[$k]['appKey'] = $v['app_key']; //appkey
$res_ult[$k]['appSecret'] = $v['app_secret']; //secret
$res_ult[$k]['accessToken'] = $v['access_token']; //token
$res_ult[$k]['time_start'] = $time_start; //开始时间
$res_ult[$k]['time_end'] = $time_end; //结束时间
$res_ult[$k]['setPageSize'] = 80; //每页条数
$res_ult[$k]['setOrderState'] = 'TRADE_CANCELED,POP_ORDER_PAUSE,LOCKED'; //订单状态 WAIT_SELLER_STOCK_OUT 等待出库 ,TRADE_CANCELED,POP_ORDER_PAUSE,LOCKED,WAIT_GOODS_RECEIVE_CONFIRM,WAIT_SELLER_DELIVERY
$res_ult[$k]['setOptionalFields'] ='orderInfo,orderId,orderType,payType,orderTotalPrice,orderSellerPrice,open_id_buyer,open_id,orderMarkDesc,storeId,tuiHuoWuYou,taxFee,scDT,storeOrder,orderSource,customsModel,customs,parentOrderId,directParentOrderId,modified,vatInfo,logisticsId,paymentConfirmTime,returnOrder,balanceUsed,venderRemark,itemInfoList,consigneeInfo,orderEndTime,orderStartTime,orderRemark,invoiceCode,invoiceInfo,invoiceEasyInfo,orderStateRemark,orderState,sellerDiscount,orderPayment,venderId,pauseBizInfo,freightPrice,pin'; //获取的订单字段
/**TRADE_CANCELED,POP_ORDER_PAUSE,LOCKED
这三个是取消的状态,还是通过获取订单那个接口,触发时间和获取订单时间一致就行,这个没有变更状态一说,所以需要你判定,比如五分钟查一次最近六分钟的取消订单,如果系统中未取消就锁定订单生成退款单,如果过系统中已经取消或者已经锁定退款单就不用管了**/
$res_ult[$k]['page'] = 1;
$res = $this->request_post($url,$res_ult[$k]);
$ip = $_SERVER["REMOTE_ADDR"];
CommonService::addLog('token1--'.$v['pt_id'], $res, $v['pt_id'],'SynJdPopData-getcancel');
$data = json_decode($res,true);
if($data['jingdong_pop_order_enSearch_responce']['code']==0){
$company_id = Pt::where("id",$v['pt_id'])->value('company_id');
$order_data = $data['jingdong_pop_order_enSearch_responce']['searchorderinfo_result']['orderInfoList'];
if(!empty($order_data)){
foreach ($order_data as $kk=>$vv) {
$order_info = OrderService::getOrderBy('order_num', $vv['orderId'],['id','order_status','lock_type','sys_num','order_num','p_id','ser_id','create_time','new_customer_id','lock_type','company_id']);
$order_info = CommonService::dataToArray($order_info);
if(!empty($order_info)&&in_array($vv['orderState'], ['TRADE_CANCELED','POP_ORDER_PAUSE','LOCKED'])){
if($order_info['lock_type']==2||in_array($order_info['order_status'], [50,55])){
continue;
}else{
$datar['allprice'] = $vv['orderTotalPrice'];
$goods_arr = OrderMsg::where('sys_num',$order_info['sys_num'])->get(['id as msg_id','goods_name','goods_price','goods_id as good_id']);
$datar['goodsArr'] = CommonService::dataToArray($goods_arr);
$datar['goods_state'] = 2;//2:平台; 4:财务
$datar['sys_num'] = $order_info['sys_num'];
$datar['order_num'] = $order_info['order_num'];
$datar['apply_type'] = 1;
$datar['content'] = $vv['orderStateRemark'];
$datar['p_id'] = $order_info['p_id'];
$datar['ser_id'] = $order_info['ser_id'];
$datar['new_customer_id'] = $order_info['new_customer_id'];
$datar['order_status'] = $order_info['order_status'];
$datar['create_time'] = $order_info['create_time'];
$userArr = User::where('id',$order_info['new_customer_id'])->first();
$session['admin_groupnew'] = 7;
$session['admin_acc'] = '系统录入';
$session['id'] = 164;
$session['company_id'] = $order_info['company_id'];
$ret = OrderService::lockByRefund($datar , $session , $userArr);
CommonService::addLog('取消订单', json_encode($ret), $vv['orderId'],'SynJdPopData-cancel');
continue;
}
}
}
echo '添加成功---';
}
}
echo '操作成功--****';
}
}
function https_request($url, $data = null)
{
......
......@@ -207,7 +207,7 @@ class SynJdPurchaseController extends BaseController
// $session = $request->get('session_token');//获取操作人信息
$session['admin_groupnew'] = 7;
$session['admin_acc'] = '系统录入';
$session['id'] = 1133;
$session['id'] = 164;
$session['company_id'] = $company_id;
// dump($orders[$kk]);
$return = OrderaddService::addOrder($orders[$kk], $session, $ip);
......@@ -394,12 +394,12 @@ $url = 'jx.bluearp.com/m/index.php/Automatic/TzPopOrderGetPhone';
$data = $result['data'];
foreach($data as $kk => $vv) {
if (in_array($vv['orderState'], [2, 6, 7])) {
$order_info = OrderService::getOrderBy('order_num', $vv['orderId'], ['id', 'order_status', 'lock_type', 'sys_num', 'order_num', 'p_id', 'ser_id', 'create_time', 'new_customer_id', 'lock_type']);
$order_info = OrderService::getOrderBy('order_num', $vv['orderId'], ['id', 'order_status', 'lock_type', 'sys_num', 'order_num', 'p_id', 'ser_id', 'create_time', 'new_customer_id', 'lock_type','new_money','company_id']);
if($order_info) {
if ($order_info['lock_type'] == 2 || in_array($order_info['order_status'], [50, 55])) {
continue;
} else {
$datar['allprice'] = $vv['pay'];
$datar['allprice'] = $order_info['new_money'];
$goods_arr = OrderMsg::where('sys_num', $order_info['sys_num'])->get(['id as msg_id', 'goods_name', 'goods_price', 'goods_id as good_id']);
$datar['goodsArr'] = CommonService::dataToArray($goods_arr);
$datar['goods_state'] = 2;//2:平台; 4:财务
......@@ -422,10 +422,10 @@ $url = 'jx.bluearp.com/m/index.php/Automatic/TzPopOrderGetPhone';
$userArr = User::where('id', $order_info['new_customer_id'])->first();
$session['admin_groupnew'] = 7;
$session['admin_acc'] = '系统录入';
$session['id'] = 1133;
$session['company_id'] = 1;
$session['id'] = 164;
$session['company_id'] = $order_info['company_id'];
$ret = OrderService::lockByRefund($datar, $session, $userArr);
CommonService::addLog('取消订单', json_encode($ret), $vv['orderId'], 'JdPurchaseRefund-cancel');
CommonService::addLog('取消订单', json_encode($ret,JSON_UNESCAPED_UNICODE).'-----'.json_encode($datar,JSON_UNESCAPED_UNICODE), $vv['orderId'], 'JdPurchaseRefund-cancel');
continue;
}
}else{
......
......@@ -181,9 +181,13 @@ class CommonController extends BaseController
if($request->get('session_token')['admin_groupnew'] != 7) {//管理员默认展示全部平台
$session = Request()->get('session_token');//用户信息
$brand_id = Company::where('com_id',$session['company_id'])->value('com_brand');
// $brand = CommonService::arrayFilterFieldValue($brand,[['company_id'=>$session['company_id']]]);
$brands = CommonService::arrayFilterFieldValue($brand,[['company_id'=>$session['company_id']]]);
$brand = CommonService::arrayFilterFieldValue($brand,[['id'=>explode(',',$brand_id)]]);
if(!empty($brands)){
$brand = array_merge($brand,$brands);
$brand = CommonService::resetArrayKeyTwo($brand, 'id');
}
}
if($brand){
$brand = CommonService::resetListKey($brand);
......
......@@ -21,6 +21,7 @@ use App\Models\OrderMsg;
use App\Models\OrderRejected;
use App\Models\Orders;
use App\Models\Pt;
use App\Models\RechargeOrder;
use App\Models\User;
use App\Services\CommonService;
use App\Services\OrderaddService;
......@@ -53,7 +54,7 @@ class MyTestController extends BaseController
if(empty($input['method'])){
return $this->error('缺少必要参数1',ErrorInc::FAILED_PARAM);
}
$api=['getSerStatistics','getSerStatisticsDetail','BasicExport','addOrderData','addOrderDatas','sysServiseCenter','getJdOrderStatus','getDataDecrypt'];
$api=['getSerStatistics','getSerStatisticsDetail','BasicExport','addOrderData','addOrderDatas','sysServiseCenter','getJdOrderStatus','getDataDecrypt','calculateOrderPrice'];
if(!in_array($input['method'],$api)){
return $this->error('接口不参数异常',ErrorInc::INVALID_PARAM,$input);
}else {
......@@ -1232,4 +1233,121 @@ class MyTestController extends BaseController
}
/**|---------------------------------------------------------------------------------
* @name 计算订单退款
* @param string ju_ordernum 订单单号
* @retrun \Illuminate\Http\JsonResponse /multitype:array
* @author dou 2025/8/6 15:24
* |---------------------------------------------------------------------------------
*/
public function calculateOrderPrice ( $input ){
$company_id = [14];
$start_time = date("Y-m-01",strtotime('-1 month'));
$end_time = date("Y-m-01",time());
foreach($company_id as $k => $v){
try {
//获取取消的订单信息
$order1 = RechargeOrder::where('reo_company_id', $v)
->where('reo_sg', 1)
->where('reo_type', 2)
->where('reo_refund', 1)
->whereBetween('reo_create_time', [$start_time, $end_time])
->leftjoin('orders', 'orders.order_num', '=', 'recharge_order.reo_order_number')
->whereIn('order_status', [50, 55])
->select('order_num')
->get();
$order1 = CommonService::dataToArray($order1);
$xct_num = array_column($order1, 'order_num');
//计算退款金额
$cxt = 0.5 * count($order1);
$cxtk['reo_adm_id'] = 164;
$cxtk['reo_company_id'] = $v;//公司id
$cxtk['reo_order_number'] = 'TKC' . CommonService::creactNumber();
$cxtk['reo_price'] = $cxt;
$cxtk['reo_pay_state'] = 2;
$cxtk['reo_state'] = 1;
$cxtk['reo_create_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_way'] = 4;
$cxtk['reo_paid_money'] = $cxt;
$cxtk['reo_pay_check'] = 1;
$cxtk['reo_type'] = 1;
$cxtk['reo_client_type'] = 3;
$cxtk['reo_remaek'] = '取消订单退款';
DB::beginTransaction(); //开启事务
//添加取消退款记录
$rea = RechargeOrder::insert($cxtk);
//更改已取消退款状态
$reb = RechargeOrder::whereIn('reo_order_number',$xct_num)
->update(['reo_refund'=>2]);
//公司账号退款充值
$update_res = DB::table('admin_recharge')
->where('adre_company_id', $v)//公司id
->increment('adre_banlance',$cxt);
if($rea && $reb && $update_res) {
DB::commit();
$jttorder = RechargeOrder::where('reo_company_id', $v)
->where('reo_type', 2)
->where('reo_refund', 1)
->whereBetween('reo_create_time', [$start_time, $end_time])
->select('reo_id')
->get();
$jttorder = CommonService::dataToArray($jttorder);
$reo_id = array_column($jttorder, 'reo_id');
$jt_num = count($jttorder);
$price = DB::table('recharge_refund')->where('rer_company_id',$v)->where('rer_min','<=',$jt_num)->where('rer_max','>=',$jt_num)->value('rer_price');
if(empty($price)){
$price = DB::table('recharge_refund')->where('rer_company_id',0)->where('rer_min','<=',$jt_num)->where('rer_max','>=',$jt_num)->value('rer_price');
}
if($price<0.5){
$allprice = (0.5-$price);
$allprice = (float)$allprice;
$allprice = $allprice * $jt_num;
$allprice = sprintf("%.2f", $allprice); // 保留2位小数
$cxtk['reo_adm_id'] = 164;
$cxtk['reo_company_id'] = $v;//公司id
$cxtk['reo_order_number'] = 'TKJ' . CommonService::creactNumber();
$cxtk['reo_price'] = $allprice;
$cxtk['reo_pay_state'] = 2;
$cxtk['reo_state'] = 1;
$cxtk['reo_create_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_way'] = 5;
$cxtk['reo_paid_money'] = $allprice;
$cxtk['reo_pay_check'] = 1;
$cxtk['reo_type'] = 1;
$cxtk['reo_client_type'] = 3;
$cxtk['reo_remaek'] = '阶梯价退款';
DB::beginTransaction(); //开启事务
//添加阶梯价退款记录
$rec = RechargeOrder::insert($cxtk);
//更改已取消退款状态
$red = RechargeOrder::whereIn('reo_id',$reo_id)
->update(['reo_refund'=>3]);
//公司账号退款充值
$update_rea = DB::table('admin_recharge')
->where('adre_company_id', $v)//公司id
->increment('adre_banlance',$allprice);
if($rec && $red && $update_rea) {
DB::commit();
}else{
DB::rollBack();
continue;
}
}
}else{
DB::rollBack();
continue;
}
return [$cxt, $jt_num,$price,0.5-$price,$allprice];
}catch (Exception $e) {
DB::rollBack();
continue;
// 处理错误
}
}
}
}
......@@ -182,7 +182,7 @@ class AdminsController extends BaseController
->where('company_id', $admins['company_id'])
->where('admin_groupnew', "!=" ,2)
->count();
if ($find_data >= 5 && !in_array($admins['company_id'],[14])) {
if ($find_data >= 5 && !in_array($admins['company_id'],[14,1])) {
return $this->error('添加数量超出限制', ErrorInc::MYSQL_FAILED, []);
}
......
......@@ -635,6 +635,30 @@ class CommonService extends Service{
}
}
/**|---------------------------------------------------------------------------------
* @name 二维数组按照指定字段去重
* @param array $data 需要去重数组
* @param string $key 判定字段
* @retrun \Illuminate\Http\JsonResponse /multitype:array
* @author dou 2025/8/13 16:07
* |---------------------------------------------------------------------------------
*/
public static function resetArrayKeyTwo ( $data, $key ){
$keydata = array_column($data, $key);
$keydata = array_unique($keydata);
$newdata = [];
if(empty($data)){
return $data;
}
foreach($data as $k => $v){
if(in_array($v[$key], $keydata)){
$newdata[] = $v;
unset($keydata[array_search($v[$key], $keydata)]);
}
}
return $newdata;
}
/**
*@name 添加备注
* @param $sys_num 系统单号
......
......@@ -1144,6 +1144,7 @@ Route::group(
Route::group(['prefix'=>'synJdPopData'], function (){
Route::get('addOrderData', 'SynJdPopDataController@addOrderData');//添加京东
Route::get('decOrder', 'SynJdPopDataController@decOrder');//定时解密
Route::get('getRefundOrder', 'SynJdPopDataController@getRefundOrder');//定时解密
});
#平台服务 >> 京东自营订单
Route::group(['prefix'=>'SynJdSelfData'], function (){
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论