|
|
@@ -13,6 +13,7 @@ use app\common\model\UserModel;
|
|
|
use app\common\model\LedgerWalletModel;
|
|
|
use app\common\model\ProductTransfer;
|
|
|
use app\api\logic\MarketLogic;
|
|
|
+use app\common\model\UserBuying;
|
|
|
use fast\Action;
|
|
|
use fast\Asset;
|
|
|
use fast\Http;
|
|
|
@@ -104,21 +105,18 @@ class Market extends Api
|
|
|
$params = $this->request->post();
|
|
|
$validate = \think\Loader::validate('Market');
|
|
|
if(!$validate->scene('buying')->check($params)) $this->error($validate->getError());
|
|
|
-
|
|
|
if($productBuying::getProductBuyingCount($this->auth->id, $params['product_id']) > config('market_buying.max_buying_num')) $this->error('您的求购次数已达上限');
|
|
|
$chabao = $ledgerWalletModel::getWalletChaBao($this->auth->id);
|
|
|
$total = bcmul($params['min_price'], $params['num'], 6); // 所需茶宝
|
|
|
if($chabao < $total) $this->error('您的茶币不足');
|
|
|
-
|
|
|
// 启动事务
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
-
|
|
|
// 记录订单
|
|
|
$productBuying::setCreateBuying($this->auth->id, $params['product_id'], $params['num'], $params['min_price'], $total);
|
|
|
|
|
|
// 扣除茶币
|
|
|
- $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$total, LedgerTokenChangeModel::BuySellg, $this->auth->id);
|
|
|
+ $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$total, LedgerTokenChangeModel::Buying, $this->auth->id);
|
|
|
|
|
|
$ledgerWalletModel->changeWalletOnly($this->auth->id, Asset::BUYING, $total); //冻结金额
|
|
|
// 提交事务
|
|
|
@@ -131,39 +129,89 @@ class Market extends Api
|
|
|
$this->success('ok');
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 求购详情
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function getBuyingDetail( ProductBuying $productBuying)
|
|
|
+ {
|
|
|
+ $params = $this->request->post();
|
|
|
+ $validate = \think\Loader::validate('Market');
|
|
|
+ if(!$validate->scene('buying_info')->check($params)) $this->error($validate->getError());
|
|
|
+ $resq = $productBuying::getProductBuyingDetail($params['buying_id'], $this->request->getLan());
|
|
|
+ $this->success('ok', $resq);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//出售求购
|
|
|
- public function sellBuying(LedgerWalletModel $ledgerWalletModel, ProductBuying $productBuying)
|
|
|
+ public function sellBuying(LedgerWalletModel $ledgerWalletModel, ProductBuying $productBuying, UserBuying $userBuying)
|
|
|
{
|
|
|
$params = $this->request->post();
|
|
|
$validate = \think\Loader::validate('Market');
|
|
|
if(!$validate->scene('sellbuying')->check($params)) $this->error($validate->getError());
|
|
|
- $buying = $productBuying::get($params['id']);
|
|
|
+ $buying = $productBuying::get($params['buying_id']);
|
|
|
if(empty($buying)) $this->error('订单不存在');
|
|
|
if($buying->user_id!= $this->auth->id) $this->error('无权操作');
|
|
|
if($buying->status != ProductBuying::Normal) $this->error('订单已完成');
|
|
|
- $total = bcmul($buying->min_price, $buying->num, 6); // 所需茶宝
|
|
|
- $chabao = $ledgerWalletModel::getWalletChaBao($this->auth->id);
|
|
|
- if($chabao < $total) $this->error('您的茶币不足');
|
|
|
+
|
|
|
// 启动事务
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+
|
|
|
+ // 记录出售订单
|
|
|
+ $chabao =$userBuying::getCreateUserBuying($this->auth->id, $params['buying_id'], $buying->user_id, $buying->min_price);
|
|
|
+
|
|
|
+ // 添加扣除茶币
|
|
|
+ $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, $chabao, LedgerTokenChangeModel::BuySellg, $buying->user_id);
|
|
|
+
|
|
|
+ // 扣除冻结金额
|
|
|
+ $ledgerWalletModel->changeWalletOnly($this->auth->id, Asset::BUYING, -$chabao); //解冻金额
|
|
|
+
|
|
|
+ if($buying->num == 1) $buying->status = ProductBuying::SaleOut;
|
|
|
+ $buying->num = $buying->num +1;
|
|
|
+ $buying->save();
|
|
|
+ // 提交事务
|
|
|
+ Db::commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ // 回滚事务
|
|
|
+ Db::rollback();
|
|
|
+ return $e->getMessage();
|
|
|
+ }
|
|
|
+ $this->success('ok');
|
|
|
|
|
|
}
|
|
|
|
|
|
//取消求购
|
|
|
- public function cancelBuying(ProductBuying $productBuying)
|
|
|
+ public function cancelBuying(LedgerWalletModel $ledgerWalletModel, ProductBuying $productBuying)
|
|
|
{
|
|
|
$params = $this->request->post();
|
|
|
$validate = \think\Loader::validate('Market');
|
|
|
if(!$validate->scene('cancelbuying')->check($params)) $this->error($validate->getError());
|
|
|
- $buying = $productBuying::get($params['id']);
|
|
|
+ $buying = $productBuying::get($params['buying_id']);
|
|
|
if(empty($buying)) $this->error('订单不存在');
|
|
|
if($buying->user_id!= $this->auth->id) $this->error('无权操作');
|
|
|
if($buying->status != ProductBuying::Normal) $this->error('订单已完成');
|
|
|
- $buying->status = ProductBuying::Close;
|
|
|
- $buying->save();
|
|
|
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+
|
|
|
+ $buying =$ledgerWalletModel::getWalletBuying($this->auth->id);
|
|
|
+ // 添加扣除茶币
|
|
|
+ $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, $buying, LedgerTokenChangeModel::BuyCancel, $buying->user_id);
|
|
|
+
|
|
|
+ $buying->status = ProductBuying::Close;
|
|
|
+ $buying->save();
|
|
|
+ // 提交事务
|
|
|
+ Db::commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ // 回滚事务
|
|
|
+ Db::rollback();
|
|
|
+ return $e->getMessage();
|
|
|
+ }
|
|
|
+ $this->success('ok');
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//获取配置信息
|
|
|
public function getMarketConfig()
|
|
|
{
|