You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

144 lines
4.5 KiB

<?php
namespace App\Http\Model;
use App\Common\ReturnData;
use DB;
class UserBonus extends BaseModel
{
//用户优惠券
protected $table = 'user_bonus';
public $timestamps = false;
/**
* 不能被批量赋值的属性
*
* @var array
*/
protected $guarded = array();
//获取列表
public static function getList(array $param)
{
extract($param); //参数:limit,offset
$where['user_id'] = $user_id;
$limit = isset($limit) ? $limit : 10;
$offset = isset($offset) ? $offset : 0;
$model = new UserBonus;
if(isset($status)){$where['status'] = $status;}
$model = $model->where($where);
$res['count'] = $model->count();
$res['list'] = array();
if($res['count']>0)
{
$bonus_list = $model->skip($offset)->take($limit)->orderBy('id','desc')->get();
foreach($bonus_list as $k=>$v)
{
$bonus_list[$k]->bonus = Bonus::where('id',$v->bonus_id)->first();
}
$res['list'] = $bonus_list;
}
else
{
return false;
}
return $res;
}
public static function getOne($where)
{
$res = self::where($where)->first();
if($res){$res->bonus = Bonus::where('id',$res->bonus_id)->first();}
return $res;
}
public static function add(array $data)
{
if(!Bonus::where(['id'=>$data['bonus_id']])->where('num',-1)->first() && !Bonus::where(['id'=>$data['bonus_id']])->where('num','>',0)->first())
{
return ReturnData::create(ReturnData::PARAMS_ERROR,null,'亲,您来晚了啦,已被抢光了');
}
if(self::where(['bonus_id'=>$data['bonus_id'],'user_id'=>$data['user_id']])->first()){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'亲,您已获取!');}
$data['get_time'] = time(); //优惠券获取时间
if ($id = self::insertGetId($data))
{
DB::table('bonus')->where(array('id'=>$data['bonus_id']))->decrement('num', 1);
return ReturnData::create(ReturnData::SUCCESS,$id);
}
return ReturnData::create(ReturnData::SYSTEM_FAIL);
}
public static function modify($where, array $data)
{
if (self::where($where)->update($data))
{
return true;
}
return false;
}
//删除一条记录
public static function remove($id)
{
if (!self::whereIn('id', explode(',', $id))->delete())
{
return false;
}
return true;
}
//商品结算时,获取优惠券列表
public static function getAvailableBonusList(array $param)
{
extract($param);
$where['user_bonus.user_id'] = $user_id;
if(isset($status)){$where['bonus.status'] = 0;}
$model = new UserBonus;
if(isset($min_amount)){$model = $model->where('bonus.min_amount', '<=', $min_amount)->where('bonus.money', '<=', $min_amount);} //满多少使用
if(isset($bonus_end_time)){$model = $model->where('bonus.end_time', '>=', date('Y-m-d H:i:s'));} //有效期
$bonus_list = $model->join('bonus', 'bonus.id', '=', 'user_bonus.bonus_id')->where($where)
->select('bonus.*', 'user_bonus.user_id', 'user_bonus.used_time', 'user_bonus.get_time', 'user_bonus.status as user_bonus_status', 'user_bonus.id as user_bonus_id')
->orderBy('bonus.money','desc')->get();
$res['list'] = $bonus_list;
return $res;
}
public static function getUserBonusByid(array $param)
{
extract($param);
$where['user_bonus.user_id'] = $user_id;
$where['bonus.status'] = 0;
$where['user_bonus.id'] = $user_bonus_id;
$model = new UserBonus;
if(isset($min_amount)){$model = $model->where('bonus.min_amount', '<=', $min_amount)->where('bonus.money', '<=', $min_amount);} //满多少使用
$model = $model->where('bonus.end_time', '>=', date('Y-m-d H:i:s')); //有效期
$bonus = $model->join('bonus', 'bonus.id', '=', 'user_bonus.bonus_id')->where($where)
->select('bonus.*', 'user_bonus.user_id', 'user_bonus.used_time', 'user_bonus.get_time', 'user_bonus.status as user_bonus_status', 'user_bonus.id as user_bonus_id')
->first();
return $bonus;
}
}