DocWaveHeaderService.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. protected $modelClass=DocWaveHeader::class;
  13. public function get(array $params, $rule = [])
  14. {
  15. /** @var OracleBuilder $query */
  16. $query = DB::connection("oracle")->table("doc_wave_header")->orderBy("edittime");
  17. foreach ($params as $column=>$param){
  18. if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
  19. else $query->where($column,$param);
  20. }
  21. return $query->get();
  22. }
  23. private function rule(OracleBuilder $query, $rule, $column, $value)
  24. {
  25. switch ($rule){
  26. case "gtOrEqual":
  27. $query->where($column,">=",$value);
  28. break;
  29. case "gt":
  30. $query->where($column,">",$value);
  31. break;
  32. case "raw":
  33. $query->whereRaw($value);
  34. break;
  35. case "in":
  36. $query->whereIn($column,$value);
  37. break;
  38. }
  39. return $query;
  40. }
  41. public function getSyncDate()
  42. {
  43. $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->first();
  44. return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
  45. }
  46. public function setSyncDate(string $value)
  47. {
  48. $valueStore = ValueStore::query()->where("name","wave_last_sync_date");
  49. return $valueStore->update(["value"=>$value]);
  50. }
  51. }