diff --git a/Application/Admin/Controller/TestingResourceController.class.php b/Application/Admin/Controller/TestingResourceController.class.php
new file mode 100644
index 000000000..8c1d55b12
--- /dev/null
+++ b/Application/Admin/Controller/TestingResourceController.class.php
@@ -0,0 +1,393 @@
+ '1=1'
+ ];
+
+ $strCondition = '1=1';
+
+ $testingResourceService = new TestingResourceService();
+ $gameIds = $testingResourceService->getHadSettingGameIds();
+
+ if (!empty($gameIds)) {
+ $strCondition .= ' and game_id in ('. implode(',', $gameIds) . ')';
+ } else {
+ $strCondition .= ' and 1=0';
+ }
+
+ if ($createTimeStart) {
+ $strCondition .= ' and create_time >=' . strtotime($createTimeStart . ' 00:00:00');
+ }
+ if ($createTimeEnd) {
+ $strCondition .= ' and create_time <=' . strtotime($createTimeEnd . ' 23:59:59');
+ }
+
+ $subSql = M('testing_user', 'tab_')->field(['user_id'])->where($subConditions)->select(false);
+ $strCondition .= ' and user_id in (' . $subSql . ')';
+
+ // $strCondition .= ' and promote_id in (' . $promoteService->subInSql($loginPromote) . ')';
+
+ if ($account) {
+ $user = M('user', 'tab_')->field(['id'])->where('account like "' . $account . '%"')->find();
+ if ($user) {
+ $conditions['user_id'] = $user['id'];
+ } else {
+ $strCondition .= ' and 1<>1';
+ }
+ }
+ if ($gameId) {
+ $conditions['game_id'] = $gameId;
+ }
+ if ($serverId) {
+ $conditions['server_id'] = $serverId;
+ }
+ if ($roleName) {
+ $conditions['role_name'] = ['like', $roleName . '%'];
+ }
+ $conditions['_string'] = $strCondition;
+
+ var_dump($conditions);
+ $query = M('user_play_info', 'tab_')->where($conditions)->order('create_time desc');
+
+ $countQuery = clone $query;
+ $count = $countQuery->count();
+ $roles = $query->page($page, $row)->select();
+
+ $page = set_pagination($count, $row);
+ if($page) {
+ $this->assign('_page', $page);
+ }
+
+ $records = $testingResourceService->makeTestingUserRecords($roles);
+
+ $this->assign('games', $this->getGames());
+ $this->assign('servers', $this->getServersByGameId($gameId));
+ $this->assign('count', $count);
+ $this->assign('pagination', $pagination);
+ $this->assign('records', $records);
+ $this->display();
+ }
+
+ private function getGames(array $visibleGameIds = null)
+ {
+ $map = [];
+ $map['_string'] = '1=1';
+ if (is_null($visibleGameIds)) {
+
+ } elseif (count($visibleGameIds) > 0) {
+ $map['_string'] = ' and id in (' . implode(',', $visibleGameIds) . ')';
+ } else {
+ $map['_string'] = ' and 1=0';
+ }
+ return M('game', 'tab_')->field('id,game_name')->where($map)->select();
+ }
+
+ private function getServersByGameId($gameId = 0)
+ {
+ if ($gameId == 0) {
+ return [];
+ }
+ $map = [];
+ $map['game_id'] = $gameId;
+ return M('server', 'tab_')
+ ->field('id,server_name,server_id')
+ ->where($map)
+ ->order('server_id asc')
+ ->select();
+ }
+
+ public function getServers()
+ {
+ $gameId = I('game_id', 0);
+ $servers = $this->getServersByGameId($gameId);
+ return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['servers' => $servers]]);
+ }
+
+ public function gameSettings()
+ {
+ $page = I('p', 1);
+ $row = I('row', 10);
+
+ $gameId = I('base_game_id', 0);
+ $partnerId = I('partner_id', 0);
+
+ $conditions = [];
+ $conditions['_string'] = '1=1';
+ if ($partnerId > 0) {
+ $partnerService = new PartnerService();
+ $baseGames = $partnerService->findBaseGamesByPartnerId($partnerId);
+ if (empty($baseGames)) {
+ $conditions['_string'] = '1=0';
+ } else {
+ $conditions['base_game_id'] = ['in', array_column($baseGames, 'id')];
+ }
+ }
+ if ($gameId > 0) {
+ $conditions['base_game_id'] = $gameId;
+ }
+ $query = M('testing_game_setting', 'tab_')->where($conditions);
+ $countQuery = clone $query;
+
+ $items = $query->order('create_time desc')->page($page, $row)->select();
+ $count = $countQuery->count();
+
+ $baseGames = M('base_game', 'tab_')->select();
+ $baseGames = index_by_column('id', $baseGames);
+ $partners = M('partner', 'tab_')->field(['id', 'partner'])->select();
+ $partners = index_by_column('id', $partners);
+
+ $games = M('game', 'tab_')->where(['id', 'partner_id'])->select();
+ $games = index_by_column('id', $games);
+ foreach ($baseGames as $key => $baseGame) {
+ if ($baseGame['android_game_id'] > 0) {
+ $baseGame['partner_id'] = $games[$baseGame['android_game_id']]['partner_id'];
+ } else {
+ $baseGame['partner_id'] = $games[$baseGame['ios_game_id']]['partner_id'];
+ }
+ $baseGames[$key] = $baseGame;
+ }
+
+ $records = [];
+ foreach ($items as $item) {
+ $baseGame = $baseGames[$item['base_game_id']] ?? null;
+ $partnerId = $baseGame ? $baseGame['partner_id'] : 0;
+ $partner = $partners[$partnerId] ?? null;
+ $records[] = [
+ 'id' => $item['id'],
+ 'base_game_id' => $item['base_game_id'],
+ 'game_name' => $baseGame ? $baseGame['name'] : '无此游戏',
+ 'partner_name' => $partner ? $partner['partner'] : '--',
+ 'rate' => $item['rate'],
+ 'base_quota' => $item['base_quota'],
+ ];
+ }
+
+ $page = set_pagination($count, $row);
+ if($page) {
+ $this->assign('_page', $page);
+ }
+ $this->assign('records', $records);
+ $this->assign('partners', $partners);
+ $this->assign('baseGames', $baseGames);
+ $this->display();
+ }
+
+ public function saveGameSetting()
+ {
+ $params = I('post.');
+ try {
+ $testingResourceService = new TestingResourceService();
+ $testingResourceService->saveGameSetting($params);
+ return $this->ajaxReturn(['status' => 1, 'message' => '保存成功']);
+ } catch (\Exception $e) {
+ return $this->ajaxReturn(['status' => 0, 'message' => '保存失败!' . $e->getMessage()]);
+ }
+ }
+
+ public function deleteGameSetting()
+ {
+ $id = I('id', 0);
+ M('testing_game_setting', 'tab_')->where(['id' => $id])->delete();
+ return $this->ajaxReturn(['status' => 1, 'message' => '删除成功']);
+ }
+
+ public function addTestingUsers()
+ {
+ $accountsStr = trim(I('accounts', ''), ',');
+ if ($accountsStr == '') {
+ return $this->ajaxReturn(['status' => 0, 'message' => '请输入测试资源账号']);
+ }
+ $accounts = explode(',', $accountsStr);
+
+ $testingResourceService = new TestingResourceService();
+ $result = $testingResourceService->addTestingUsers($accounts);
+
+ return $this->ajaxReturn(['status' => 1, 'message' => '请求成功', 'data' => $result]);
+ }
+
+ public function batches()
+ {
+ $gameId = I('game_id', 0);
+ $serverId = I('server_id', '');
+ $createTimeStart = I('create_time_start', '');
+ $createTimeEnd = I('create_time_end', '');
+ $verifyStatus = I('verify_status', -1);
+ $provideStatus = I('provide_status', -1);
+ $account = I('account');
+
+ $loginPromote = $this->getLoginPromote();
+ $promoteService = new PromoteService();
+
+ $subSql = M('user', 'tab_')
+ ->where('id=tab_testing_resource_batch.user_id and promote_id in (' . $promoteService->subInSql($loginPromote) . ')')
+ ->select(false);
+
+ $conditions = [
+ '_string' => 'exists (' . $subSql . ')'
+ ];
+ if ($createTimeStart) {
+ $conditions['_string'] .= ' and create_time >=' . strtotime($createTimeStart . ' 00:00:00');
+ }
+ if ($createTimeEnd) {
+ $conditions['_string'] .= ' and create_time <=' . strtotime($createTimeEnd . ' 23:59:59');
+ }
+ if ($verifyStatus != -1) {
+ $conditions['verify_status'] = $verifyStatus;
+ }
+ if ($provideStatus != -1) {
+ $conditions['provide_status'] = $provideStatus;
+ }
+ if ($gameId) {
+ $conditions['game_id'] = $gameId;
+ }
+ if ($serverId) {
+ $conditions['server_id'] = $serverId;
+ }
+ if ($account) {
+ $user = M('user', 'tab_')->field(['id'])->where('account like "' . $account . '%"')->find();
+ if ($user) {
+ $conditions['user_id'] = $user['id'];
+ } else {
+ $conditions['_string'] .= ' and 1<>1';
+ }
+ }
+ $query = M('testing_resource_batch', 'tab_')->where($conditions)->order('create_time desc');
+ list($batches, $pagination, $count) = $this->paginate($query);
+
+ $roles = [];
+ $applyPromotes = [];
+ $users = [];
+ $promotes = [];
+ if (count($batches) > 0) {
+ $gameRoleIds = [];
+ foreach ($batches as $batch) {
+ $gameRoleIds[] = $this->getGameRoleId($batch['game_id'], $batch['role_id']);
+ }
+ $roles = M('user_play_info', 'tab_')
+ ->field(['id', 'game_name', 'server_name', 'role_name', 'game_role_id', 'user_account'])
+ ->where(['game_role_id' => ['in', $gameRoleIds]])
+ ->select();
+ $roles = index_by_column('game_role_id', $roles);
+
+ $users = M('user', 'tab_')->field(['id', 'account', 'phone', 'promote_id'])->where(['id' => ['in', array_column($batches, 'user_id')]])->select();
+ $users = index_by_column('id', $users);
+
+ $applyPromotes = M('promote', 'tab_')->field(['id', 'account'])->where(['id' => ['in', array_column($batches, 'apply_promote_id')]])->select();
+ $applyPromotes = index_by_column('id', $applyPromotes);
+
+ if (count($users) > 0) {
+ $promotes = M('promote', 'tab_')->field(['id', 'account'])->where(['id' => ['in', array_column($users, 'promote_id')]])->select();
+ $promotes = index_by_column('id', $promotes);
+ }
+ }
+
+ $testingResourceService = new TestingResourceService();
+
+ $records = [];
+ foreach ($batches as $batch) {
+ $roleKey = $this->getGameRoleId($batch['game_id'], $batch['role_id']);
+ $role = isset($roles[$roleKey]) ? $roles[$roleKey] : null;
+ $user = $users[$batch['user_id']] ?? null;
+ $applyPromote = $applyPromotes[$batch['apply_promote_id']] ?? null;
+ $promote = $user && isset($promotes[$user['promote_id']]) ? $promotes[$user['promote_id']] : null;
+ $records[] = [
+ 'id' => $batch['id'],
+ 'batch_no' => substr($batch['batch_no'], 14),
+ 'create_time' => date('Y-m-d H:i:s', $batch['create_time']),
+ 'game_name' => $role ? $role['game_name'] : '--',
+ 'server_name' => $role ? $role['server_name'] : '--',
+ 'role_name' => $role ? $role['role_name'] : '--',
+ 'user_account' => $role ?$role['user_account'] : '--',
+ 'user_phone' => $user ? $user['phone'] : '',
+ 'apply_promote_account' => $applyPromote ? $applyPromote['account'] : '',
+ 'promote_account' => $promote['account'],
+ // 'history_provide_amount' => 0.00,
+ 'apply_amount' => $batch['apply_amount'],
+ 'provide_amount' => $batch['provide_amount'],
+ 'verify_status' => $batch['verify_status'],
+ 'verify_status_text' => $testingResourceService->getVerifyStatusText($batch['verify_status']),
+ 'verify_time' => $batch['verify_time'] == 0 ? '--' : date('Y-m-d H:i:s', $batch['verify_time']),
+ 'provide_status' => $batch['provide_status'],
+ 'provide_status_text' => $testingResourceService->getProvideStatusText($batch['provide_status']),
+ 'provide_time' => $batch['provide_time'] == 0 ? '--' : date('Y-m-d H:i:s', $batch['provide_time']),
+ 'content' => $content,
+ ];
+ }
+
+ $this->assign('verifyStatusList', TestingResourceService::$verifyStatusList);
+ $this->assign('provideStatusList', TestingResourceService::$provideStatusList);
+ $this->assign('servers', $this->getServersByGameId($gameId));
+ $this->assign('games', $this->getGames());
+ $this->assign('count', $count);
+ $this->assign('pagination', $pagination);
+ $this->assign('records', $records);
+ $this->display();
+ }
+
+ public function orders()
+ {
+ $id = I('id', 0);
+
+ $batch = M('testing_resource_batch', 'tab_')->where(['id' => $id])->find();
+
+ $role = M('user_play_info', 'tab_')
+ ->field(['id', 'game_name', 'server_name', 'role_name', 'game_role_id', 'user_account'])
+ ->where(['game_id' => $batch['game_id'], 'role_id' => $batch['role_id']])
+ ->find();
+
+ $applyPromote = M('promote', 'tab_')->field(['id', 'account'])->where(['id' => $batch['apply_promote_id']])->find();
+ $promote = M('promote', 'tab_')->field(['id', 'account'])->where(['id' => $role['apply_promote_id']])->find();
+
+ $query = M('testing_resource_order', 'tab_')->where(['batch_id' => $id])->order('id desc');
+ list($orders, $pagination, $count) = $this->paginate($query);
+
+ $testingResourceService = new TestingResourceService();
+ foreach ($orders as $order) {
+ $records[] = [
+ 'id' => $order['id'],
+ 'create_time' => $batch['create_time'] == 0 ? '--' : date('Y-m-d H:i:s', $batch['create_time']),
+ 'game_name' => $role['game_name'],
+ 'user_account' => $role['user_account'],
+ 'server_name' => $role['server_name'],
+ 'role_name' => $role['role_name'],
+ 'apply_promote_account' => $applyPromote ? $applyPromote['account'] : '',
+ 'promote_account' => $promote['account'],
+ 'ref_name' => $order['ref_name'],
+ 'ref_amount' => $order['ref_amount'],
+ 'num' => $order['num'],
+ 'amount' => $order['num'] * $order['ref_amount'],
+ 'remark' => $order['remark'],
+ 'provide_status' => $order['provide_status'],
+ 'provide_status_text' => $testingResourceService->getProvideStatusText($order['provide_status']),
+ ];
+ }
+
+ $this->assign('count', $count);
+ $this->assign('pagination', $pagination);
+ $this->assign('records', $records);
+ $this->display();
+ }
+}
\ No newline at end of file
diff --git a/Application/Admin/View/TestingResource/apply.html b/Application/Admin/View/TestingResource/apply.html
new file mode 100644
index 000000000..b902baf73
--- /dev/null
+++ b/Application/Admin/View/TestingResource/apply.html
@@ -0,0 +1,596 @@
+
+
+
+
+
+ 游戏登陆列表|----软件管理平台
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Application/Admin/View/TestingResource/batches.html b/Application/Admin/View/TestingResource/batches.html
new file mode 100644
index 000000000..7b4ba0e7e
--- /dev/null
+++ b/Application/Admin/View/TestingResource/batches.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
游戏测试资源设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 导出
+
+ {$_page|default=''}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Application/Admin/View/TestingResource/gameSettings.html b/Application/Admin/View/TestingResource/gameSettings.html
new file mode 100644
index 000000000..522fe3d78
--- /dev/null
+++ b/Application/Admin/View/TestingResource/gameSettings.html
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
游戏测试资源设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 游戏名称 |
+ 游戏合作方 |
+ 初始额度 |
+ 奖金比例 |
+ 当前已申请资源 |
+ 操作 |
+
+
+
+
+
+
+ aOh! 暂时还没有内容! |
+
+
+
+ {$data.game_name} |
+ {$data.partner_name} |
+ {$data.base_quota} |
+ {$data.rate}% |
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+ 导出
+
+ {$_page|default=''}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Application/Admin/View/TestingResource/index.html b/Application/Admin/View/TestingResource/index.html
new file mode 100644
index 000000000..5a9134ca2
--- /dev/null
+++ b/Application/Admin/View/TestingResource/index.html
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
游戏测试资源设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 导出
+
+ {$_page|default=''}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Application/Base/Service/PartnerService.class.php b/Application/Base/Service/PartnerService.class.php
index 5a956d119..576dd24f8 100644
--- a/Application/Base/Service/PartnerService.class.php
+++ b/Application/Base/Service/PartnerService.class.php
@@ -75,4 +75,16 @@ class PartnerService
M('company_relation', 'tab_')->add($data);
}
}
+
+ public function findBaseGamesByPartnerId($partnerId)
+ {
+ $gameIds = M('game', 'tab_')->where(['partner_id' => $partnerId])->getField('id', true);
+ $conditions = ['_string' => '1=1'];
+ if (empty($gameIds)) {
+ $conditions['_string'] .= ' and 1=0';
+ } else {
+ $conditions['_string'] .= ' and (android_game_id in(' . implode(',', $gameIds) . ') or ios_game_id in(' . implode(',', $gameIds) . '))';
+ }
+ return M('base_game', 'tab_')->where($conditions)->select();
+ }
}
\ No newline at end of file
diff --git a/Application/Base/Service/TestingResourceService.class.php b/Application/Base/Service/TestingResourceService.class.php
index 31db4fd23..773a0bc53 100644
--- a/Application/Base/Service/TestingResourceService.class.php
+++ b/Application/Base/Service/TestingResourceService.class.php
@@ -130,4 +130,357 @@ class TestingResourceService
];
}
}
+
+ public function getRemainQuota($role, $bindRole = null, $gameSetting = null)
+ {
+ if (is_null($gameSetting)) {
+ $gameSetting = $this->getGameSettingByGameId($role['game_id']);
+ }
+
+ if (is_null($gameSetting)) {
+ throw new \Exception('游戏未设置测试资源');
+ }
+
+ $totalQuota = $role['testing_other_quota'] + ($gameSetting['base_quota'] ?? 0);
+ if (!is_null($bindRole)) {
+ $totalQuota += M('spend', 'tab_')
+ ->where(['game_id' => $role['game_id'], 'game_player_id' => $bindRole['role_id'], 'pay_status' => 1])
+ ->group('game_id,game_player_id')
+ ->sum('pay_amount');
+ }
+ $providedQuota = M('testing_resource_batch', 'tab_')
+ ->where(['provide_status' => [in, [1, 2]], 'game_id' => $role['game_id'], 'role_id' => $role['role_id']])
+ ->sum('provide_amount');
+ $providingQuota = M('testing_resource_batch', 'tab_')
+ ->where(['verify_status' => [in, [0, 1]], 'provide_status' => 0, 'game_id' => $role['game_id'], 'role_id' => $role['role_id']])
+ ->sum('apply_amount');
+ return round(floatval($totalQuota) - floatval($providedQuota) - floatval($providingQuota), 2);
+ }
+
+ public function getGameSetting($baseGameId)
+ {
+ return M('testing_game_setting', 'tab_')->where(['base_game_id' => $baseGameId])->find();
+ }
+
+ public function getGameSettingByGameId($gameId)
+ {
+ $baseGameId = M('base_game', 'tab_')->where('android_game_id=' . $gameId . ' or ios_game_id=' . $gameId)->getField('id');
+ return $this->getGameSetting($baseGameId);
+ }
+
+ public function addTestingUsers($accounts, $promote = null)
+ {
+ $accounts = array_unique($accounts);
+ $existAccounts = M('testing_user', 'tab_')->where(['user_account' => ['in', $accounts]])->getField('user_account', true);
+ $existAccounts = $existAccounts ?? [];
+ $existCount = count($existAccounts);
+ $newAccounts = array_diff($accounts, $existAccounts);
+ $errorCount = 0;
+ $successCount = 0;
+ if (count($newAccounts)) {
+
+ $strCondition = '1=1';
+ if ($promote) {
+ $promoteService = new PromoteService();
+ $strCondition = ' and promote_id in (' . $promoteService->subInSql($promote) . ')';
+ }
+
+ $users = M('user', 'tab_')->field(['id', 'account'])->where(['account' => ['in', $newAccounts], '_string' => $strCondition])->select();
+ $errorAccounts = array_diff($newAccounts, array_column($users, 'account'));
+ $errorCount = count($errorAccounts);
+ foreach ($users as $user) {
+ if (in_array($user['account'], $errorAccounts)) {
+ continue;
+ }
+ $data = [
+ 'user_id' => $user['id'],
+ 'user_account' => $user['account'],
+ 'status' => 1,
+ 'create_time' => time(),
+ 'update_time' => time(),
+ ];
+ M('testing_user', 'tab_')->add($data);
+ $successCount ++;
+ }
+ }
+ return [
+ 'errorCount' => $errorCount,
+ 'successCount' => $successCount,
+ 'existCount' => $existCount,
+ ];
+ }
+
+ public function saveGameSetting($params)
+ {
+ $gameId = $params['base_game_id'] ?? 0;
+ $baseQuota = $params['base_quota'] ?? 0;
+ $rate = $params['rate'] ?? 0;
+
+ if ($gameId == 0) {
+ throw new \Exception('请选择游戏');
+ }
+
+ $data = [
+ 'base_game_id' => $gameId,
+ 'base_quota' => $baseQuota,
+ 'rate' => $rate,
+ ];
+
+ $setting = M('testing_game_setting', 'tab_')->where(['base_game_id' => $gameId])->find();
+ if ($setting) {
+ $data['update_time'] = time();
+ M('testing_game_setting', 'tab_')->where(['base_game_id' => $gameId])->save($data);
+ } else {
+ $data['create_time'] = time();
+ $data['update_time'] = time();
+ M('testing_game_setting', 'tab_')->add($data);
+ }
+ }
+
+ public function getHadSettingGameIds()
+ {
+ $baseGameIds = M('testing_game_setting', 'tab_')->getField('base_game_id', true);
+ if (empty($baseGameIds)) {
+ return [];
+ }
+ $baseGames = M('base_game', 'tab_')->where(['id' => ['in', $baseGameIds]])->select();
+ return array_merge(array_column($baseGames, 'android_game_id'), array_column($baseGames, 'ios_game_id'));
+ }
+
+ private function getGameRoleId($gameId, $roleId)
+ {
+ return $gameId . '#' . $roleId;
+ }
+
+ public function statByRoles($roles)
+ {
+ $bindingOrWhere = [];
+ foreach ($roles as $role) {
+ $bindingOrWhere[] = '(role_id="' . $role['role_id'] . '" and game_id=' . $role['game_id'] . ')';
+ }
+ $userIds = array_unique(array_column($roles, 'user_id'));
+
+ $users = [];
+ $bindings = [];
+ $bindingRoles = [];
+ $applyRecords = [];
+ if (count($roles) > 0) {
+ $users = M('user', 'tab_')->field(['id', 'phone', 'lock_status'])->where(['id' => ['in', $userIds]])->select();
+ $users = index_by_column('id', $users);
+ $bindingRows = M('testing_binding', 'tab_')->where(['_string' => implode(' or ', $bindingOrWhere)])->select();
+ $bindingRoleIds = [];
+ foreach ($bindingRows as $bindingRow) {
+ $bindings[$this->getGameRoleId($bindingRow['game_id'], $bindingRow['role_id'])] = $bindingRow;
+ $bindingRoleIds[] = $this->getGameRoleId($bindingRow['game_id'], $bindingRow['bind_role_id']);
+ }
+ if (count($bindings) > 0) {
+ $bindingRoles = M('user_play_info', 'tab_')
+ ->field(['id', 'role_id', 'role_name', 'user_account', 'game_id', 'game_role_id'])
+ ->where(['game_role_id' => ['in', $bindingRoleIds]])
+ ->select();
+ $bindingRoles = index_by_column('game_role_id', $bindingRoles);
+ }
+
+ $verifyItems = M('testing_resource_batch', 'tab_')
+ ->field('sum(apply_amount) amount, game_id, role_id')
+ ->where([
+ 'verify_status' => 0,
+ '_string' => implode(' or ', $bindingOrWhere)
+ ])
+ ->group('game_id,role_id')->select();
+ $verifyRecords = [];
+ foreach ($verifyItems as $item) {
+ $verifyRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
+ }
+
+ $provideItems = M('testing_resource_batch', 'tab_')
+ ->field('sum(provide_amount) amount, game_id, role_id')
+ ->where([
+ 'verify_status' => 1,
+ '_string' => implode(' or ', $bindingOrWhere)
+ ])
+ ->group('game_id,role_id')->select();
+ $provideRecords = [];
+ foreach ($provideItems as $item) {
+ $provideRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
+ }
+
+ $todayProvideItems = M('testing_resource_batch', 'tab_')
+ ->field('sum(provide_amount) amount, game_id, role_id')
+ ->where([
+ 'verify_status' => 1,
+ '_string' => implode(' or ', $bindingOrWhere),
+ 'provide_time' => ['egt', strtotime(date('Y-m-d 00:00:00'))],
+ 'provide_time' => ['elt', strtotime(date('Y-m-d 23:59:59'))],
+ ])
+ ->group('game_id,role_id')->select();
+ $todayProvideRecords = [];
+ foreach ($todayProvideItems as $item) {
+ $todayProvideRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
+ }
+
+ $applyItems = M('testing_resource_batch', 'tab_')
+ ->field('sum(apply_amount) amount, game_id, role_id')
+ ->where([
+ '_string' => implode(' or ', $bindingOrWhere),
+ ])
+ ->group('game_id,role_id')->select();
+ $applyRecords = [];
+ foreach ($applyItems as $item) {
+ $applyRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
+ }
+
+ }
+ $spendItems = [];
+ if (count($bindingRoles) > 0) {
+ $spendOrWhere = [];
+ foreach ($bindingRoles as $bindingRole) {
+ $spendOrWhere[] = '(game_player_id="' . $bindingRole['role_id'] . '" and game_id=' . $bindingRole['game_id'] . ')';
+ }
+ $spendCondition = [
+ 'pay_status' => 1,
+ '_string' => '(' . implode(' or ', $spendOrWhere) . ')',
+ ];
+ $spendList = M('spend', 'tab_')->field('sum(pay_amount) amount, game_id, game_player_id')->where($spendCondition)->group('game_id,game_player_id')->select();
+ foreach ($spendList as $item) {
+ $spendItems[$this->getGameRoleId($item['game_id'], $item['game_player_id'])] = $item['amount'];
+ }
+ }
+ return [
+ 'users' => $users,
+ 'spendItems' => $spendItems,
+ 'bindings' => $bindings,
+ 'bindingRoles' => $bindingRoles,
+ 'applyRecords' => $applyRecords,
+ 'provideRecords' => $provideRecords,
+ 'verifyRecords' => $verifyRecords,
+ 'todayProvideRecords' => $todayProvideRecords,
+ ];
+ }
+
+ public function makeTestingUserRecords($roles)
+ {
+ $result = $this->statByRoles($roles);
+ $users = $result['users'];
+ $spendItems = $result['spendItems'];
+ $bindings = $result['bindings'];
+ $bindingRoles = $result['bindingRoles'];
+ $applyRecords = $result['applyRecords'];
+ $provideRecords = $result['provideRecords'];
+ $verifyRecords = $result['verifyRecords'];
+ $todayProvideRecords = $result['todayProvideRecords'];
+
+ $records = [];
+ foreach ($roles as $role) {
+ $user = $users[$role['user_id']] ?? null;
+ $binding = $bindings[$role['game_role_id']] ?? null;
+ $bindingRole = null;
+ if ($binding) {
+ $bindGameRoleId = $this->getGameRoleId($binding['game_id'], $binding['bind_role_id']);
+ $bindingRole = $bindingRoles[$bindGameRoleId] ? $bindingRoles[$bindGameRoleId] : null;
+ }
+ $gameSetting = $this->getGameSettingByGameId($role['game_id']);
+ $records[] = [
+ 'id' => $role['id'],
+ 'game_name' => $role['game_name'],
+ 'server_name' => $role['server_name'],
+ 'server_id' => $role['server_id'],
+ 'role_id' => $role['role_id'],
+ 'user_account' => $role['user_account'],
+ 'user_phone' => $user ? $user['phone'] : '',
+ 'role_name' => $role['role_name'],
+ 'bind_user_account' => $bindingRole ? $bindingRole['user_account'] : '',
+ 'bind_role_name' => $bindingRole ? $bindingRole['role_name'] : '',
+ 'base_quota' => $gameSetting ? $gameSetting['base_quota'] : 0,
+ 'other_quota' => $role['testing_other_quota'],
+ 'quota' => $bindingRole && isset($spendItems[$bindingRole['game_role_id']]) ? $spendItems[$bindingRole['game_role_id']] : 0,
+ 'verify_amount' => $verifyRecords[$role['game_role_id']] ?? 0,
+ 'provide_amount' => $provideRecords[$role['game_role_id']] ?? 0,
+ 'today_amount' => $todayProvideRecords[$role['game_role_id']] ?? 0,
+ 'apply_amount' => $applyRecords[$role['game_role_id']] ?? 0,
+ 'status' => $user && $user['lock_status'] == 1 ? '正常' : '锁定',
+ 'create_time' => date('Y-m-d H:i:s', $role['create_time'])
+ ];
+ }
+ return $records;
+ }
+
+ public function bindRole($params, $promote)
+ {
+ $gameId = $params['game_id'] ?? 0;
+ $testingRoleId = $params['testing_role_id'] ?? '';
+ $bindRoleId = $params['bind_role_id'] ?? '';
+
+ $testingGameRoleId = $this->getGameRoleId($gameId, $testingRoleId);
+ $bindGameRoleId = $this->getGameRoleId($gameId, $bindRoleId);
+
+ $testingRole = M('user_play_info', 'tab_')
+ ->field(['id', 'role_id', 'user_id', 'game_id', 'promote_id'])
+ ->where(['game_role_id' => $testingGameRoleId])
+ ->find();
+ if (is_null($testingRole)) {
+ throw new \Exception('测试账号角色不存在');
+ }
+
+ $testingUser = M('testing_user', 'tab_')->where(['user_id' => $testingRole['user_id']])->find();
+ if (is_null($testingUser)) {
+ throw new \Exception('测试账号不存在');
+ }
+
+ $promoteService = new PromoteService();
+ $testPromote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $testingRole['promote_id']])->find();
+ if (is_null($testPromote) || !$promoteService->isSubOrSelf($testPromote, $promote)) {
+ throw new \Exception('测试角色所属推广员异常');
+ }
+
+ $bindRole = M('user_play_info', 'tab_')
+ ->field(['id', 'role_id', 'user_id', 'promote_id'])
+ ->where(['game_role_id' => $bindGameRoleId])
+ ->find();
+ if (is_null($bindRole)) {
+ throw new \Exception('玩家角色不存在');
+ }
+
+ $bindPromote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $bindRole['promote_id']])->find();
+ if (is_null($bindPromote) || !$promoteService->isSubOrSelf($bindPromote, $promote)) {
+ throw new \Exception('玩家账号所属推广员异常');
+ }
+
+ /* if ($testPromote['id'] != $bindPromote['id']) {
+ throw new \Exception('玩家账号与测试账号非同一推广员');
+ } */
+
+ $bindIsTesting = M('testing_user', 'tab_')->where(['user_id' => $bindRole['user_id']])->find();
+ if ($bindIsTesting) {
+ throw new \Exception('该玩家账号为测试账号,无法绑定');
+ }
+
+ $existBind = M('testing_binding', 'tab_')->field(['id'])->where(['game_id' => $gameId, 'bind_role_id' => $bindRoleId])->find();
+ if ($existBind) {
+ throw new \Exception('该玩家角色已被绑定');
+ }
+
+ $testExistBind = M('testing_binding', 'tab_')->field(['id'])->where(['game_id' => $gameId, 'role_id' => $testingRoleId])->find();
+ if ($testExistBind) {
+ throw new \Exception('该测试账号角色已绑定有角色');
+ }
+
+ $status = M('testing_binding', 'tab_')->add([
+ 'game_id' => $testingRole['game_id'],
+ 'user_id' => $testingRole['user_id'],
+ 'role_id' => $testingRole['role_id'],
+ 'bind_user_id' => $bindRole['user_id'],
+ 'bind_role_id' => $bindRole['role_id'],
+ 'create_time' => time(),
+ 'update_time' => time()
+ ]);
+ if (!$status) {
+ throw new \Exception('绑定角色异常');
+ }
+ }
+
+ public function getBatches()
+ {
+
+ }
}
\ No newline at end of file
diff --git a/Application/Home/Controller/TestingResourceController.class.php b/Application/Home/Controller/TestingResourceController.class.php
index c258d711b..da89ba68d 100644
--- a/Application/Home/Controller/TestingResourceController.class.php
+++ b/Application/Home/Controller/TestingResourceController.class.php
@@ -40,11 +40,6 @@ class TestingResourceController extends BaseController
$strCondition = 'game_id in (' . implode(',', $visibleGameIds) . ')';
}
- /**
- * @todo 仅有游戏猫
- */
- $strCondition .= ' and game_id in (229, 230)';
-
if ($createTimeStart) {
$strCondition .= ' and create_time >=' . strtotime($createTimeStart . ' 00:00:00');
}
@@ -80,129 +75,8 @@ class TestingResourceController extends BaseController
list($roles, $pagination, $count) = $this->paginate($query);
- $bindingOrWhere = [];
- foreach ($roles as $role) {
- $bindingOrWhere[] = '(role_id="' . $role['role_id'] . '" and game_id=' . $role['game_id'] . ')';
- }
- $userIds = array_unique(array_column($roles, 'user_id'));
-
- $users = [];
- $bindings = [];
- $bindingRoles = [];
- $applyRecords = [];
- if (count($roles) > 0) {
- $users = M('user', 'tab_')->field(['id', 'phone', 'lock_status'])->where(['id' => ['in', $userIds]])->select();
- $users = index_by_column('id', $users);
- $bindingRows = M('testing_binding', 'tab_')->where(['_string' => implode(' or ', $bindingOrWhere)])->select();
- $bindingRoleIds = [];
- foreach ($bindingRows as $bindingRow) {
- $bindings[$this->getGameRoleId($bindingRow['game_id'], $bindingRow['role_id'])] = $bindingRow;
- $bindingRoleIds[] = $this->getGameRoleId($bindingRow['game_id'], $bindingRow['bind_role_id']);
- }
- if (count($bindings) > 0) {
- $bindingRoles = M('user_play_info', 'tab_')
- ->field(['id', 'role_id', 'role_name', 'user_account', 'game_id', 'game_role_id'])
- ->where(['game_role_id' => ['in', $bindingRoleIds]])
- ->select();
- $bindingRoles = index_by_column('game_role_id', $bindingRoles);
- }
-
- $verifyItems = M('testing_resource_batch', 'tab_')
- ->field('sum(apply_amount) amount, game_id, role_id')
- ->where([
- 'verify_status' => 0,
- '_string' => implode(' or ', $bindingOrWhere)
- ])
- ->group('game_id,role_id')->select();
- $verifyRecords = [];
- foreach ($verifyItems as $item) {
- $verifyRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
- }
-
- $provideItems = M('testing_resource_batch', 'tab_')
- ->field('sum(provide_amount) amount, game_id, role_id')
- ->where([
- 'verify_status' => 1,
- '_string' => implode(' or ', $bindingOrWhere)
- ])
- ->group('game_id,role_id')->select();
- $provideRecords = [];
- foreach ($provideItems as $item) {
- $provideRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
- }
-
- $todayProvideItems = M('testing_resource_batch', 'tab_')
- ->field('sum(provide_amount) amount, game_id, role_id')
- ->where([
- 'verify_status' => 1,
- '_string' => implode(' or ', $bindingOrWhere),
- 'provide_time' => ['egt', strtotime(date('Y-m-d 00:00:00'))],
- 'provide_time' => ['elt', strtotime(date('Y-m-d 23:59:59'))],
- ])
- ->group('game_id,role_id')->select();
- $todayProvideRecords = [];
- foreach ($todayProvideItems as $item) {
- $todayProvideRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
- }
-
- $applyItems = M('testing_resource_batch', 'tab_')
- ->field('sum(apply_amount) amount, game_id, role_id')
- ->where([
- '_string' => implode(' or ', $bindingOrWhere),
- ])
- ->group('game_id,role_id')->select();
- $applyRecords = [];
- foreach ($applyItems as $item) {
- $applyRecords[$this->getGameRoleId($item['game_id'], $item['role_id'])] = $item['amount'] ;
- }
-
- }
- $spendItems = [];
- if (count($bindingRoles) > 0) {
- $spendOrWhere = [];
- foreach ($bindingRoles as $bindingRole) {
- $spendOrWhere[] = '(game_player_id="' . $bindingRole['role_id'] . '" and game_id=' . $bindingRole['game_id'] . ')';
- }
- $spendCondition = [
- 'pay_status' => 1,
- '_string' => '(' . implode(' or ', $spendOrWhere) . ')',
- ];
- $spendList = M('spend', 'tab_')->field('sum(pay_amount) amount, game_id, game_player_id')->where($spendCondition)->group('game_id,game_player_id')->select();
- foreach ($spendList as $item) {
- $spendItems[$this->getGameRoleId($item['game_id'], $item['game_player_id'])] = $item['amount'];
- }
- }
- $records = [];
- foreach ($roles as $role) {
- $user = $users[$role['user_id']] ?? null;
- $binding = $bindings[$role['game_role_id']] ?? null;
- $bindingRole = null;
- if ($binding) {
- $bindGameRoleId = $this->getGameRoleId($binding['game_id'], $binding['bind_role_id']);
- $bindingRole = $bindingRoles[$bindGameRoleId] ? $bindingRoles[$bindGameRoleId] : null;
- }
- $records[] = [
- 'id' => $role['id'],
- 'game_name' => $role['game_name'],
- 'server_name' => $role['server_name'],
- 'server_id' => $role['server_id'],
- 'role_id' => $role['role_id'],
- 'user_account' => $role['user_account'],
- 'user_phone' => $user ? $user['phone'] : '',
- 'role_name' => $role['role_name'],
- 'bind_user_account' => $bindingRole ? $bindingRole['user_account'] : '',
- 'bind_role_name' => $bindingRole ? $bindingRole['role_name'] : '',
- 'base_quota' => $this->gameBaseQuota[$role['game_id']] ?? 0,
- 'other_quota' => $role['testing_other_quota'],
- 'quota' => $bindingRole && isset($spendItems[$bindingRole['game_role_id']]) ? $spendItems[$bindingRole['game_role_id']] : 0,
- 'verify_amount' => $verifyRecords[$role['game_role_id']] ?? 0,
- 'provide_amount' => $provideRecords[$role['game_role_id']] ?? 0,
- 'today_amount' => $todayProvideRecords[$role['game_role_id']] ?? 0,
- 'apply_amount' => $applyRecords[$role['game_role_id']] ?? 0,
- 'status' => $user && $user['lock_status'] == 1 ? '正常' : '锁定',
- 'create_time' => date('Y-m-d H:i:s', $role['create_time'])
- ];
- }
+ $testingResourceService = new TestingResourceService();
+ $records = $testingResourceService->makeTestingUserRecords($roles);
$this->assign('games', $this->getGames());
$this->assign('servers', $this->getServersByGameId($gameId));
@@ -225,41 +99,11 @@ class TestingResourceController extends BaseController
return $this->ajaxReturn(['status' => 0, 'message' => '请输入测试资源账号']);
}
$accounts = explode(',', $accountsStr);
- $accounts = array_unique($accounts);
- $existAccounts = M('testing_user', 'tab_')->where(['user_account' => ['in', $accounts]])->getField('user_account', true);
- $existAccounts = $existAccounts ?? [];
- $existCount = count($existAccounts);
- $newAccounts = array_diff($accounts, $existAccounts);
- $errorCount = 0;
- $successCount = 0;
- if (count($newAccounts)) {
-
- $promoteService = new PromoteService();
- $strCondition = 'promote_id in (' . $promoteService->subInSql($loginPromote) . ')';
-
- $users = M('user', 'tab_')->field(['id', 'account'])->where(['account' => ['in', $newAccounts], '_string' => $strCondition])->select();
- $errorAccounts = array_diff($newAccounts, array_column($users, 'account'));
- $errorCount = count($errorAccounts);
- foreach ($users as $user) {
- if (in_array($user['account'], $errorAccounts)) {
- continue;
- }
- $data = [
- 'user_id' => $user['id'],
- 'user_account' => $user['account'],
- 'status' => 1,
- 'create_time' => time(),
- 'update_time' => time(),
- ];
- M('testing_user', 'tab_')->add($data);
- $successCount ++;
- }
- }
- return $this->ajaxReturn(['status' => 1, 'message' => '请求成功', 'data' => [
- 'errorCount' => $errorCount,
- 'successCount' => $successCount,
- 'existCount' => $existCount,
- ]]);
+
+ $testingResourceService = new TestingResourceService();
+ $result = $testingResourceService->addTestingUsers($accounts, $loginPromote);
+
+ return $this->ajaxReturn(['status' => 1, 'message' => '请求成功', 'data' => $result]);
}
public function batches()
@@ -425,24 +269,6 @@ class TestingResourceController extends BaseController
$this->display();
}
- private function getRemainQuota($role, $bindRole = null)
- {
- $totalQuota = $role['testing_other_quota'] + ($this->gameBaseQuota[$role['game_id']] ?? 0);
- if (!is_null($bindRole)) {
- $totalQuota += M('spend', 'tab_')
- ->where(['game_id' => $role['game_id'], 'game_player_id' => $bindRole['role_id'], 'pay_status' => 1])
- ->group('game_id,game_player_id')
- ->sum('pay_amount');
- }
- $providedQuota = M('testing_resource_batch', 'tab_')
- ->where(['provide_status' => [in, [1, 2]], 'game_id' => $role['game_id'], 'role_id' => $role['role_id']])
- ->sum('provide_amount');
- $providingQuota = M('testing_resource_batch', 'tab_')
- ->where(['verify_status' => [in, [0, 1]], 'provide_status' => 0, 'game_id' => $role['game_id'], 'role_id' => $role['role_id']])
- ->sum('apply_amount');
- return round(floatval($totalQuota) - floatval($providedQuota) - floatval($providingQuota), 2);
- }
-
public function apply()
{
$id = I('id', 0);
@@ -468,6 +294,9 @@ class TestingResourceController extends BaseController
}
}
+ $testingResourceService = new TestingResourceService();
+ $quota = $testingResourceService->getRemainQuota($role, $bindingRole);
+
/**
* @todo 目前固定游戏猫
*/
@@ -476,7 +305,7 @@ class TestingResourceController extends BaseController
$this->assign('servers', $servers);
$this->assign('bindingRole', $bindingRole);
$this->assign('role', $role);
- $this->assign('quota', $this->getRemainQuota($role, $bindingRole));
+ $this->assign('quota', $quota);
$this->display();
}
@@ -588,7 +417,8 @@ class TestingResourceController extends BaseController
}
}
- $remainQuota = $this->getRemainQuota($role, $bindingRole);
+ $testingResourceService = new TestingResourceService();
+ $remainQuota = $testingResourceService->getRemainQuota($role, $bindingRole);
if ($amount > $remainQuota) {
return $this->ajaxReturn(['status' => 0, 'message' => '额度不足']);
}
@@ -638,75 +468,15 @@ class TestingResourceController extends BaseController
public function bindRole()
{
- $gameId = I('game_id', 0);
- $testingRoleId = I('testing_role_id', '');
- $bindRoleId = I('bind_role_id', '');
+ $params = I('post.');
$loginPromote = $this->getLoginPromote();
-
- $testingGameRoleId = $this->getGameRoleId($gameId, $testingRoleId);
- $bindGameRoleId = $this->getGameRoleId($gameId, $bindRoleId);
-
- $testingRole = M('user_play_info', 'tab_')
- ->field(['id', 'role_id', 'user_id', 'game_id', 'promote_id'])
- ->where(['game_role_id' => $testingGameRoleId])
- ->find();
- if (is_null($testingRole)) {
- return $this->ajaxReturn(['status' => 0, 'message' => '测试账号角色不存在']);
- }
-
- $testingUser = M('testing_user', 'tab_')->where(['user_id' => $testingRole['user_id']])->find();
- if (is_null($testingUser)) {
- return $this->ajaxReturn(['status' => 0, 'message' => '测试账号不存在']);
- }
-
- $promoteService = new PromoteService();
- $testPromote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $testingRole['promote_id']])->find();
- if (is_null($testPromote) || !$promoteService->isSubOrSelf($testPromote, $loginPromote)) {
- return $this->ajaxReturn(['status' => 0, 'message' => '测试角色所属推广员异常']);
- }
-
- $bindRole = M('user_play_info', 'tab_')
- ->field(['id', 'role_id', 'user_id', 'promote_id'])
- ->where(['game_role_id' => $bindGameRoleId])
- ->find();
- if (is_null($bindRole)) {
- return $this->ajaxReturn(['status' => 0, 'message' => '玩家角色不存在']);
- }
-
- $bindPromote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $bindRole['promote_id']])->find();
- if (is_null($bindPromote) || !$promoteService->isSubOrSelf($bindPromote, $loginPromote)) {
- return $this->ajaxReturn(['status' => 0, 'message' => '玩家账号所属推广员异常']);
- }
-
- /* if ($testPromote['id'] != $bindPromote['id']) {
- return $this->ajaxReturn(['status' => 0, 'message' => '玩家账号与测试账号非同一推广员']);
- } */
-
- $bindIsTesting = M('testing_user', 'tab_')->where(['user_id' => $bindRole['user_id']])->find();
- if ($bindIsTesting) {
- return $this->ajaxReturn(['status' => 0, 'message' => '该玩家账号为测试账号,无法绑定']);
- }
-
- $existBind = M('testing_binding', 'tab_')->field(['id'])->where(['game_id' => $gameId, 'bind_role_id' => $bindRoleId])->find();
- if ($existBind) {
- return $this->ajaxReturn(['status' => 0, 'message' => '该玩家角色已被绑定']);
- }
-
- $testExistBind = M('testing_binding', 'tab_')->field(['id'])->where(['game_id' => $gameId, 'role_id' => $testingRoleId])->find();
- if ($testExistBind) {
- return $this->ajaxReturn(['status' => 0, 'message' => '该测试账号角色已绑定有角色']);
+ try {
+ $testingResourceService = new TestingResourceService();
+ $testingResourceService->bindRole($params, $loginPromote);
+ return $this->ajaxReturn(['status' => 1, 'message' => '绑定成功']);
+ } catch (\Throwable $th) {
+ return $this->ajaxReturn(['status' => 0, 'message' => $e->getMessage()]);
}
-
- M('testing_binding', 'tab_')->add([
- 'game_id' => $testingRole['game_id'],
- 'user_id' => $testingRole['user_id'],
- 'role_id' => $testingRole['role_id'],
- 'bind_user_id' => $bindRole['user_id'],
- 'bind_role_id' => $bindRole['role_id'],
- 'create_time' => time(),
- 'update_time' => time()
- ]);
- return $this->ajaxReturn(['status' => 1, 'message' => '绑定成功']);
}
private function getGames()
diff --git a/Data/update.sql b/Data/update.sql
index 117ff7900..3e61eafd1 100644
--- a/Data/update.sql
+++ b/Data/update.sql
@@ -2663,4 +2663,14 @@ CREATE TABLE `tab_promote_grade_setting` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='推广评级设定';
ALTER TABLE `tab_aggregate_statement`
-ADD COLUMN `detail` longtext NULL COMMENT '审批详情' AFTER `remark`;
\ No newline at end of file
+ADD COLUMN `detail` longtext NULL COMMENT '审批详情' AFTER `remark`;
+
+CREATE TABLE `tab_testing_game_setting` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `base_game_id` int(11) NOT NULL COMMENT '游戏ID',
+ `base_quota` int(11) NOT NULL default 0 COMMENT '初始额度',
+ `rate` int(11) NOT NULL DEFAULT '0' COMMENT '额度比例(百分比)',
+ `create_time` int(11) NOT NULL DEFAULT '0',
+ `update_time` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试资源游戏设置';
\ No newline at end of file
diff --git a/Public/Admin/css/style.css b/Public/Admin/css/style.css
index 3771d1f4a..de74ba5b3 100644
--- a/Public/Admin/css/style.css
+++ b/Public/Admin/css/style.css
@@ -2294,3 +2294,65 @@ input:-webkit-autofill {
.tabcon1711 .btn-large {width:412px;}
.tabcon1711 .table_uploads {width:215px;}
+
+.layui-layer-content .layer-box {
+ padding: 20px 30px;
+}
+.layui-layer-content .layer-box .form-group {
+ margin-bottom: 10px;
+ display: inline-flex;
+}
+.layui-layer-content .layer-box .form-group .static-input {
+ color: #515974;
+ display: inline-block;
+ line-height: 34px;
+ height: 34px;
+ width: 380px;
+ margin-bottom: 0px;
+}
+.layui-layer-content .layer-box .form-group > label {
+ color: #8B8CA0;
+ text-align: right;
+ line-height: 34px;
+ height: 34px;
+ display: inline-block;
+ width: 120px;
+ margin-right: 10px;
+}
+.layui-layer-content .layer-box .form-group .form-input {
+ height: 34px;
+ position: relative;
+ padding: 0 10px;
+ border: 1px solid #E5E5E5;
+ border-radius: 4px;
+ width: 380px;
+}
+
+.layui-layer-content .layer-box .form-group textarea.form-input {
+ height: auto;
+ padding: 10px 15px;
+ width: auto;
+}
+
+.layui-layer-content .layer-box .form-group .radio-item {
+ margin-right: 5px;
+ line-height: 34px;
+ height: 34px;
+ color: #515974;
+}
+.layui-layer-content .layer-box .form-item {
+ width: 380px;
+ display: inline-block;
+}
+.layui-layer-content .layer-box .form-group .btn {
+ text-align: center;
+ line-height: 34px;
+ display: inline-block;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ background: #3A97FF;
+ color: #fff;
+ border-radius: 4px;
+ padding: 0 15px;
+}