1
This commit is contained in:
parent
fedb66fae1
commit
799c95bd75
@ -1,6 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require_once('models/Bag.php');
|
||||||
|
|
||||||
use phpcommon\SqlHelper;
|
use phpcommon\SqlHelper;
|
||||||
|
use models\Bag;
|
||||||
|
|
||||||
class BaseAuthedController extends BaseController {
|
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)
|
public function _getItemCount($itemId, $userInfo)
|
||||||
{
|
{
|
||||||
switch ($itemId) {
|
switch ($itemId) {
|
||||||
case V_ITEM_GOLD:
|
case V_ITEM_GOLD:
|
||||||
{
|
{
|
||||||
return $userInfo['coin_num'];
|
return $userInfo['gold'];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case V_ITEM_DIAMOND:
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
$row = SqlHelper::selectOne
|
|
||||||
($this->_getSelfMysql(),
|
|
||||||
'bag',
|
|
||||||
array(
|
|
||||||
'id',
|
|
||||||
'num'
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'id' => $itemId,
|
|
||||||
'accountid' => $this->_getAccountId()
|
|
||||||
));
|
|
||||||
return $row ? $row['num'] : 0;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _isVirtualItem($itemId)
|
public function _decVirtualItem($itemId, $itemNum)
|
||||||
{
|
{
|
||||||
$isVirtualItem = false;
|
if ($itemNum <= 0){
|
||||||
return $isVirtualItem;
|
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) {
|
foreach ($items as $item) {
|
||||||
if ($this->_isVirtualItem($item['item_id'])) {
|
if ($this->_isVirtualItem($item['item_id'])) {
|
||||||
if ($item['item_id'] == $this->goldID) {
|
$this->_addVirtualItem($item['item_id'], $item['item_num']);
|
||||||
$this->_addGold($item['item_num']);
|
|
||||||
}
|
|
||||||
else if ($item['item_id'] == $this->lotteryID){
|
|
||||||
$this->addLottery($item['item_num']);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
SqlHelper::upsert
|
Bag::addItem($item['item_id'], $item['item_num']);
|
||||||
($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()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function _addTryUsingItems($items)
|
||||||
|
{
|
||||||
|
foreach ($items as $item) {
|
||||||
|
Bag::addTryUsingItem($item['item_id'], $item['item_num'], $item['try_using_time']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function _decItems($items)
|
public function _decItems($items)
|
||||||
{
|
{
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
if ($this->_isVirtualItem($item['item_id'])) {
|
if ($this->_isVirtualItem($item['item_id'])) {
|
||||||
// if ($item['item_id'] == VIRTUAL_ITEM_GOLD_ID) {
|
$this->_decVirtualItem($item['item_id'], $item['item_num']);
|
||||||
// $this->_decGold($item['item_num']);
|
|
||||||
// }
|
|
||||||
} else {
|
} else {
|
||||||
SqlHelper::update
|
Bag::decItem($item['item_id'], $item['item_num']);
|
||||||
($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()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -235,7 +234,7 @@ class BaseAuthedController extends BaseController {
|
|||||||
public function _hasEnoughItems($items, &$lackItem)
|
public function _hasEnoughItems($items, &$lackItem)
|
||||||
{
|
{
|
||||||
$userInfo = $this->_getUserInfo(array(
|
$userInfo = $this->_getUserInfo(array(
|
||||||
'golda',
|
'gold',
|
||||||
'diamond',
|
'diamond',
|
||||||
));
|
));
|
||||||
foreach ($items as $item) {
|
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