<?php namespace App\Http\Services; use App\Model\LogModel; use App\Model\SupplierAddressModel; use App\Model\SupplierAttachmentsModel; use App\Model\SupplierChannelModel; use App\Model\SupplierContactModel; use http\Exception\InvalidArgumentException; class SupplierAddressService { //保存收退货地址 public function saveAddress($map) { $supplierModel = new SupplierChannelModel(); $supplierCode = $supplierModel->where('supplier_id', $map['supplier_id'])->value('supplier_code'); //组装成两条数据(鬼知道以前为啥存两条) $shippingData = [ 'supplier_id' => $map['supplier_id'], 'supplier_code' => $supplierCode, 'address' => $map['shipping_address'], 'address_type' => 1, ]; $addressModel = new SupplierAddressModel(); $infoId = $addressModel->where('supplier_id', $map['supplier_id'])->where('address_type', 1)->value('info_id'); if ($infoId) { $result = $addressModel->where('info_id', $infoId)->update($shippingData); } else { $result = $addressModel->insert($shippingData); } if ($result === false) { return $result; } $returnData = [ 'supplier_id' => $map['supplier_id'], 'supplier_code' => $supplierCode, 'address' => $map['return_address'], 'address_type' => 2, 'consignee' => $map['return_consignee'], 'phone' => $map['return_phone'], ]; $infoId = $addressModel->where('supplier_id', $map['supplier_id'])->where('address_type', 2)->value('info_id'); if ($infoId) { $result = $addressModel->where('info_id', $infoId)->update($returnData); } else { $result = $addressModel->insert($returnData); } return $result; } //保存发货地址 public function saveShippingAddress($supplierId, $address) { $supplierModel = new SupplierChannelModel(); $supplierCode = $supplierModel->where('supplier_id', $supplierId)->value('supplier_code'); //组装成两条数据(鬼知道以前为啥存两条) $shippingData = [ 'supplier_id' => $supplierId, 'supplier_code' => $supplierCode, 'address' => $address, 'address_type' => 1, ]; $addressModel = new SupplierAddressModel(); $addressModel->insert($shippingData); } //更新一体化的地址库 public function updateUnitedAddress($supplierId, $supplierAddress, $shippingAddress, $returnAddress) { //先找出原始地址数据,然后比对 $supplier = SupplierChannelModel::where('supplier_id', $supplierId)->select([ 'supplier_id', 'supplier_code', 'supplier_name', 'supplier_address', 'create_name', 'create_uid', ])->first()->toArray(); $oldSupplierAddress = $supplier['supplier_address']; //收发货地址 $addressData = SupplierAddressModel::where('supplier_id', $supplierId)->select(['info_id', 'address', 'address_type', 'supplier_id']) ->get()->toArray(); $oldShippingAddress = $oldReturnAddress = ''; $oldReturnAddressSourceId = $oldShippingAddressSourceId = ''; foreach ($addressData as $item) { if ($item['address_type'] == 1) { //发货地址 $oldShippingAddress = $item['address']; $oldShippingAddressSourceId = $supplierId . '_' . $item['info_id']; } else { //退货地址 $oldReturnAddress = $item['address']; $oldReturnAddressSourceId = $supplierId . '_' . $item['info_id']; } } //比较,如果有变化,则请求一体化接口 $changedAddress = []; if ($oldSupplierAddress != $supplierAddress) { $changedAddress[] = [ 'source_id' => $supplierId, 'source_code' => $supplier['supplier_code'], 'address_type' => '注册地址', 'address' => $supplierAddress, ]; } if ($oldShippingAddress != $shippingAddress) { $changedAddress[] = [ 'source_id' => $oldShippingAddressSourceId, 'source_code' => $supplier['supplier_code'], 'address_type' => '收货地址', 'address' => $shippingAddress, ]; } if ($oldReturnAddress != $returnAddress) { $changedAddress[] = [ 'source_id' => $oldReturnAddressSourceId, 'source_code' => $supplier['supplier_code'], 'address_type' => '退货地址', 'address' => $returnAddress, ]; } $businessLicense = SupplierAttachmentsModel::where('supplier_id', $supplierId)->where('field_name', 'business_license')->value('file_url'); //构建修改地址库请求数据 $params = [ 'company_name_cn' => $supplier['supplier_name'], 'business_license' => $businessLicense, 'source_system_id' => 1, 'create_uid' => $supplier['create_uid'], 'create_name' => $supplier['create_name'], 'address_data' => $changedAddress, ]; $url = config('website.UnitedDataDomain') . '/sync/Address/updateAddress'; $result = curl($url, $params); $result = json_decode($result, true); \Log::error($result); if (array_get($result, 'code') != 0) { \Log::error('更新一体化地址库失败 : ' . json_encode($result)); } } //批量同步地址数据到一体化初始化 public static function initUnitedAddress() { ini_set('memory_limit', -1); //先找出原始地址数据,然后比对 $supplierList = SupplierChannelModel::where('is_type', 0)->select([ 'supplier_id', 'supplier_code', 'supplier_name', 'supplier_address', 'create_name', 'create_uid', ])->get()->toArray(); foreach ($supplierList as $supplier) { $supplierId = $supplier['supplier_id']; //收发货地址 $addressData = SupplierAddressModel::where('supplier_id', $supplierId)->select(['info_id', 'address', 'address_type', 'supplier_id']) ->get()->toArray(); $oldShippingAddress = $oldReturnAddress = ''; $oldReturnAddressSourceId = $oldShippingAddressSourceId = ''; foreach ($addressData as $item) { if ($item['address_type'] == 1) { //发货地址 $oldShippingAddress = $item['address']; $oldShippingAddressSourceId = $supplierId . '_' . $item['info_id']; } else { //退货地址 $oldReturnAddress = $item['address']; $oldReturnAddressSourceId = $supplierId . '_' . $item['info_id']; } } //比较,如果有变化,则请求一体化接口 $changedAddress = []; if ($supplier['supplier_address']) { $changedAddress[] = [ 'source_id' => $supplierId, 'source_code' => $supplier['supplier_code'], 'address_type' => '注册地址', 'address' => $supplier['supplier_address'], ]; } if ($oldShippingAddress) { $changedAddress[] = [ 'source_id' => $oldShippingAddressSourceId, 'source_code' => $supplier['supplier_code'], 'address_type' => '收货地址', 'address' => $oldShippingAddress, ]; } if ($oldReturnAddress) { $changedAddress[] = [ 'source_id' => $oldReturnAddressSourceId, 'source_code' => $supplier['supplier_code'], 'address_type' => '退货地址', 'address' => $oldReturnAddress, ]; } if (empty($changedAddress)) { dump('完全没有地址,不同步 : ' . $supplier['supplier_name']); continue; } $businessLicense = SupplierAttachmentsModel::where('supplier_id', $supplierId)->where('field_name', 'business_license')->value('file_url'); //构建修改地址库请求数据 $params = [ 'company_name_cn' => $supplier['supplier_name'], 'business_license' => $businessLicense, 'source_system_id' => 1, 'create_uid' => $supplier['create_uid'], 'create_name' => $supplier['create_name'], 'address_data' => $changedAddress, ]; dump($params); //改成队列投放 (new QueueDeliveryService())->push(QueueDeliveryService::PUSH_TYPE_SYNC_HTTP, '/sync/Address/updateAddress', $params); dd(1232); } } }