CommoditySync.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Services;
  3. use App\Commodity;
  4. use App\KeyValues;
  5. use App\OracleBasSKU;
  6. use App\Owner;
  7. use Carbon\Carbon;
  8. use Illuminate\Support\Facades\Cache;
  9. class CommoditySync
  10. {
  11. public function sync()
  12. {
  13. $this->syncCreated2();
  14. $this->syncUpdated();
  15. }
  16. private function syncCreated()
  17. {
  18. $keyValues = KeyValues::query()->where('key', 'commodity_last_created_sync_at');
  19. if (!$keyValues || !$keyValues->value) {
  20. $commodity = Commodity::query()->orderByDesc('created_at')->first();
  21. $last_created_sync_at = $commodity->created_at;
  22. }
  23. $last_created_sync_at = $keyValues->value;
  24. $oracleBasSKUs = OracleBasSKU::query()->where('addtime', '>', ' ');
  25. $owners = Owner::query()->whereIn('code', data_get($oracleBasSKUs, '*.customerid'))->get();
  26. $ownerMap = [];
  27. $owners->each(function ($item) use (&$ownerMap) {
  28. $ownerMap[$item->code] = $item->id;
  29. });
  30. $commoditys = [];
  31. $oracleBasSKUs->each(function ($item) use (&$commoditys, $ownerMap) {
  32. $owner_id = $ownerMap[$item->customerid];
  33. $dateTime = Carbon::now()->format('Y-m-d H:i:s');
  34. $commoditys[] = [
  35. 'name' => $item->descr_c,
  36. 'sku' => $item->sku,
  37. 'owner_id' => $owner_id,
  38. 'length' => $item->skulength,
  39. 'width' => $item->skuwidth,
  40. 'height' => $item->skuhigh,
  41. 'volumn' => $item->cube,
  42. 'type' => '无',
  43. 'created_at' => $dateTime,
  44. 'updated_at' => $dateTime,
  45. ];
  46. });
  47. }
  48. private function syncCreated2()
  49. {
  50. $keyValues = KeyValues::query()->where('key', 'commodity_last_created_sync_at');
  51. if (!$keyValues || !$keyValues->value) {
  52. //未同步过
  53. $last_created_sync_at = new Carbon();
  54. } else {
  55. $last_created_sync_at = Carbon::parse($keyValues->value)->subSecond()->format('Y-m-d H:i:s');
  56. $oracleBasSKUs = OracleBasSKU::query()->where('addtime', '>', $last_created_sync_at)->orderByDesc('addtime');
  57. if (Cache::get('commodity_newest_has_set')) {
  58. $oracleBasSKUsNew = collect();
  59. $oracleBasSKUs->each(function ($item) use (&$oracleBasSKUsNew, &$oracleBasSKUsOld) {
  60. $key = 'commodity_newest_' . $item->customerid . '_' . $item->sku;
  61. if (!Cache::get($key)) {
  62. $oracleBasSKUsNew->push($item);
  63. }
  64. });
  65. //插入数据到commodity
  66. $data = [];
  67. $oracleBasSKUsNew->each(function ($item) use (&$data) {
  68. $data[] = [
  69. ];
  70. });
  71. } else {
  72. //去数据库中对比查询的结果是否有重复的
  73. }
  74. }
  75. }
  76. private function syncUpdated()
  77. {
  78. }
  79. }