| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- namespace App\Services;
- use App\Logistic;
- use App\OracleBasCustomer;
- use Carbon\Carbon;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Str;
- Class LogisticService
- {
- /** @var CacheService $cacheService */
- private $cacheService;
- function __construct(){
- $this->cacheService=app('CacheService');
- }
- public function getSelection($column = ['id','name'], $type = '快递'){
- return $this->cacheService->getOrExecute('LogisticAll_idName'.Str::studly($type),function()use($column,$type){
- $query = Logistic::query()->select($column);
- if ($type)$query->where(function ($query)use($type){
- /** @var Builder $query */
- $query->where("type",$type)->orWhere("type","全部");
- });
- return $query->get();
- },config('cache.expirations.persistent'));
- }
- public function firstOrCreate(array $params, array $values = null){
- return $this->cacheService->getOrExecute('LogisticFirstOrCreate'.md5(json_encode($params).json_encode($values)),function()use($params,$values){
- $logistic = Logistic::query();
- if ($values)return $logistic->firstOrCreate($params, $values);
- return $logistic->firstOrCreate($params);
- },config('cache.expirations.commonFrequent'));
- }
- public function getByWmsOrders($orderHeaders){
- $codes = data_get($orderHeaders,'*.userdefine1');
- $codes = array_unique($codes);
- $codes = array_diff($codes,['','*',null]);
- if(!$codes){return [];}
- $logistics = Logistic::query()->whereIn('code',$codes)->get();
- if($logistics->count() < count($codes)){
- $codes = array_diff($codes,data_get($logistics,'*.code'));
- $logistic_list = $this->createLogisticByCarrierIds($codes);
- $logistics = $logistics->concat($logistic_list);
- }
- return $logistics;
- }
- public function createLogisticByCarrierIds($codes){
- if(!$codes){return [];}
- $baseCustomers = OracleBasCustomer::query()
- ->where('Customer_Type','CA')
- ->whereIn('CustomerID',$codes)
- ->get();
- $insert_params = [];
- $created_at = Carbon::now()->format('Y-m-d H:i:s');
- foreach ($baseCustomers as $baseCustomer) {
- $insert_params[] = [
- 'code' => $baseCustomer['customerid'],
- 'name' => $baseCustomer['descr_c'],
- 'created_at' => $created_at
- ];
- }
- try {
- if(count($insert_params) > 0){
- $this->insert($insert_params);
- LogService::log(__METHOD__, __FUNCTION__, '批量创建 Logistic ' . count($insert_params) . json_encode($insert_params) );
- }
- } catch (\Exception $e) {
- LogService::log(__METHOD__, __FUNCTION__, '批量创建 Logistic error' . json_encode($insert_params) . "||".$e->getMessage() . '||' . $e->getTraceAsString() );
- } finally {
- return Logistic::query()->whereIn('code',$codes)->get();
- }
- }
- public function insert(array $params){
- return Logistic::query()->insert($params);
- }
- public function find($id)
- {
- return Logistic::query()->find($id);
- }
- }
|