链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.9 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Admin\Repositories;
  3. use App\Models\ImsCjdcOrderMain as Model;
  4. use Dcat\Admin\Grid;
  5. use Dcat\Admin\Repositories\EloquentRepository;
  6. use Illuminate\Support\Facades\DB;
  7. use Illuminate\Support\Facades\Session;
  8. class ImsCjdcOrderMain extends EloquentRepository
  9. {
  10. /**
  11. * Model.
  12. *
  13. * @var string
  14. */
  15. protected $eloquentClass = Model::class;
  16. public function get(Grid\Model $model)
  17. {
  18. $builder = new \App\Models\ImsCjdcOrderMain();
  19. $time = request()->input('time');
  20. $state = request()->input('order_state')??false;
  21. $builder = $builder::leftJoin('lanzu_user','lanzu_user.id','lanzu_order_main.user_id')
  22. ->with('market')
  23. ->select('lanzu_order_main.*','lanzu_user.nick_name')
  24. ->where('type',1)
  25. ->orderBy('lanzu_order_main.id','desc');//只取线上订单数据
  26. if ($time){
  27. $builder = $builder->where('lanzu_order_main.created_at','>',$time);
  28. }
  29. if ($state==3){
  30. $builder = $builder->where('state',$state)->where('shipping_type',1)->where('horseman_id',0);
  31. }elseif ($state==311){
  32. $builder = $builder->where('state',3)->where('shipping_type',1)->where('horseman_id','>',0);
  33. }else{
  34. $state !=false?$builder->where('state',$state):false;
  35. }
  36. $this->setSort($model);
  37. $this->setPaginate($model);
  38. $query = $builder;
  39. $model->getQueries()->unique()->each(function ($value) use (&$query) {
  40. if ($value['method'] == 'paginate') {
  41. $value['arguments'][1] = $this->getGridColumns();
  42. } elseif ($value['method'] == 'get') {
  43. $value['arguments'] = [$this->getGridColumns()];
  44. }elseif ($value['method']=='whereBetween'){
  45. if ($value['arguments'][0]=='created_at'){
  46. $value['arguments'][0] = 'lanzu_order_main.created_at';
  47. $value['arguments'][1][0] = strtotime($value['arguments'][1][0]);
  48. $value['arguments'][1][1] = strtotime($value['arguments'][1][1]);
  49. }
  50. }elseif ($value['method']=='where'){
  51. if ($value['arguments'][0]=='store_id'){
  52. $query->leftJoin('lanzu_order','lanzu_order.order_main_id','lanzu_order_main.global_order_id');
  53. $value['arguments'][0]='lanzu_order.store_id';
  54. }
  55. }
  56. $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []);
  57. });
  58. $query = $query->toArray();
  59. //如果订单状态为配送中 将state设置为31
  60. foreach ($query['data'] as &$value){
  61. if ($value['state']==3&&$value['shipping_type']==1&&!empty($value['horseman_id'])){
  62. $value['state'] = 311;
  63. }
  64. }
  65. $query = $model->makePaginator($query['total'],$query['data']);
  66. return $query;
  67. }
  68. }