request->get('user_id'); $composeID = (int)Yii::$app->request->get('compose_id');//加工id $count = (int)Yii::$app->request->get('count'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 //验证 if (empty($composeID) || $count <= 0) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); SafeUtil::dbOperate(function ($userID, $composeID, $count) { //获取物品配置数据 $composeConfig = GameConfigServices::getParamByPath('compose.' . $composeID); if (empty($composeConfig)) throw new StatusException(ResultStatusServices::RS_NOT_FIND_IN_CONFIG); //判断等级是否足够 $user = User::findById($userID); // if ($composeConfig['level'] > $user->compose_level) throw new StatusException(ResultStatusServices::RS_LEVEL_LIMIT); for ($i = 1; $i <= 6; $i++) { if (!isset($composeConfig['fruit_id' . $i])) continue; MoneyUtil::parseItem($composeConfig['fruit_id' . $i], $count, false, $userID, SystemLogUtil::FROM_TYPE_COMPOSE_EXPEND, ['compose_config' => $composeConfig]); } //产出 MoneyUtil::parseItem($composeConfig['goods_id'], $count, true, $userID, SystemLogUtil::FROM_TYPE_COMPOSE_OUTPUT, ['compose_config' => $composeConfig]); list($itemID, $num) = explode(':', $composeConfig['goods_id']); $itemID = (int)$itemID; $num = (int)$num; $num *= $count; //任务记录 DailyTaskUtil::addTaskCount($userID, DailyTaskUtil::TYPE_COMPOSE, $itemID, $num); $config = GameConfigServices::getParamByPath('item_list.' . $itemID); if (intval($config['type2']) == ItemServices::ITEM_TYPE2_CRYSTAL) { //成就 AchievementUtil::addCount($userID, AchievementUtil::ID_ACCUMULATION_CRYSTAL, $num); } AchievementUtil::addCount($userID, AchievementUtil::ID_COMPOSE,1); //添加角色经验 return MoneyUtil::addUserExp($userID, (int)$composeConfig['experience']); }, [$userID, $composeID, $count]); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 升级 * @return array */ public function actionUpgrade() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 SafeUtil::dbOperate(function ($userID) { $user = User::findById($userID); $level = $user->compose_level + 1; $upgradeConfig = GameConfigServices::getParamByPath('compose_upgrade.' . $level); if (empty($upgradeConfig)) throw new StatusException(ResultStatusServices::RS_FACTORY_MAX_LEVEL); $exp = (int)$upgradeConfig['effect_plus_experience']; if ($exp <= 0) throw new StatusException(ResultStatusServices::RS_CONFIG_ERROR); for ($i = 1; $i <= 5; $i++) { if (!isset($upgradeConfig['fruit_id' . $i])) continue; MoneyUtil::parseItem($upgradeConfig['fruit_id' . $i], 1, false, $userID, SystemLogUtil::FROM_TYPE_COMPOSE_UPGRADE, ['upgrade_config' => $upgradeConfig]); } //gold $gold = (int)$upgradeConfig['gold']; $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GOLD, -$gold, 0, SystemLogUtil::FROM_TYPE_COMPOSE_UPGRADE, ['upgrade_config' => $upgradeConfig]); MoneyUtil::checkAndModifyRes($userID, false, -$gold, ItemServices::ITEM_TYPE2_GOLD, $log); //增加经验 $user->compose_exp += $exp; if ($user->compose_exp >= $upgradeConfig['experience']) { $user->compose_level++; $user->compose_exp = 0; } if (!$user->save(true, ['compose_level', 'compose_exp', 'updated_at'])) throw new StatusException(ResultStatusServices::RS_SAVE_DB_ERROR); }, [$userID]); } }