1
This commit is contained in:
parent
fedb66fae1
commit
799c95bd75
@ -1,6 +1,9 @@
|
||||
<?php
|
||||
|
||||
require_once('models/Bag.php');
|
||||
|
||||
use phpcommon\SqlHelper;
|
||||
use models\Bag;
|
||||
|
||||
class BaseAuthedController extends BaseController {
|
||||
|
||||
@ -110,124 +113,120 @@ class BaseAuthedController extends BaseController {
|
||||
);
|
||||
}
|
||||
|
||||
public function _getItem($itemId)
|
||||
{
|
||||
$row = SqlHelper::selectOne
|
||||
($this->_getSelfMysql(),
|
||||
'bag',
|
||||
array(
|
||||
'id',
|
||||
'num'
|
||||
),
|
||||
array(
|
||||
'id' => $itemId,
|
||||
'accountid' => $this->_getAccountId()
|
||||
));
|
||||
if (empty($row)) {
|
||||
return null;
|
||||
}
|
||||
return array(
|
||||
'item_id' => $row['id'],
|
||||
'item_num' => $row['num']
|
||||
);
|
||||
}
|
||||
|
||||
public function _getItemCount($itemId, $userInfo)
|
||||
{
|
||||
switch ($itemId) {
|
||||
case V_ITEM_GOLD:
|
||||
{
|
||||
return $userInfo['coin_num'];
|
||||
return $userInfo['gold'];
|
||||
}
|
||||
break;
|
||||
case V_ITEM_DIAMOND:
|
||||
{
|
||||
return $userInfo['diamond_num'];
|
||||
return $userInfo['diamond'];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
return Bag::getItemCount($itemId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function _isVirtualItem($itemId)
|
||||
{
|
||||
return in_array($itemId, array(V_ITEM_GOLD, V_ITEM_DIAMOND));
|
||||
}
|
||||
|
||||
public function _addVirtualItem($itemId, $itemNum)
|
||||
{
|
||||
if ($itemNum <= 0){
|
||||
return;
|
||||
}
|
||||
switch ($itemId) {
|
||||
case V_ITEM_GOLD:
|
||||
{
|
||||
$this->_updateUserInfo(array(
|
||||
'gold' => function () use($itemNum) {
|
||||
return "gold + ${itemNum}";
|
||||
}
|
||||
));
|
||||
}
|
||||
break;
|
||||
case V_ITEM_DIAMOND:
|
||||
{
|
||||
$this->_updateUserInfo(array(
|
||||
'diamond' => function () use($itemNum) {
|
||||
return "diamond + ${itemNum}";
|
||||
}
|
||||
));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
$row = SqlHelper::selectOne
|
||||
($this->_getSelfMysql(),
|
||||
'bag',
|
||||
array(
|
||||
'id',
|
||||
'num'
|
||||
),
|
||||
array(
|
||||
'id' => $itemId,
|
||||
'accountid' => $this->_getAccountId()
|
||||
));
|
||||
return $row ? $row['num'] : 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function _isVirtualItem($itemId)
|
||||
public function _decVirtualItem($itemId, $itemNum)
|
||||
{
|
||||
$isVirtualItem = false;
|
||||
return $isVirtualItem;
|
||||
if ($itemNum <= 0){
|
||||
return;
|
||||
}
|
||||
switch ($itemId) {
|
||||
case V_ITEM_GOLD:
|
||||
{
|
||||
$this->_updateUserInfo(array(
|
||||
'gold' => function () use($itemNum) {
|
||||
return "GREATEST(0, gold - ${itemNum})";
|
||||
}
|
||||
));
|
||||
}
|
||||
break;
|
||||
case V_ITEM_DIAMOND:
|
||||
{
|
||||
$this->_updateUserInfo(array(
|
||||
'diamond' => function () use($itemNum) {
|
||||
return "GREATEST(0, diamond - ${itemNum})";
|
||||
}
|
||||
));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function _addItem($items)
|
||||
public function _addItems($items)
|
||||
{
|
||||
foreach ($items as $item) {
|
||||
if ($this->_isVirtualItem($item['item_id'])) {
|
||||
if ($item['item_id'] == $this->goldID) {
|
||||
$this->_addGold($item['item_num']);
|
||||
}
|
||||
else if ($item['item_id'] == $this->lotteryID){
|
||||
$this->addLottery($item['item_num']);
|
||||
}
|
||||
$this->_addVirtualItem($item['item_id'], $item['item_num']);
|
||||
} else {
|
||||
SqlHelper::upsert
|
||||
($this->_getSelfMysql(),
|
||||
't_bag',
|
||||
array(
|
||||
'accountid' => $this->_getAccountId(),
|
||||
'item_id' => $item['item_id']
|
||||
),
|
||||
array(
|
||||
'item_num' => function () use($item) { return "item_num + {$item['item_num']}";},
|
||||
'modifytime' => $this->_getNowTime()
|
||||
),
|
||||
array(
|
||||
'accountid' => $this->_getAccountId(),
|
||||
'item_id' => $item['item_id'],
|
||||
'item_num' => 1,
|
||||
'item_state' => 0,
|
||||
'try_expire_at' => 0,
|
||||
'createtime' => $this->_getNowTime(),
|
||||
'modifytime' => $this->_getNowTime()
|
||||
)
|
||||
);
|
||||
Bag::addItem($item['item_id'], $item['item_num']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function _addTryUsingItems($items)
|
||||
{
|
||||
foreach ($items as $item) {
|
||||
Bag::addTryUsingItem($item['item_id'], $item['item_num'], $item['try_using_time']);
|
||||
}
|
||||
}
|
||||
|
||||
public function _decItems($items)
|
||||
{
|
||||
foreach ($items as $item) {
|
||||
if ($this->_isVirtualItem($item['item_id'])) {
|
||||
// if ($item['item_id'] == VIRTUAL_ITEM_GOLD_ID) {
|
||||
// $this->_decGold($item['item_num']);
|
||||
// }
|
||||
$this->_decVirtualItem($item['item_id'], $item['item_num']);
|
||||
} else {
|
||||
SqlHelper::update
|
||||
($this->_getSelfMysql(),
|
||||
'bag',
|
||||
array(
|
||||
'accountid' => $this->_getAccountId(),
|
||||
'id' => $item['item_id']
|
||||
),
|
||||
array(
|
||||
'num' => function () use($item) {
|
||||
return "CASE WHEN num < {$item['item_num']} THEN 0 ELSE num - {$item['item_num']} END";
|
||||
},
|
||||
'modify_time' => $this->_getNowTime()
|
||||
)
|
||||
);
|
||||
Bag::decItem($item['item_id'], $item['item_num']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -235,7 +234,7 @@ class BaseAuthedController extends BaseController {
|
||||
public function _hasEnoughItems($items, &$lackItem)
|
||||
{
|
||||
$userInfo = $this->_getUserInfo(array(
|
||||
'golda',
|
||||
'gold',
|
||||
'diamond',
|
||||
));
|
||||
foreach ($items as $item) {
|
||||
|
126
webapp/models/Bag.php
Normal file
126
webapp/models/Bag.php
Normal file
@ -0,0 +1,126 @@
|
||||
<?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(
|
||||
'accountid' => 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(
|
||||
'accountid' => myself()->_getAccountId(),
|
||||
'item_id' => $itemId
|
||||
),
|
||||
array(
|
||||
'item_num' => function () use($item) { return "item_num + {$itemNum}";},
|
||||
'modifytime' => myself()->_getNowTime(),
|
||||
'item_state' => self::GETED_STATE,
|
||||
),
|
||||
array(
|
||||
'accountid' => 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(
|
||||
'accountid' => myself()->_getAccountId(),
|
||||
'item_id' => $itemId
|
||||
),
|
||||
array(
|
||||
),
|
||||
array(
|
||||
'accountid' => 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(
|
||||
'accountid' => 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(),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user