mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-24 03:15:32 +08:00
298 lines
11 KiB
PHP
298 lines
11 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
/**
|
|
* 财务账单
|
|
*/
|
|
class openapi_api_function_v1_finance extends openapi_api_function_abstract implements openapi_api_function_interface
|
|
{
|
|
/**
|
|
* 获取账单列表
|
|
*
|
|
* @param array $params
|
|
* @param string $code
|
|
* @param string $sub_msg
|
|
* @return array
|
|
*/
|
|
|
|
public function getList($params, &$code, &$sub_msg)
|
|
{
|
|
$start_time = $params['start_time'] ? strtotime($params['start_time']) : 0;
|
|
$end_time = $params['end_time'] ? strtotime($params['end_time']) : 0;
|
|
|
|
$trade_start_time = $params['trade_start_time'] ? strtotime($params['trade_start_time']) : 0;
|
|
$trade_end_time = $params['trade_end_time'] ? strtotime($params['trade_end_time']) : 0;
|
|
|
|
$order_start_time = $params['order_start_time'] ? strtotime($params['order_start_time']) : 0;
|
|
$order_end_time = $params['order_end_time'] ? strtotime($params['order_end_time']) : 0;
|
|
|
|
$params['platform_type'] = trim($params['platform_type']);
|
|
$params['shop_bn'] = trim($params['shop_bn']);
|
|
$params['page_no'] = intval($params['page_no']);
|
|
$params['page_size'] = intval($params['page_size']);
|
|
|
|
//分页
|
|
$page_no = $params['page_no'] > 0 ? $params['page_no'] : 1;
|
|
$limit = $params['page_size'] > 100 || $params['page_size'] <= 0 ? 100 : $params['page_size'];
|
|
$offset = 0;
|
|
if($page_no > 1){
|
|
$offset = ($page_no - 1) * $limit;
|
|
}
|
|
|
|
//店铺编码
|
|
$shopBns = array();
|
|
if($params['shop_bn']){
|
|
$tempData = explode('#', $params['shop_bn']);
|
|
foreach ($tempData as $key => $shop_bn){
|
|
$shopBns[] = $shop_bn;
|
|
}
|
|
}
|
|
|
|
//filter
|
|
$filter = array(
|
|
'shop_bns' => $shopBns, //店铺编码
|
|
'create_time' => array($start_time, $end_time), //创建时间范围
|
|
'trade_time' => array($trade_start_time, $trade_end_time), //账单时间范围
|
|
'platform_type' => $params['platform_type'], //平台类型
|
|
'order_create_date' => array($order_start_time, $order_end_time), //订单创建时间范围
|
|
);
|
|
|
|
//获取数据列表
|
|
$originalLib = kernel::single('openapi_data_original_finance');
|
|
$dataList = $originalLib->getList($filter, $offset, $limit);
|
|
if(empty($dataList)){
|
|
return array();
|
|
}
|
|
|
|
//list
|
|
foreach ($dataList['lists'] as $key => $val)
|
|
{
|
|
//隐藏shop_id
|
|
unset($val['id'], $val['shop_id'], $val['unique_id']);
|
|
|
|
//时间
|
|
$val['trade_time'] = date('Y-m-d H:i:s', $val['trade_time']);
|
|
$val['order_create_date'] = date('Y-m-d H:i:s', $val['order_create_date']);
|
|
$val['create_time'] = date('Y-m-d H:i:s', $val['create_time']);
|
|
|
|
$dataList['lists'][$key] = $val;
|
|
}
|
|
|
|
return $dataList;
|
|
}
|
|
|
|
function add($params, &$code, &$sub_msg){
|
|
//==
|
|
}
|
|
|
|
/**
|
|
* 获取精准通数据接口
|
|
*/
|
|
public function getJZT($params, &$code, &$sub_msg)
|
|
{
|
|
//投放日期范围
|
|
$start_time = $params['start_time'] ? strtotime($params['start_time']) : 0;
|
|
$end_time = $params['end_time'] ? strtotime($params['end_time']) : 0;
|
|
|
|
$launchtime_start_time = $params['launchtime_start_time'] ? strtotime($params['launchtime_start_time']) : 0;
|
|
$launchtime_end_time = $params['launchtime_end_time'] ? strtotime($params['launchtime_end_time']) : 0;
|
|
|
|
//查询条件
|
|
$params['pay_serial_number'] = trim($params['pay_serial_number']);
|
|
$params['account'] = trim($params['account']);
|
|
$params['trade_type'] = trim($params['trade_type']);
|
|
$params['plan_id'] = trim($params['plan_id']);
|
|
|
|
//页码
|
|
$params['page_no'] = intval($params['page_no']);
|
|
$params['page_size'] = intval($params['page_size']);
|
|
|
|
//分页
|
|
$page_no = $params['page_no'] > 0 ? $params['page_no'] : 1;
|
|
$limit = $params['page_size'] > 100 || $params['page_size'] <= 0 ? 100 : $params['page_size'];
|
|
$offset = 0;
|
|
if($page_no > 1){
|
|
$offset = ($page_no - 1) * $limit;
|
|
}
|
|
|
|
//filter
|
|
$filter = array(
|
|
'at_time' => array($start_time, $end_time), //创建日期
|
|
'launchtime' => array($launchtime_start_time, $launchtime_end_time), //投放日期
|
|
);
|
|
$filter = array_merge($filter, $params);
|
|
|
|
//获取数据列表
|
|
$originalLib = kernel::single('openapi_data_original_finance');
|
|
$dataList = $originalLib->getJztList($filter, $offset, $limit);
|
|
if(empty($dataList)){
|
|
return array();
|
|
}
|
|
|
|
//list
|
|
foreach ($dataList['lists'] as $key => $val)
|
|
{
|
|
//格式化时间
|
|
$val['launchtime'] = date('Y-m-d H:i:s', $val['launchtime']);
|
|
$val['at_time'] = date('Y-m-d H:i:s', $val['at_time']);
|
|
$val['up_time'] = date('Y-m-d H:i:s', $val['up_time']);
|
|
|
|
$dataList['lists'][$key] = $val;
|
|
}
|
|
|
|
return $dataList;
|
|
}
|
|
|
|
/**
|
|
* 获取精准通数据接口
|
|
*/
|
|
public function getJDbill($params, &$code, &$sub_msg)
|
|
{
|
|
//创建日期范围
|
|
$start_time = $params['start_time'] ? strtotime($params['start_time']) : 0;
|
|
$end_time = $params['end_time'] ? strtotime($params['end_time']) : 0;
|
|
|
|
//账单日期范围
|
|
$bill_start_time = $params['bill_start_time'] ? strtotime($params['bill_start_time']) : 0;
|
|
$bill_end_time = $params['bill_end_time'] ? strtotime($params['bill_end_time']) : 0;
|
|
|
|
//交易日期范围
|
|
$params['trade_start_time'] = $params['trade_start_time'] ? strtotime($params['trade_start_time']) : 0;
|
|
$params['trade_end_time'] = $params['trade_end_time'] ? strtotime($params['trade_end_time']) : 0;
|
|
|
|
//查询条件
|
|
$params['member_id'] = trim($params['member_id']);
|
|
$params['account_no'] = trim($params['account_no']);
|
|
$params['trade_no'] = trim($params['trade_no']);
|
|
|
|
//页码
|
|
$params['page_no'] = intval($params['page_no']);
|
|
$params['page_size'] = intval($params['page_size']);
|
|
|
|
//分页
|
|
$page_no = $params['page_no'] > 0 ? $params['page_no'] : 1;
|
|
$limit = $params['page_size'] > 100 || $params['page_size'] <= 0 ? 100 : $params['page_size'];
|
|
$offset = 0;
|
|
if($page_no > 1){
|
|
$offset = ($page_no - 1) * $limit;
|
|
}
|
|
|
|
//filter
|
|
$filter = array(
|
|
'at_time' => array($start_time, $end_time), //创建日期
|
|
'bill_time' => array($bill_start_time, $bill_end_time), //账单日期
|
|
);
|
|
$filter = array_merge($filter, $params);
|
|
|
|
//获取数据列表
|
|
$originalLib = kernel::single('openapi_data_original_finance');
|
|
$dataList = $originalLib->getJdBillList($filter, $offset, $limit);
|
|
if(empty($dataList)){
|
|
return array();
|
|
}
|
|
|
|
//list
|
|
foreach ($dataList['lists'] as $key => $val)
|
|
{
|
|
//格式化时间
|
|
$val['trade_time'] = date('Y-m-d H:i:s', $val['trade_time']);
|
|
$val['bill_time'] = date('Y-m-d H:i:s', $val['bill_time']);
|
|
$val['at_time'] = date('Y-m-d H:i:s', $val['at_time']);
|
|
$val['up_time'] = date('Y-m-d H:i:s', $val['up_time']);
|
|
$val['remark'] = $this->charFilter($val['remark']);
|
|
|
|
$dataList['lists'][$key] = $val;
|
|
}
|
|
|
|
return $dataList;
|
|
}
|
|
|
|
/**
|
|
* 获取ReportItems
|
|
* @param mixed $params 参数
|
|
* @param mixed $code code
|
|
* @param mixed $sub_msg sub_msg
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function getReportItems($params, &$code, &$sub_msg){
|
|
set_time_limit(0);
|
|
ini_set('memory_limit', '512M');
|
|
$start_time = $params['start_time'];
|
|
$end_time = $params['end_time'];
|
|
$page_no = intval($params['page_no']) > 0 ? intval($params['page_no']) : 1;
|
|
$limit = (intval($params['page_size']) > 100 || intval($params['page_size']) <= 0) ? 100 : intval($params['page_size']);
|
|
|
|
$filter = [];
|
|
|
|
if ($start_time && $end_time) {
|
|
$filter['up_time|betweenstr'] = [$start_time, $end_time];
|
|
}
|
|
|
|
if (!$filter['up_time|betweenstr']){
|
|
$sub_msg = '更新时间 必填';
|
|
return false;
|
|
}
|
|
|
|
if ($params['order_bn']) {
|
|
$filter['order_bn'] = explode(',', $params['order_bn']);
|
|
}
|
|
if ($page_no == 1) {
|
|
$offset = 0;
|
|
} else {
|
|
$offset = ($page_no - 1) * $limit;
|
|
}
|
|
|
|
$data = kernel::single('openapi_data_original_finance')->getReportItems($filter, $offset, $limit);
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* 获取拆分结果明细
|
|
*
|
|
* @param array $params
|
|
* @param string $code
|
|
* @param string $sub_msg
|
|
* @return array
|
|
*/
|
|
public function getExpensesSplitList($params, &$code, &$sub_msg)
|
|
{
|
|
$time_from = isset($params['time_from']) ? strtotime($params['time_from']) : 0;
|
|
$time_to = isset($params['time_to']) ? strtotime($params['time_to']) : 0;
|
|
|
|
if (!$time_from || !$time_to) {
|
|
$sub_msg = '时间范围必填';
|
|
return false;
|
|
}
|
|
|
|
// 根据拆分类型确定使用的时间字段
|
|
$split_type = isset($params['split_type']) ? $params['split_type'] : 'split';
|
|
|
|
// 两个表都使用 trade_time 作为账单时间字段
|
|
$filter = array(
|
|
'trade_time|between' => array($time_from, $time_to),
|
|
'split_type' => $split_type,
|
|
);
|
|
|
|
$originalLib = kernel::single('openapi_data_original_finance');
|
|
$dataList = $originalLib->getExpensesSplitList($filter);
|
|
|
|
if (empty($dataList['lists'])) {
|
|
return array();
|
|
}
|
|
return $dataList;
|
|
}
|
|
} |