|
|
@@ -5,9 +5,9 @@ namespace app\api\controller;
|
|
|
|
|
|
use app\common\controller\Api;
|
|
|
use app\api\logic\TeacLogin;
|
|
|
-use app\common\model\ParametersModel;
|
|
|
+use app\common\model\LedgerTeacChangeModel;
|
|
|
use app\common\model\LedgerTokenChangeModel;
|
|
|
-use app\common\model\UserModel;
|
|
|
+use app\common\model\UserTeac;
|
|
|
use app\common\model\LedgerWalletModel;
|
|
|
use fast\Action;
|
|
|
use fast\Asset;
|
|
|
@@ -20,8 +20,6 @@ use app\common\model\ProductTeac;
|
|
|
class Teac extends Api
|
|
|
{
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/*
|
|
|
* 求购列表
|
|
|
*/
|
|
|
@@ -50,18 +48,19 @@ class Teac extends Api
|
|
|
if(config('teac_trade.buy_min_num') > $params['stock']) $this->error('数量不能低于'.config('teac_trade.buy_min_num'));
|
|
|
if(config('teac_trade.buy_min_price') > $params['price']) $this->error('价格不能低于'.config('teac_trade.buy_min_price'));
|
|
|
|
|
|
- $chabao = $ledgerWalletModel->getWalletChaBao($this->auth->id);
|
|
|
- if($chabao < bcmul($params['price'], $params['stock'], 2)) $this->error('您的钱包茶宝余额不足');
|
|
|
-
|
|
|
+ $chabao = bcmul($params['price'], $params['stock'], 2) ;
|
|
|
+ if($ledgerWalletModel->getWalletChaBao($this->auth->id) < $chabao) $this->error('您的钱包茶宝余额不足');
|
|
|
+
|
|
|
Db::startTrans();
|
|
|
try{
|
|
|
|
|
|
//新增求购信息
|
|
|
- $order_price = $teacLogin::setCreateTrade($this->auth->id, $params['price'], $params['stock']);
|
|
|
+ $teacLogin::setCreateTrade($this->auth->id, $params['price'], $params['stock'], ProductTeac::Buying, $chabao);
|
|
|
|
|
|
- //冻结资产
|
|
|
- $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$order_price, LedgerTokenChangeModel::Buying, $this->auth->id);
|
|
|
+ //冻结茶宝
|
|
|
+ $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$chabao, LedgerTokenChangeModel::Buying, $this->auth->id);
|
|
|
|
|
|
+
|
|
|
Db::commit();
|
|
|
$this->success('订单创建成功');
|
|
|
}catch(Exception $e){
|
|
|
@@ -79,21 +78,19 @@ class Teac extends Api
|
|
|
$validate = \think\Loader::validate('Teac');
|
|
|
if(!$validate->scene('sell')->check($params)) $this->error($validate->getError());
|
|
|
|
|
|
- if(config('teac_trade.sell_min_num') > $params['price']) $this->error('数量不能低于'.config('teac_trade.sell_min_num'));
|
|
|
+ if(config('teac_trade.sell_min_num') > $params['stock']) $this->error('数量不能低于'.config('teac_trade.sell_min_num'));
|
|
|
if(config('teac_trade.sell_min_price') > $params['price']) $this->error('价格不能低于'.config('teac_trade.sell_min_price'));
|
|
|
|
|
|
- $teac = $ledgerWalletModel->getWalletTeac($this->auth->id);
|
|
|
- if($teac < bcmul($params['price'], $params['stock'], 2)) $this->error('您的钱包Teac余额不足');
|
|
|
-
|
|
|
+ if($ledgerWalletModel->getWalletTeac($this->auth->id) < $params['stock']) $this->error('您的钱包Teac余额不足');
|
|
|
+
|
|
|
Db::startTrans();
|
|
|
try{
|
|
|
|
|
|
//新增求购信息
|
|
|
- $order_price = $teacLogin::setCreateTrade($this->auth->id, $params['price'], $params['stock'], TeacTrade::Sell);
|
|
|
-
|
|
|
- //冻结资产
|
|
|
- $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TEAC, -$order_price, LedgerTokenChangeModel::Buying, $this->auth->id);
|
|
|
+ $teacLogin::setCreateTrade($this->auth->id, $params['price'], $params['stock'], ProductTeac::Sell, $params['stock']);
|
|
|
|
|
|
+ //冻结Teac
|
|
|
+ $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TEAC, -$params['stock'], LedgerTokenChangeModel::BuySellg, $this->auth->id);
|
|
|
Db::commit();
|
|
|
$this->success('订单创建成功');
|
|
|
}catch(Exception $e){
|
|
|
@@ -105,43 +102,87 @@ class Teac extends Api
|
|
|
|
|
|
/**
|
|
|
* 出售购买
|
|
|
- * @return void
|
|
|
- * @throws \think\db\exception\DataNotFoundException
|
|
|
- * @throws \think\db\exception\ModelNotFoundException
|
|
|
- * @throws \think\exception\DbException
|
|
|
*/
|
|
|
- public function setSellOrder(ProductTeac $productTeac, LedgerWalletModel $ledgerWalletModel, TeacLogin $teacLogin)
|
|
|
+ public function setSellOrder(ProductTeac $productTeac, LedgerWalletModel $ledgerWalletModel, TeacLogin $teacLogin, UserTeac $userTeac)
|
|
|
{
|
|
|
-
|
|
|
$params = $this->request->post();
|
|
|
$validate = \think\Loader::validate('Teac');
|
|
|
if(!$validate->scene('sell_order')->check($params)) $this->error($validate->getError());
|
|
|
- $row = $productTeac::get($params['id']);
|
|
|
- if(empty($row)) $this->error('订单不存在');
|
|
|
- if($row['status'] != ProductTeac::Normal) $this->error('订单已完成');
|
|
|
+ $row = $productTeac::where(['type_id'=> ProductTeac::Sell, 'id' => $params['teac_id']])->find();
|
|
|
+ if(empty($row) || $row['status'] != ProductTeac::Normal) $this->error('订单不存在');
|
|
|
+ if($params['num'] < $row['stock'] - $row['num']) $this->error('库存不足');
|
|
|
+ $chabao = $ledgerWalletModel->getWalletChaBao($this->auth->id);
|
|
|
+ $tatal = bcmul($row['price'], $params['num'], 2);
|
|
|
+ if($chabao < bcmul($row['price'], $tatal, 2)) $this->error('您的钱包茶宝余额不足');
|
|
|
+
|
|
|
// 启动事务
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
-
|
|
|
|
|
|
+ $fee = config('teac_trade.sell_fee');
|
|
|
+
|
|
|
+ // 出售购买
|
|
|
+ $userTeac::setUserCreateOrder($this->auth->id, $row['id'], ProductTeac::Sell, $params['num'], $row['price'], $fee);
|
|
|
|
|
|
+ //添加扣除相应茶宝Teac
|
|
|
+ $teacLogin::setCreateSellOrder($this->auth->id, $row['user_id'], $row['price'], $params['num'], $fee);
|
|
|
|
|
|
-
|
|
|
+ //修改状态
|
|
|
+ if($row->stock - $row->num == $params['num']) $row->status = ProductTeac::Complete;
|
|
|
+ $row->frozen -= $params['num'];
|
|
|
+ $row->num += $params['num'];
|
|
|
+ $row->save();
|
|
|
// 提交事务
|
|
|
Db::commit();
|
|
|
} catch (Exception $e) {
|
|
|
// 回滚事务
|
|
|
- Db::rollback();
|
|
|
+ Db::rollback();
|
|
|
return $e->getMessage();
|
|
|
}
|
|
|
+ $this->success('ok');
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 求购出售
|
|
|
*/
|
|
|
- public function getBuyOrder()
|
|
|
- {
|
|
|
+ public function getBuyOrder(ProductTeac $productTeac, LedgerWalletModel $ledgerWalletModel, TeacLogin $teacLogin, UserTeac $userTeac)
|
|
|
+ {
|
|
|
+ $params = $this->request->post();
|
|
|
+ $validate = \think\Loader::validate('Teac');
|
|
|
+ if(!$validate->scene('sell_order')->check($params)) $this->error($validate->getError());
|
|
|
+ $row = $productTeac::where(['type_id'=> ProductTeac::Buying, 'id' => $params['teac_id']])->find();
|
|
|
+ if(empty($row) || $row['status'] != ProductTeac::Normal) $this->error('订单不存在');
|
|
|
+ if($params['num'] < $row['stock'] - $row['num']) $this->error('库存不足');
|
|
|
+ $chabao = $ledgerWalletModel->getWalletChaBao($this->auth->id);
|
|
|
+ $tatal = bcmul($row['price'], $params['num'], 2);
|
|
|
+ if($chabao < bcmul($row['price'], $tatal, 2)) $this->error('您的钱包茶宝余额不足');
|
|
|
+
|
|
|
+ // 启动事务
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+
|
|
|
+ $fee = config('teac_trade.sell_fee');
|
|
|
+ $chabao = bcmul($row['price'], $params['num'], 2);
|
|
|
+ // 出售购买
|
|
|
+ $userTeac::setUserCreateOrder($this->auth->id, $row['id'], ProductTeac::Buying, $params['num'], $row['price'], $fee);
|
|
|
+
|
|
|
+ //添加扣除相应茶宝Teac
|
|
|
+ $teacLogin::setCreateBuyingOrder($this->auth->id, $row['user_id'], $row['price'], $params['num'], $fee);
|
|
|
+
|
|
|
+ //修改状态
|
|
|
+ if($row->stock - $row->num == $params['num']) $row->status = ProductTeac::Complete;
|
|
|
+ $row->frozen -= $chabao;
|
|
|
+ $row->num += $params['num'];
|
|
|
+ $row->save();
|
|
|
+ // 提交事务
|
|
|
+ Db::commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ // 回滚事务
|
|
|
+ Db::rollback();
|
|
|
+ return $e->getMessage();
|
|
|
+ }
|
|
|
+ $this->success('ok');
|
|
|
$this->success('ok', config('teac_trade'));
|
|
|
}
|
|
|
|