Commit d883c992 d883c9920d4577b55b608d6af0d93dc6bd5a8373 by lemon

*

1 parent efa0dbcd
...@@ -18,33 +18,43 @@ class MusicianIncomeService extends Service ...@@ -18,33 +18,43 @@ class MusicianIncomeService extends Service
18 */ 18 */
19 public function income() 19 public function income()
20 { 20 {
21 $start_month = $this->request->input('start');
22 $end_month = $this->request->input('end');
23 21
24 $res = StakeholderSongCollate::query()->custom($this->request->only(['song_id']))->identify() 22 $res = StakeholderSongCollate::query()->custom($this->request->only(['song_id']))->identify()
25 ->groupBy('month')->orderBy('month')->selectRaw('month, sum(share_amount) as income')->get()->toArray(); 23 ->groupBy('month')->orderByDesc('month')->selectRaw('month, sum(share_amount) as income')->get()->toArray();
24
25 $stat_income = $months = [];
26 $total_income = '0.00';
27
28 if (empty($res)) {
29 return Response::success(['list'=>$stat_income, 'total_income'=>$total_income]);
30 }
31
32 $months[] = current($res)['month'];
33 for ($i = 1; $i< 6; $i++) {
34 $months[] = date('Ym', strtotime(end($months).'01 -1 month'));
35 }
26 36
27 $stat_income = [];
28 $total_income = '0';
29 foreach ($res as $item) { 37 foreach ($res as $item) {
30 38
31 if (empty($start_month) || empty($end_month)) { 39 if (empty($start_month) || empty($end_month)) {
32 40
33 if (count($stat_income) < 7) { 41 if (count($stat_income) >= 6) break;
34 $stat_income[] = $item; 42
35 continue; 43 $stat_income[$item['month']] = $item;
36 } 44 $total_income = bcadd($total_income, $item['income'], self::DECIMAL);
37 break;
38 } else {
39 if ($item['month'] >= $start_month && $item['month'] <= $end_month) {
40 $stat_income[] = $item;
41 }
42 } 45 }
46 }
43 47
44 $total_income = bcadd($total_income, $item->income, self::DECIMAL); 48 foreach ($months as $month) {
49 if (!isset($stat_income[$month])) {
50 $stat_income[$month] = [
51 'month' => $month,
52 'income'=> 0.00
53 ];
54 }
45 } 55 }
46 56
47 return Response::success(['list'=>$stat_income, 'total_income'=>$total_income]); 57 return Response::success(['list'=>array_values($stat_income), 'total_income'=>$total_income]);
48 } 58 }
49 59
50 /** 60 /**
......