diff --git a/doc/source/tool/class.OrderPrintTool.php b/doc/source/tool/class.OrderPrintTool.php
new file mode 100644
index 00000000..b5e11095
--- /dev/null
+++ b/doc/source/tool/class.OrderPrintTool.php
@@ -0,0 +1,1542 @@
+ $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',
+ ];
+ }
+}
\ No newline at end of file
diff --git a/ms-biz/src/main/java/com/ms/api/service/impl/PurchaseOrderServiceImpl.java b/ms-biz/src/main/java/com/ms/api/service/impl/PurchaseOrderServiceImpl.java
index 2e859980..e50f376a 100644
--- a/ms-biz/src/main/java/com/ms/api/service/impl/PurchaseOrderServiceImpl.java
+++ b/ms-biz/src/main/java/com/ms/api/service/impl/PurchaseOrderServiceImpl.java
@@ -55,53 +55,20 @@ import com.ms.api.service.ProductToDsItemService;
import com.ms.api.service.PurchaseOrderService;
import com.ms.api.service.PurchaseSettingService;
import com.ms.api.service.ShopService;
-import com.ms.api.tool.CommonTool;
-import com.ms.api.tool.DsOrderTool;
-import com.ms.api.tool.OrderTool;
-import com.ms.api.tool.PurchaseTool;
+import com.ms.api.tool.*;
import com.ms.api.util.DdRequestUtil;
import com.ms.api.util.WebUtil;
import com.ms.dal.bo.OpLogisticsPlatformBO;
import com.ms.dal.bo.OpOrderAddressHistoryBO;
import com.ms.dal.bo.OpOrderChildBO;
import com.ms.dal.bo.PurchaseOrderBO;
-import com.ms.dal.entity.AfterSale;
-import com.ms.dal.entity.DsAllowAutoPurchaseProduct;
-import com.ms.dal.entity.DsFilterAutoPurchaseProduct;
-import com.ms.dal.entity.DsPurchaseSetting;
-import com.ms.dal.entity.OpOrder;
-import com.ms.dal.entity.OpOrderAmountDetail;
-import com.ms.dal.entity.OpOrderChildLogistics;
-import com.ms.dal.entity.OpOrderEncryptIndex;
-import com.ms.dal.entity.OpOrderExt;
-import com.ms.dal.entity.OpOrderGivenProduct;
-import com.ms.dal.entity.OpOrderOutstorageHistory;
-import com.ms.dal.entity.OpOrderPhase;
-import com.ms.dal.entity.OpOrderPriceProtection;
-import com.ms.dal.entity.OpOrderRedpackInfo;
-import com.ms.dal.entity.OpOrderSensitive;
-import com.ms.dal.entity.ProductToDsItem;
-import com.ms.dal.entity.PurchaseOrder;
-import com.ms.dal.entity.PurchaseOrderItem;
-import com.ms.dal.entity.PurchaseOrderSetting;
-import com.ms.dal.entity.PurchaseSetting;
-import com.ms.dal.entity.Shop;
-import com.ms.dal.entity.ShopTo1688DsMember;
-import com.ms.dal.mapper.DsAllowAutoPurchaseProductMapper;
-import com.ms.dal.mapper.DsFilterAutoPurchaseProductMapper;
-import com.ms.dal.mapper.DsPurchaseSettingMapper;
-import com.ms.dal.mapper.OpOrderChildMapper;
-import com.ms.dal.mapper.OpOrderEncryptIndexMapper;
-import com.ms.dal.mapper.OpOrderMapper;
-import com.ms.dal.mapper.PurchaseOrderItemMapper;
-import com.ms.dal.mapper.PurchaseOrderMapper;
-import com.ms.dal.mapper.PurchaseOrderSettingMapper;
-import com.ms.dal.mapper.PurchaseSettingMapper;
-import com.ms.dal.mapper.ShopTo1688DsMemberMapper;
+import com.ms.dal.entity.*;
+import com.ms.dal.mapper.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
/**
*
@@ -144,6 +111,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Autowired
private ShopTo1688DsMemberMapper shopTo1688DsMemberMapper;
+ @Autowired
+ private PurchaseSettingLogMapper purchaseSettingLogMapper;
+
@Autowired
private ShopService shopService;
@@ -720,8 +690,54 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
return purchaseSettingDTO;
}
+ @Transactional
public boolean savePurchaseSetting(Long shopId, PurchaseSettingDTO purchaseSettingDTO) {
- // todo:
+ if (purchaseSettingDTO == null) {
+ return false;
+ }
+
+ PurchaseSetting setting = new PurchaseSetting();
+ setting.setShopId(shopId);
+ setting.setIsAppendShopRemark(purchaseSettingDTO.getIsAppendShopRemark() != 0 && !StringUtils.isEmpty(purchaseSettingDTO.getAppendShopRemarkTpl()) ? 1 : 0);
+ setting.setIsAppendShopNote(purchaseSettingDTO.getIsAppendShopNote() != 0 && !StringUtils.isEmpty(purchaseSettingDTO.getAppendShopNoteTpl()) ? 1 : 0);
+ setting.setIsAutoFillRemark(purchaseSettingDTO.getIsAutoFillRemark() != 0 && !StringUtils.isEmpty(purchaseSettingDTO.getAutoFillRemarkTpl()) ? 1 : 0);
+ setting.setIsAutoFillOrderMemo(purchaseSettingDTO.getIsAutoFillOrderMemo() != 0 && !StringUtils.isEmpty(purchaseSettingDTO.getAutoFillOrderMemoTpl()) ? 1 : 0);
+ setting.setAppendShopRemarkTpl(purchaseSettingDTO.getAppendShopRemarkTpl());
+ setting.setAppendShopNoteTpl(purchaseSettingDTO.getAppendShopNoteTpl());
+ setting.setAutoFillRemarkTpl(purchaseSettingDTO.getAutoFillRemarkTpl());
+ setting.setAutoFillOrderMemoTpl(purchaseSettingDTO.getAutoFillOrderMemoTpl());
+ if (OrderPrintTool.getOrderFlag(purchaseSettingDTO.getShopRemarkFlag()) != null) {
+ setting.setShopRemarkFlag(purchaseSettingDTO.getShopRemarkFlag());
+ } else {
+ setting.setShopRemarkFlag(0);
+ }
+ setting.setGmtModified(new Date());
+
+
+ PurchaseSetting oldSetting = purchaseSettingMapper.selectByShopId(shopId);
+ String oldSettingJson;
+ if (oldSetting == null) {
+ setting.setGmtCreate(new Date());
+ purchaseSettingMapper.insert(setting);
+ oldSettingJson = "[]";
+
+
+ } else {
+ purchaseSettingMapper.updateByShopId(setting);
+ oldSettingJson = JSONObject.toJSONString(oldSetting);
+
+ }
+ PurchaseSettingLog purchaseSettingLog = new PurchaseSettingLog();
+ purchaseSettingLog.setShopId(shopId);
+ purchaseSettingLog.setSource("savePurchaseSetting");
+ purchaseSettingLog.setData(JSONObject.toJSONString(setting));
+ purchaseSettingLog.setBeforeData(oldSettingJson);
+// todo: 当前操作员信息补充
+// purchaseSettingLog.setOperateShopId(shopId);
+// purchaseSettingLog.setOperateIp();
+ purchaseSettingLog.setGmtCreate(new Date());
+ purchaseSettingLog.setGmtModified(new Date());
+ purchaseSettingLogMapper.insert(purchaseSettingLog);
return false;
}
diff --git a/ms-biz/src/main/java/com/ms/api/tool/OrderPrintTool.java b/ms-biz/src/main/java/com/ms/api/tool/OrderPrintTool.java
new file mode 100644
index 00000000..ee607212
--- /dev/null
+++ b/ms-biz/src/main/java/com/ms/api/tool/OrderPrintTool.java
@@ -0,0 +1,28 @@
+package com.ms.api.tool;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class OrderPrintTool {
+ private static final Map orderFlagMap = new HashMap<>();
+
+ static {
+ orderFlagMap.put(0, "flag-gray.png");
+ orderFlagMap.put(1, "flag-purple.png");
+ orderFlagMap.put(2, "flag-cyan.png");
+ orderFlagMap.put(3, "flag-green.png");
+ orderFlagMap.put(4, "flag-orange.png");
+ orderFlagMap.put(5, "flag-red.png");
+ }
+
+ /**
+ * 获取备注旗帜
+ * @param flag
+ * @return
+ */
+ public static String getOrderFlag(int flag) {
+ return orderFlagMap.get(flag);
+ }
+
+
+}
diff --git a/ms-dal/src/main/java/com/ms/dal/mapper/PurchaseSettingMapper.java b/ms-dal/src/main/java/com/ms/dal/mapper/PurchaseSettingMapper.java
index 6391c65e..34e807bc 100644
--- a/ms-dal/src/main/java/com/ms/dal/mapper/PurchaseSettingMapper.java
+++ b/ms-dal/src/main/java/com/ms/dal/mapper/PurchaseSettingMapper.java
@@ -23,4 +23,6 @@ public interface PurchaseSettingMapper {
int updateByPrimaryKey(PurchaseSetting record);
PurchaseSetting selectByShopId(Long shopId);
+
+ int updateByShopId(PurchaseSetting record);
}
diff --git a/ms-dal/src/main/resources/mapper/PurchaseSettingMapper.xml b/ms-dal/src/main/resources/mapper/PurchaseSettingMapper.xml
index a4ddc4ae..378034dd 100644
--- a/ms-dal/src/main/resources/mapper/PurchaseSettingMapper.xml
+++ b/ms-dal/src/main/resources/mapper/PurchaseSettingMapper.xml
@@ -147,4 +147,43 @@
gmt_modified = #{gmtModified,jdbcType=TIMESTAMP}
where purchase_setting_id = #{purchaseSettingId,jdbcType=BIGINT}
+
+ update purchase_setting
+
+
+ is_append_shop_remark = #{isAppendShopRemark,jdbcType=BOOLEAN},
+
+
+ append_shop_remark_tpl = #{appendShopRemarkTpl,jdbcType=VARCHAR},
+
+
+ is_append_shop_note = #{isAppendShopNote,jdbcType=BOOLEAN},
+
+
+ append_shop_note_tpl = #{appendShopNoteTpl,jdbcType=VARCHAR},
+
+
+ shop_remark_flag = #{shopRemarkFlag,jdbcType=TINYINT},
+
+
+ is_auto_fill_remark = #{isAutoFillRemark,jdbcType=BOOLEAN},
+
+
+ auto_fill_remark_tpl = #{autoFillRemarkTpl,jdbcType=VARCHAR},
+
+
+ is_auto_fill_order_memo = #{isAutoFillOrderMemo,jdbcType=BOOLEAN},
+
+
+ auto_fill_order_memo_tpl = #{autoFillOrderMemoTpl,jdbcType=VARCHAR},
+
+
+ gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
+
+
+ gmt_modified = #{gmtModified,jdbcType=TIMESTAMP},
+
+
+ where shop_id = #{shopId,jdbcType=BIGINT}
+