From ea66c0164751d212ca6ca954841f11d6e0410c78 Mon Sep 17 00:00:00 2001 From: liqianjin <949671634@qq.com> Date: Fri, 3 Mar 2023 17:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=91myDetail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addon/futures/api/controller/Futures.php | 11 ++++++++--- addon/futures/api/controller/User.php | 13 +++++++++++++ addon/futures/config/event.php | 6 ++++-- addon/futures/event/BuyBack.php | 12 ++++++++++++ addon/futures/model/Futures.php | 8 +++++++- 5 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 addon/futures/api/controller/User.php create mode 100644 addon/futures/event/BuyBack.php diff --git a/addon/futures/api/controller/Futures.php b/addon/futures/api/controller/Futures.php index ecfafbd6..da4ce737 100644 --- a/addon/futures/api/controller/Futures.php +++ b/addon/futures/api/controller/Futures.php @@ -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')); + } } \ No newline at end of file diff --git a/addon/futures/api/controller/User.php b/addon/futures/api/controller/User.php new file mode 100644 index 00000000..f9ad7467 --- /dev/null +++ b/addon/futures/api/controller/User.php @@ -0,0 +1,13 @@ +checkToken(); + if ($token['code'] < 0) return $this->response($token); + + return $this->response($this->success(model('futures_user')->getInfo([['member_id', '=', $this->member_id]]))); + } +} \ No newline at end of file diff --git a/addon/futures/config/event.php b/addon/futures/config/event.php index 55b55c2b..ede4a5b3 100644 --- a/addon/futures/config/event.php +++ b/addon/futures/config/event.php @@ -19,14 +19,16 @@ return [ ], 'OrderClose' => [ 'addon\futures\event\OrderClose', + ], + //回购 + 'BuyBack' => [ + 'addon\futures\event\BuyBack', ] - - ], 'subscribe' => [ diff --git a/addon/futures/event/BuyBack.php b/addon/futures/event/BuyBack.php new file mode 100644 index 00000000..5ac1f26b --- /dev/null +++ b/addon/futures/event/BuyBack.php @@ -0,0 +1,12 @@ +buyBack(); + } +} \ No newline at end of file diff --git a/addon/futures/model/Futures.php b/addon/futures/model/Futures.php index bbe55e6d..d600af3a 100644 --- a/addon/futures/model/Futures.php +++ b/addon/futures/model/Futures.php @@ -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++){