137 lines
4.9 KiB
PHP
137 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace Modules\EcommerceFinance\Services;
|
|
|
|
class ShengsuanOrderProfitDisplayMapper
|
|
{
|
|
private const ORDER_TITLES = [
|
|
'c_900901' => '店铺名称',
|
|
'c_900902' => '线上单号',
|
|
'c_900903' => '内部单号',
|
|
'c_900972' => '发货时间',
|
|
'c_900966' => '订单类型',
|
|
'c_900933' => '标签',
|
|
'c_900905' => '订单销售数量(扣退)',
|
|
'c_900015' => '订单销售金额(扣退)',
|
|
'c_900208' => '订单销售成本(扣退)',
|
|
'c_900952' => '分类单销售数量(扣退)',
|
|
'c_900014' => '分类单销售金额(扣退)',
|
|
'c_900207' => '分类单销售成本(扣退)',
|
|
'c_900953' => '销售数量(扣退)',
|
|
'c_900099' => '销售金额(扣退)',
|
|
'c_900299' => '销售成本(扣退)',
|
|
'c_900019' => '其中:手动调整收入',
|
|
'c_900008' => '其中:其他调整收入',
|
|
'c_900210' => '其中:手动调整成本',
|
|
'c_900203' => '其中:其他调整成本',
|
|
'c_900301' => '毛利额',
|
|
'c_900302' => '毛利率',
|
|
'c_900499' => '订单费用',
|
|
'c_900498' => '费用占比',
|
|
'c_900497' => '其中:推广费',
|
|
'c_900501' => '经营利润',
|
|
'c_900502' => '经营利润率',
|
|
'c_900940' => '商品数量',
|
|
'c_900001' => '商品金额',
|
|
'c_900201' => '商品成本',
|
|
'c_900209' => '其中:红冲订单成本',
|
|
'c_900007' => '商家优惠',
|
|
'c_900003' => '运费收入',
|
|
'c_900002' => '付款金额',
|
|
'c_900006' => '其中:平台优惠',
|
|
'c_900016' => '其中:红冲订单金额',
|
|
'c_900949' => '实发金额',
|
|
'c_900925' => '实发数量',
|
|
'c_900950' => '实发成本',
|
|
'c_900954' => '退款数量合计',
|
|
'c_900012' => '退款金额合计',
|
|
'c_900018' => '其中:退平台补贴',
|
|
'c_900202' => '退款成本合计',
|
|
'c_900941' => '发货前-申请数量',
|
|
'c_900943' => '发货前-申请金额',
|
|
'c_900942' => '发货前-申请成本',
|
|
'c_900926' => '发货前-退回数量',
|
|
'c_900928' => '发货前-退回金额',
|
|
'c_900929' => '发货前-退回成本',
|
|
'c_900930' => '发货前-退款金额',
|
|
'c_900984' => '发货前-退款类型',
|
|
'c_900944' => '发货前-退平台补贴',
|
|
'c_900945' => '发货后-申请数量',
|
|
'c_900947' => '发货后-申请金额',
|
|
'c_900946' => '发货后-申请成本',
|
|
'c_900927' => '发货后-退回数量',
|
|
'c_900931' => '发货后-退回金额',
|
|
'c_900932' => '发货后-退回成本',
|
|
'c_900935' => '发货后-退款金额',
|
|
'c_900985' => '发货后-退货类型',
|
|
'c_900948' => '发货后-退平台补贴',
|
|
'c_900409' => '包材费(自动匹配)',
|
|
'c_900407' => '快递费(自动匹配)',
|
|
'c_900412' => '账单费用(自动匹配)',
|
|
'c_900413' => '分类单成本生成费用',
|
|
'c_900414' => '商品成本生成费用',
|
|
'c_900415' => '人工维护',
|
|
'c_900951' => '发货仓库',
|
|
'c_9001013' => '运营云仓',
|
|
'c_900989' => '供销商',
|
|
'c_9001015' => '业务员',
|
|
'c_9002022' => '线下客户',
|
|
'c_9002010' => '省',
|
|
'c_9002011' => '市',
|
|
'c_9002014' => '订单卖家备注',
|
|
'c_900967' => '胜算订单号',
|
|
'c_9001062' => '确认收货状态',
|
|
'c_9002013' => '商品总体积(扣退)',
|
|
];
|
|
|
|
/**
|
|
* @param array<string,mixed> $payload
|
|
* @param list<array<string,mixed>> $headers
|
|
* @return list<array{code:string,title:string,value:string}>
|
|
*/
|
|
public static function fields(array $payload, array $headers = []): array
|
|
{
|
|
$titles = self::ORDER_TITLES;
|
|
$codes = [];
|
|
foreach ($headers as $header) {
|
|
$code = trim((string) ($header['fld'] ?? ''));
|
|
if ($code === '') {
|
|
continue;
|
|
}
|
|
$titles[$code] = trim((string) ($header['title'] ?? '')) ?: ($titles[$code] ?? $code);
|
|
$codes[$code] = true;
|
|
}
|
|
foreach (array_keys($payload) as $code) {
|
|
$codes[(string) $code] = true;
|
|
}
|
|
|
|
$fields = [];
|
|
foreach (array_keys($codes) as $code) {
|
|
$fields[] = [
|
|
'code' => $code,
|
|
'title' => $titles[$code] ?? $code,
|
|
'value' => self::value($payload[$code] ?? null),
|
|
];
|
|
}
|
|
|
|
return $fields;
|
|
}
|
|
|
|
public static function value(mixed $value): string
|
|
{
|
|
if ($value === null) {
|
|
return '-';
|
|
}
|
|
if (is_bool($value)) {
|
|
return $value ? '是' : '否';
|
|
}
|
|
if (is_array($value) || is_object($value)) {
|
|
return json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) ?: '-';
|
|
}
|
|
|
|
$text = trim((string) $value);
|
|
|
|
return $text === '' ? '-' : $text;
|
|
}
|
|
}
|