DocWaveHeaderService.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace App\Services;
  3. use App\ValueStore;
  4. use Carbon\Carbon;
  5. use Illuminate\Support\Facades\DB;
  6. use Yajra\Oci8\Query\OracleBuilder;
  7. Class DocWaveHeaderService
  8. {
  9. public function get(array $params, $rule = [])
  10. {
  11. /** @var OracleBuilder $query */
  12. $query = DB::connection("oracle")->table("doc_wave_header")->orderByDesc("edittime");
  13. foreach ($params as $column=>$param){
  14. if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
  15. else $query->where($column,$param);
  16. }
  17. return $query->get();
  18. }
  19. private function rule(OracleBuilder $query, $rule, $column, $value)
  20. {
  21. switch ($rule){
  22. case "gtOrEqual":
  23. $query->where($column,">=",$value);
  24. break;
  25. }
  26. return $query;
  27. }
  28. public function getSyncDate()
  29. {
  30. $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->first();
  31. return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
  32. }
  33. }