123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <?php
- /**
- * Created by PhpStorm.
- * User: stanley-king
- * Date: 16/2/16
- * Time: 下午4:42
- */
- defined('InShopNC') or exit('Access Invalid!');
- class user_bonusModel extends Model
- {
- const send_bonus = 1;
- const grab_bonus = 2;
- public function __construct()
- {
- parent::__construct('user_bonus');
- }
- public function get($condition,$fields='*')
- {
- return $this->where($condition)->field($fields)->limit(false)->select();
- }
- public function lasted_binded($condition) {
- $items = $this->where($condition)->field('get_time')->order('get_time desc')->limit(1)->select();
- if(count($items) == 1) {
- return $items[0]['get_time'];
- } else {
- return false;
- }
- }
- //public function luckey
- public function add($datas) {
- return $this->insert($datas);
- }
- public function getTypeBinded($condition,$fields = '*')
- {
- $condition['status'] = array('in',array(2,3));
- return $this->where($condition)->field($fields)->limit(false)->select();
- }
- public function getAllBind($mobile,$fields = '*') {
- return $this->where(array('user_mobile' => $mobile, 'status' => 2))->field($fields)->order('type_id')->select();
- }
- public function getStatus($bonus_sn) {
- $ret = $this->where(array('bonus_sn' => $bonus_sn))->field('status')->find();
- if(empty($ret)) {
- return 0;
- } else {
- return intval($ret['status']);
- }
- }
- private function getBind($mobile,$type_id,$fields = '*') {
- return $this->where(array('user_mobile' => $mobile, 'type_id' => $type_id,'status' => 2))->field($fields)->find();
- }
- public function edit($condition,$datas)
- {
- return $this->where($condition)->update($datas);
- }
- public function comment($bonus_id,$comment) {
- return $this->where(array('bonus_id' => $bonus_id))->update(array('user_comment' => $comment));
- }
- //返回单个红包
- public function grab($type_id,$time_out,$mobile,$sess_id,&$isNew)
- {
- $isNew = false;
- try
- {
- $fields = '*';
- //如果已经绑定手机
- if(!empty($mobile))
- {
- $bonus = $this->getBind($mobile,$type_id,$fields);
- if(!empty($ret)) {
- return $bonus;
- }
- }
- $this->beginTransaction();
- $bonus = $this->where(array('type_id' => $type_id,'session_id' => $sess_id))->field($fields)->order('status,bonus_id')->limit(1)->find();
- if(empty($bonus))
- {
- $condition = array( 'type_id' => $type_id,
- 'status' => array('in', array(0,1)),
- 'grab_time' => array('lt',time() - $time_out));
- $bonus = $this->where($condition)->field($fields)->order('status,bonus_id')->limit(1)->find();
- if(!empty($bonus))
- {
- $isNew = true;
- if(user_helper::isLogin()) { // 如果是登录状态直接绑定
- $datas = array('status' => 2,
- 'grab_time' => time(),
- 'get_time' => time(),
- 'session_id' => $sess_id,
- 'user_id' => $_SESSION['member_id'],
- 'user_mobile' => $_SESSION['member_mobile'],
- 'user_name' => user_helper::nickname());
- }
- else if(user_helper::isVerfiyMobile()) { //如果该会话手机号码曾经认证过,直接绑定
- $datas = array('status' => 2,
- 'grab_time' => time(),
- 'get_time' => time(),
- 'session_id' => $sess_id,
- 'user_mobile' => $_SESSION['member_mobile']);
- }
- else {
- $datas = array('status' => 1,
- 'grab_time' => time(),
- 'session_id' => $sess_id);
- }
- $ret = $this->where(array('type_id' => $type_id,'bonus_id' => $bonus['bonus_id']))->update($datas);
- if($ret) {
- $bonus = array_merge($bonus,$datas);
- }
- }
- }
- $this->commit();
- return $bonus;
- } catch (Exception $ex) {
- $this->rollback();
- return array();
- }
- }
- public function bind($condition,$mobile)
- {
- $condition['status'] = 1;
- $datas = array('status' => 2,
- 'user_mobile' => $mobile,
- 'get_time' => time());
- if(user_helper::isLogin()) {
- $datas['user_name'] = user_helper::nickname();
- $datas['user_id'] = $_SESSION['member_id'];
- }
- $ret = $this->where($condition)->update($datas);
- return ($ret);
- }
- }
|