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.
bjhedasx/app/mall/model/MallSpikeProduct.php

107 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\mall\model;
use think\model\concern\SoftDelete;
class MallSpikeProduct extends Base
{
use SoftDelete;
/**
* API-获取秒杀商品详情
* @date 2021-03-01
*/
public function getOneSpikeProduct($where = [], $field = '*', $order = '')
{
$primary_key_name = $this->getPk();
if (empty($order)) {
$order = (empty($data[$primary_key_name]) ? 'id' : $data[$primary_key_name]) . ' desc';
}
$array = explode(',', $field);
if ($field != '*') {
if (count($array) <= 1) {
return $this->with(['mallSpikeProductSku'])->where($where)->order($order)->value($field);
} else {
return $this->with(['mallSpikeProductSku'])->field($field)->where($where)->order($order)->find();
}
} else {
return $this->with(['mallSpikeProductSku'])->where($where)->order($order)->find();
}
}
/**
* 获取商品列表
* @date 2021-03-01
*/
public function getProductList($where, $page, $field = '*', $order = '', $per_page_number = 10)
{
$notice_model = new MallSpikeNotice();
$spike_ids = [];
if ($this->userId) { //已登录查看已设置秒杀ID
$spike_ids = $notice_model->where([
['user_agent', '=', $this->userAgent],
['user_id', '=', $this->userId],
['start_time', '>=', time()]
])->column('spike_id');
}
$primary_key_name = $this->getPk();
if (empty($order)) {
$order = (empty($data[$primary_key_name]) ? 'id' : $data[$primary_key_name]) . ' desc';
}
$dataList = $this->hasWhere('mallProduct', [
['is_publish', '=', 1]
], $field)->with(['mallProduct'])->where($where)->order($order)
->paginate(['list_rows' => $per_page_number, 'page' => $page], false)->each(function ($item, $key) use ($spike_ids) {
if (in_array($item['id'], $spike_ids)) {
$item['has_appoint_notice'] = 1;
} else {
$item['has_appoint_notice'] = 0;
}
return $item;
});
return $dataList;
}
/**
* API-一对多关联秒杀SKU
* @date 2021-03-01
*/
public function mallSpikeProductSku()
{
return $this->hasMany('MallSpikeProductSku', 'spike_product_id', 'id')->field('spike_product_id,product_id,sku,price_spike as price,number as stock');
}
/**
* 一对一关联产品
* @date 2021-05-01
*/
public function mallProduct()
{
return $this->hasOne('MallProduct', 'id', 'product_id')->bind([
'name',
'cover_img',
'price_original'
]);
}
/**
* 秒杀时段
*/
public function spikeTimes()
{
return $this->hasMany('MallSpikeProductTime', 'spike_product_id', 'id');
}
}