Compare commits

...

2 Commits

Author SHA1 Message Date
liqianjin 4d5e63bfa0 Merge remote-tracking branch 'origin/main' 2023-03-03 17:19:02 +08:00
liqianjin ea66c01647 【增加】myDetail 2023-03-03 17:18:36 +08:00
5 changed files with 44 additions and 6 deletions

View File

@ -155,6 +155,7 @@ class Futures extends BaseApi{
$id = input('id', 0);
$price = input('price', 0);
$agree_split_order = input('agree_split_order', 0);
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
if(empty($date)){
@ -163,13 +164,13 @@ class Futures extends BaseApi{
$futuresModel = new FuturesModel;
$basicsConfig = $futuresModel->getBasicsConfig($this->site_id)['data']['value'];
if(!($price > $date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100) && $price <= $date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100))){// 后台配置范围
return $this->response($this->error('','发布失败,价格不在允许范围内'));
if(!($price > sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100)) && $price <= sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100)))){// 后台配置范围
return $this->response($this->error('','发布失败,价格不在允许范围内'.sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100)).'-'.sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100))));
}
//TODO 限制发布时间
return $this->response($futuresModel->release($id, $price));
return $this->response($futuresModel->release($id, $price, $agree_split_order));
}
/**
@ -261,4 +262,8 @@ class Futures extends BaseApi{
}
return $this->response($detail);
}
public function testBuyBack(){
return $this->response(event('BuyBack'));
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace addon\futures\api\controller;
use app\api\controller\BaseApi;
class User extends BaseApi{
public function info(){
$token = $this->checkToken();
if ($token['code'] < 0) return $this->response($token);
return $this->response($this->success(model('futures_user')->getInfo([['member_id', '=', $this->member_id]])));
}
}

View File

@ -19,14 +19,16 @@ return [
],
'OrderClose' => [
'addon\futures\event\OrderClose',
],
//回购
'BuyBack' => [
'addon\futures\event\BuyBack',
]
],
'subscribe' => [

View File

@ -0,0 +1,12 @@
<?php
namespace addon\futures\event;
use addon\futures\model\User;
class BuyBack{
public function handle($param){
$userModel = new User(1);
return $userModel->buyBack();
}
}

View File

@ -53,6 +53,7 @@ class Futures extends BaseModel{
'a.id',
'a.total',
'a.unit_price',
'a.order_id',
'a.price',
'a.status',
'a.release_time',
@ -93,7 +94,7 @@ class Futures extends BaseModel{
* @return array
* @throws InvalidArgumentException
*/
public function release($id, $price){
public function release($id, $price, $agree_split_order = 0){
$date = model('futures')->getInfo([['id', '=', $id]]);
if(empty($date) || $date['status'] !== 1){
return $this->error('','发布失败');
@ -110,6 +111,11 @@ class Futures extends BaseModel{
if($price >= $futuresInfo['market_price'] * $futuresInfo['total']){
$futuresInfo['total'] *= 2;
if($futuresInfo['total'] > pow(2,3)){//TODO 配置单订单商品最大裂变次数
if($agree_split_order == 0){
model('futures')->rollback();
Cache::store('redis_concurrent')->set('addon_futures_stock_'.$id,'1');
return error(-800, '订单价格达到订单拆分限制,是否同意订单拆分?');
}
//拆单
$futuresInfo['status'] = 8;
for($i = 0;$i < $futuresInfo['total'];$i++){