array(), 'rows' => array() ); SqlHelper::rawQueryPage( myself()->_getMySql(''), 'SELECT * FROM t_mall WHERE status=:status', array( ':status' => Mall::PENDING_STATE ), array( 'page' => $page, 'perPage' => 10, 'filter' => array( 'data' => $queryData, 'fields' => array( ) ), //'orderBy' => $orderBy, 'handle' => function ($row) use(&$out) { array_push($out['rows'], array( 'goods_uuid' => $row['goods_uuid'], 'seller' => $row['seller'], 'seller_address' => $row['seller_address'], 'item_id' => $row['item_id'], 'item_num' => $row['item_num'], 'currency' => $row['currency'], 'price' => $row['price'], )); } ), $out['pagination'] ); myself()->_rspData($out); } public function sell() { if (SERVER_ENV == _ONLINE) { $address = myself()->_getAddress(); if (!$address) { $this->_rspErr(1, 'address not found'); return; } } $itemId = getReqVal('item_id', ''); $amount = getReqVal('amount', ''); $currency = getReqVal('currency', ''); $price = getReqVal('price', ''); if ($itemId != V_ITEM_GOLD) { $this->_rspErr(1, 'only support gold'); return; } if (empty($price)) { $this->_rspErr(1, 'price not found'); return; } if ($price <= 0) { $this->_rspErr(1, 'price must > 0'); return; } if (empty($amount)) { $this->_rspErr(1, 'amount not found'); return; } if (!is_numeric($amount)) { $this->_rspErr(1, 'amount must be number'); return; } if ($amount <= 0) { $this->_rspErr(1, 'amount must > 0'); return; } if (!in_array( $currency, array( 'CEG', 'USDC', 'USDT' ) )) { $this->_rspErr(1, 'paramater error currency'); return; } $costItems = array( array( 'item_id' => $itemId, 'item_num' => $amount ) ); $lackItem = null; if (!$this->_hasEnoughItems($costItems, $lackItem)) { $this->_rspErr(2, $this->_getLackItemErrMsg($lackItem)); return; } $this->_decItems($costItems); if ($itemId == V_ITEM_GOLD) { //埋点 $event = [ 'name' => LogService::MARKET_SELL_GOLD, 'val' => $amount ]; LogService::consumeGold($event); } $orderId = OrderId::gen(); Mall::Add( $orderId, $orderId, $itemId, $amount, $currency, $price ); myself()->_rspOk(); } public function cancel() { $goodsUuid = getReqVal('goods_uuid', ''); $goodsDb = Mall::findByGoodsUuid($goodsUuid); if (!$goodsDb) { myself()->_rspErr(1, 'goods not found'); return; } if ($goodsDb['seller'] != myself()->_getAccountId()) { myself()->_rspErr(1, 'goods not found'); return; } Mall::cancel($goodsDb['goods_uuid']); myself()->_rspOk(); } public function modifyPrice() { $goodsUuid = getReqVal('goods_uuid', ''); $price = getReqVal('price', ''); $goodsDb = Mall::findByGoodsUuid($goodsUuid); if (!$goodsDb) { myself()->_rspErr(1, 'goods not found'); return; } if ($goodsDb['seller'] != myself()->_getAccountId()) { myself()->_rspErr(1, 'goods not found'); return; } Mall::modifyPrice($goodsDb['goods_uuid'], $price); $this->_rspOk(); } }