127 lines
3.5 KiB
PHP
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(),
|
|
)
|
|
);
|
|
}
|
|
|
|
}
|