WaterOrder.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. declare(strict_types=1);
  3. namespace plugin\saiadmin\app\model\water;
  4. final class WaterOrder extends WaterModel
  5. {
  6. protected $table = 'sa_water_order';
  7. public function commissions()
  8. {
  9. return $this->hasMany(WaterCommission::class, 'order_id');
  10. }
  11. /** Demo identification follows the persisted seed reference/package naming convention. */
  12. public function scopeFinanceSource(\Illuminate\Database\Eloquent\Builder $query,string $source): \Illuminate\Database\Eloquent\Builder
  13. {
  14. if ($source==='demo') return $query->where(function ($q) {
  15. $q->where('o.reference','like','TEST-%')->orWhere('o.package_name','like','%测试%');
  16. });
  17. if ($source==='regular') return $query->where('o.reference','not like','TEST-%')->where('o.package_name','not like','%测试%');
  18. return $query;
  19. }
  20. public function scopeFinancePeriod(\Illuminate\Database\Eloquent\Builder $query,string $start,string $end): \Illuminate\Database\Eloquent\Builder
  21. {
  22. return $query->alias('o')->whereBetween('o.created_at',[$start,$end]);
  23. }
  24. public function scopeFinanceDetails(\Illuminate\Database\Eloquent\Builder $query,string $keyword): \Illuminate\Database\Eloquent\Builder
  25. {
  26. $query->leftJoin('sa_water_enterprise as e','e.id','=','o.enterprise_id')
  27. ->selectRaw("o.id,o.reference,o.enterprise_id,o.package_name,o.buckets,o.amount_cents,o.created_at,e.name AS enterprise_name,
  28. CASE WHEN o.reference LIKE 'TEST-%' OR o.package_name LIKE '%测试%' THEN 1 ELSE 0 END AS is_demo");
  29. if ($keyword!=='') $query->matching('o.reference|o.package_name|e.name','%'.$keyword.'%');
  30. return $query;
  31. }
  32. }