129 lines
4.9 KiB
PHP
129 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace services;
|
|
|
|
require_once('models/HashRateShopBuyRecord.php');
|
|
|
|
require_once('mt/HashRateShop.php');
|
|
require_once('mt/Item.php');
|
|
|
|
use mt;
|
|
use phpcommon;
|
|
|
|
use models\HashRateShopBuyRecord;
|
|
|
|
class HashRateShopService {
|
|
|
|
public static function getGoodsList()
|
|
{
|
|
$goodsMetaList = mt\HashRateShop::all();
|
|
$buyRecordHash = HashRateShopBuyRecord::allToHash();
|
|
|
|
$goodsList = array();
|
|
foreach ($goodsMetaList as $goodsMeta) {
|
|
if ($goodsMeta['is_close']) {
|
|
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,
|
|
);
|
|
array_push($goodsList, $goodsDto);
|
|
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;
|
|
}
|
|
break;
|
|
case mt\HashRateShop::WEEKLY_BUY_LIMIT: {
|
|
$buyRecord = getXVal($buyRecordHash, $goodsMeta['id']);
|
|
$goodsDto['purchased_num'] = $buyRecord ? $buyRecord['this_week_buy_times'] : 0;
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
return $goodsList;
|
|
}
|
|
|
|
public static function buyLimitCheck($goodsMeta, $goodsNum, &$errCode, &$errMsg)
|
|
{
|
|
if ($goodsMeta['is_close']) {
|
|
$errCode = 1;
|
|
$errMsg = 'cant buy';
|
|
return;
|
|
}
|
|
$errCode = 0;
|
|
$errMsg = '';
|
|
$buyRecordHash = HashRateShopBuyRecord::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;
|
|
}
|
|
|
|
}
|