admin/addon/futures/api/controller/Futures.php

212 lines
6.3 KiB
PHP

<?php
namespace addon\futures\api\controller;
use app\api\controller\BaseApi;
use addon\futures\model\Futures as FuturesModel;
class Futures extends BaseApi{
/**
* 售卖列表
* @return false|string
*/
public function list()
{
$token = $this->checkToken();
if ($token['code'] < 0) return $this->response($token);
//判断当前时间是否在秒杀开启时间,并区分有无钻石用户
$status = input('status', 'miaosha');
$condition = [
['a.site_id','=',$this->site_id]
];
switch($status){
case 'miaosha':
$condition[] = ['a.status', '=', '2'];
$startTimeKey = 'miaosha_start_time';
$endTimeKey = 'miaosha_end_time';
$fenxiao = model('fenxiao')->getInfo([['member_id', '=', $this->member_id]]);
if(!empty($fenxiao) && $fenxiao['diamond'] > 0){
$startTimeKey = 'miaosha_early_start_time';
}
break;
case 'jianlou':
$condition[] = ['a.status', '=', '7'];
$startTimeKey = 'jianlou_start_time';
$endTimeKey = 'jianlou_end_time';
break;
default:
return $this->response($this->error('','参数不合法'));
break;
}
$nowTime = time() - strtotime("today");
$is_read = FALSE;
$futuresModel = new FuturesModel;
$basics = $futuresModel->getBasicsConfig($this->site_id)['data']['value'];
foreach($basics['times'] as $times){
if($times[$startTimeKey] <= $nowTime && $times[$endTimeKey] >= $nowTime){
$is_read = TRUE;
break;
}
}
if(!$is_read){
return $this->response($this->error('','未到秒杀时间'));
}
// 获取内容
$field = [
'seller.username as seller_username',
'seller.nickname as seller_nickname',
'seller.headimg as seller_headimg',
'g.goods_name',
'g.goods_image',
'a.id',
'a.total',
'a.unit_price',
'a.price',
'a.status',
'a.release_time',
'a.sell_time',
'a.created_time',
'a.take_time',
];
// 表关联
$join = [
['member seller', 'seller.member_id = a.seller_uid', 'left'],// 获取卖家信息
['goods g', 'g.goods_id = a.goods_id', 'left'],// 获取商品信息
];
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$list = $futuresModel->getPageList($condition, $page, $page_size, 'a.created_time desc,a.id desc', $field, 'a', $join);
return $this->response($list);
}
/**
* 个人中心列表
* @return false|string
*/
public function myList()
{
$token = $this->checkToken();
if ($token['code'] < 0) return $this->response($token);
$status = input('status', 'all');
$condition = [
['a.seller_uid', '=', $this->member_id],
['a.site_id','=',$this->site_id]
];
switch($status){
case 'stock':
$condition[] = ['a.status', '=', '1'];
break;
case 'release':
$condition[] = ['a.status', 'in', [2, 6, 7]];
break;
case 'sold':
$condition[] = ['a.status', '=', '3'];
break;
default:
break;
}
// 获取内容
$field = [
'seller.username as seller_username',
'seller.nickname as seller_nickname',
'seller.headimg as seller_headimg',
'g.goods_name',
'g.goods_image',
'a.id',
'a.total',
'a.unit_price',
'a.price',
'a.status',
'a.release_time',
'a.sell_time',
'a.created_time',
'a.take_time',
];
// 表关联
$join = [
['member seller', 'seller.member_id = a.seller_uid', 'left'],// 获取卖家信息
['goods g', 'g.goods_id = a.goods_id', 'left'],// 获取商品信息
];
$futuresModel = new FuturesModel;
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$list = $futuresModel->getPageList($condition, $page, $page_size, 'a.created_time desc,a.id desc', $field, 'a', $join);
return $this->response($list);
}
/**
* 发布
* @return false|string
*/
public function release()
{
$token = $this->checkToken();
if ($token['code'] < 0) return $this->response($token);
$id = input('id', 0);
$price = input('price', 0);
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
if(empty($date)){
return $this->response($this->error('','发布失败'));
}
if($price <= $date['unit_price'] * (1 + 0 / 100) || $price >= $date['unit_price'] * (1 + 8 / 100)){//TODO 后台配置范围
return $this->response($this->error('','发布失败,价格不在允许范围内'));
}
//TODO 拆单
$futuresModel = new FuturesModel;
return $this->response($futuresModel->release($id, $price));
}
/**
* 下架到库存
* @return false|string
*/
public function stock(){
$token = $this->checkToken();
if ($token['code'] < 0) return $this->response($token);
$id = input('id', 0);
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
if(empty($date)){
return $this->response($this->error('','下架失败'));
}
$futuresModel = new FuturesModel;
return $this->response($futuresModel->stock($id));
}
//TODO 提货
/**
* 详情
* @return false|string
*/
public function detail(){
$token = $this->checkToken();
if ($token['code'] < 0) return $this->response($token);
$id = input('id', 0);
$futuresModel = new FuturesModel;
$detail = $futuresModel->detail($id, $this->site_id);
return $this->response($detail);
}
}