banker_logModel.class.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. *
  4. */
  5. class banker_logModel extends NewModel
  6. {
  7. /**
  8. * 新增上庄日志(申请上庄)
  9. * @param integer $video_id 直播间id
  10. * @param integer $user_id 用户id
  11. * @param integer $coin 上庄金额
  12. */
  13. public function addLog($video_id, $user_id, $coin)
  14. {
  15. $log = $this->field('id')->selectOne(['user_id' => $user_id, 'video_id' => $video_id, 'status' => 1]);
  16. if ($log) {
  17. return false;
  18. }
  19. $data = array(
  20. 'video_id' => $video_id,
  21. 'user_id' => $user_id,
  22. 'coin' => $coin,
  23. 'apply_coin' => $coin,
  24. 'status' => 1,
  25. 'create_time' => NOW_TIME,
  26. );
  27. return $this->insert($data);
  28. }
  29. /**
  30. * 选庄
  31. * @param integer $banker_log_id 上庄日志id
  32. * @param integer $video_id 直播间id
  33. * @return integer 受影响行数
  34. */
  35. public function chooseBanker($banker_log_id, $video_id)
  36. {
  37. $res = $this->update(['status' => 3], ['id' => $banker_log_id, 'video_id' => $video_id]);
  38. if ($res) {
  39. $this->returnCoin(['status' => 1, 'video_id' => $video_id], '落选上庄底金返还');
  40. }
  41. return $res;
  42. }
  43. /**
  44. * 退还上庄金额
  45. * @param array $where 退还条件
  46. * @param string $msg 退还消息
  47. * @return bool 是否退还成功
  48. */
  49. public function returnCoin($where, $msg)
  50. {
  51. $model = self::build('user');
  52. $coin_log_model = self::build('coin_log');
  53. $lose_banker = $this->field('user_id,coin,status')->select($where);
  54. Connect::beginTransaction();
  55. foreach ($lose_banker as $value) {
  56. if ($value['status'] == 3) {
  57. $user_id = $value['user_id'];
  58. $coin = $value['coin'];
  59. $res = $model->coin($value['user_id'], $value['coin']);
  60. if (!$res) {
  61. Connect::rollback();
  62. return false;
  63. }
  64. $a_coin = $model->coin($user_id);
  65. $coin_log_model->addLog($user_id, -1, $coin, $a_coin, $msg);
  66. }
  67. }
  68. $res = $this->update(['status' => ['`status`+1']], $where);
  69. if (!$res) {
  70. Connect::rollback();
  71. return false;
  72. }
  73. Connect::commit();
  74. return true;
  75. }
  76. /**
  77. * 获取申请上庄列表
  78. * @param integer $video_id 直播间id
  79. * @param integer $limit 列表限制
  80. * @param string $order 列表排序
  81. * @return array 上庄列表
  82. */
  83. public function getBankerList($video_id, $limit = 5, $order = 'coin desc')
  84. {
  85. $table = 'user u,banker_log l';
  86. $where = [
  87. 'l.user_id' => ['u.id'],
  88. 'l.coin' => ['<=', 'u.coin', 'AND', 1],
  89. 'l.video_id' => $video_id,
  90. 'l.status' => 1,
  91. ];
  92. if (defined('OPEN_DIAMOND_GAME_MODULE') && OPEN_DIAMOND_GAME_MODULE == 1) {
  93. $where['l.coin'] = ['<=', 'u.diamonds', 'AND', 1];
  94. } else {
  95. $where['l.coin'] = ['<=', 'u.coin', 'AND', 1];
  96. }
  97. $field = 'l.id banker_log_id,l.user_id banker_id,u.nick_name banker_name,u.head_image banker_img,l.coin coin';
  98. $list = $this->table($table)->field($field)->limit($limit)->order($order)->select($where);
  99. foreach ($list as $key => $value) {
  100. $list[$key]['banker_img'] = get_abs_img_root($value['head_image']);
  101. }
  102. return $list;
  103. }
  104. }