$goodsMeta['goods_id'], 'goods_meta' => self::goodsMetaToInfo($goodsMeta), 'bought_times' => 0, 'free_num' => 0, ); array_push($goodsList, $goodsDto); switch ($goodsMeta['limit_type']) { case mt\Shop::DAILY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']); $goodsDto['bought_times'] = $buyRecord ? $buyRecord['this_day_buy_times'] : 0; } break; case mt\Shop::WEEKLY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']); $goodsDto['bought_times'] = $buyRecord ? $buyRecord['this_week_buy_times'] : 0; } break; case mt\Shop::TOTAL_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']); $goodsDto['bought_times'] = $buyRecord ? $buyRecord['total_buy_times'] : 0; } break; default: { } break; } $itemMeta = mt\Item::get($goodsMeta['item_id']); if ($itemMeta) { /* // 如果是皮肤,判断是否已经拥有,如果已经拥有,不能购买 if ($itemMeta['type'] == mt\Item::HERO_SKIN_TYPE) { $errCode = 0; $errMsg = ''; if (!self::canBuy($itemMeta, $errCode, $errMsg)) { $goods['bought_times'] = 1; } else { $goods['bought_times'] = 0; } }*/ } else if ($goodsMeta['goods_id'] != 9999){ error_log('item not found:' . json_encode($goodsMeta)); } } return $goodsList; } public static function buyLimitCheck($goodsMeta, &$errCode, &$errMsg) { $errCode = 0; $errMsg = ''; $buyRecordHash = ShopBuyRecord::allToHash(); $boughtTimes = 1; $goodsId = $goodsMeta['goods_id']; { switch ($goodsMeta['limit_type']) { case mt\Shop::DAILY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['this_day_buy_times'] + 1 : 1; if ($buyRecord && getXVal($buyRecord, 'this_day_buy_times', 0) >= $goodsMeta['limit_num']) { $errCode = 2; $errMsg = 'Daily purchase limit'; return false; } } break; case mt\Shop::WEEKLY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['this_week_buy_times'] + 1 : 1; if ($buyRecord && getXVal($buyRecord, 'this_week_buy_times', 0) >= $goodsMeta['limit_num']) { $errCode = 2; $errMsg = 'Weekly purchase limit reached'; return false; } } break; case mt\Shop::TOTAL_BUY_LIMIT: { // error_log("total buy limit " . $address . " " . $goodsId . " " . $goodsMeta['limit_num']); $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['total_buy_times'] + 1 : 1; if ($buyRecord && getXVal($buyRecord, 'total_buy_times', 0) >= $goodsMeta['limit_num']) { $errCode = 2; $errMsg = 'Purchase limit reached'; return false; } } break; default: { } break; } } return true; } public static function goodsMetaToInfo($goodsMeta) { return array( 'item_id' => $goodsMeta['item_id'], 'item_num' => $goodsMeta['item_num'], 'max_amount' => $goodsMeta['max_amount'], 'shop_id' => $goodsMeta['shop_id'], 'shopstage' => $goodsMeta['shopstage'], 'tag' => $goodsMeta['tag'], 'recommend' => $goodsMeta['recommend'], 'token_type' => $goodsMeta['token_type'], 'price' => $goodsMeta['price'], 'free_type' => $goodsMeta['free_type'], 'shop_icon' => $goodsMeta['shop_icon'], 'gg_product_id' => $goodsMeta['gg_product_id'], 'ios_product_id' => $goodsMeta['ios_product_id'], 'bonus' => $goodsMeta['bonus'], 'bonus_num' => $goodsMeta['bonus_num'], 'function' => $goodsMeta['function'], ); } // public static function canBuy($itemMeta, &$errCode, &$errMsg) // { // $errCode = 0; // $errMsg = ''; // switch ($itemMeta['type']) { // /* // case mt\Item::HERO_SKIN_TYPE: { // $heroSkinDb = HeroSkin::find($itemMeta['id']); // if ($heroSkinDb) { // $errCode = 10; // $errMsg = 'You already have the skin'; // return false; // } // } // break;*/ // default: { // return true; // } // break; // } // return true; // } }