StockLogic.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace App\Http\logic\admin;
  3. use App\Http\helper\NumConfig;
  4. use App\Services\Stock;
  5. use Illuminate\Support\Facades\DB;
  6. use App\Http\helper\PHPExcel;
  7. use phpDocumentor\Reflection\DocBlock\Description;
  8. class StockLogic
  9. {
  10. public function index($date, $start_time, $end_time, $type, $roomID, $excel)
  11. {
  12. $title = '群控库存';
  13. $today = false;
  14. $where = [];
  15. empty($start_time) && $start_time = date('Y-m-d 00:00:00');
  16. !empty($roomID) && $where[] = ['serverID', $roomID];
  17. switch ($date) {
  18. case 1:
  19. $today = true;
  20. break;
  21. case 2:
  22. $start_time = date('Y-m-d 00:00:00', strtotime('-1 day'));
  23. $end_time = date('Y-m-d 23:59:59', strtotime('-1 day'));
  24. break;
  25. case 3:
  26. $start_time = date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600));
  27. break;
  28. case 4:
  29. $start_time = date('Y-m-d', strtotime(date('Y-m', time()) . '-01 00:00:00')); //直接以strtotime生成
  30. break;
  31. }
  32. $roomList = [];
  33. switch ($type) {
  34. case 1:
  35. $ServerIDs = [32, 33, 39]; // 过滤试玩场
  36. $roomList = DB::connection('read')->table('QPPlatformDB.dbo.GameRoomInfo')->whereNotIn('ServerID', $ServerIDs)->select('ServerID', 'ServerName')->get();
  37. }
  38. empty($end_time) && $end_time = date('Y-m-d 23:59:59');
  39. // 判断是不是同一天
  40. if (!empty($start_time) && !empty($end_time)) {
  41. $first_time = date('Y-m-d', strtotime($start_time));
  42. $last_time = date('Y-m-d', strtotime($end_time));
  43. if ($first_time == $last_time) {
  44. $today = true;
  45. }
  46. }
  47. $service = new Stock();
  48. if ($excel) {
  49. $query = DB::connection('read')->table('agent.dbo.stock_change')
  50. ->where($where)
  51. ->where('mydate','>=',$start_time)
  52. ->where('mydate','<=',$end_time)
  53. ->selectRaw("substring(CONVERT(varchar(120), mydate, 120),0,14) mydate,sum(stock) stock")
  54. ->groupBy(DB::raw('substring(CONVERT(varchar(120), mydate, 120),0,14)'))
  55. ->orderByRaw('substring(CONVERT(varchar(120), mydate, 120),0,14) asc')
  56. ->pluck('stock','mydate')->toArray();
  57. $title = [];
  58. $cellData = [];
  59. foreach ($query as $key => &$value) {
  60. $value = number_float($value/ NumConfig::NUM_VALUE);
  61. $title[] = $key;
  62. $cellData[] = $value;
  63. }
  64. PHPExcel::downExcel('库存变化曲线',$title,$cellData);
  65. return '';
  66. }
  67. if ($today) {
  68. // 获取当天数据
  69. $where[] = ['mydate', '>=', $start_time];
  70. $where[] = ['mydate', '<=', $end_time];
  71. $result = $service->todayRes($where);
  72. } else {
  73. $result = $service->allDay($start_time, $end_time, $where);
  74. }
  75. $start_time = strtotime($start_time);
  76. $end_time = strtotime($end_time);
  77. $res['list'] = \GuzzleHttp\json_encode($result['list']);
  78. $res['date'] = \GuzzleHttp\json_encode($result['date']);
  79. $res['title'] = $title;
  80. $res['start_time'] = date('Y-m-d', $start_time) . 'T' . date('H:i:s', $start_time);
  81. $res['end_time'] = date('Y-m-d', $end_time) . 'T' . date('H:i:s', $end_time);
  82. $res['stocks'] = [1 => '群控库存', 2 => '单控池库存', 3 => '新手池库存'];
  83. $res['dates'] = [1 => '今日', 2 => '昨日', 3 => '本周', 4 => '本月'];
  84. $res['choice_date'] = $date;
  85. $res['type'] = $type;
  86. $res['room'] = $roomID;
  87. $res['roomList'] = $roomList;
  88. return $res;
  89. }
  90. public function roomList($type)
  91. {
  92. $list = [];
  93. switch ($type) {
  94. case 1:
  95. $ServerIDs = [32, 33, 39]; // 过滤试玩场
  96. $list = DB::connection('read')->table('QPPlatformDB.dbo.GameRoomInfo')->whereNotIn('ServerID', $ServerIDs)->select('ServerID', 'ServerName')->get();
  97. }
  98. return $list;
  99. }
  100. }