game2006api/webapp/mt/ShopGoods.php
aozhiwei a431c927a1 1
2024-10-14 11:35:25 +08:00

103 lines
2.8 KiB
PHP

<?php
namespace mt;
use phpcommon;
class ShopGoods
{
public static function get($id)
{
return getXVal(self::getMetaList(), $id);
}
public static function getByGoodsUuid($goodsUuid)
{
return getXVal(self::getMetaList(), $goodsUuid);
}
public static function getGoodsList($shopId)
{
self::mustBeShopGoodsHash();
$shopData = getXVal(self::$shopGoodsHash, $shopId, null);
if (!$shopData) {
return null;
}
return $shopData['goodsList'];
}
public static function all()
{
if (!self::$goodsList) {
self::$goodsList = array();
foreach (self::getMetaList() as $meta) {
array_push(self::$goodsList, $meta);
}
}
return self::$goodsList;
}
public static function getGoodsInfo($shopId, $goodsId)
{
self::mustBeShopGoodsHash();
$shopData = getXVal(self::$shopGoodsHash, $shopId, null);
if (!$shopData) {
return null;
}
return getXVal($shopData['goodsHash'], $goodsId, null);
}
public static function getRandDailyHeroGoodsIds($shopId, $num)
{
$goodsMetaList = self::getGoodsList($shopId);
$goodsIds = array();
foreach ($goodsMetaList as $goodsMeta) {
if ($goodsMeta['is_close']) {
continue;
}
array_push($goodsIds, $goodsMeta['goods_id']);
}
shuffle($goodsIds);
$result = array();
for ($i = 0; $i < $num; ++$i) {
if ($i < count($goodsIds)) {
array_push($result, $goodsIds[$i]);
}
}
return $result;
}
protected static function mustBeShopGoodsHash()
{
if (!self::$shopGoodsHash) {
self::$shopGoodsHash = array();
foreach (self::getMetaList() as $meta) {
if (!getXVal(self::$shopGoodsHash, $meta['shop_id'], null)) {
self::$shopGoodsHash[$meta['shop_id']] = array(
'goodsList' => array(),
'goodsHash' => array()
);
}
self::$shopGoodsHash[$meta['shop_id']]['goodsHash'][$meta['goods_id']] = $meta;
array_push(self::$shopGoodsHash[$meta['shop_id']]['goodsList'], $meta);
}
}
}
protected static function getMetaList()
{
if (!self::$metaList) {
self::$metaList = getMetaTable('shopGoods@shopGoods.php');
foreach (self::$metaList as &$meta) {
$meta['free_type'] = 0;
}
}
return self::$metaList;
}
protected static $goodsList;
protected static $shopGoodsHash;
protected static $metaList;
}