params['type'] = !empty($this->params['type']) ? $this->params['type'] : 1; return StoreFinanceFlow::where('1=1') ->when(!empty($this->request->adminInfo['store_id']), function ($query) { $query->where('store_id', $this->request->adminInfo['store_id']); }) ->when(!empty($this->params['start_time']), function ($query) { $query->whereTime('create_time', '>=', $this->params['start_time']); }) ->when(!empty($this->params['end_time']), function ($query) { if ($this->params['end_time'] == $this->params['start_time']) { $this->params['end_time'] = strtotime($this->params['end_time']) + 86399; } $query->whereTime('create_time', '<=', $this->params['end_time']); }) ->when(!empty($this->params['type']), function (Query $query) { $income = 1; $expense = 0; if (!empty($this->request->adminInfo['store_id'])) { $income = 0; $expense = 1; } switch ($this->params['type']) { case 2: $query->fieldRaw("*,sum(IF(financial_pm=$income,number,0)) as income,sum(IF(financial_pm=$expense,number,0)) as expense,YEAR(FROM_UNIXTIME(create_time)) as year,WEEK(FROM_UNIXTIME(create_time), 1) as week")->group("year,week"); break; case 3: $query->fieldRaw("*,sum(IF(financial_pm=$income,number,0)) as income,sum(IF(financial_pm=$expense,number,0)) as expense,FROM_UNIXTIME(create_time, '%Y-%m') as time")->group("time"); break; default: $query->fieldRaw("*,sum(IF(financial_pm=$income,number,0)) as income,sum(IF(financial_pm=$expense,number,0)) as expense,FROM_UNIXTIME(create_time, '%Y-%m-%d') as time")->group("time"); break; } }) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function ($item) { $item->month = date('m', strtotime($item->create_time)); }) ->toArray(); } public function count(): int { return StoreFinanceFlow::where('1=1') ->when(!empty($this->request->adminInfo['store_id']), function ($query) { $query->where('store_id', $this->request->adminInfo['store_id']); }) ->when(!empty($this->params['start_time']), function ($query) { $query->whereTime('create_time', '>=', $this->params['start_time']); }) ->when(!empty($this->params['end_time']), function ($query) { if ($this->params['end_time'] == $this->params['start_time']) { $this->params['end_time'] = strtotime($this->params['end_time']) + 86399; } $query->whereTime('create_time', '<=', $this->params['end_time']); }) ->when(!empty($this->params['type']), function (Query $query) { $income = 1; $expense = 0; if (!empty($this->request->adminInfo['store_id'])) { $income = 0; $expense = 1; } switch ($this->params['type']) { case 2: $query->fieldRaw("*,sum(IF(financial_pm=$income,number,0)) as income,sum(IF(financial_pm=$expense,number,0)) as expense,YEAR(FROM_UNIXTIME(create_time)) as year,WEEK(FROM_UNIXTIME(create_time), 1) as week")->group("year,week"); break; case 3: $query->fieldRaw("*,sum(IF(financial_pm=$income,number,0)) as income,sum(IF(financial_pm=$expense,number,0)) as expense,FROM_UNIXTIME(create_time, '%Y-%m') as time")->group("time"); break; default: $query->fieldRaw("*,sum(IF(financial_pm=$income,number,0)) as income,sum(IF(financial_pm=$expense,number,0)) as expense,FROM_UNIXTIME(create_time, '%Y-%m-%d') as time")->group("time"); break; } }) ->count(); } }