user_bonus.model.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/2/16
  6. * Time: 下午4:42
  7. */
  8. defined('InShopNC') or exit('Access Invalid!');
  9. class user_bonusModel extends Model
  10. {
  11. const send_bonus = 1;
  12. const grab_bonus = 2;
  13. public function __construct()
  14. {
  15. parent::__construct('user_bonus');
  16. }
  17. public function get($condition,$fields='*')
  18. {
  19. return $this->where($condition)->field($fields)->limit(false)->select();
  20. }
  21. public function lasted_binded($condition) {
  22. $items = $this->where($condition)->field('get_time')->order('get_time desc')->limit(1)->select();
  23. if(count($items) == 1) {
  24. return $items[0]['get_time'];
  25. } else {
  26. return false;
  27. }
  28. }
  29. //public function luckey
  30. public function add($datas) {
  31. return $this->insert($datas);
  32. }
  33. public function getTypeBinded($condition,$fields = '*')
  34. {
  35. $condition['status'] = array('in',array(2,3));
  36. return $this->where($condition)->field($fields)->limit(false)->select();
  37. }
  38. public function getAllBind($mobile,$fields = '*') {
  39. return $this->where(array('user_mobile' => $mobile, 'status' => 2))->field($fields)->order('type_id')->select();
  40. }
  41. public function getStatus($bonus_sn) {
  42. $ret = $this->where(array('bonus_sn' => $bonus_sn))->field('status')->find();
  43. if(empty($ret)) {
  44. return 0;
  45. } else {
  46. return intval($ret['status']);
  47. }
  48. }
  49. private function getBind($mobile,$type_id,$fields = '*') {
  50. return $this->where(array('user_mobile' => $mobile, 'type_id' => $type_id,'status' => 2))->field($fields)->find();
  51. }
  52. public function edit($condition,$datas)
  53. {
  54. return $this->where($condition)->update($datas);
  55. }
  56. public function comment($bonus_id,$comment) {
  57. return $this->where(array('bonus_id' => $bonus_id))->update(array('user_comment' => $comment));
  58. }
  59. //返回单个红包
  60. public function grab($type_id,$time_out,$mobile,$sess_id,&$isNew)
  61. {
  62. $isNew = false;
  63. try
  64. {
  65. $fields = '*';
  66. //如果已经绑定手机
  67. if(!empty($mobile))
  68. {
  69. $bonus = $this->getBind($mobile,$type_id,$fields);
  70. if(!empty($ret)) {
  71. return $bonus;
  72. }
  73. }
  74. $this->beginTransaction();
  75. $bonus = $this->where(array('type_id' => $type_id,'session_id' => $sess_id))->field($fields)->order('status,bonus_id')->limit(1)->find();
  76. if(empty($bonus))
  77. {
  78. $condition = array( 'type_id' => $type_id,
  79. 'status' => array('in', array(0,1)),
  80. 'grab_time' => array('lt',time() - $time_out));
  81. $bonus = $this->where($condition)->field($fields)->order('status,bonus_id')->limit(1)->find();
  82. if(!empty($bonus))
  83. {
  84. $isNew = true;
  85. if(user_helper::isLogin()) { // 如果是登录状态直接绑定
  86. $datas = array('status' => 2,
  87. 'grab_time' => time(),
  88. 'get_time' => time(),
  89. 'session_id' => $sess_id,
  90. 'user_id' => $_SESSION['member_id'],
  91. 'user_mobile' => $_SESSION['member_mobile'],
  92. 'user_name' => user_helper::nickname());
  93. }
  94. else if(user_helper::isVerfiyMobile()) { //如果该会话手机号码曾经认证过,直接绑定
  95. $datas = array('status' => 2,
  96. 'grab_time' => time(),
  97. 'get_time' => time(),
  98. 'session_id' => $sess_id,
  99. 'user_mobile' => $_SESSION['member_mobile']);
  100. }
  101. else {
  102. $datas = array('status' => 1,
  103. 'grab_time' => time(),
  104. 'session_id' => $sess_id);
  105. }
  106. $ret = $this->where(array('type_id' => $type_id,'bonus_id' => $bonus['bonus_id']))->update($datas);
  107. if($ret) {
  108. $bonus = array_merge($bonus,$datas);
  109. }
  110. }
  111. }
  112. $this->commit();
  113. return $bonus;
  114. } catch (Exception $ex) {
  115. $this->rollback();
  116. return array();
  117. }
  118. }
  119. public function bind($condition,$mobile)
  120. {
  121. $condition['status'] = 1;
  122. $datas = array('status' => 2,
  123. 'user_mobile' => $mobile,
  124. 'get_time' => time());
  125. if(user_helper::isLogin()) {
  126. $datas['user_name'] = user_helper::nickname();
  127. $datas['user_id'] = $_SESSION['member_id'];
  128. }
  129. $ret = $this->where($condition)->update($datas);
  130. return ($ret);
  131. }
  132. }