文件
xionggeshop/addons/shopro/model/RobOrderModel.php

216 行
6.4 KiB
PHP

<?php
namespace addons\shopro\model;
use think\Model;
/**
* 预约抢购订单模型
* Class RobOrderModel
* @package addons\shopro\model
*/
class RobOrderModel extends Model
{
protected $name = 'rob_order';
/**
* 获取列表
* @param $params
* @param int $rows
* @param int $page
* @param string $fields
* @return array
* @throws \think\exception\DbException
*/
public function getLists($params, $rows = 20, $page = 1, $fields = '*')
{
// 条件搜索
if (!empty($params['where'])) {
$this->where($params['where']);
} else {
if (!empty($params['keyword'])) {
switch ($params['type']) {
case 1 :
$this->where(['a.title' => ['LIKE', '%' . $params['keyword'] . '%']]);
break;
case 2 :
$this->where(['b.nickname' => ['LIKE', '%' . $params['keyword'] . '%']]);
break;
case 3 :
$this->where(['b.mobile' => ['LIKE', '%' . $params['keyword'] . '%']]);
break;
case 4 :
$this->where(['c.title' => ['LIKE', '%' . $params['keyword'] . '%']]);
break;
}
}
if (!empty($params['is_use'])) {
$this->where('a.is_use', '=', $params['is_use']);
}
if (!empty($params['is_rob'])) {
$this->where('a.is_rob', '=', $params['is_rob']);
}
if (!empty($params['user_id'])) {
$this->where('a.user_id', '=', $params['user_id']);
}
if (!empty($params['activity_id'])) {
$this->where('a.activity_id', '=', $params['activity_id']);
}
// 时间范围查询
if (!empty($params['start_time'])) {
$this->where('a.create_time', '>=', strtotime($params['start_time']));
}
if (!empty($params['end_time'])) {
$this->where('a.create_time', '<=', strtotime($params['end_time']));
}
}
// 排序
$order = !empty($params['order']) ? $params['order'] : 'a.id DESC';
$result = $this
->alias('a')
->join('user b', 'a.user_id = b.id')
->join('shopro_goods c', 'a.goods_id = c.id')
->field($fields)
->order($order)
->paginate($rows, false, [
'page' => $page
]);
$arr = [
'list' => [],
'total' => 0,
'page' => 1,
'pageSize' => $rows,
'totalSize' => 0
];
// 格式化数据信息
if (!$result->isEmpty()) {
$arr = [
'list' => $result->items(),
'total' => $result->total(),
'page' => $result->currentPage(),
'pageSize' => $result->listRows(),
'totalSize' => $result->lastPage()
];
if (!empty($arr['list'])) {
foreach ($arr['list'] as &$v) {
if (!empty($v['activity_id'])) {
$endTime = Activity::where(['id' => $v['activity_id']])
->value('endtime');
// 获取状态
$statusText = '已预约';
if ($endTime < time()) {
$statusText = $v->is_rob == 1 ? '获得抢购资格' : '未获得抢购资格';
if ($v->is_rob == 1 && $v->is_use == 1) {
$statusText = '已下单';
}
}
$v->status_text = $statusText;
}
}
}
}
return $arr;
}
/**
* 预约
* @param $user
* @param $data
* @return array
*/
public static function add($user, $data)
{
// 是否已预约过了
$id = self::
where(['user_id' => $user->id, 'activity_id' => $data['id'], 'goods_id' => $data['goods_id']])
->value('id');
if (!empty($id)) {
return [
'code' => 703,
'msg' => '您已经预约过了'
];
}
$order = [
'user_id' => $user->id,
'activity_id' => $data['id'],
'goods_id' => $data['goods_id'],
'title' => $data['title'],
'activity_price' => $data['price'],
'create_time' => time()
];
if (self::insertGetId($order)) {
return [
'code' => 200,
'msg' => '预约成功'
];
} else {
return [
'code' => 700,
'msg' => '预约失败,请重试。'
];
}
}
/**
* 获取某条记录
* @param $where
* @return array|bool|false|\PDOStatement|string|Model
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getItem($where, $fields = '*')
{
if (empty($where)) {
$this->error = '参数不正确。';
return false;
}
if (floor($where) > 0) {
$where = ['id' => $where];
}
return $this->where($where)->field($fields)->find();
}
/**
* 编辑
* @param $data
* @return bool
*/
public function edit($data)
{
if (empty($data) || !is_array($data)) {
$this->error = '参数不正确';
return false;
}
if ($this->update($data)) {
return true;
} else {
$this->error = '编辑出错了,请重新尝试。';
return false;
}
}
// 删除
public function del($where)
{
if (empty($where)) {
$this->error = '参数不正确';
return false;
}
if ($this->where($where)->delete()) {
return true;
} else {
$this->error = '删除出错了,请重新尝试。';
return false;
}
}
}