_rspData( array( 'goods_list' => $goodsList, ) ); } public function buyGoodsS() { myself()->_verifySwitch('hashrate.shop.buy'); $goodsId = getReqVal('goods_id', 0); $goodsNum = getReqVal('goods_num', 0); if ($goodsNum < 1) { myself()->_rspErr(1, "goods_num parameter error, goods_num: {$goodsNum}"); return; } $goodsMeta = mt\HashRateShop::find($goodsId); if (!$goodsMeta) { myself()->_rspErr(1, 'goods not found'); return; } if ($goodsMeta['is_close']) { myself()->_rspErr(1, 'no right to purchase'); return; } $itemMeta = mt\Item::get($goodsMeta['item_id']); if (!$itemMeta) { myself()->_rspErr(1, 'goods not found, goods_id: ' . $goodsMeta['goods_id']); return; } $errCode = 0; $errMsg = ''; if (!HashRateShopService::buyLimitCheck($goodsMeta, $goodsNum, $errCode, $errMsg)) { myself()->_rspErr($errCode, $errMsg); return; } $propertyChgService = new services\PropertyChgService(); $awardService = new services\AwardService(); $tokenType = $goodsMeta['token_type']; $price = $goodsMeta['price']; if (!in_array( $tokenType, array( mt\Shop::TOKEN_TYPE_GOLD, mt\Shop::TOKEN_TYPE_DIAMOND ) )) { myself()->_rspErr(1, "token_type is unsupport, {$tokenType}"); return; } if ($price < 1) { myself()->_rspErr(1, "config error"); return; } $costItemId = myself()->getCostItemIdByTokenType($tokenType); $costItems = array( array( 'item_id' => $costItemId, 'item_num' => $goodsNum * $price ) ); $lackItem = null; if (!myself()->_hasEnoughItems($costItems, $lackItem)) { myself()->_rspErr(2, myself()->_getLackItemErrMsg($lackItem)); return; } ShopBuyRecord::add($goodsMeta['goods_id'], $goodsNum); myself()->_decItems($costItems); for ($i = 0; $i < $goodsNum; $i++) { $this->internalAddItem($awardService, $propertyChgService, $itemMeta, $goodsMeta['item_num'] ); } $propertyChgService->addUserChg(); $this->_rspData( array( 'award' => $awardService->toDto(), 'property_chg' => $propertyChgService->toDto(), ) ); } }