_getSelfMysql(), 't_bag', array( 'account_id' => myself()->_getAccountId(), 'item_id' => $itemId, ) ); return $row; } public static function findByType($type, $subType = null) { foreach (self::all() as $itemDto) { if ($itemDto['item_num'] > 0) { $itemMeta = mt\Item::get($itemDto['item_id']); if ($itemMeta['type'] == $type) { if (is_null($subType)) { return $itemDto; } else { if ($itemMeta['sub_type'] == $subType) { return $itemDto; } } } } } return null; } public static function toDto($row) { return array( 'item_id' => $row['item_id'], 'item_num' => $row['item_num'], ); } public static function all() { $itemList = array(); SqlHelper::ormSelect( myself()->_getSelfMysql(), 't_bag', array( 'account_id' => myself()->_getAccountId() ), function ($row) use(&$itemList) { if ($row['item_num'] > 0) { array_push($itemList, Bag::toDto($row)); } } ); return $itemList; } public static function getItemCount($itemId) { $itemDb = self::find($itemId); return $itemDb ? $itemDb['item_num'] : 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($itemNum) { return "item_num + {$itemNum}";}, 'modifytime' => myself()->_getNowTime(), ), array( 'account_id' => myself()->_getAccountId(), 'item_id' => $itemId, 'item_num' => $itemNum, '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, ), array( 'item_num' => function () use($itemNum) { return "GREATEST(0, item_num - ${itemNum})"; }, 'modifytime' => myself()->_getNowTime(), ) ); } }