ShopService.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Services;
  3. use App\Shop;
  4. class ShopService
  5. {
  6. function firstOrCreate(array $param, array $values = null){
  7. $shop = Shop::query();
  8. if ($values) return $shop->firstOrCreate($param,$values);
  9. return $shop->firstOrCreate($param);
  10. }
  11. public function 根据追踪的WMS订单返回商铺($WMSOrderHeaders, $owners = null)
  12. {
  13. if ($owners == null) {
  14. /** @var $ownerService OwnerService */
  15. $ownerService = app('ownerService');
  16. $owners = $ownerService->获取订单跟踪的货主();
  17. }
  18. if(count($WMSOrderHeaders) == 0){
  19. return [];
  20. }
  21. $issuePartyNames = [];
  22. foreach ($WMSOrderHeaders as $WMSOrderHeader) {
  23. $issuePartyNames[$WMSOrderHeader['issuepartyname']] = $WMSOrderHeader;
  24. }
  25. $issuePartyNames = array_unique($issuePartyNames);
  26. $issuePartyNames = array_diff($issuePartyNames,['',null]);
  27. $shops = Shop::query()->whereIn('name',array_keys($issuePartyNames))->get();
  28. $fillables = [];
  29. if (count($shops) < count($issuePartyNames)) {
  30. $shopNames = data_get($shops, '*.name');
  31. $shopDiff = array_diff($issuePartyNames, $shopNames);
  32. foreach ($shopDiff as $key=>$item) {
  33. if($key === '' ){
  34. continue;
  35. }
  36. $owner = $owners->where('code', $item['customerid'])->first();
  37. if($owner === null || $item['issuepartyname'] ?? false)
  38. continue;
  39. array_push($fillables,['owner_id' => $owner['id'], 'name' => $item['issuepartyname']]);
  40. }
  41. }
  42. try {
  43. if(count($fillables) > 0){
  44. Shop::query()->insert($fillables);
  45. LogService::log(__METHOD__, __FUNCTION__, '批量创建商铺:' .json_encode($fillables));
  46. }
  47. } catch (\Exception $e) {
  48. LogService::log(__METHOD__, __FUNCTION__, '创建商铺失败:' . $e->getMessage(),$e->getTraceAsString());
  49. }
  50. return Shop::query()->whereIn('name',array_keys($issuePartyNames))->get();
  51. }
  52. }