hy-farm/muchang/home/controllers/StoreHouseController.php
2026-05-29 19:54:56 +08:00

185 lines
7.0 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: zn
* Date: 2017/5/18
* Time: 19:08
*/
namespace app\controllers;
use common\models\Item;
use common\modules\dailytask\DailyTaskUtil;
use common\modules\systemlog\SystemLogUtil;
use common\services\ClientMessageServices;
use common\services\GameConfigServices;
use common\services\ItemServices;
use common\services\NewbieGuideService;
use common\services\ResultStatusServices;
use common\services\UserLogService;
use common\services\UserService;
use common\utils\EnumUtil;
use Yii;
use yii\rest\Controller;
/**
* 仓库
* Class StoreHouseController
* @package app\controllers
*/
class StoreHouseController extends Controller
{
/**
* 获取仓库数据
*/
public function actionIndex()
{
$userID = Yii::$app->request->get('user_id');
if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录
$grantRs = NewbieGuideService::grantSeedIfNeeded($userID);
if ($grantRs != ResultStatusServices::RS_OPERATION_SUCCESS) {
return ClientMessageServices::sendMessage($grantRs);
}
//获取所有仓库数据
$itemDbDataList = Item::find()
->select(['id', 'user_id', 'item_id', 'name', 'type', 'num'])
->where(['user_id' => $userID])
->orderBy(['type' => SORT_ASC, 'item_id' => SORT_ASC])
->asArray()
->all();
$clientData = [];
foreach ($itemDbDataList as $item) {
$clientData[] = [
'id' => (int)$item['id'],
'user_id' => (int)$item['user_id'],
'item_id' => (int)$item['item_id'],
'name' => $item['name'],
'type' => (int)$item['type'],
'num' => (int)$item['num'],
];
}
return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $clientData);
}
/**
* 出售仓库中物品
*/
public function actionSell()
{
$userID = Yii::$app->request->get('user_id');
$itemID = Yii::$app->request->get('item_id');//物品ID
$num = Yii::$app->request->get('num');//要出售的数量
if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录
//验证
if (!$itemID || $num <= 0) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR);
//获取配置
$itemConfig = GameConfigServices::getParamByPath('item_list.' . $itemID);
if (!$itemConfig) return ClientMessageServices::sendMessage(ResultStatusServices::RS_NOT_FIND_IN_CONFIG);
//判断物品能否出售
if (in_array($itemConfig['type2'], ItemServices::ITEM_CAN_NOT_SELL_LIST))
return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR);
//修改数据
$dbTrans = Yii::$app->db->beginTransaction();
try {
//修改金钱
$gold = $itemConfig['sell_gold'] * $num;
$log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GOLD, $gold, 0, SystemLogUtil::FROM_TYPE_SELL, []);
$rs = UserService::checkAndModifyMoney($userID, true, $gold, 0, $log);
if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs);
//修改仓库物品
$log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_ITEM, $itemID, -$num, SystemLogUtil::FROM_TYPE_SELL, []);
$rs = ItemServices::checkAndModifyNum($userID, $itemID, false, -$num, $log);
if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs);
//记录日志
UserLogService::addUserLog($userID, EnumUtil::USER_LOG_TYPE_SELL, $itemID, $num);
if($itemConfig['type2']==ItemServices::ITEM_TYPE2_FRUIT)
{
//任务记录
DailyTaskUtil::addTaskCount($userID, DailyTaskUtil::TYPE_SELL_FRUIT, null, 1);
}
$success = true;
} finally {
if (isset($success))
$dbTrans->commit();
else {
$dbTrans->rollBack();
Yii::$app->redis->clearDirtyKey();//清除脏缓存数据
}
}
return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS);
}
// /**
// * 使用新手礼包
// */
// public function actionUseGift()
// {
// $userID = Yii::$app->request->get('user_id');
// $itemID = Yii::$app->request->get('item_id');//物品ID
//
// if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录
//
// //验证
// if (!isset($itemID)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR);
//
// //获取配置
// $itemConfig = GameConfigServices::getParamByPath('item_list.' . $itemID);
// if (!$itemConfig) return ClientMessageServices::sendMessage(ResultStatusServices::RS_NOT_FIND_IN_CONFIG);
//
// if ($itemConfig['type2'] != ItemServices::ITEM_TYPE2_GIFT)
// return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR);
//
// //修改数据
// $dbTrans = Yii::$app->db->beginTransaction();
// try {
// //修改仓库物品
// $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_ITEM, $itemID, -1, SystemLogUtil::FROM_TYPE_USER_ITEM, []);
// $rs = ItemServices::checkAndModifyNum($userID, $itemID, false, -1, $log);
// if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs);
//
// //添加新手包中的物品
// $giftConfigItemList = GameConfigServices::getParamByPath('gift');
// foreach ($giftConfigItemList as $giftConfigItem) {
// $itemType2 = $giftConfigItem['type2'];
// $itemID = $giftConfigItem['item_id'];
// $num = $giftConfigItem['num'];
//
// //其他物品放入仓库中
// $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_ITEM, $itemID, $num, SystemLogUtil::FROM_TYPE_USE_GIFT, []);
// $rs = ItemServices::checkAndModifyNum($userID, $itemID, true, $num, $log);
// if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs);
// }
//
// //记录日志
// UserLogService::addUserLog($userID, EnumUtil::USER_LOG_TYPE_USE_GIFT);
//
// $success = true;
// } finally {
// if (isset($success))
// $dbTrans->commit();
// else {
// $dbTrans->rollBack();
// Yii::$app->redis->clearDirtyKey();//清除脏缓存数据
// }
// }
//
// return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS);
// }
}