| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace App\Services;
- use App\Commodity;
- use App\KeyValues;
- use App\OracleBasSKU;
- use App\Owner;
- use Carbon\Carbon;
- use Illuminate\Support\Facades\Cache;
- class CommoditySync
- {
- public function sync()
- {
- $this->syncCreated2();
- $this->syncUpdated();
- }
- private function syncCreated()
- {
- $keyValues = KeyValues::query()->where('key', 'commodity_last_created_sync_at');
- if (!$keyValues || !$keyValues->value) {
- $commodity = Commodity::query()->orderByDesc('created_at')->first();
- $last_created_sync_at = $commodity->created_at;
- }
- $last_created_sync_at = $keyValues->value;
- $oracleBasSKUs = OracleBasSKU::query()->where('addtime', '>', ' ');
- $owners = Owner::query()->whereIn('code', data_get($oracleBasSKUs, '*.customerid'))->get();
- $ownerMap = [];
- $owners->each(function ($item) use (&$ownerMap) {
- $ownerMap[$item->code] = $item->id;
- });
- $commoditys = [];
- $oracleBasSKUs->each(function ($item) use (&$commoditys, $ownerMap) {
- $owner_id = $ownerMap[$item->customerid];
- $dateTime = Carbon::now()->format('Y-m-d H:i:s');
- $commoditys[] = [
- 'name' => $item->descr_c,
- 'sku' => $item->sku,
- 'owner_id' => $owner_id,
- 'length' => $item->skulength,
- 'width' => $item->skuwidth,
- 'height' => $item->skuhigh,
- 'volumn' => $item->cube,
- 'type' => '无',
- 'created_at' => $dateTime,
- 'updated_at' => $dateTime,
- ];
- });
- }
- private function syncCreated2()
- {
- $keyValues = KeyValues::query()->where('key', 'commodity_last_created_sync_at');
- if (!$keyValues || !$keyValues->value) {
- //未同步过
- $last_created_sync_at = new Carbon();
- } else {
- $last_created_sync_at = Carbon::parse($keyValues->value)->subSecond()->format('Y-m-d H:i:s');
- $oracleBasSKUs = OracleBasSKU::query()->where('addtime', '>', $last_created_sync_at)->orderByDesc('addtime');
- if (Cache::get('commodity_newest_has_set')) {
- $oracleBasSKUsNew = collect();
- $oracleBasSKUs->each(function ($item) use (&$oracleBasSKUsNew, &$oracleBasSKUsOld) {
- $key = 'commodity_newest_' . $item->customerid . '_' . $item->sku;
- if (!Cache::get($key)) {
- $oracleBasSKUsNew->push($item);
- }
- });
- //插入数据到commodity
- $data = [];
- $oracleBasSKUsNew->each(function ($item) use (&$data) {
- $data[] = [
- ];
- });
- } else {
- //去数据库中对比查询的结果是否有重复的
- }
- }
- }
- private function syncUpdated()
- {
- }
- }
|