request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 UserService::updateOnlineInfo($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } //金币兑换积分 public function actionGoldToScore(){ $userID = Yii::$app->request->get('user_id'); $gold = intval(Yii::$app->request->get('gold')); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $userDbData = User::findById($userID); if ($gold < 0) return ClientMessageServices::sendMessage('兑换数量不正确'); $rate = GameConfigServices::getCommonNumByID(GameConfigServices::COMMON_GOLD_EXCHANGE_GEM_RATE); $gem = intval($gold / $rate);//计算兑换钻石 if ($gem == 0) return ClientMessageServices::sendMessage('金币不够'); //开启事务 $dbTrans = Yii::$app->db->beginTransaction(); try { $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GOLD, -$gold, 0, SystemLogUtil::FROM_TYPE_GOLD_EXCHANGE_GEM_PAY, []); $rs = UserService::checkAndModifyMoney($userID, false, -$gold, 0, $log); if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs); $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GEM, $gem, 0, SystemLogUtil::FROM_TYPE_GOLD_EXCHANGE_GEM_GET, []); $rs = UserService::checkAndModifyMoney($userID, true, 0, $gem, $log); if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs); //记录日志 UserLogService::addUserLog($userID, EnumUtil::USER_LOG_TYPE_GOLD_EXCHANGE_GEM_RATE, 0, $gem); $success = true; } finally { if (isset($success)) $dbTrans->commit(); else { $dbTrans->rollBack(); Yii::$app->redis->clearDirtyKey();//清除脏缓存数据 } } return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, User::findById($userID)->genClientData(false)); } /** * 钻石兑换金币 */ public function actionScoreToGold() { $userID = Yii::$app->request->get('user_id'); $gem = intval(Yii::$app->request->get('score')); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if ($gem < 0) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); $rate = GameConfigServices::getCommonNumByID(GameConfigServices::COMMON_GEM_EXCHANGE_GOLD_RATE); $gold = intval($gem * $rate);//计算兑换金币 if ($gold == 0) return ClientMessageServices::sendMessage(ResultStatusServices::RS_GEM_NOT_ENOUGH); //开启事务 $dbTrans = Yii::$app->db->beginTransaction(); try { $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GEM, -$gem, 0, SystemLogUtil::FROM_TYPE_GEM_EXCHANGE_GOLD_PAY, []); $rs = UserService::checkAndModifyMoney($userID, false, 0, -$gem, $log); if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs); $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GOLD, $gold, 0, SystemLogUtil::FROM_TYPE_GEM_EXCHANGE_GOLD_GET, []); $rs = UserService::checkAndModifyMoney($userID, true, $gold, 0, $log); if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs); //记录日志 UserLogService::addUserLog($userID, EnumUtil::USER_LOG_TYPE_GEM_EXCHANGE_GOLD_RATE, 0, $gold); $success = true; } finally { if (isset($success)) $dbTrans->commit(); else { $dbTrans->rollBack(); Yii::$app->redis->clearDirtyKey();//清除脏缓存数据 } } return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, User::findById($userID)->genClientData(false)); } //获取兑换记录 public function actionScoreGoldList(){ $userID = Yii::$app->request->get('user_id'); $type = Yii::$app->request->get('type'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if($type==1){ $type=25; }else{ $type=27; } $find = UserLog::find()->where(['user_id' => $userID,'type' => $type, 'delete' => EnumUtil::DELETE_NOT])->orderBy(['updated_at' => SORT_DESC]); $dbList = $find->all(); $list = []; foreach ($dbList as $item) { $itemData = $item->toArray(); //$itemData['created_at'] = CommUtil::formatDate($item->created_at); array_push($list, $itemData); } $returnData['list'] = $list; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 获取等级排名 */ public function actionGetLevelRanking() { $userID = Yii::$app->request->get('user_id'); $offset = Yii::$app->request->get('offset');//起始位置 $count = Yii::$app->request->get('count');//需要多少条数据 $type = Yii::$app->request->get('type');//排行类型,0:金币排行,1:等级排行,2:战力排行 if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if ($offset === null || $offset < 0 || $count == 0 || $count < 0 || $count > 30 || $type === null || ($type != 0 && $type != 1 && $type != 2)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); // 获取排名 $orderByKey = 'level'; if ($type == 0) $orderByKey = 'gold'; if ($type == 1) $orderByKey = 'level'; if ($type == 2) $orderByKey = 'fighting_capacity'; $find = User::find()->orderBy([$orderByKey => SORT_DESC]); // $totalCount = $find->count(); $totalCount = 70; $userDbDataList = $find->offset($offset)->limit($count)->all(); $dataList = array(); for ($i = 0; $i < count($userDbDataList); $i++) { $itemDbData = $userDbDataList[$i]; // $data = Friend::genClientFriendData($userID, $itemDbData->id); $data = $itemDbData->genClientData(false); // $data['has_interaction'] = InteractionService::canInteraction($userID, $itemDbData->id); $data['has_interaction'] = false; $data['ranking'] = $offset + $i; array_push($dataList, $data); } //返回数据 $returnData['offset'] = $offset; $returnData['type'] = $type; $returnData['total_count'] = $totalCount; $returnData['list'] = $dataList; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 选择使用哪个狗 */ public function actionUseDog() { $userID = Yii::$app->request->get('user_id'); $itemID = Yii::$app->request->get('item_id');//狗ItemID if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if (!$itemID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //配置表 $config = GameConfigServices::getParamByPath('item_list.' . $itemID); if (!$config) return ClientMessageServices::sendMessage(ResultStatusServices::RS_NOT_FIND_IN_CONFIG); //判断类型 if ($config['type2'] != ItemServices::ITEM_TYPE2_ENJOY_PET) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //判断是否有这个狗 $itemDbData = Item::findOne(['user_id' => $userID, 'item_id' => $itemID]); if (!$itemDbData) return ClientMessageServices::sendMessage(ResultStatusServices::RS_ITEM_NOT_ENOUGH); //保存数据 $userDbData = User::findById($userID); $userDbData->use_dog_item_id = $itemID; if (!$userDbData->save(true, ['use_dog_item_id', 'updated_at'])) return ClientMessageServices::sendMessage(ResultStatusServices::RS_SAVE_DB_ERROR); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 显示用户日志 */ public function actionGetUserLog() { $userID = Yii::$app->request->get('user_id'); $offset = Yii::$app->request->get('offset'); //偏移 $count = Yii::$app->request->get('count'); //需要多少条数据 if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if ($offset === null || $offset < 0 || $count === null || $count < 0 || $count > 10) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //查询数据 $totalCount = 0; $userLogDbDataList = UserLog::findAllByUserID($userID, $offset, $count, $totalCount); $dataList = []; foreach ($userLogDbDataList as $userLogDbData) array_push($dataList, $userLogDbData->genClientData()); $returnData['offset'] = $offset; $returnData['total_count'] = $totalCount; $returnData['list'] = $dataList; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 清除用户操作日志 */ public function actionCleanUserLog() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 UserLog::deleteByUserID($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 显示系统日志 */ public function actionGetUserSystemLog() { $userID = Yii::$app->request->get('user_id'); $offset = Yii::$app->request->get('offset'); //偏移 $count = Yii::$app->request->get('count'); //需要多少条数据 if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if ($offset === null || $offset < 0 || $count === null || $count < 0 || $count > 10) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //查询数据 $totalCount = 0; $userSystemLogDbDataList = UserSystemLog::findAllByUserID($userID, $offset, $count, $totalCount); $dataList = []; foreach ($userSystemLogDbDataList as $userSystemLogDbData) array_push($dataList, $userSystemLogDbData->genClientData()); $returnData['offset'] = $offset; $returnData['total_count'] = $totalCount; $returnData['list'] = $dataList; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 转盘抽奖 */ public function actionLottery() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 //加锁 $lock = new RedisLock(Yii::$app->redis, RedisKeyUtil::lockUserLottery($userID), RedisLock::FLAG_CATCH_EXCEPTIONS); if (!$lock->acquire(10)) return ResultStatusServices::RS_SAME_TIME_OPERATION; try { //判断当天抽奖次数 $nowDate = date('Y-m-d', time()); $lastLotteryData = json_decode(Yii::$app->redis->get(RedisKeyUtil::userLotteryData($userID)), true); $count = 0; if (!empty($lastLotteryData) && $lastLotteryData['date'] == $nowDate) $count = $lastLotteryData['count']; //vip $vip = User::findById($userID); $vipConfig = GameConfigServices::getParamByPath('vip_list.' . $vip->level); $vipCount = 0; if (!empty($vipConfig)) $vipCount = (int)$vipConfig['turntable_frequency']; //抽奖金币 $baseGold = GameConfigServices::getCommonNumByID(GameConfigServices::COMMON_LOTTERY_MONEY); $tempCount = $count - $vipCount; if ($tempCount > 0) $gold = $baseGold; else $gold = 0; //随机项 $item = GameConfigServices::getLotteryOddsItem(); //开启事务 $dbTrans = Yii::$app->db->beginTransaction(); //修改用户金钱 if ($gold > 0) { $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GOLD, -$gold, 0, SystemLogUtil::FROM_TYPE_LOTTERY_PAY, []); $rs = UserService::checkAndModifyMoney($userID, false, -$gold, 0, $log); if ($rs != ResultStatusServices::RS_OPERATION_SUCCESS) return ClientMessageServices::sendMessage($rs); UserLogService::addUserLog($userID, 32, 0, $gold); } $itemID = $item['item_id']; $itemCount = (int)$item['count']; $itemStr = sprintf('%s:1', $itemID); MoneyUtil::parseItem($itemStr, $itemCount, true, $userID, SystemLogUtil::FROM_TYPE_LOTTERY_GET, ['config' => $item]); //记录日志 UserLogService::addUserLog($userID, 33, $itemID, $itemCount); $count++; //缓存 $lastLotteryData['date'] = $nowDate; $lastLotteryData['count'] = $count; $jsonStr = json_encode($lastLotteryData); Yii::$app->redis->setex(RedisKeyUtil::userLotteryData($userID), 3600 * 24, $jsonStr); //任务记录 DailyTaskUtil::addTaskCount($userID, DailyTaskUtil::TYPE_LOTTERY_DRAW, null, 1); //成就 AchievementUtil::addCount($userID, AchievementUtil::ID_LOTTERY_DRAW, 1); $success = true; } finally { if (isset($success)) $dbTrans->commit(); else { if (!empty($dbTrans)) $dbTrans->rollBack(); Yii::$app->redis->clearDirtyKey();//清除脏缓存数据 } $lock->release(); } $item['count'] = $count; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $item); } /** * 使用小喇叭 */ public function actionBroadcast() { $userID = Yii::$app->request->get('user_id'); $wxID = Yii::$app->request->get('wx_id');//微信ID $phone = Yii::$app->request->get('phone'); $message = Yii::$app->request->get('message'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $message = trim($message); if (empty($message) || empty($wxID) || empty($phone)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_BROADCAST_EMPTY); if (!ValidateUtil::isMobile($phone)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PHONE_ERROR); SafeUtil::dbOperate(function ($userID, $wxID, $phone, $message) { //扣除钻石 $gem = GameConfigServices::getCommonNumByID(GameConfigServices::COMMON_BROADCAST_MESSAGE_EXPEND); if ($gem <= 0) throw new StatusException(ResultStatusServices::RS_CONFIG_ERROR); $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GEM, -$gem, 0, SystemLogUtil::FROM_TYPE_BROADCAST, []); MoneyUtil::checkAndModifyRes($userID, false, -$gem, ItemServices::ITEM_TYPE2_GEM, $log); //保存消息 $messageDbData = new UserBroadcastMessage(); $messageDbData->user_id = $userID; $messageDbData->wx_id = $wxID; $messageDbData->phone = $phone; $messageDbData->message = $message; if (!$messageDbData->save()) throw new StatusException(ResultStatusServices::RS_SAVE_DB_ERROR); }, [$userID, $wxID, $phone, $message]); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 获取小喇叭消息列表 * @return array */ public function actionGetBroadcastList() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $list=[]; $keyList=Yii::$app->redis->keys(RedisKeyUtil::broadcaseMessageKeyList()); foreach ($keyList as $key) { $jsonStr=Yii::$app->redis->get($key); $obj=json_decode($jsonStr,true); $list[]=$obj; } return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS,$list); } /** * 获取公告列表 * @return array */ public function actionGetNoticeList() { $offset = Yii::$app->request->get('offset');//起始位置 $count = Yii::$app->request->get('count');//需要多少条数据 if ($offset === null || $offset < 0 || $count == 0 || $count < 0 || $count > 30) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); $find = Notice::find()->orderBy(['created_at' => SORT_DESC]); $totalCount = $find->count(); $dbList = $find->offset($offset)->limit($count)->asArray()->all(); //返回数据 $returnData['offset'] = $offset; $returnData['total_count'] = $totalCount; $returnData['list'] = $dbList; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 签到数据 * @return array */ public function actionSignList() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 //签到数据 $week = CommUtil::getWeek(time()); $dbList = Sign::find() ->where(['user_id' => $userID, 'week' => $week]) ->orderBy(['sign_time' => SORT_ASC]) ->asArray() ->all(); $list = []; for ($i = 0; $i < count($dbList); $i++) { $item = $dbList[$i]; $list[] = [ 'id' => (int)$item['id'], 'user_id' => (int)$item['user_id'], 'sign_time' => (int)$item['sign_time'], 'is_remedy' => (int)$item['is_remedy'], 'week' => $item['week'], 'day' => $item['day'], 'created_at' => (int)$item['created_at'], 'updated_at' => (int)$item['updated_at'], ]; } //连续签到奖励 $dbList = SignContinueGift::find() ->where(['user_id' => $userID, 'week' => $week]) ->asArray() ->all(); $continueList = []; for ($i = 0; $i < count($dbList); $i++) { $item = $dbList[$i]; $continueList[] = [ 'id' => (int)$item['id'], 'user_id' => (int)$item['user_id'], 'week' => $item['week'], 'count' => (int)$item['count'], 'created_at' => (int)$item['created_at'], 'updated_at' => (int)$item['updated_at'], ]; } return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, ['list' => $list, 'continue_list' => $continueList]); } /** * 签到 * @return array */ public function actionSign() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $itemList = SignUtil::sign($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, ['list' => $itemList]); } /** * 补签 * @return array */ public function actionSignRemedy() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 SignUtil::remedy($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 领取连续签到奖励 * @return array */ public function actionGetContinueSignGift() { $userID = Yii::$app->request->get('user_id'); $count = Yii::$app->request->get('count'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $list = SignUtil::getContinueSignGift($userID, $count); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, ['list' => $list]); } public function actionGetVip() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $data = Vip::findByUserID($userID); if (CommUtil::getWeek(time()) != CommUtil::getWeek($data->last_get_week_gift_time)) { $data->is_get_week_gift = VipUtil::NOT_GET_GIFT; if (!$data->save()) throw new StatusException(ResultStatusServices::RS_SAVE_DB_ERROR); } return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $data->toArray()); } public function actionGetVipFixGift() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 VipUtil::getFixGift($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } public function actionGetVipWeekGift() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 VipUtil::getWeekGift($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } public function actionGetVipGift() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 VipUtil::getGift($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 周卡,月卡 * @return array */ public function actionGetCard() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $dbList = Card::findByUserID($userID); $list = []; foreach ($dbList as $item) { $data = $item->toArray(); if ($item->item_id == '601000') { $data['expire_time'] = $item->created_at + (7 * 86400); } else { $data['expire_time'] = $item->created_at + (30 * 86400); } array_push($list, $data); } return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $list); } public function actionGetCardGift() { $userID = Yii::$app->request->get('user_id'); $itemID = Yii::$app->request->get('item_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if (empty($itemID)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); CardUtil::getGift($userID, $itemID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } // public function actionBuyCard() // { // $userID = Yii::$app->request->get('user_id'); // $itemID = Yii::$app->request->get('item_id'); // // if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 // // if (empty($itemID)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); // // CardUtil::buyCard($userID, $itemID); // // return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); // } /** * 获取游乐场次数 * @return array */ public function actionGetPleasureGround() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $day = CommUtil::dayStr(time()); $index = (int)Yii::$app->redis->get(RedisKeyUtil::enterPleasureGroundCount($userID, $day)); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, ['count' => $index]); } /** * 进入游乐场 * @return array */ public function actionEnterPleasureGround() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $uuid = SafeUtil::dbOperate(function ($userID) { $day = CommUtil::dayStr(time()); $index = (int)Yii::$app->redis->get(RedisKeyUtil::enterPleasureGroundCount($userID, $day)); $vip = User::findById($userID); $vipConfig = GameConfigServices::getParamByPath('vip_list.' . $vip->level); $vipCount = 0; if (!empty($vipConfig)) $vipCount = (int)$vipConfig['playground_frequency']; if ($index > $vipCount) { $gold = (int)GameConfigServices::getCommonNumByID(GameConfigServices::COMMON_PLEASURE_GROUND_GOLD); if ($gold <= 0) throw new StatusException(ResultStatusServices::RS_PARAM_ERROR); $gold = ($index - $vipCount) * 100; $log = SystemLogUtil::get($userID, SystemLogUtil::TYPE_GOLD, -$gold, 0, SystemLogUtil::TYPE_GOLD, []); MoneyUtil::checkAndModifyRes($userID, false, -$gold, ItemServices::ITEM_TYPE2_GOLD, $log); } $index++; Yii::$app->redis->set(RedisKeyUtil::enterPleasureGroundCount($userID, $day), $index, 3600 * 24); $uuid = CommUtil::genUUID(); Yii::$app->redis->set(RedisKeyUtil::enterPleasureGroundUUID($userID), $uuid, 3600 * 24); //任务记录 DailyTaskUtil::addTaskCount($userID, DailyTaskUtil::TYPE_PLEASURE_GROUND, null, 1); //成就 AchievementUtil::addCount($userID, AchievementUtil::ID_PLEASURE_GROUND, 1); return $uuid; }, [$userID]); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, ['uuid' => $uuid]); } /** * 游乐场 * @return array */ public function actionPleasureGround() { $userID = Yii::$app->request->get('user_id'); $score = (int)Yii::$app->request->get('score'); $uuid = Yii::$app->request->get('uuid'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $getItem = SafeUtil::dbOperate(function ($userID, $score, $uuid) { $tempUUID = Yii::$app->redis->get(RedisKeyUtil::enterPleasureGroundUUID($userID)); if (empty($uuid) || $uuid != $tempUUID) throw new StatusException(ResultStatusServices::RS_PARAM_ERROR); $configList = GameConfigServices::getParamByPath('playground'); $findItem = null; for ($i = 1; $i <= count($configList); $i++) { if (!isset($configList[$i])) continue; $item = $configList[$i]; if (isset($configList[$i + 1])) $nextItem = $configList[$i + 1]; if (!empty($item) && !empty($nextItem)) { if (intval($item['integral']) <= $score && $score < intval($nextItem['integral'])) { $findItem = $item; break; } } elseif (!empty($item)) { if (intval($item['integral']) <= $score) { $findItem = $item; break; } } } if (empty($findItem)) return null; $getItem = MoneyUtil::parseAllItemOdds($findItem['chest'], true, $userID, SystemLogUtil::FROM_TYPE_PLEASURE_GROUND, ['config' => $findItem]); Yii::$app->redis->del(RedisKeyUtil::enterPleasureGroundUUID($userID)); return $getItem; }, [$userID, $score, $uuid]); if (empty($getItem)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $getItem); } /** * 日常任务 * @return array */ public function actionGetTaskList() { $userID = Yii::$app->request->get('user_id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 $list = DailyTaskUtil::getTaskList($userID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $list); } public function actionGetTaskGift() { $userID = Yii::$app->request->get('user_id'); $taskID = Yii::$app->request->get('id'); if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 DailyTaskUtil::getTaskGift($userID, $taskID); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } }