| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace App\Services;
- use App\Shop;
- class ShopService
- {
- function firstOrCreate(array $param, array $values = null){
- $shop = Shop::query();
- if ($values) return $shop->firstOrCreate($param,$values);
- return $shop->firstOrCreate($param);
- }
- public function 根据追踪的WMS订单返回商铺($WMSOrderHeaders, $owners = null)
- {
- if ($owners == null) {
- /** @var $ownerService OwnerService */
- $ownerService = app('ownerService');
- $owners = $ownerService->获取订单跟踪的货主();
- }
- if(count($WMSOrderHeaders) == 0){
- return [];
- }
- $issuePartyNames = [];
- foreach ($WMSOrderHeaders as $WMSOrderHeader) {
- $issuePartyNames[$WMSOrderHeader['issuepartyname']] = $WMSOrderHeader;
- }
- $issuePartyNames = array_unique($issuePartyNames);
- $issuePartyNames = array_diff($issuePartyNames,['',null]);
- $shops = Shop::query()->whereIn('name',array_keys($issuePartyNames))->get();
- $fillables = [];
- if (count($shops) < count($issuePartyNames)) {
- $shopNames = data_get($shops, '*.name');
- $shopDiff = array_diff($issuePartyNames, $shopNames);
- foreach ($shopDiff as $key=>$item) {
- if($key === '' ){
- continue;
- }
- $owner = $owners->where('code', $item['customerid'])->first();
- if($owner === null || $item['issuepartyname'] ?? false)
- continue;
- array_push($fillables,['owner_id' => $owner['id'], 'name' => $item['issuepartyname']]);
- }
- }
- try {
- if(count($fillables) > 0){
- Shop::query()->insert($fillables);
- LogService::log(__METHOD__, __FUNCTION__, '批量创建商铺:' .json_encode($fillables));
- }
- } catch (\Exception $e) {
- LogService::log(__METHOD__, __FUNCTION__, '创建商铺失败:' . $e->getMessage(),$e->getTraceAsString());
- }
- return Shop::query()->whereIn('name',array_keys($issuePartyNames))->get();
- }
- }
|