myself()->_getNowTime()) { continue; } $goodsDto = array( 'goods_id' => $goodsMeta['id'], 'price' => $goodsMeta['pile_price'], 'item_id' => $goodsMeta['type'], 'item_num' => $goodsMeta['item_num'], 'purchased_num' => 0, 'max_num' => $goodsMeta['limit_num'], 'count_down' => 0, ); switch ($goodsMeta['limit_type']) { case mt\HashRateShop::DAILY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['id']); $goodsDto['purchased_num'] = $buyRecord ? $buyRecord['this_day_buy_times'] : 0; if ($buyRecord && $goodsDto['purchased_num'] > 0 && $goodsDto['purchased_num'] >= $goodsDto['max_num']) { $goodsDto['count_down'] = myself()->_getNowDaySeconds() + 3600 * 24 - myself()->_getNowTime(); } } break; case mt\HashRateShop::WEEKLY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['id']); $goodsDto['purchased_num'] = $buyRecord ? $buyRecord['this_week_buy_times'] : 0; if ($buyRecord && $goodsDto['purchased_num'] > 0 && $goodsDto['purchased_num'] >= $goodsDto['max_num']) { $goodsDto['count_down'] = myself()->_getMondaySeconds() + 3600 * 24 * 7 - myself()->_getNowTime(); } } break; case mt\HashRateShop::MONTH_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['id']); $goodsDto['purchased_num'] = $buyRecord ? $buyRecord['this_week_buy_times'] : 0; } break; case mt\HashRateShop::TOTAL_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsMeta['id']); $goodsDto['purchased_num'] = $buyRecord ? $buyRecord['total_buy_times'] : 0; } break; default: { } break; } array_push($goodsList, $goodsDto); } return $goodsList; } public static function buyLimitCheck($goodsMeta, $goodsNum, &$errCode, &$errMsg) { if ($goodsMeta['is_close']) { $errCode = 1; $errMsg = 'cant buy'; return; } if ($goodsMeta['first_time'] > myself()->_getNowTime()) { $errCode = 1; $errMsg = 'cant buy'; return; } $errCode = 0; $errMsg = ''; $buyRecordHash = HashRateShopBuyRecord::allToHash(); $boughtTimes = 1; $goodsId = $goodsMeta['id']; { switch ($goodsMeta['limit_type']) { case mt\HashRateShop::DAILY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['this_day_buy_times'] + $goodsNum : 1; if ($buyRecord && getXVal($buyRecord, 'this_day_buy_times', 0) >= $goodsMeta['limit_num']) { $errCode = 2; $errMsg = 'Daily purchase limit'; return false; } } break; case mt\HashRateShop::WEEKLY_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['this_week_buy_times'] + $goodsNum : 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\HashRateShop::MONTH_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['this_month_buy_times'] + $goodsNum : 1; if ($buyRecord && getXVal($buyRecord, 'this_month_buy_times', 0) >= $goodsMeta['limit_num']) { $errCode = 2; $errMsg = 'Month purchase limit reached'; return false; } } break; case mt\HashRateShop::TOTAL_BUY_LIMIT: { $buyRecord = getXVal($buyRecordHash, $goodsId); $boughtTimes = $buyRecord ? $buyRecord['total_buy_times'] + $goodsNum : 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; } }