117 lines
4.5 KiB
PHP
117 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace services;
|
|
|
|
require_once('mt/HashRateShop.php');
|
|
require_once('mt/Item.php');
|
|
|
|
use mt;
|
|
use phpcommon;
|
|
|
|
class HashRateShopService {
|
|
|
|
public static function getGoodsList()
|
|
{
|
|
$goodsMetaList = mt\HashRateShop::all();
|
|
$buyRecordHash = ShopBuyRecord::allToHash();
|
|
|
|
$goodsList = array();
|
|
foreach ($goodsMetaList as $goodsMeta) {
|
|
if ($goodsMeta['is_close']) {
|
|
continue;
|
|
}
|
|
$goodsDto = array(
|
|
'goods_id' => $goodsMeta['goods_id'],
|
|
'goods_meta' => self::goodsMetaToInfo($goodsMeta),
|
|
'bought_times' => 0,
|
|
'free_num' => 0,
|
|
);
|
|
array_push($goodsList, $goodsDto);
|
|
switch ($goodsMeta['limit_type']) {
|
|
case mt\HashRateShop::DAILY_BUY_LIMIT: {
|
|
$buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']);
|
|
$goodsDto['bought_times'] = $buyRecord ? $buyRecord['this_day_buy_times'] : 0;
|
|
}
|
|
break;
|
|
case mt\HashRateShop::WEEKLY_BUY_LIMIT: {
|
|
$buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']);
|
|
$goodsDto['bought_times'] = $buyRecord ? $buyRecord['this_week_buy_times'] : 0;
|
|
}
|
|
break;
|
|
case mt\HashRateShop::MONTH_BUY_LIMIT: {
|
|
$buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']);
|
|
$goodsDto['bought_times'] = $buyRecord ? $buyRecord['this_week_buy_times'] : 0;
|
|
}
|
|
break;
|
|
case mt\HashRateShop::TOTAL_BUY_LIMIT: {
|
|
$buyRecord = getXVal($buyRecordHash, $goodsMeta['goods_id']);
|
|
$goodsDto['bought_times'] = $buyRecord ? $buyRecord['total_buy_times'] : 0;
|
|
}
|
|
break;
|
|
default: {
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return $goodsList;
|
|
}
|
|
|
|
public static function buyLimitCheck($goodsMeta, $goodsNum, &$errCode, &$errMsg)
|
|
{
|
|
$errCode = 0;
|
|
$errMsg = '';
|
|
$buyRecordHash = ShopBuyRecord::allToHash();
|
|
$boughtTimes = 1;
|
|
$goodsId = $goodsMeta['goods_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;
|
|
}
|
|
|
|
}
|