_getSelfMysql(), 't_gun', array( 'account_id' => myself()->_getAccountId(), 'gun_id' => $itemId, ) ); return $row; } public static function toDto($row) { $attr = emptyReplace(json_decode($row['rand_attr'], true), array()); return array( 'gun_uniid' => $row['idx'], 'gun_id' => $row['gun_id'], 'state' => $row['state'], 'gun_lv' => $row['gun_lv'], 'quality' => $row['quality'], 'try_count' => $row['try_count'], 'lock_type' => $lockType, 'lock_time' => $lockTime, 'trade_locktime' => $tradeLocktime, 'attr' => $attr, ); } 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; } if ($itemNum <= 0) { return; } $itemMeta = mt\Item::get($itemId); if (!$itemMeta) { return; } if ($itemMeta['cannot_stack']) { $randAttr = array(); if (mt\Item::isRandAttrItem($itemMeta)) { $qualityMeta = mt\ChipQuality::getByQuality($itemMeta['quality']); if ($qualityMeta) { $randAttr = mt\ChipQuality::getRandAttr($qualityMeta); } } SqlHelper::insert (myself()->_getSelfMysql(), 't_bag', array( 'account_id' => myself()->_getAccountId(), 'item_id' => $itemId, 'item_num' => 1, 'rand_attr' => json_encode($randAttr), 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ) ); } else { 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() ) ); } } }