DocWaveHeaderService.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Services;
  3. use App\ValueStore;
  4. use Carbon\Carbon;
  5. use Illuminate\Support\Facades\Cache;
  6. use Illuminate\Support\Facades\DB;
  7. use Yajra\Oci8\Query\OracleBuilder;
  8. use App\Traits\ServiceAppAop;
  9. Class DocWaveHeaderService
  10. {
  11. use ServiceAppAop;
  12. public function get(array $params, $rule = [])
  13. {
  14. /** @var OracleBuilder $query */
  15. $query = DB::connection("oracle")->table("doc_wave_header")->orderBy("edittime");
  16. foreach ($params as $column=>$param){
  17. if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
  18. else $query->where($column,$param);
  19. }
  20. return $query->get();
  21. }
  22. private function rule(OracleBuilder $query, $rule, $column, $value)
  23. {
  24. switch ($rule){
  25. case "gtOrEqual":
  26. $query->where($column,">=",$value);
  27. break;
  28. case "gt":
  29. $query->where($column,">",$value);
  30. break;
  31. case "raw":
  32. $query->whereRaw($value);
  33. break;
  34. case "in":
  35. $query->whereIn($column,$value);
  36. break;
  37. }
  38. return $query;
  39. }
  40. public function getSyncDate()
  41. {
  42. $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->first();
  43. return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
  44. }
  45. public function setSyncDate(string $value)
  46. {
  47. $valueStore = ValueStore::query()->where("name","wave_last_sync_date");
  48. return $valueStore->update(["value"=>$value]);
  49. }
  50. }