game_distributionModel.class.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. /**
  3. *
  4. */
  5. class game_distributionModel extends Model
  6. {
  7. public function getParent($user_id)
  8. {
  9. $parent = null;
  10. $model = Model::build('user');
  11. $user = $model->field('game_distribution_id')->selectOne(['id' => $user_id]);
  12. if ($user['game_distribution_id']) {
  13. $parent = $model->field('id', 'nick_name', 'head_image')->selectOne(['id' => $user['game_distribution_id']]);
  14. if ($parent) {
  15. $parent['head_image'] = get_spec_image($parent['head_image']);
  16. }
  17. }
  18. return $parent;
  19. }
  20. public function getDistributionList($user_id, $page, $page_size = 20)
  21. {
  22. $page = $page > 0 ? $page : 1;
  23. $user_id = intval($user_id);
  24. $field = [
  25. 'u.id',
  26. 'u.nick_name',
  27. 'u.head_image',
  28. 'gd.is_ticket',
  29. ["sum(gd.first_distreibution_money * (gd.first_distreibution_id = {$user_id}) + gd.second_distreibution_money * (gd.second_distreibution_id = {$user_id})) as `sum`"],
  30. ];
  31. $table = ['user u', 'game_distribution gd'];
  32. $where = [
  33. [
  34. 'gd.first_distreibution_id' => ['=', $user_id],
  35. 'gd.second_distreibution_id' => ['=', $user_id, 'or'],
  36. ],
  37. 'u.id' => ['gd.user_id'],
  38. ];
  39. $list = $this->table($table)->field($field)->group('u.id,gd.is_ticket')->limit(($page - 1) * $page_size, $page_size)->select($where);
  40. $count = $this->table($table)->group('u.id')->count($where);
  41. foreach ($list as $key => $value) {
  42. $list[$key]['head_image'] = get_spec_image($value['head_image']);
  43. unset($list[$key]['is_ticket']);
  44. $list[$key]['sum'] = $value['sum'] . ($value['is_ticket'] ? '印票' : '游戏币');
  45. }
  46. $data = [
  47. 'parent' => $this->getParent($user_id),
  48. 'list' => $list,
  49. 'page' => [
  50. 'page' => $page,
  51. 'has_next' => intval($count > ($page * $page_size)),
  52. ],
  53. ];
  54. if (!$data['parent']) {
  55. unset($data['parent']);
  56. }
  57. return $data;
  58. }
  59. public function addLog($user_id, $room_id, $game_log_id, $money, $dec, $is_ticket = false)
  60. {
  61. $first_distreibution_id = 0;
  62. $first_distreibution_money = 0;
  63. $second_distreibution_id = 0;
  64. $second_distreibution_money = 0;
  65. $m_config = load_auto_cache("m_config");
  66. $model = Model::build('user');
  67. $user = $model->field('game_distribution_id')->selectOne(['id' => $user_id]);
  68. if ($user['game_distribution_id']) {
  69. $first_distreibution_id = intval($user['game_distribution_id']);
  70. $first_distreibution = $model->field('game_distribution_id,game_distribution1')->selectOne(['id' => $first_distreibution_id]);
  71. $first_distreibution_money = intval($money / 100 * ($first_distreibution['game_distribution1'] ? $first_distreibution['game_distribution1'] : $m_config['game_distribution1']));
  72. if ($first_distreibution['game_distribution_id']) {
  73. $second_distreibution_id = intval($first_distreibution['game_distribution_id']);
  74. $second_distreibution = $model->field('game_distribution_id,game_distribution2')->selectOne(['id' => $second_distreibution_id]);
  75. $second_distreibution_money = intval($money / 100 * ($second_distreibution['game_distribution2'] ? $second_distreibution['game_distribution2'] : $m_config['game_distribution2']));
  76. }
  77. }
  78. $distreibution_money = $money - $first_distreibution_money - $second_distreibution_money;
  79. $create_time = NOW_TIME;
  80. $is_ticket = intval(defined('OPEN_DIAMOND_GAME_MODULE') && OPEN_DIAMOND_GAME_MODULE == 1 || $is_ticket);
  81. $res = $this->insert(compact('room_id', 'game_log_id', 'money', 'user_id', 'distreibution_money', 'first_distreibution_id', 'first_distreibution_money', 'second_distreibution_id', 'second_distreibution_money', 'dec', 'create_time', 'is_ticket'));
  82. if (!$res) {
  83. return false;
  84. }
  85. if ($first_distreibution_money + $second_distreibution_money) {
  86. $coin = -$first_distreibution_money - $second_distreibution_money;
  87. if ($is_ticket) {
  88. fanwe_require(APP_ROOT_PATH . 'mapi/lib/redis/BaseRedisService.php');
  89. fanwe_require(APP_ROOT_PATH . 'mapi/lib/redis/UserRedisService.php');
  90. $user_redis = new UserRedisService();
  91. $log_model = Model::build('user_log');
  92. $res = $model->update(['ticket' => ['ticket + ' . $coin]], ['id' => $user_id]);
  93. if ($res) {
  94. $user_redis->inc_field($user_id, 'ticket', $coin);
  95. $log_data = [
  96. 'log_info' => $dec . '抽成(上交)',
  97. 'log_time' => NOW_TIME,
  98. 'log_admin_id' => 0,
  99. 'money' => 0,
  100. 'user_id' => $user_id,
  101. 'type' => 7,
  102. 'prop_id' => 0,
  103. 'score' => 0,
  104. 'point' => 0,
  105. 'podcast_id' => $user_id,
  106. 'diamonds' => 0,
  107. 'ticket' => $coin,
  108. 'video_id' => $room_id,
  109. ];
  110. $log_model->insert($log_data);
  111. }
  112. if ($first_distreibution_money) {
  113. $res = $model->update(['ticket' => ['ticket + ' . $first_distreibution_money]], ['id' => $first_distreibution_id]);
  114. if ($res) {
  115. $user_redis->inc_field($first_distreibution_id, 'ticket', $first_distreibution_money);
  116. $log_data = [
  117. 'log_info' => $dec . '一级抽成(抽取)',
  118. 'log_time' => NOW_TIME,
  119. 'log_admin_id' => 0,
  120. 'money' => 0,
  121. 'user_id' => $first_distreibution_id,
  122. 'type' => 7,
  123. 'prop_id' => 0,
  124. 'score' => 0,
  125. 'point' => 0,
  126. 'podcast_id' => $user_id,
  127. 'diamonds' => 0,
  128. 'ticket' => $first_distreibution_money,
  129. 'video_id' => $room_id,
  130. ];
  131. $log_model->insert($log_data);
  132. }
  133. }
  134. if ($second_distreibution_money) {
  135. $res = $model->update(['ticket' => ['ticket + ' . $second_distreibution_money]], ['id' => $second_distreibution_id]);
  136. if ($res) {
  137. $user_redis->inc_field($second_distreibution_id, 'ticket', $second_distreibution_money);
  138. $log_data = [
  139. 'log_info' => $dec . '二级抽成(抽取)',
  140. 'log_time' => NOW_TIME,
  141. 'log_admin_id' => 0,
  142. 'money' => 0,
  143. 'user_id' => $second_distreibution_id,
  144. 'type' => 7,
  145. 'prop_id' => 0,
  146. 'score' => 0,
  147. 'point' => 0,
  148. 'podcast_id' => $user_id,
  149. 'diamonds' => 0,
  150. 'ticket' => $second_distreibution_money,
  151. 'video_id' => $room_id,
  152. ];
  153. $log_model->insert($log_data);
  154. }
  155. }
  156. } else {
  157. $coin_log_model = Model::build('coin_log');
  158. $user_model = Model::build('user');
  159. $res = $user_model->coin($user_id, $coin);
  160. $account_diamonds = $user_model->coin($user_id);
  161. if ($res) {
  162. $coin_log_model->addLog($user_id, $game_log_id, $coin, $account_diamonds, $dec . '抽成(上交)');
  163. }
  164. if ($first_distreibution_money) {
  165. $res = $user_model->coin($first_distreibution_id, $first_distreibution_money);
  166. $account_diamonds = $user_model->coin($first_distreibution_id);
  167. if ($res) {
  168. $coin_log_model->addLog($first_distreibution_id, $game_log_id, $first_distreibution_money, $account_diamonds, $dec . '一级抽成(抽取)');
  169. }
  170. }
  171. if ($second_distreibution_money) {
  172. $res = $user_model->coin($second_distreibution_id, $second_distreibution_money);
  173. $account_diamonds = $user_model->coin($second_distreibution_id);
  174. if ($res) {
  175. $coin_log_model->addLog($second_distreibution_id, $game_log_id, $second_distreibution_money, $account_diamonds, $dec . '二级抽成(抽取)');
  176. }
  177. }
  178. }
  179. }
  180. return $distreibution_money;
  181. }
  182. }