$tpl['tpl_width'],
'height' => $tpl['tpl_height'],
'x' => $tpl['offset_x'] ? $tpl['offset_x'] : 0,
'y' => $tpl['offset_y'] ? $tpl['offset_y'] : 0,
'hasHole' => $tpl['has_hole'] ? true : false,
'imageUrl' => OssTool::getPubOssUrlByOssPath($tpl['tpl_img_url']),
'templateUrl' => $tpl['template_url'],
'customTemplateUrl' => $tpl['custom_template_url'] ?: '',
'cpCode' => $tpl['cp_code'],
'expressType' => $tpl['express_type'],
'waybillType' => $tpl['waybill_type'],
'waybillAccount' => $tpl['waybill_account'],
'printer' => $tpl['printer'],
'printSecondSectionWatermark' => $tpl['print_second_section_watermark'] ? 1 : 0,
'isChildParent' => $tpl['is_child_parent'] ? 1 : 0,
'globalStyle' => $tpl['global_style'] ? $tpl['global_style'] : array()
);
$tplData['nodes'] = $tpl['position_map'] ? $tpl['position_map'] : array();
return $tplData;
}
public static function convertExpressTplInfo($tpl) {
$tplData = array(
'tplId' => $tpl['op_vender_express_tpl_id'],
'tplName' => $tpl['tpl_name'],
'width' => $tpl['tpl_width'],
'height' => $tpl['tpl_height'],
'x' => $tpl['offset_x'] ? $tpl['offset_x'] : 0,
'y' => $tpl['offset_y'] ? $tpl['offset_y'] : 0,
'hasHole' => $tpl['has_hole'] ? true : false,
'imageUrl' => OssTool::getPubOssUrlByOssPath($tpl['tpl_img_url']),
'templateUrl' => $tpl['template_url'],
'cpCode' => $tpl['cp_code'],
'expressType' => $tpl['express_type'],
'waybillType' => $tpl['waybill_type'],
'waybillAccount' => $tpl['waybill_account'],
'printLogo' => $tpl['waybill_account']['printLogo'] ? true : false,
'printer' => $tpl['printer'],
'printSecondSectionWatermark' => $tpl['print_second_section_watermark'] ? true : false,
'isChildParent' => $tpl['is_child_parent'] ? true : false,
'globalStyle' => $tpl['global_style'] ? $tpl['global_style'] : array(),
'isDefault' => $tpl['is_default'] ? true : false,
'status' => $tpl['status']
);
$tplData['nodes'] = $tpl['position_map'] ? $tpl['position_map'] : array();
return $tplData;
}
public static function printSenderAddress($senderAddress, $return = false) {
$string = sprintf('%s %s %s %s %s %s %s %s', $senderAddress['fullname'], $senderAddress['mobile'], $senderAddress['telephone'], $senderAddress['province'], $senderAddress['city'], $senderAddress['county'], $senderAddress['town'], $senderAddress['address']);
if ($return) {
return $string;
}
echo $string;
}
public static function formatSenderAddress($senderAddress) {
if (empty($senderAddress)) {
return array();
}
return array (
'province' => $senderAddress['province'],
'provinceAreaId' => $senderAddress['province_area_id'],
'city' => $senderAddress['city'],
'cityAreaId' => $senderAddress['city_area_id'],
'county' => $senderAddress['county'],
'countyAreaId' => $senderAddress['county_area_id'],
'town' => $senderAddress['town'],
'townAreaId' => $senderAddress['town_area_id'],
'fullname' => $senderAddress['fullname'],
'address' => $senderAddress['address'],
'mobile' => $senderAddress['mobile'],
'telephone' => $senderAddress['telephone'],
'fullAddress' => $senderAddress['province'] . $senderAddress['city'] . $senderAddress['county'] . $senderAddress['town'] . $senderAddress['address']
);
}
public static function formartOrderDetailNv($orderDetail) {
$nvMap = array(
'shop_id' => 'shopId',
'order_id' => 'orderId',
'biz_order_num' => 'orderId',
'self_order_num' => 'selfOrderNum',
'custom_order_id' => 'customOrderId',
'order_source' => 'orderSource',
'b_type' => 'orderSource',
'order_status' => 'orderStatus',
'order_status_text' => 'orderStatusText',
'pay_type' => 'payType',
'pay_type_text' => 'payTypeText',
'order_seller_price' => 'orderSellerPrice',
'order_payment' => 'orderPayment',
'freight_price' => 'freightPrice',
'seller_discount' => 'sellerDiscount',
'order_remark' => 'orderRemark',
'buyer_words' => 'orderRemark',
'vender_note' => 'venderNote',
'shop_note' => 'venderNote',
'pin' => 'pin',
'user_name' => 'pin',
'logistics_code' => 'waybill',
'waybill' => 'waybill',
'pay_time' => 'payTime',
'logistics_id' => 'logisticsId',
'logistics_name' => 'logisticsName',
'order_type' => 'orderType',
'order_start_time' => 'orderStartTime',
'gmt_create_time' => 'orderStartTime',
'order_end_time' => 'orderEndTime',
'gmt_update_time' => 'modified',
'seller_words' => 'venderRemark',
'vender_remark' => 'venderRemark',
'vender_flag' => 'venderFlag',
'vender_remark_flag' => 'venderFlag',
'seller_remark_stars' => 'venderFlag',
'print_express_status' => 'printExpressStatus',
'print_invoice_status' => 'printInvoiceStatus',
'express_type' => 'expressType',
'gmt_print_express' => 'gmtPrintExpress',
'gmt_print_invoice' => 'gmtPrintInvoice',
'gmt_create' => 'gmtCreate',
'gmt_exp_ship_time' => 'gmtExpShipTime',
'items' => 'items',
'sug_home_deliver' => 'sugHomeDeliver',
'is_isolation' => 'isIsolation',
'order_total_amount' => 'orderTotalAmount'
);
$tradeRow = array();
foreach ($orderDetail as $key => $value) {
if (array_key_exists($key, $nvMap)) {
if ($key == 'items') {
$value = self::formartOrderItemInfoNv($value);
}
$tradeRow[$nvMap[$key]] = $value;
}
}
return $tradeRow;
}
public static function formartOrderItemInfoNv($orderItems) {
$nvMap = array(
'custom_item_info_id' => 'itemId',
'op_order_child_id' => 'itemId',
'order_id' => 'orderId',
'child_order_id' => 'childOrderId',
'sku_id' => 'skuId',
// 'outer_sku_id' => 'outerSkuId',
// 'out_sku_id' => 'outerSkuId',
'code' => 'code',
'title' => 'title',
'sku_name' => 'skuName',
'jd_price' => 'jdPrice',
'gift_point' => 'giftPoint',
'ware_id' => 'wareId',
'item_num' => 'itemNum',
'item_total' => 'itemTotal',
'logo' => 'logo',
'sku_sub_name' => 'skuSubName',
'total_price' => 'totalPrice',
'short_title' => 'shortTitle',
'weight' => 'weight',
'short_weight' => 'shortWeight',
'coupon_type' => 'couponType',
'coupon_price' => 'couponPrice',
'source_link' => 'sourceLink',
'product_name' => 'title',
'combo_num' => 'itemTotal',
'combo_id' => 'skuId',
'product_id' => 'wareId',
'product_pic' => 'logo',
'order_status' => 'orderStatus',
'shipped_num' => 'shippedNum',
'given_product_type' => 'givenProductType',
'old_sku_info' => 'oldSkuInfo',
'after_sale_info' => 'afterSaleInfo',
'c_biz' => 'cBiz',
);
$nvItems = array();
foreach ($orderItems as $key => $item) {
$nvItem = array();
foreach ($item as $n => $value) {
if (array_key_exists($n, $nvMap)) {
$nvItem[$nvMap[$n]] = $value;
if ($n == 'after_sale_info') {
$nvItem[$nvMap[$n]] = OrderPrintTool::formatAfterSaleInfo($value);
}
}
}
$nvItems[$key] = $nvItem;
}
return $nvItems;
}
public static function formatDistrOrderDetailNv($orderDetail) {
$nvMap = array(
'shop_id' => 'shopId',
'distr_order_id' => 'orderId',
'user_name' => 'pin',
'return_time' => 'returnTime',
'distr_time' => 'distrTime',
'distr_status' => 'distrStatus',
'logistics_code' => 'waybill',
'waybill' => 'waybill',
'logistics_id' => 'logisticsId',
'logistics_name' => 'logisticsName',
'seller_words' => 'venderRemark',
'print_express_status' => 'printExpressStatus',
'print_invoice_status' => 'printInvoiceStatus',
'express_type' => 'expressType',
'gmt_print_express' => 'gmtPrintExpress',
'gmt_print_invoice' => 'gmtPrintInvoice',
'gmt_create' => 'gmtCreate',
'items' => 'items'
);
$tradeRow = array();
foreach ($orderDetail as $key => $value) {
if (array_key_exists($key, $nvMap)) {
$tradeRow[$nvMap[$key]] = $value;
}
}
return $tradeRow;
}
public static function getColorAndOrderFlagMap() {
return [
'gray' => '0',
'purple' => '1',
'blue' => '2',
'green' => '3',
'orange' => '4',
'red' => '5',
];
}
public static function getOrderFlagColor($orderFlag) {
return array_search($orderFlag, self::getColorAndOrderFlagMap());
}
public static function getOrderFlags($colors) {
$flags = [];
$map = self::getColorAndOrderFlagMap();
foreach ($colors as $color) {
if (isset($map[$color])) {
$flags[] = $map[$color];
}
}
return $flags;
}
public static function getOrderFlagName($flag = null) {
if (is_null($flag)) {
return '';
}
$flagNameMap = [
'0' => '灰色',
'1' => '紫色',
'2' => '青色',
'3' => '绿色',
'4' => '橙色',
'5' => '红色',
];
return $flagNameMap[$flag];
}
public static function getOrderFlag($flag = null) {
$flagImgs = array(
'0' => 'flag-gray.png',
'1' => 'flag-purple.png',
'2' => 'flag-cyan.png',
'3' => 'flag-green.png',
'4' => 'flag-orange.png',
'5' => 'flag-red.png',
);
return $flagImgs[$flag] ? $flagImgs[$flag] : $flagImgs;
}
public static function buildOrderFlagUrl($flag) {
$flagImg = self::getOrderFlag((int)$flag);
return HtmlTool::getStaticUrl('img/flags/' . $flagImg);
}
public static function formatWangdianWlbData($waybillInfo, $subIndex = 0, $printSecondSectionWatermark, $width) {
if ($subIndex == 0) {
$waybillCode = $waybillInfo['waybillCode'];
} else {
$waybillCode = $waybillInfo['subWaybillCodes'][$subIndex - 1];
}
if ($printSecondSectionWatermark) {
$routeCodeArray = explode(' ', $waybillInfo['shortName']);
$secondSectionCode = count($routeCodeArray) == 1 ? $routeCodeArray[0] : $routeCodeArray[1];
$secondSectionCodeWatermark = self::generateSecondSectionCodeWatermark($secondSectionCode, $width);
}
return array(
LogisticsConst::wlbCode => $waybillCode,
LogisticsConst::wlbBarcode => $waybillCode,
LogisticsConst::parentWlbCode => $waybillInfo['waybillCode'],
LogisticsConst::originName => $waybillInfo['originName'],
LogisticsConst::originCode => $waybillInfo['originCode'],
LogisticsConst::consolidationName => $waybillInfo['consolidationName'],
LogisticsConst::consolidationCode => $waybillInfo['consolidationCode'],
LogisticsConst::targetName => $waybillInfo['targetName'],
LogisticsConst::targeCode => $waybillInfo['targeCode'],
LogisticsConst::shortName => $waybillInfo['shortName'],
LogisticsConst::secondSectionCodeWatermark => $secondSectionCodeWatermark,
LogisticsConst::secondSectionCode => empty($secondSectionCode) ? '' : $secondSectionCode,
'isChildWaybill' => $subIndex == 0 ? false : true
);
}
public static function formatJdAlphaWlbData($waybillInfo, $printSecondSectionWatermark, $width) {
$waybillInfo['shortName'] = trim($waybillInfo['shortName'], '-');
$waybillInfo['secondSectionCode'] = trim($waybillInfo['secondSectionCode'], '-');
$waybillInfo['thirdSectionCode'] = trim($waybillInfo['thirdSectionCode'], '-');
$shortName = implode('-', array_filter(array($waybillInfo['shortName'], $waybillInfo['secondSectionCode'], $waybillInfo['thirdSectionCode'])));
$realSecondSectionCode = self::getRealJdAlphaSecondSectionCodeByShortName($shortName, $waybillInfo['secondSectionCode']);
if ($printSecondSectionWatermark) {
$secondSectionCodeWatermark = self::generateSecondSectionCodeWatermark($realSecondSectionCode, $width);
}
$returnData = array(
LogisticsConst::wlbCode => $waybillInfo['waybillCode'],
LogisticsConst::wlbBarcode => $waybillInfo['waybillCode'],
LogisticsConst::originName => $waybillInfo['originName'],
LogisticsConst::originCode => $waybillInfo['originCode'],
LogisticsConst::consolidationName => $waybillInfo['consolidationName'],
LogisticsConst::consolidationCode => $waybillInfo['consolidationCode'],
LogisticsConst::targetName => $waybillInfo['targetName'],
LogisticsConst::targeCode => $waybillInfo['targeCode'],
LogisticsConst::shortName => $shortName,
LogisticsConst::fromBranchName => $waybillInfo['fromBranchName'],
LogisticsConst::toBranchName => $waybillInfo['toBranchName'],
LogisticsConst::secondSectionCodeWatermark => $secondSectionCodeWatermark ? : '',
LogisticsConst::secondSectionCode => empty($realSecondSectionCode) ? '' : $realSecondSectionCode,
LogisticsConst::road => $waybillInfo['road']
);
if (!empty($waybillInfo['packageNo'])) {
$returnData[LogisticsConst::packageNo] = $waybillInfo['packageNo'];
}
return $returnData;
}
private static function getRealJdAlphaSecondSectionCodeByShortName($shortName, $oriSecondSectionCode) {
$codes = explode('-', $shortName);
$codesCount = count($codes);
if ($codesCount <= 2) {
return $oriSecondSectionCode;
}
if ($codesCount == 3) {
return $codes[1];
}
array_shift($codes);
array_pop($codes);
return implode('-', $codes);
}
public static function formatJdWlbData($receiveOrderInfo, $waybillAccount) {
$waybillCode = $receiveOrderInfo['deliveryId'];
$waybillInfo = $receiveOrderInfo['preSortResult'];
$waybillAccount['jdPromiseTimeType'] = $receiveOrderInfo['promiseTimeType'];
$waybillAccount['jdAddedService'] = $receiveOrderInfo['addedService'];
$waybillProductType = LogisticsConst::getWaybillProductTypeName(LogisticsConst::waybillJd, LogisticsConst::JD, $waybillAccount);
$waybillServiceType = LogisticsConst::getWaybillServiceTypeName(LogisticsConst::waybillJd, LogisticsConst::JD, $waybillAccount);
$waybillAddedService = LogisticsConst::getWaybillAddedServiceName(LogisticsConst::waybillJd, LogisticsConst::JD, $waybillAccount);
$transportationMode = LogisticsConst::getJdWaybillTransportationMode($receiveOrderInfo['promiseTimeType'], $receiveOrderInfo['expressOperationMode'], $waybillInfo['aging']);
$navigationMark = LogisticsConst::getJdWaybillNavigationMark($receiveOrderInfo['transType']);
return array(
LogisticsConst::wlbCode => $waybillCode,
LogisticsConst::wlbBarcode => $waybillCode,
LogisticsConst::originName => $waybillInfo['sourceSortCenterName'],
LogisticsConst::originCode => sprintf('%s-%s', $waybillInfo['sourceCrossCode'], $waybillInfo['sourceTabletrolleyCode']),
LogisticsConst::targetName => $waybillInfo['targetSortCenterName'],
LogisticsConst::targeCode => sprintf('%s-%s', $waybillInfo['slideNo'], $waybillInfo['targetTabletrolleyCode']),
LogisticsConst::shortName => $waybillInfo['siteName'],
LogisticsConst::road => $waybillInfo['road'],
LogisticsConst::waybillProductType => $waybillProductType,
LogisticsConst::waybillServiceType => $waybillServiceType,
LogisticsConst::waybillAddedService => $waybillAddedService,
LogisticsConst::transportationMode => $transportationMode,
LogisticsConst::navigationMark => $navigationMark,
LogisticsConst::fromBranchName => $waybillInfo['sourceSortCenterName'],
LogisticsConst::toBranchName => $waybillInfo['targetSortCenterName']
);
}
public static function formatCainiaoWlbData($caiNiaoData, $printSecondSectionWatermark, $width) {
$routingInfo = $caiNiaoData['routingInfo'];
$routeCodeArray = explode(' ', $routingInfo['routeCode']);
if ($printSecondSectionWatermark) {
$secondSectionCodeWatermark = self::generateSecondSectionCodeWatermark($routeCodeArray[0], $width);
}
return array(
LogisticsConst::wlbCode => $caiNiaoData['waybillCode'],
LogisticsConst::wlbBarcode => $caiNiaoData['waybillCode'],
LogisticsConst::originName => $routingInfo['origin']['name'],
LogisticsConst::originCode => $routingInfo['origin']['code'],
LogisticsConst::consolidationName => $routingInfo['consolidation']['name'],
LogisticsConst::consolidationCode => $routingInfo['consolidation']['code'],
LogisticsConst::shortName => $routingInfo['sortation']['name'] . $routingInfo['routeCode'],
LogisticsConst::secondSectionCodeWatermark => $secondSectionCodeWatermark,
LogisticsConst::secondSectionCode => empty($routeCodeArray[0]) ? '' : $routeCodeArray[0],
);
}
public static function generateSecondSectionCodeWatermark($secondSectionCode, $width = 377, $height = 74) {
if (empty($secondSectionCode)) {
return '';
}
$codeCharCount = mb_strlen($secondSectionCode, 'utf-8');
$dir = Zc::C('temp.dir') . 'runtime/second_section_code_watermark/' . explode('-', $secondSectionCode)[0] . '/';
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$filename = $dir . md5($secondSectionCode) . '_' . $width . '_px.png';
if (file_exists($filename)) {
return 'data:image/png;base64,' . base64_encode(file_get_contents($filename));
}
$im = imagecreatetruecolor($width, $height);
$bg = imagecolorallocatealpha($im, 255, 255, 255, 127);
$fontColor = imagecolorallocate($im, 86, 87, 89);
imagealphablending($im , false);
imagefilledrectangle($im, 0, 0, $width, $height, $bg);
$font = Zc::C(ZcConfigConst::DirFsApp) . '/views/static/fonts/fzch.ttf';
$fontSize = 70;
$textWidth = 0;
$maxTextWidth = $width - 35;
$maxTextHeight = $height - 5;
$loop = 0;
do {
if (++$loop > 10) {
break;
}
$box = imagettfbbox($fontSize, 0, $font, $secondSectionCode);
$minX = min(array($box[0], $box[2], $box[4], $box[6]));
$maxX = max(array($box[0], $box[2], $box[4], $box[6]));
$minY = min(array($box[1], $box[3], $box[5], $box[7]));
$maxY = max(array($box[1], $box[3], $box[5], $box[7]));
$textWidth = $maxX - $minX;
$textHeight = $maxY - $minY;
if ($textWidth <= $maxTextWidth) {
$x = ceil(($width - $textWidth) / 2);
$textHeight = $maxY - $minY;
$y = $height - ceil(($height - $textHeight) / 2);
break;
}
$fontSize = ceil($fontSize * ($maxTextWidth /$textWidth));
if ($textWidth > $maxTextWidth || $textHeight > $maxTextHeight) {
$fontSize --;
}
} while(true);
imagettftext($im, $fontSize, 0, ($x - 5), $y, $fontColor, $font, $secondSectionCode);
imagesavealpha($im , true);
imagepng($im, $filename);
imagedestroy($im);
return 'data:image/png;base64,' . base64_encode(file_get_contents($filename));
}
public static function convertMm2Px($mm) {
$unit = 3.779528;
return round($mm * $unit);
}
public static function convertPx2Mm($px) {
$px = preg_replace('/[^\d+|\.]/isU', '', $px);
$unit = 0.264583;
return round($px * $unit, 1);
}
public static function convertPx2Pt ($px){
$px = preg_replace('/[^\d+|\.]/isU', '', $px);
$unit = 0.75;
return round($px * $unit, 2);
}
public static function buildJdViewProduct($wareId) {
return sprintf('https://ware.shop.jd.com/onSaleWare/onSaleWare_viewProduct.action?wareId=%s', $wareId);
}
public static function waybillMockData($cpCode, $wlbType, $printSecondSectionWatermark, $width) {
return self::opWaybillMockData($cpCode, $wlbType, $printSecondSectionWatermark, $width);
}
private static function msorderWaybillMockData($cpCode, $wlbType, $printSecondSectionWatermark, $width) {
if ($cpCode == LogisticsConst::JD) {
return array (
LogisticsConst::wlbCode => 'JDVC03492217264',
LogisticsConst::wlbBarcode => 'JDVC03492217264',
LogisticsConst::originName => '深圳龙华分拣中心',
LogisticsConst::originCode => '302-B-5',
LogisticsConst::targetName => '广州博展分拣中心',
LogisticsConst::targeCode => '9-9-5',
LogisticsConst::shortName => '*广州龙口营业部',
LogisticsConst::road => '36'
);
}
if ($printSecondSectionWatermark) {
$secondSectionCodeWatermark = self::generateSecondSectionCodeWatermark('B100', $width);
}
if ($cpCode == LogisticsConst::SF) {
return array(
LogisticsConst::consolidationCode => '',
LogisticsConst::consolidationName => '',
LogisticsConst::originCode => '',
LogisticsConst::originName => '',
LogisticsConst::secondSectionCode => $secondSectionCodeWatermark,
LogisticsConst::targeCode => '',
LogisticsConst::targetName => '',
LogisticsConst::wlbBarcode => 'SF8888888888',
LogisticsConst::wlbCode => 'SF8888888888',
);
}
return array(
LogisticsConst::wlbCode => '545724347893',
LogisticsConst::wlbBarcode => '545724347893',
LogisticsConst::parentWlbCode => '545724347893',
LogisticsConst::originName => '厦门转',
LogisticsConst::originCode => '',
LogisticsConst::targetName => '厦门分拨中心',
LogisticsConst::targeCode => '',
LogisticsConst::shortName => '221-B100-03',
LogisticsConst::secondSectionCode => $secondSectionCodeWatermark
);
}
private static function opWaybillMockData($cpCode, $wlbType, $printSecondSectionWatermark, $width) {
if ($cpCode == LogisticsConst::JD) {
return array (
LogisticsConst::wlbCode => 'JDVC00965716114',
LogisticsConst::wlbBarcode => 'JDVC00965716114',
LogisticsConst::originName => '广州萝岗分拣中心',
LogisticsConst::originCode => '95-C-02-E',
LogisticsConst::targetName => '厦门分拨中心',
LogisticsConst::targeCode => '41-E-03',
LogisticsConst::shortName => '三明永安站',
LogisticsConst::road => '99'
);
}
if ($printSecondSectionWatermark) {
$secondSectionCodeWatermark = self::generateSecondSectionCodeWatermark('517', $width);
}
if ($cpCode == LogisticsConst::SF) {
return array(
LogisticsConst::consolidationCode => '',
LogisticsConst::consolidationName => '',
LogisticsConst::originCode => '',
LogisticsConst::originName => '',
LogisticsConst::secondSectionCodeWatermark => $secondSectionCodeWatermark,
LogisticsConst::secondSectionCode => '517',
LogisticsConst::targeCode => '',
LogisticsConst::targetName => '',
LogisticsConst::wlbBarcode => 'SF1011111773562',
LogisticsConst::wlbCode => 'SF1011111773562',
);
}
return array(
LogisticsConst::wlbCode => '9890000160004',
LogisticsConst::wlbBarcode => '9890000160004',
LogisticsConst::parentWlbCode => '9890000160004',
LogisticsConst::originName => '福田G',
LogisticsConst::originCode => '210901',
LogisticsConst::targetName => '厦门分拨中心',
LogisticsConst::targeCode => '41-E-03',
LogisticsConst::shortName => '440-517',
LogisticsConst::secondSectionCodeWatermark => $secondSectionCodeWatermark,
LogisticsConst::secondSectionCode => '517'
);
}
public static function getPrintOrderPageSizeArray() {
return array(20, 30, 50, 100, 200, 500, 1000);
}
public static function getPrintOrderSortTypeMap($needPrintExpressTime = false, $needShipTime = false) {
if ($needPrintExpressTime) {
$sortTypeMap = array(
'orderStartTimeDesc' => '下单时间↓',
'orderStartTimeAsc' => '下单时间↑',
'payTimeDesc' => '付款时间↓',
'payTimeAsc' => '付款时间↑',
'printExpressTimeDesc' => '打印时间↓',
'printExpressTimeAsc' => '打印时间↑',
'skuIdAsc' => '按SKUID排序↑',
'skuIdDesc' => '按SKUID排序↓',
'orderTotalAmountDesc' => '付款金额↓',
'orderTotalAmountAsc' => '付款金额↑',
);
} else {
$sortTypeMap = array(
'orderStartTimeDesc' => '下单时间↓',
'orderStartTimeAsc' => '下单时间↑',
'payTimeDesc' => '付款时间↓',
'payTimeAsc' => '付款时间↑',
'skuIdAsc' => '按SKUID排序↑',
'skuIdDesc' => '按SKUID排序↓',
'orderTotalAmountDesc' => '付款金额↓',
'orderTotalAmountAsc' => '付款金额↑',
);
}
if ($needShipTime) {
$sortTypeMap['shipTimeDesc'] = '发货时间↓';
$sortTypeMap['shipTimeAsc'] = '发货时间↑';
}
return $sortTypeMap;
}
public static function getPrintCustomOrderSortTypeMap() {
return array(
'orderStartTimeDesc' => '创建时间↓',
'orderStartTimeAsc' => '创建时间↑',
'orderAmountDesc' => '订单金额↓',
'orderAmountAsc' => '订单金额↑',
'itemTotalDesc' => '商品件数↓',
'itemTotalAsc' => '商品件数↑',
);
}
public static function getPrintDistrOrderSortTypeMap() {
return array(
'distrTimeDesc' => '分配时间↓',
'distrTimeAsc' => '分配时间↑',
'returnTimeDesc' => '回传时间↓',
'returnTimeAsc' => '回传时间↑',
);
}
public static function getDistributeOrderSortTypeMap() {
return array(
'payTimeDesc' => '按付款时间降序↓',
'payTimeAsc' => '按付款时间降序↑',
'distrTimeDesc' => '按分配时间降序↓',
'distrTimeAsc' => '按分配时间降序↑',
);
}
public static function getExportFieldsMap() {
$fieldsMap = array(
'orderFields' => array(
'orderId' => '订单编号',
'shopName' => '店铺名称',
'orderStartTime' => '下单时间',
'orderStatus' => '订单状态',
'orderPayment' => '实收金额',
'payType' => '支付方式',
'logisticsInfo' => '物流信息'
),
'itemFields' => array(
'title' => '商品标题',
'wareId' => '商品ID',
'jdPrice' => '商品单价',
'itemTotal' => '商品数量',
'orderStatus' => '售后状态',
'totalPrice' => '商品总价',
'couponInfo' => '优惠信息',
'totalAmount' => '商品实收金额',
'skuSubName' => '规格',
'itemNum' => '货号',
'code' => '商家编码',
'skuId' => 'SKUID',
),
'receiveFields' => array(
'fullname' => '收件人',
'mobile' => '联系方式',
'fullAddress' => '收货地址',
'orderRemark' => '用户留言',
),
'purchaseFields' => array(
'purchasePlatform' => '采购平台',
'purchaseOrderBuyer' => '采购账号',
'purchaseOrderSn' => '采购订单号',
'purchaseOrderPayment' => '采购金额',
'purchaseOrderStartTime' => '采购下单时间',
'purchaseLogisticsInfo' => '采购单物流信息',
),
'otherFields' => array(
'venderRemark' => '商家备注',
'venderNote' => '本地备注',
),
);
return $fieldsMap;
}
public static function getSysDefaultExportFields() {
$exportFields = self::getExportFieldsMap();
$sysFields = [];
foreach ($exportFields as $fieldGroupName => $fieldAndFieldNameMap) {
$sysFields[$fieldGroupName] = array_keys($fieldAndFieldNameMap);
}
return $sysFields;
}
public static function getWangdianExpressServiceTypeOptions($cpCode) {
if ($cpCode == LogisticsConst::SF) {
return array(
'1' => '标准快递',
'2' => '顺丰特惠',
'5' => '顺丰次晨',
'6' => '顺丰即日',
'112' => '顺丰空配',
'202' => '顺丰微小件',
'13' => '物流普运',
'14' => '冷运宅配',
'15' => '生鲜速配',
'16' => '大闸蟹专递',
'17' => '汽配专线',
'18' => '汽配吉运',
'19' => '全球顺',
'37' => '云仓专配次日',
'38' => '云仓专配隔日',
'208' => '特惠专配'
);
} elseif ($cpCode == LogisticsConst::YTO) {
return array(
'1' => '标准快递',
'2' => '次日达',
'4' => '次晨达',
'8' => '当日达',
);
} else {
return array(
'1' => '标准快递',
);
}
}
public static function getJdAlphaOrderExpressTypeOptions() {
return array(
'1' => '顺丰标快',
'2' => '顺丰特惠',
'5' => '顺丰次晨',
'6' => '顺丰即日',
'231' => '陆运包裹',
'208' => '特惠专配',
'202' => '顺丰微小件',
'204' => '陆运微小件',
'154' => '重货包裹',
'13' => '物流普运',
'199' => '极速包裹',
'111' => '顺丰干配',
'112' => '顺丰空配',
'155' => '小票零旦'
);
}
public static function getWangdianExpressOrderTypeOptions($cpCode) {
if (in_array($cpCode, array(LogisticsConst::SF, LogisticsConst::YUNDA, LogisticsConst::YTO))) {
return array(
'1' => '普通订单',
'2' => '货到付款'
);
} else {
return array(
'1' => '普通订单'
);
}
}
public static function getJdAlphaOrderWaybillTypeOptions() {
return array(
LogisticsConst::jdAlphaWaybillTypeNormal => '普通运单',
LogisticsConst::jdAlphaWaybillTypeFresh => '生鲜',
LogisticsConst::jdAlphaWaybillTypeAir => '航空',
);
}
public static function getOrderPrintExpressLogExportFieldsMap() {
$fieldsMap = array(
'shopName' => '店铺',
'orderId' => '订单号 ',
'sellerMemo' => '商家备注 ',
'buyerMemo' => '买家备注 ',
'waybillCode' => '物流单号',
'logisticsName' => '物流公司',
'fullname' => '收货人',
'fullMobile' => '收货人手机',
'fullAddress' => '收货地址',
'printTime' => '打印日期',
'senderName' => '发货人',
'senderMobile' => '发货人手机',
'senderAddress' => '发货地址',
'payAmount' => '订单金额',
'goodsName' => '商品标题',
'goodsId' => '商品ID',
'goodsSpec' => '商品规格',
'skuId' => 'SKU ID',
'outerId' => 'SKU编码',
'goodsCount' => '数量',
'cBizName' => '流量来源',
'realCommission' => '达人佣金',
);
return $fieldsMap;
}
public static function getDistrOrderPrintExpressLogExportFieldsMap() {
$fieldsMap = array(
'shopName' => '厂家店铺',
'userName' => '代打店铺',
'orderId' => '代发订单号 ',
'waybillCode' => '物流单号',
'logisticsName' => '物流公司',
'fullname' => '收货人',
'fullAddress' => '收货地址',
'printTime' => '打印日期',
'senderName' => '发货人',
'senderMobile' => '发货人手机',
'senderAddress' => '发货地址',
'sellerMemo' => '卖家备注',
'buyerMemo' => '买家备注',
'payAmount' => '订单金额',
'goodsName' => '商品标题',
'goodsId' => '商品ID',
'goodsSpec' => '商品规格',
'outerId' => 'SKU编码',
'goodsCount' => '数量',
);
return $fieldsMap;
}
public static function getCustomPrintExpressLogExportFieldsMap() {
$fieldsMap = array(
'shopName' => '店铺',
'orderSn' => '订单号',
'waybillCode' => '物流单号',
'logisticsName' => '物流公司',
'fullname' => '收货人',
'mobile' => '收货人手机',
'fullAddress' => '收货地址',
'printTime' => '打印日期',
'senderName' => '发货人',
'senderMobile' => '发货人手机',
'senderAddress' => '发货地址',
'sellerMemo' => '卖家备注',
'buyerMemo' => '买家备注',
'payAmount' => '订单金额',
'goodsName' => '商品标题',
'goodsId' => '商品ID',
'goodsSpec' => '商品规格',
'skuId' => 'SKUID',
'outerId' => 'SKU编码',
'goodsCount' => '数量',
);
return $fieldsMap;
}
public static function formateReceiverAddressHtml($province, $city, $county, $town, $address) {
$search = array(
'乡',
'镇',
'村',
);
$replace = array(
'乡',
'镇',
'村',
);
$county = str_replace($search, $replace, $county);
$town = str_replace($search, $replace, $town);
$address = str_replace($search, $replace, $address);
return sprintf('%s%s%s%s%s', $province, $city, $county, $town, $address);
}
public static function formateSenderAddressHtml($sender) {
$fullAddress = printf('%s%s%s%s%s', $sender['province'], $sender['city'], $sender['county'], $sender['town'], $sender['address']);
$search = array(
'乡',
'镇',
'村',
);
$replace = array(
'乡',
'镇',
'村',
);
$fullAddress = str_replace($search, $replace, $fullAddress);
return $fullAddress;
}
public static function replaceTplImageFieldsImgSrcToOssUrl($nodes) {
foreach ($nodes as &$node) {
if (empty($node['imgSrc']) || !preg_match('/^(data:\s*image\/(\w+);base64,)/', $node['imgSrc'])) {
continue;
}
$uploadRet = OrderPrintTool::uploadTplImageToOss($node['imgSrc']);
if (CommonTool::isFailRet($uploadRet)) {
return CommonTool::failResult("上传图片失败: " . $uploadRet['reason']);
}
$node['imgSrc'] = '';
$node['imgPath'] = $uploadRet['ossPath'];
}
return CommonTool::successResult('nodes', $nodes);
}
public static function uploadTplImageToOss($imgDataBase64) {
if (!preg_match('/^(data:\s*image\/(\w+);base64,)/', $imgDataBase64, $result)) {
return CommonTool::failResult('数据格式错误');
}
$ext = $result[2];
if (!in_array($ext, array('jpg', 'jpeg', 'gif', 'png'))) {
return CommonTool::failResult('只允许上传jpg、png、gif的图片');
}
$dir = 'tpl/image/' . date('Y-m-d') . '/';
$name = CommonTool::getUuidName() . '.' . $ext;
$ossPath = $dir . $name;
$ret = OssTool::uploadImmutableObjectByContent($ossPath, base64_decode(str_replace($result[1], '', $imgDataBase64)));
if (CommonTool::isFailRet($ret)) {
return $ret;
}
$srcUrl = OssTool::getPubOssUrlByOssPath($ossPath);
return CommonTool::successResult(array(
'src' => $srcUrl,
'ossPath' => $ossPath,
));
}
public static function buildInvoiceInfoStr($invoiceInfo) {
if (empty($invoiceInfo['invoice_type'])) {
return '不需要开具发票';
}
return sprintf('发票类型:%s;发票抬头:%s;发票内容:%s', OrderPrintConst::getInvoiceTypeName($invoiceInfo['invoice_type']), $invoiceInfo['invoice_title'], OrderPrintConst::getInvoiceContent($invoiceInfo['invoice_content_id']));
}
public static function getPurchaseOrderExportFieldsMap() {
$fieldsMap = array(
'purchaseOrderFields' => array(
'purchaseOrderSeller' => '采购店铺',
'purchasePlatform' => '采购平台',
'purchaseOrderBuyer' => '采购账号',
'purchaseOrderSn' => '采购单号',
'purchaseOrderStartTime' => '采购时间',
'purchaseOrderStatusText' => '采购单状态',
'gmtLastCheckStatus' => '同步时间',
'purchaseOrderPayment' => '采购实付金额',
'purchaseOrderRefundMoney' => '退款金额',
),
'itemFields' => array(
'title' => '标题',
'wareId' => '商品编码',
'itemNum' => '货号',
'outerSkuId' => '商家SKU',
'skuId' => 'SKU ID',
'skuSubName' => '规格',
'jdPrice' => '单价',
'purchaseNum' => '数量',
),
'orderFields' => array(
'relationStatus' => '采购单是否关联抖店订单',
'orderId' => '订单编号',
'orderStartTime' => '下单时间',
'orderStateText' => '订单状态',
'shopName' => '店铺名称',
),
);
return $fieldsMap;
}
public static function getTplFontFamilyMap() {
return array('宋体' => '宋体', '新宋体' => '新宋体', '黑体' => '黑体', '微软雅黑' => '微软雅黑');
}
public static function buildWarehouseShelvesKey($warehouse, $shelves) {
return sprintf('%s_%s', $warehouse, $shelves);
}
public static function getExportExpressLogItemFields(){
return ['goodsName', 'goodsId', 'itemSkuId', 'goodsSpec', 'skuId', 'outerId', 'goodsCount'];
}
public static function checkNeedJoinItem($fields){
$need = false;
$result = array_intersect($fields, self::getExportExpressLogItemFields());
if(!empty($result)){
$need = true;
}
return $need;
}
public static function buildOrderPreMergeKey($fullnameSmd5, $mobileSmd5) {
return CommonTool::smd5Value($fullnameSmd5 . $mobileSmd5);
}
public static function analyzeFilterNeedInvoiceVal($invoiceInfo) {
$invoiceInfos = explode(";", $invoiceInfo);
$invoiceInfoFields = [];
foreach ($invoiceInfos as $item){
list($key, $val) = explode(":", $item);
$invoiceInfoFields[$key] = $val;
}
if (($invoiceInfoFields['发票类型'] == '普通发票') && ($invoiceInfoFields['发票抬头'] == '个人' || empty($invoiceInfoFields['发票抬头']))) {
return OrderPrintConst::filterNeedInvoiceNormalPersonal;
}
if ($invoiceInfoFields['发票类型'] == '普通发票') {
return OrderPrintConst::filterNeedInvoiceNormalCompany;
}
if ($invoiceInfoFields['发票类型'] == '增值税发票') {
return OrderPrintConst::filterNeedInvoiceTax;
}
if (($invoiceInfoFields['发票类型'] == '电子发票') && ($invoiceInfoFields['发票抬头'] == '个人' || empty($invoiceInfoFields['发票抬头']))) {
return OrderPrintConst::filterNeedInvoiceElectronicPersonal;
}
if ($invoiceInfoFields['发票类型'] == '电子发票') {
return OrderPrintConst::filterNeedInvoiceElectronicCompany;
}
}
public static function formatExpressItem($expressNo, $logisticsId, $expressType, $waybillType, $packageId, $packageCount, $isChildParent) {
return array(
'expressNo' => $expressNo,
'logisticsId' => $logisticsId,
'expressType' => $expressType,
'waybillType' => $waybillType,
'packageId' => $packageId,
'packageCount' => $packageCount,
'isChildParent' => $isChildParent ? 1 : 0,
);
}
public static function getCainiaoCustomAreaTemplateOssPath($venderId, $opVenderExpressTplId) {
$fileName = $opVenderExpressTplId . '.xml';
return sprintf('express_template/cainiao_custom_template/%s/%s', $venderId, $fileName);
}
public static function getJdAlphaExpressPayMethodOptions() {
return array(
LogisticsConst::jdAlphaExpressPayMethodPleaseSelect => '请选择',
LogisticsConst::jdAlphaExpressPayMethodSendPay => '寄方付',
LogisticsConst::jdAlphaExpressPayMethodReceiverPay => '收方付',
LogisticsConst::jdAlphaExpressPayMethodAnotherPay => '第三方付',
LogisticsConst::jdAlphaExpressPayMethodPayNow => '现结运单',
);
}
public static function getWangdianExpressPayTypeOptions($logisticsCode){
if ($logisticsCode == LogisticsConst::ZYKD) {
return [
LogisticsConst::zhongyouPayTypeSendPay => '寄付',
LogisticsConst::zhongyouPayTypeReceiverPay => '到付',
LogisticsConst::zhongyouPayTypeMonthPay => '月结'
];
} elseif ($logisticsCode == LogisticsConst::SF) {
return array(
LogisticsConst::wangdianPayTypePleaseSelect => '请选择',
LogisticsConst::wangdianPayTypePayNow => '现付',
LogisticsConst::wangdianPayTypePayReceive => '到付',
LogisticsConst::wangdianPayTypeMonthPay => '月结',
LogisticsConst::wangdianPayTypePayAnother => '第三方支付',
);
} else {
return [];
}
}
public static function formatOrderPrintConsignee($order, $opOrderDecryptAddressInfo, $isEnsconceString = true) {
if (empty($opOrderDecryptAddressInfo)) {
$fullname = $isEnsconceString ? CommonTool::ensconceString($order['post_receiver']) : $order['post_receiver'];
$mobile = $isEnsconceString ? CommonTool::ensconceString(CommonTool::decrypt($order['post_tel_s']), 'mobile') : CommonTool::decrypt($order['post_tel_s']);
$detail = $order['addr_detail'];
} else {
$fullname = $opOrderDecryptAddressInfo['post_receiver'];
$mobile = $opOrderDecryptAddressInfo['post_tel'];
$detail = $opOrderDecryptAddressInfo['detail'];
}
if (OrderTool::isVirtualNumber($mobile)) {
list($mobile, $virtualNumberSuffix) = OrderTool::parseVirtualNumber($mobile);
}
$consignee = array(
'bFullname' => $fullname,
'bTelephone' => $mobile,
'bMobile' => $mobile,
'bProvinceAreaId' => $order['province_id'],
'bProvince' => $order['province'],
'bCityAreaId' => $order['city_id'],
'bCity' => $order['city'],
'bCountyAreaId' => $order['county_id'],
'bCounty' => $order['county'],
'bTownAreaId' => 0,
'bTown' => $order['town'] ?: '',
'bAddress' => $detail,
'bFullAddress' => sprintf('%s %s %s %s%s', $order['province'], $order['city'], $order['county'], $order['town'] ?: '', $detail),
'orderPreMergeKey' => OrderPrintTool::buildOrderPreMergeKey(CommonTool::smd5Value($order['post_receiver']), CommonTool::smd5Value(CommonTool::decrypt($order['post_tel_s'])))
);
if (!empty($virtualNumberSuffix)) {
$consignee['virtualNumberSuffix'] = $virtualNumberSuffix;
}
return $consignee;
}
public static function formatOrderPrintCustomAddress($customAddressInfo, $isEnsconceString = true) {
$customAddress = [];
if (empty($customAddressInfo)) {
return $customAddress;
}
$customAddress = [
'bFullname' => $isEnsconceString ? CommonTool::ensconceString($customAddressInfo['fullname']) : $customAddressInfo['fullname'],
'bTelephone' => $isEnsconceString ? CommonTool::ensconceString($customAddressInfo['telephone'], 'mobile') : $customAddressInfo['telephone'],
'bMobile' => $isEnsconceString ? CommonTool::ensconceString($customAddressInfo['mobile'], 'mobile') : $customAddressInfo['mobile'],
'bProvinceAreaId' => $customAddressInfo['province_area_id'],
'bProvince' => $customAddressInfo['province'],
'bCityAreaId' => $customAddressInfo['city_area_id'],
'bCity' => $customAddressInfo['city'],
'bCountyAreaId' => $customAddressInfo['county_area_id'],
'bCounty' => $customAddressInfo['county'],
'bTownAreaId' => $customAddressInfo['town_area_id'],
'bTown' => $customAddressInfo['town'],
'bAddress' => $customAddressInfo['address'],
'bFullAddress' => $customAddressInfo['full_address'],
'orderPreMergeKey' => OrderPrintTool::buildOrderPreMergeKey(CommonTool::smd5Value($customAddressInfo['fullname']), CommonTool::smd5Value($customAddressInfo['mobile']))
];
return $customAddress;
}
public static function formatDistrOrderPrintConsignee($order) {
return [
'bFullname' => '',
'bTelephone' => '',
'bMobile' => '',
'bProvinceAreaId' => $order['province_id'],
'bProvince' => $order['province'],
'bCityAreaId' => $order['city_id'],
'bCity' => $order['city'],
'bCountyAreaId' => $order['district_id'],
'bCounty' => $order['district'],
'bTownAreaId' => $order['street_id'],
'bTown' => $order['street'],
'bAddress' => '',
'bFullAddress' => '',
'orderPreMergeKey' => $order['receiver_id']
];
}
public static function formatWlbWangdianData($waybillInfo, $subIndex = 0, $printSecondSectionWatermark, $width) {
if ($subIndex == 0) {
$waybillCode = $waybillInfo['waybillCode'];
} else {
$waybillCode = $waybillInfo['subWaybillCodes'][$subIndex - 1];
}
if ($printSecondSectionWatermark) {
$routeCodeArray = explode(' ', $waybillInfo['shortName']);
$secondSectionCode = count($routeCodeArray) == 1 ? $routeCodeArray[0] : $routeCodeArray[1];
$secondSectionCodeWatermark = self::generateSecondSectionCodeWatermark($routeCodeArray[0], $width);
}
$returnData = array(
LogisticsConst::wlbCode => $waybillCode,
LogisticsConst::wlbBarcode => $waybillCode,
LogisticsConst::parentWlbCode => $waybillInfo['waybillCode'],
LogisticsConst::originName => $waybillInfo['originName'],
LogisticsConst::originCode => $waybillInfo['originCode'],
LogisticsConst::consolidationName => $waybillInfo['consolidationName'],
LogisticsConst::consolidationCode => $waybillInfo['consolidationCode'],
LogisticsConst::targetName => $waybillInfo['targetName'],
LogisticsConst::targeCode => $waybillInfo['targeCode'],
LogisticsConst::shortName => $waybillInfo['shortName'],
LogisticsConst::secondSectionCodeWatermark => $secondSectionCodeWatermark,
LogisticsConst::secondSectionCode => empty($secondSectionCode) ? '' : $secondSectionCode,
LogisticsConst::fromBranchName => $waybillInfo['fromBranchName'],
LogisticsConst::toBranchName => $waybillInfo['toBranchName'],
LogisticsConst::road => $waybillInfo['road'],
'isChildWaybill' => $subIndex == 0 ? false : true
);
if (!empty($waybillInfo['packageNo'])) {
$returnData[LogisticsConst::packageNo] = $waybillInfo['packageNo'];
}
return $returnData;
}
public static function isEnsconcedMobile($mobile) {
return strpos($mobile, '*') ? true : false;
}
public static function joinFullAddress($province, $city, $county, $address) {
return sprintf('%s%s%s%s', $province, $city, $county, $address);
}
public static function formartCustomOrderDetailNv($orderDetail) {
$nvMap = array(
'custom_order_id' => 'orderId',
'biz_order_num' => 'orderSn',
'order_status' => 'orderStatus',
'order_status_name' => 'orderStatusName',
'pay_type' => 'payType',
'goods_amount' => 'goodsAmount',
'pay_amount' => 'payAmount',
'postage' => 'postage',
'discount_amount' => 'discountAmount',
'buyer_memo' => 'buyerMemo',
'waybill' => 'waybill',
'payment_confirm_time' => 'paymentConfirmTime',
'logistics_id' => 'logisticsId',
'logistics_name' => 'logisticsName',
'order_start_time' => 'orderStartTime',
'remark' => 'sellerMemo',
'print_express_status' => 'printExpressStatus',
'print_invoice_status' => 'printInvoiceStatus',
'express_type' => 'expressType',
'is_shipped' => 'isShipped',
'gmt_print_express' => 'gmtPrintExpress',
'gmt_print_invoice' => 'gmtPrintInvoice',
'gmt_shipped' => 'gmtShipped',
'gmt_create' => 'gmtCreate',
'goodsList' => 'items'
);
$tradeRow = array();
foreach ($orderDetail as $key => $value) {
if (array_key_exists($key, $nvMap)) {
if ($key == 'goodsList') {
$value = self::formartCustomOrderGoodsInfoNv($value);
}
$tradeRow[$nvMap[$key]] = $value;
}
}
return $tradeRow;
}
public static function formartCustomOrderGoodsInfoNv($orderGoodsList) {
$nvMap = array(
'custom_goods_info_id' => 'itemId',
'order_id' => 'orderId',
'sku_id' => 'skuId',
'title' => 'title',
'goods_name' => 'goodsName',
'sku_name' => 'skuName',
'goods_price' => 'goodsPrice',
'outer_goods_id' => 'outerGoodsId',
'outer_id' => 'outerId',
'goods_count' => 'goodsCount',
'total_price' => 'totalPrice',
'goods_img' => 'goodsImg',
'goods_spec' => 'goodsSpec',
'sku_sub_name' => 'skuSubName',
'short_title' => 'shortTitle',
'weight' => 'weight',
'short_weight' => 'shortWeight',
'is_shipped' => 'isShipped',
'is_can_print' => 'isCanPrint',
'item_total' => 'itemTotal',
'jd_price' => 'jdPrice',
'coupon_price' => 'couponPrice',
'logo' => 'logo',
);
$nvGoodsList = array();
foreach ($orderGoodsList as $key => $goods) {
$nvGoods = array();
foreach ($goods as $n => $value) {
if (array_key_exists($n, $nvMap)) {
$nvGoods[$nvMap[$n]] = $value;
}
}
$nvGoodsList[$key] = $nvGoods;
}
return $nvGoodsList;
}
public static function formatLastExpressInfo($tplId, $orderLastExpress, $logisticsList, $opShopExpressTpls, $lastExpressNos) {
return [
'opShopExpressTplId' => $orderLastExpress['op_shop_express_tpl_id'],
'logisticsId' => $orderLastExpress['logistics_id'],
'logisticsCode' => $logisticsList[$orderLastExpress['logistics_id']]['logistics_code'],
'logisticsName' => $logisticsList[$orderLastExpress['logistics_id']]['logistics_name'],
'expressType' => $orderLastExpress['express_type'],
'waybillType' => $orderLastExpress['waybill_type'],
'packageCount' => $orderLastExpress['package_count'],
'tplId' => $tplId,
'tplName' => $opShopExpressTpls[$tplId]['tpl_name'] . (($opShopExpressTpls[$tplId]['status'] == StatusConst::delete) ? '【已删除】' : ''),
'expressNos' => $lastExpressNos,
];
}
public static function getQuickSearchOrderFilterOptions() {
return [
'' => '不限',
'hasMergeOrder' => '合并订单',
'notMergerOrder' => '非合并订单',
'hasPreMergeOrder' => '待合并订单',
'partDeliveryOrder' => '部分发货订单',
'hasVenderNote' => '有本地备注',
'noVenderNote' => '无本地备注',
'invoicePrinted' => '已打印发货单',
'invoiceNoPrinted' => '未打印发货单',
'preSaleDeposit' => '定金预售',
'preSaleAll' => '全款预售',
'notPreSale' => '非预售订单',
'hasFreeProduct' => '有赠品订单',
'notFreeProduct' => '无赠品订单',
'freeFreight' => '包邮订单',
'notFreeFreight' => '非包邮订单',
'isTownOrder' => '乡、村、镇订单',
'hasPriceProtection' => '有价保订单',
'notPriceProtection' => '无价保订单',
'sugHomeDeliver' => '建议音尊达',
'noSugHomeDeliver' => '非建议音尊达',
'consigneeAreaAbnormal' => '异常地址订单',
'notConsigneeAreaAbnormal' => '非异常地址订单',
'cBizValueAlliance' => '精选联盟',
'cBizValueShopSelf' => '小店自卖',
'isReceiverAddressChanged' => '买家已修改地址',
];
}
public static function getQuickSearcCustomhOrderFilterOptions() {
return [
'' => '不限',
'invoicePrinted' => '已打印发货单',
'invoiceNoPrinted' => '未打印发货单',
'freeFreight' => '包邮订单',
'notFreeFreight' => '非包邮订单',
'isTownOrder' => '乡、村、镇订单',
];
}
public static function getDdExpressServiceTypeOptions($logisticsId) {
$logisticsIdAndServiceInfoMap = LogisticsConst::getDdLogisticsIdAndServiceInfoMap();
return $logisticsIdAndServiceInfoMap[$logisticsId] ?: [];
}
public static function getDdExpressPayTypeOptions() {
return [
LogisticsConst::ddPayTypeDefault => '默认',
LogisticsConst::ddPayTypeSendPayNow => '寄付月结',
LogisticsConst::ddPayTypeSendPayMonth => '寄付现结',
];
}
public static function getDdExpressOrderTypeOptions($logisticsId) {
$logisticsIdAndProductInfoMap = LogisticsConst::getDdLogisticsIdAndProductInfoMap();
return $logisticsIdAndProductInfoMap[$logisticsId] ?: [];
}
public static function formatAfterSaleInfo($afterSaleInfo) {
if (empty($afterSaleInfo)) {
return [];
}
return [
'afterSaleStatus' => $afterSaleInfo['after_sale_status'] ?: $afterSaleInfo['aftersale_status'],
'afterSaleType' => $afterSaleInfo['after_sale_type'] ?: $afterSaleInfo['aftersale_type'],
'refundStatus' => $afterSaleInfo['refund_status']
];
}
public static function checkChildOrderHasAfterSale($childOrderAfterSaleInfo) {
if (empty($childOrderAfterSaleInfo)) {
return false;
}
if (!empty($childOrderAfterSaleInfo['afterSaleStatus']) && in_array($childOrderAfterSaleInfo['afterSaleStatus'], AfterSaleConst::getAfterSaleCloseOrCancelStatusList())) {
return false;
}
if (!empty($childOrderAfterSaleInfo['afterSaleStatus'])) {
return true;
}
if (!empty($childOrderAfterSaleInfo['refundStatus'])) {
return true;
}
return false;
}
public static function getChildOrderIdAndAfterSaleInfoMap($afterSaleList) {
if (!$afterSaleList) {
return [];
}
array_multisort(array_column($afterSaleList, 'aftersale_id'), SORT_ASC, $afterSaleList);
reset($afterSaleList);
$childOrderIdAndAfterSaleInfoMap = [];
foreach ($afterSaleList as $afterSale) {
$childOrderIdAndAfterSaleInfoMap[$afterSale['order_id']] = self::formatAfterSaleInfo($afterSale);
}
return $childOrderIdAndAfterSaleInfoMap;
}
public static function checkIsCanPrint($item, $childAfterSaleInfo) {
if ($item['orderStatus'] == OrderConst::orderStatusCancel) {
return false;
}
if (self::checkChildOrderHasAfterSale($childAfterSaleInfo)) {
return false;
}
if (self::checkChildOrderHasAfterSale($item['afterSaleInfo'])) {
return false;
}
return true;
}
public static function rebuildPrintFailReason($reason) {
if (!$reason) {
return '';
}
switch ($reason) {
case '京东产品类型必传':
$reason = '京东快递产品类型必传';
break;
}
return $reason;
}
public static function moneyToCent($money) {
list($moneyElement, $decimal) = explode('.', $money);
$moneyElementArr = explode(',', $moneyElement);
$moneyString = join("", $moneyElementArr);
return Intval($moneyString);
}
public static function getPrintExpressHistoryExportFieldsMap() {
$logisticsInfosMap = [
'shopName' => '店铺',
'waybillCode' => '物流单号',
'logisticsName' => '物流公司',
'fullname' => '收货人',
'fullMobile' => '收货人手机',
'fullAddress' => '收货地址',
'printTime' => '打印日期',
'senderName' => '发货人',
'senderMobile' => '发货人手机',
'senderAddress' => '发货地址',
];
$orderInfosMap = [
'orderId' => '订单号 ',
'sellerMemo' => '商家备注 ',
'buyerMemo' => '买家备注 ',
'payAmount' => '订单金额',
'cBizName' => '流量来源',
'realCommission' => '达人佣金',
];
$goodsInfosMap = [
'goodsName' => '商品标题',
'goodsId' => '商品ID',
'goodsSpec' => '商品规格',
'skuId' => 'SKU ID',
'outerId' => 'SKU编码',
'goodsCount' => '数量',
];
return [$logisticsInfosMap, $orderInfosMap, $goodsInfosMap];
}
public static function getCustomPrintExpressHistoryExportFieldsMap() {
$logisticsInfosMap = [
'shopName' => '店铺',
'waybillCode' => '物流单号',
'logisticsName' => '物流公司',
'fullname' => '收货人',
'mobile' => '收货人手机',
'fullAddress' => '收货地址',
'printTime' => '打印日期',
'senderName' => '发货人',
'senderMobile' => '发货人手机',
'senderAddress' => '发货地址',
];
$orderInfosMap = [
'orderSn' => '订单号',
'sellerMemo' => '商家备注 ',
'buyerMemo' => '买家备注 ',
'payAmount' => '订单金额',
];
$goodsInfosMap = [
'goodsName' => '商品标题',
'goodsId' => '商品ID',
'goodsSpec' => '商品规格',
'skuId' => 'SKU ID',
'outerId' => 'SKU编码',
'goodsCount' => '数量',
];
return [$logisticsInfosMap, $orderInfosMap, $goodsInfosMap];
}
public static function getSourcePlatformByPrintFrom($printFrom) {
$map = [
OrderPrintConst::printFromSooxieDsOrder => PurchaseOrderConst::purchasePlatformSooxieDS
];
return $map[$printFrom];
}
public static function getDdCompanyCodeAndSooxieCompanyCodeMap() {
return [
DdLogisticsCodeConst::yuantong => 'yto',
DdLogisticsCodeConst::yuantongkuaiyun => 'yto',
DdLogisticsCodeConst::zhongtong => 'zto',
DdLogisticsCodeConst::zhongtongkuaiyun => 'zto',
DdLogisticsCodeConst::shentong => 'sto',
DdLogisticsCodeConst::yunda => 'yd',
DdLogisticsCodeConst::yundakuaiyun => 'yd',
DdLogisticsCodeConst::shunfeng => 'sf',
DdLogisticsCodeConst::shunfengkuaiyun => 'sf',
DdLogisticsCodeConst::ems => 'ems',
// DdLogisticsCodeConst::jd => 'jd',
];
}
}