Turntable.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\turntable\api\controller;
  11. use app\api\controller\BaseApi;
  12. use app\model\games\Games;
  13. use app\model\games\Record;
  14. /**
  15. * 幸运抽奖
  16. */
  17. class Turntable extends BaseApi
  18. {
  19. /**
  20. * 基础信息
  21. */
  22. public function info()
  23. {
  24. $game_id = $this->params[ 'id' ] ?? 0;
  25. $game = new Games();
  26. $info = $game->getGamesInfo([ [ 'game_id', '=', $game_id ], [ 'site_id', '=', $this->site_id ], [ 'game_type', '=', 'turntable' ] ], 'game_id,game_name,points,start_time,end_time,status,remark,no_winning_desc,no_winning_img,is_show_winner,level_id,level_name,join_type,join_frequency');
  27. if (!empty($info[ 'data' ])) {
  28. // 奖项
  29. $game_ward = $game->getGameAward([ [ 'game_id', '=', $game_id ] ], 'award_id,award_name,award_img');
  30. $game_ward = $game_ward[ 'data' ];
  31. $not_winning = [ 'award_id' => -1, 'award_name' => '谢谢参与', 'award_img' => $info[ 'data' ][ 'no_winning_img' ] ];
  32. if (count($game_ward) < 7) {
  33. $num = 8 - count($game_ward);
  34. for ($i = 0; $i < $num; $i++) {
  35. array_push($game_ward, $not_winning);
  36. }
  37. shuffle($game_ward);
  38. } else {
  39. array_push($game_ward, $not_winning);
  40. }
  41. $info[ 'data' ][ 'award' ] = $game_ward;
  42. // 中奖名单
  43. if ($info[ 'data' ][ 'is_show_winner' ]) {
  44. $record = new Record();
  45. $record_data = $record->getGamesDrawRecordPageList([ [ 'game_id', '=', $game_id ], [ 'is_winning', '=', 1 ] ], 1, 10, 'create_time desc', 'member_nick_name,award_name,create_time');
  46. $info[ 'data' ][ 'draw_record' ] = $record_data[ 'data' ][ 'list' ];
  47. }
  48. // 剩余次数
  49. $token = $this->checkToken();
  50. $info[ 'data' ][ 'surplus_num' ] = 0;
  51. if ($info[ 'data' ][ 'join_frequency' ] && $token[ 'code' ] == 0) {
  52. $surplus_num = $game->getMemberSurplusNum($game_id, $this->member_id, $this->site_id);
  53. $info[ 'data' ][ 'surplus_num' ] = $surplus_num[ 'data' ];
  54. }
  55. }
  56. return $this->response($info);
  57. }
  58. /**
  59. * 抽奖
  60. * @return false|string
  61. */
  62. public function lottery()
  63. {
  64. $token = $this->checkToken();
  65. if ($token[ 'code' ] < 0) return $this->response($token);
  66. $game_id = $this->params[ 'id' ];
  67. $game = new Games();
  68. $res = $game->lottery($game_id, $this->member_id, $this->site_id);
  69. return $this->response($res);
  70. }
  71. }