ReportController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request as Req;
  5. use Illuminate\Support\Facades\App;
  6. use Illuminate\Support\Facades\DB;
  7. use Request;
  8. /**
  9. *
  10. */
  11. class ReportController extends Controller {
  12. function Index(Req $req) {
  13. $request=array();
  14. $request['account_name']=isset($req->account_name)?trim($req->account_name):null;
  15. $request['betnum_small']=isset($req->betnum_small)?trim($req->betnum_small):null;
  16. $request['betnum_big']=isset($req->betnum_big)?trim($req->betnum_big):null;
  17. $request['betmoney_small']=isset($req->betmoney_small)?trim($req->betmoney_small):null;
  18. $request['betmoney_big']=isset($req->betmoney_big)?trim($req->betmoney_big):null;
  19. $request['settle_status']=isset($req->settle_status)?trim($req->settle_status):null;
  20. $request['name']=isset($req->name)?trim($req->name):null;
  21. $request['betres_small']=isset($req->betres_small)?trim($req->betres_small):null;
  22. $request['betres_big']=isset($req->betres_big)?trim($req->betres_big):null;
  23. $request['win_small']=isset($req->win_small)?trim($req->win_small):null;
  24. $request['win_big']=isset($req->win_big)?trim($req->win_big):null;
  25. $request['star_time']=isset($req->star_time)?trim($req->star_time):null;
  26. $request['end_time']=isset($req->end_time)?trim($req->end_time):null;
  27. $dt = \App\Lib\DataTable\DataTable::init();
  28. $dt->setDataSource('/admin/Report/single');
  29. $dt->setLang('report');
  30. $dt->setPriKey('game_name');
  31. $dt->addColsFields('name', array('templet' => '#betdetail'));
  32. $dt->addColsFields('munBet');
  33. $dt->addColsFields('betmoney');
  34. // $dt->addColsFields('effectivemoney');
  35. $dt->addColsFields('prizemoney');
  36. $dt->addColsFields('winmoney', array('templet' => '#betde'));
  37. $dt->addColsFields('star_time');
  38. $dt->addColsFields('end_time');
  39. // $dt->setToolBar(array('view'), array('toolbar' => '#query'));
  40. return view('admin.report/index', $dt->render($request));
  41. }
  42. //报表查看
  43. function View(Req $req) {
  44. $game = $req->game_name;
  45. $star_time = !empty($req->star_time) ? $req->star_time : '';
  46. $end_time = !empty($req->end_time) ? $req->end_time : '';
  47. if (empty($game)) {
  48. abort(404);
  49. }
  50. $dt = \App\Lib\DataTable\DataTable::init();
  51. $dt->setDataSource('/admin/Report/getDatil?game=' . $game . '&star_time=' . $star_time . '&end_time=' . $end_time);
  52. $dt->setLang('report');
  53. $dt->addColsFields('name');
  54. $dt->addColsFields('account_name');
  55. $dt->addColsFields('munBet');
  56. $dt->addColsFields('betmoney');
  57. $dt->addColsFields('winmoney');
  58. $dt->addColsFields('star_time');
  59. $dt->addColsFields('end_time');
  60. return view('admin.report/datial', $dt->render());
  61. }
  62. //获取游戏按照个人统计数据
  63. function getDatil() {
  64. $game = Request::has('game') ? Request::get('game') : '';
  65. $page = Request::has('page') ? Request::get('page') : '';
  66. $list = Request::has('limit') ? Request::get('limit') : '';
  67. $star_time = Request::get('star_time') ? Request::get('star_time').' 00:00:00' : '';
  68. $end_time = Request::get('end_time') ? Request::get('end_time').' 23:59:59' : '';
  69. $where = array();
  70. if (!empty($star_time)) {
  71. $where[] = array('money_time', '>=', $star_time);
  72. }
  73. if (!empty($end_time)) {
  74. $where[] = array('money_time', '<=', $end_time);
  75. }
  76. $buy_db = new \App\Models\MoneyBuy;
  77. $data = $buy_db->getTotalByUser($game, $page, $list, $where);
  78. return \App\Lib\DataTable\DataTable::init()->toJson($data['data'], $data['total']);
  79. }
  80. /**
  81. *注单明细报表
  82. * 'FunctionName description'
  83. */
  84. function single() {
  85. $page = Request::has('page') ? Request::get('page') : 1;
  86. $list = Request::has('limit') ? Request::get('limit') : 10;
  87. $name = Request::has('name') ? Request::get('name') : '';
  88. $account_name = Request::has('account_name') ? Request::get('account_name') : '';
  89. $settle_status = Request::has('settle_status') ? Request::get('settle_status') : '';
  90. $betnum_small = Request::has('betnum_small') ? Request::get('betnum_small') : '';
  91. $betnum_big = Request::has('betnum_big') ? Request::get('betnum_big') : '';
  92. $betmoney_small = Request::has('betmoney_small') ? Request::get('betmoney_small') : '';
  93. $betmoney_big = Request::has('betmoney_big') ? Request::get('betmoney_big') : '';
  94. $betres_small = Request::has('betres_small') ? Request::get('betres_small') : '';
  95. $betres_big = Request::has('betres_big') ? Request::get('betres_big') : '';
  96. $win_small = Request::has('win_small') ? Request::get('win_small') : '';
  97. $win_big = Request::has('win_big') ? Request::get('win_big') : '';
  98. $star_time = Request::get('star_time') ? Request::get('star_time').' 00:00:00' : '';
  99. $end_time = Request::get('end_time') ? Request::get('end_time').' 23:59:59' : '';
  100. $where = array();
  101. $having = array();
  102. $where[] = array('money_buy.status', '<>', 4);
  103. if (!empty($account_name)) {
  104. $where[] = array('account_name', '=', $account_name);
  105. }
  106. /*if (!empty($settle_status) && $settle_status!=3) {
  107. $where[] = array('game_status', '<>', '0');
  108. $where[] = array('settle_status', '=', $settle_status);
  109. }*/
  110. if ($settle_status == 1) {
  111. $where[] = array('game_status', '=', '0');
  112. }
  113. if ($settle_status == 2) {
  114. $where[] = array('game_status', '<>', '0');
  115. }
  116. if (!empty($name)) {
  117. $where[] = array('game_name', '=', $name);
  118. }
  119. if (!empty($star_time)) {
  120. $where[] = array('money_time', '>=', $star_time);
  121. }
  122. if (!empty($end_time)) {
  123. $where[] = array('money_time', '<=', $end_time);
  124. }
  125. if (!empty($betnum_small)) {
  126. $having[] = 'count("order_id")>=' . $betnum_small;
  127. }
  128. if (!empty($betnum_big)) {
  129. $having[] = 'count("order_id")<=' . $betnum_big;
  130. }
  131. if (!empty($betmoney_small)) {
  132. $having[] = 'sum("money")>=' . $betmoney_small;
  133. }
  134. if (!empty($betmoney_big)) {
  135. $having[] = 'sum("money")<=' . $betmoney_big;
  136. }
  137. if (!empty($betres_small)) {
  138. $having[] = 'sum("get_money")>=' . $betres_small;
  139. }
  140. if (!empty($betres_big)) {
  141. $having[] = 'sum("get_money")<=' . $betres_big;
  142. }
  143. if (!empty($win_small)) {
  144. $having[] = 'sum("prize_money")>=' . $win_small;
  145. }
  146. if (!empty($win_big)) {
  147. $having[] = 'sum("prize_money")<=' . $win_big;
  148. }
  149. $db = new \App\Models\MoneyBuy;
  150. $data = $db->getTotal($list, $page, $where, $having);
  151. $allcount = array(
  152. 'allnum' => 0,
  153. 'allbetmoney' => 0,
  154. 'allbetres' => 0,
  155. 'allwinmoney' => 0,
  156. 'alleffectivemoney' => 0,
  157. );
  158. $gamedata = array();
  159. $tempgd = array();
  160. $sl = ($page-1)*$list;
  161. $i = 0;
  162. if (!($data < 0)) {
  163. /*************有效金额************************/
  164. //获取游戏列表
  165. /* $nodatas=array();
  166. $effectivemoney=array();
  167. if (empty($name)) {
  168. $gameList=\App\Models\GameType::getGameType();
  169. foreach ($gameList as $kg=>$vg){
  170. $nodata=DB::Select("select info_no from game_".$vg["gameCode"]." where open_time >='".$star_time."' and open_time <='".$end_time."'");
  171. $nodatas=array_merge($nodatas,array_column($nodata,'info_no'));
  172. $effectivemoney[$vg['gameCode']]=0;
  173. }
  174. }else{
  175. $nodata=DB::Select("select info_no from game_".$name." where open_time >='".$star_time."' and open_time <='".$end_time."'");
  176. $nodatas=array_merge($nodatas,array_column($nodata,'info_no'));
  177. $effectivemoney[$name]=0;
  178. }
  179. //按游戏统计有效金额
  180. $effective=array();
  181. if($nodatas){
  182. $effective=$db->getEffectiveMoney($list, $page, $nodatas,$name);
  183. }
  184. foreach ($effective as $k=>$v){
  185. $effectivemoney[$v['game_name']]=$v['money'];
  186. }*/
  187. /*************有效金额************************/
  188. foreach ($data as $k => $v) {
  189. if(isset($tempgd[$v['game_name']])){
  190. $tempgd[$v['game_name']]['effectivemoney'] = 0;
  191. $tempgd[$v['game_name']]['winmoney'] += $v['winmoney'];
  192. $tempgd[$v['game_name']]['prizemoney'] += $v['prizemoney'];
  193. $tempgd[$v['game_name']]['betmoney'] += $v['betmoney'];
  194. $tempgd[$v['game_name']]['munBet'] += $v['munBet'];
  195. $tempgd[$v['game_name']]['end_time'] = ($v['end_time']>$tempgd[$v['game_name']]['end_time'])?$v['end_time']:$tempgd[$v['game_name']]['end_time'];
  196. $tempgd[$v['game_name']]['star_time'] = ($v['star_time']<$tempgd[$v['game_name']]['star_time'])?$v['star_time']:$tempgd[$v['game_name']]['star_time'];
  197. // $tempgd[$v['game_name']]['effectivemoney'] += ($v['game_status']!=0)?$v['betmoney']:0;
  198. }else{
  199. $tempgd[$v['game_name']]['winmoney'] = $data[$k]['winmoney'];
  200. $tempgd[$v['game_name']]['prizemoney'] = $v['prizemoney'];
  201. $tempgd[$v['game_name']]['betmoney'] = $v['betmoney'];
  202. $tempgd[$v['game_name']]['munBet'] = $v['munBet'];
  203. $tempgd[$v['game_name']]['end_time'] = $v['end_time'];
  204. $tempgd[$v['game_name']]['star_time'] = $v['star_time'];
  205. $tempgd[$v['game_name']]['game_name'] = $v['game_name'];
  206. $tempgd[$v['game_name']]['name'] = $v['name'];
  207. $tempgd[$v['game_name']]['effectivemoney'] = 0;
  208. // $tempgd[$v['game_name']]['effectivemoney'] = ($v['game_status']!=0)?$v['betmoney']:0;
  209. }
  210. }
  211. foreach ($tempgd as $v) {
  212. if($i<$sl){
  213. $i++;
  214. continue;
  215. }
  216. if(($i-$sl)>=$list)break;
  217. $gamedata[$i] = $v;
  218. $gamedata[$i]['winmoney'] = ($v['winmoney'] > 0) ? -$v['winmoney'] : abs($v['winmoney']);
  219. $allcount['allnum'] += $v['munBet'];
  220. $allcount['allbetmoney'] += $v['betmoney'];
  221. $allcount['allbetres'] += $v['prizemoney'];
  222. $allcount['allwinmoney'] += $v['winmoney'];
  223. $allcount['alleffectivemoney'] += $v['effectivemoney'];
  224. $i++;
  225. }
  226. foreach ($gamedata as $k => $v) {
  227. $gamedata[$k]['allnum'] = $allcount['allnum'];
  228. $gamedata[$k]['allbetmoney'] = $allcount['allbetmoney'];
  229. $gamedata[$k]['allbetres'] = $allcount['allbetres'];
  230. $gamedata[$k]['allwinmoney'] = $allcount['allwinmoney'];
  231. $gamedata[$k]['alleffectivemoney'] = $allcount['alleffectivemoney'];
  232. }
  233. }
  234. $data = arrayToNumber($gamedata, array('betmoney', 'prizemoney', 'winmoney','effectivemoney', 'allbetmoney', 'allbetres', 'allwinmoney','alleffectivemoney'));
  235. return \App\Lib\DataTable\DataTable::init()->toJson($gamedata, count($tempgd));
  236. }
  237. }
  238. ?>