aozhiwei 44ccdc20a0 1
2021-11-26 19:54:59 +08:00

127 lines
3.5 KiB
PHP

<?php
namespace models;
require_once('mt/Item.php');
use mt;
use phpcommon\SqlHelper;
class Bag extends BaseModel {
const GETED_STATE = 0;
const TRY_USING_STATE = 1;
public static function find($itemId)
{
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_bag',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
)
);
return $row;
}
public static function toDto($row)
{
return array(
'item_id' => $row['item_id'],
'item_num' => $row['item_num'],
'item_state' => $row['item_state'],
'try_expire_at' => $row['try_expire_at'],
);
}
public static function getItemCount($itemId)
{
$itemDb = self::find($itemId);
return $itemDb ? $itemDb['item_count'] : 0;
}
public static function addItem($itemId, $itemNum)
{
if (myself()->_isVirtualItem($itemId)) {
return;
}
$itemMeta = mt\Item::get($itemId);
if (!$itemMeta) {
return;
}
SqlHelper::upsert
(myself()->_getSelfMysql(),
't_bag',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId
),
array(
'item_num' => function () use($item) { return "item_num + {$itemNum}";},
'modifytime' => myself()->_getNowTime(),
'item_state' => self::GETED_STATE,
),
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
'item_num' => $itemNum,
'item_state' => self::GETED_STATE,
'try_expire_at' => 0,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
}
public static function addTryUsingItem($itemId, $itemNum, $tryUsingTime)
{
if (myself()->_isVirtualItem($itemId)) {
return;
}
$itemMeta = mt\Item::get($itemId);
if (!$itemMeta) {
return;
}
SqlHelper::upsert
(myself()->_getSelfMysql(),
't_bag',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId
),
array(
),
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
'item_num' => $itemNum,
'item_state' => self::TRY_USING_STATE,
'try_expire_at' => myself()->_getNowTime() + $tryUsingTime,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)
);
}
public static function decItem($itemId, $itemNum)
{
SqlHelper::update
(myself()->_getSelfMysql(),
't_bag',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
'item_state' => self::GETED_STATE,
),
array(
'item_num' => function () use($itemNum) {
return "GREATEST(0, item_num - ${itemNum})";
},
'modifytime' => myself()->_getNowTime(),
)
);
}
}