Merge branch 'master' of 47.111.118.107:wmtx/platform into feature/finance_statement_three
commit
7ceafb1d42
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* 定时自动完成
|
||||
*/
|
||||
namespace Admin\Controller;
|
||||
use Admin\Model\SpendModel;
|
||||
use Think\Think;
|
||||
use Base\Tool\Printer;
|
||||
use Base\Tool\TaskClient;
|
||||
use Base\Service\TestingResourceService;
|
||||
use GuzzleHttp\Client;
|
||||
use think\Db;
|
||||
use Base\Tool\GameCatClient;
|
||||
|
||||
class GameApiController extends Think {
|
||||
|
||||
protected function _initialize()
|
||||
{
|
||||
C(api('Config/lists'));
|
||||
}
|
||||
|
||||
public function verify()
|
||||
{
|
||||
$service = new TestingResourceService();
|
||||
$batches = M('testing_resource_batch', 'tab_')->where(['verify_status' => 0])->select();
|
||||
foreach ($batches as $batch) {
|
||||
$service->verify($batch);
|
||||
}
|
||||
}
|
||||
|
||||
public function provide()
|
||||
{
|
||||
$service = new TestingResourceService();
|
||||
$batches = M('testing_resource_batch', 'tab_')->where(['verify_status' => 1, 'provide_status' => 0])->select();
|
||||
foreach ($batches as $batch) {
|
||||
$service->provide($batch);
|
||||
}
|
||||
}
|
||||
|
||||
public function send()
|
||||
{
|
||||
$role = [
|
||||
'role_id' => '6819493',
|
||||
'user_account' => 'qh11102',
|
||||
'sdk_version' => 1,
|
||||
];
|
||||
$order = [
|
||||
'ref_amount' => '10.00',
|
||||
'ref_id' => '8',
|
||||
'remark' => '测试',
|
||||
'order_no' => date('YmdHis') . rand(1000, 9999) . '_1',
|
||||
];
|
||||
$service = new TestingResourceService();
|
||||
$result = $service->provideFromGameCat($order, $role);
|
||||
var_dump($result);
|
||||
}
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
<?php
|
||||
namespace Base\Service;
|
||||
|
||||
use Base\Facade\Request;
|
||||
use Base\Tool\GameCatClient;
|
||||
|
||||
class TestingResourceService
|
||||
{
|
||||
public static $provideStatusList = [
|
||||
'0' => '待发放',
|
||||
'1' => '已发放',
|
||||
'2' => '异常',
|
||||
];
|
||||
public static $verifyStatusList = [
|
||||
'0' => '未审核',
|
||||
'1' => '审核通过',
|
||||
'2' => '审核拒绝',
|
||||
];
|
||||
|
||||
public function getProvideStatusText($provideStatus)
|
||||
{
|
||||
return self::$provideStatusList[$provideStatus] ?? '未知';
|
||||
}
|
||||
|
||||
public function getVerifyStatusText($verifyStatus)
|
||||
{
|
||||
return self::$verifyStatusList[$verifyStatus] ?? '未知';
|
||||
}
|
||||
|
||||
public function verify($batch)
|
||||
{
|
||||
if ($batch['verify_status'] != 0) {
|
||||
throw new \Exception('审核状态异常');
|
||||
}
|
||||
|
||||
$batchData = [];
|
||||
$batchData['verify_time'] = time();
|
||||
$batchData['update_time'] = time();
|
||||
|
||||
if (!in_array($batch['game_id'], [229, 230])) {
|
||||
|
||||
$batchData['verify_status'] = 2;
|
||||
$batchData['verify_remark'] = '该游戏发放功能暂未实现';
|
||||
M('testing_resource_batch', 'tab_')->where(['id' => $batch['id']])->save($batchData);
|
||||
|
||||
throw new \Exception('该游戏发放功能暂未实现');
|
||||
}
|
||||
|
||||
$batchData['verify_status'] = 1;
|
||||
$batchData['verify_remark'] = '审核成功';
|
||||
M('testing_resource_batch', 'tab_')->where(['id' => $batch['id']])->save($batchData);
|
||||
}
|
||||
|
||||
public function provide($batch)
|
||||
{
|
||||
if ($batch['verify_status'] != 1) {
|
||||
throw new \Exception('该申请未审核通过');
|
||||
}
|
||||
|
||||
if ($batch['provide_status'] != 0) {
|
||||
throw new \Exception('发放状态异常');
|
||||
}
|
||||
|
||||
$role = M('user_play_info', 'tab_')
|
||||
->field(['id', 'role_id', 'user_id', 'promote_id', 'user_account', 'sdk_version'])
|
||||
->where(['game_id' => $batch['game_id'], 'role_id' => $batch['role_id']])
|
||||
->find();
|
||||
$orders = M('testing_resource_order', 'tab_')
|
||||
->where(['batch_id' => $batch['id']])
|
||||
->select();
|
||||
|
||||
$hasError = false;
|
||||
$provideAmount = 0;
|
||||
foreach ($orders as $order) {
|
||||
$result = $this->provideFromGameCat($order, $role);
|
||||
$orderData = [
|
||||
'result' => json_encode(['code' => $result['code'], 'message' => $result['message']]),
|
||||
];
|
||||
if (!$result['status']) {
|
||||
$hasError = true;
|
||||
$orderData['provide_status'] = 2;
|
||||
} else {
|
||||
$orderData['provide_status'] = 1;
|
||||
}
|
||||
$provideAmount += round($order['ref_amount'] * $order['num'], 2);
|
||||
$orderData['provide_time'] = time();
|
||||
M('testing_resource_order', 'tab_')
|
||||
->where(['id' => $order['id']])
|
||||
->save($orderData);
|
||||
}
|
||||
|
||||
$batchData = [];
|
||||
if ($hasError) {
|
||||
$batchData['provide_status'] = 2;
|
||||
} else {
|
||||
$batchData['provide_status'] = 1;
|
||||
}
|
||||
$batchData['provide_time'] = time();
|
||||
$batchData['provide_amount'] = $provideAmount;
|
||||
$batchData['update_time'] = time();
|
||||
M('testing_resource_batch', 'tab_')
|
||||
->where(['id' => $batch['id']])
|
||||
->save($batchData);
|
||||
}
|
||||
|
||||
public function provideFromGameCat($order, $role)
|
||||
{
|
||||
$gameCatClient = new GameCatClient();
|
||||
$result = $gameCatClient->api('provide', [
|
||||
'roleId' => $role['role_id'],
|
||||
'amount' => intval($order['ref_amount']),
|
||||
'supportItem' => $order['ref_id'],
|
||||
'supportType' => '0',
|
||||
'channelUid' => $role['user_account'],
|
||||
'applyRemark' => $order['remark'] == '' ? '测试资源申请' : $order['remark'],
|
||||
'applyId' => $order['order_no'],
|
||||
'device_type' => $role['sdk_version'] == 1 ? 'andriod' : 'ios',
|
||||
]);
|
||||
if ($result['state'] == 1 && $result['data']) {
|
||||
return [
|
||||
'status' => true,
|
||||
'message' => $result['msg'],
|
||||
'code' => 1,
|
||||
];
|
||||
} else {
|
||||
return [
|
||||
'status' => false,
|
||||
'msg' => $result['msg'],
|
||||
'code' => $result['state'],
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace Base\Tool;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\RequestException;
|
||||
|
||||
/**
|
||||
* 游戏猫接口客户端
|
||||
*/
|
||||
class GameCatClient
|
||||
{
|
||||
const SIGN_NAME = 'sign';
|
||||
const SUCCESS = '0000';
|
||||
|
||||
protected $client;
|
||||
|
||||
private $apis = [
|
||||
'get-pay-type' => ['uri' => '/game/support/items/v1', 'method' => 'post'],
|
||||
'provide' => ['uri' => '/game/support/provide/v1', 'method' => 'post'],
|
||||
];
|
||||
|
||||
private $appIds = [
|
||||
'andriod' => 1746,
|
||||
'ios' => 1747,
|
||||
];
|
||||
|
||||
private $channelIds = [
|
||||
'andriod' => 11595,
|
||||
'ios' => 11596,
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->client = new Client([
|
||||
'base_uri' => C('GAME_CAT_URL'),
|
||||
'timeout' => 10.0,
|
||||
]);
|
||||
}
|
||||
|
||||
public function api($api, array $params = [])
|
||||
{
|
||||
$api = $this->apis[$api] ?? null;
|
||||
if (is_null($api)) {
|
||||
throw new \Exception('接口不存在');
|
||||
}
|
||||
$deviceType = 'andriod';
|
||||
if (isset($params['device_type'])) {
|
||||
$deviceType = $params['device_type'];
|
||||
unset($params['device_type']);
|
||||
}
|
||||
$params['appId'] = $this->appIds[$deviceType] ?? $this->appIds['andriod'];
|
||||
$params['channelId'] = $this->channelIds[$deviceType] ?? $this->channelIds['andriod'];
|
||||
$params['timestamp'] = time();
|
||||
$params[self::SIGN_NAME] = $this->sign($params);
|
||||
try {
|
||||
return $this->request($api, $params);
|
||||
} catch (\Exception $e) {
|
||||
$env = C('APP_ENV', null, 'prod');
|
||||
return ['code' => 1000, 'state' => 1000, 'message' => '接口请求错误。' . ($env == 'prod' ? '' : $e->getMessage()) , 'data' => []];
|
||||
}
|
||||
}
|
||||
|
||||
public function request($api, $params)
|
||||
{
|
||||
if ($api['method'] == 'get') {
|
||||
return $this->get($api['uri'], $params);
|
||||
} else {
|
||||
return $this->post($api['uri'], $params);
|
||||
}
|
||||
}
|
||||
|
||||
protected function post($uri, array $params = [])
|
||||
{
|
||||
$response = $this->client->post($uri, [
|
||||
'verify' => false,
|
||||
'form_params' => $params,
|
||||
]);
|
||||
$result = (string)$response->getBody();
|
||||
/* var_dump($uri);
|
||||
var_dump($params);
|
||||
var_dump($result); */
|
||||
return json_decode($result, true);
|
||||
}
|
||||
|
||||
protected function get($uri, array $params = [])
|
||||
{
|
||||
$response = $this->client->get($uri, [
|
||||
'verify' => false,
|
||||
'query' => $params,
|
||||
]);
|
||||
$result = (string)$response->getBody();
|
||||
return json_decode($result, true);
|
||||
}
|
||||
|
||||
protected function sign($params)
|
||||
{
|
||||
unset($params[self::SIGN_NAME]);
|
||||
ksort($params);
|
||||
$params['key'] = C('GAME_CAT_KEY');
|
||||
$signRows = [];
|
||||
foreach ($params as $key => $value) {
|
||||
$signRows[] = $key . '=' . $value;
|
||||
}
|
||||
// var_dump(implode('&', $signRows));
|
||||
return md5(implode('&', $signRows));
|
||||
}
|
||||
}
|
@ -0,0 +1,824 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Home\Controller;
|
||||
|
||||
use Base\Model\PromoteModel;
|
||||
use Base\Service\PromoteService;
|
||||
use OSS\Core\OssException;
|
||||
use Base\Tool\GameCatClient;
|
||||
use Think\Model;
|
||||
use Base\Service\TestingResourceService;
|
||||
|
||||
class TestingResourceController extends BaseController
|
||||
{
|
||||
private $gameBaseQuota = [
|
||||
229 => 300,
|
||||
230 => 300,
|
||||
];
|
||||
|
||||
public function index()
|
||||
{
|
||||
$createTimeStart = I('create_time_start', '');
|
||||
$createTimeEnd = I('create_time_end', '');
|
||||
$gameId = I('game_id', 0);
|
||||
$serverId = I('server_id', '');
|
||||
$account = I('account');
|
||||
$roleName = I('role_name');
|
||||
|
||||
$loginPromote = $this->getLoginPromote();
|
||||
|
||||
$conditions = [];
|
||||
$subConditions = [
|
||||
'_string' => '1=1'
|
||||
];
|
||||
|
||||
$promoteService = new PromoteService();
|
||||
$visibleGameIds = $promoteService->getVisibleGameIds($loginPromote);
|
||||
$strCondition = 'game_id in (0)';
|
||||
if (count($visibleGameIds) > 0) {
|
||||
$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');
|
||||
}
|
||||
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;
|
||||
|
||||
$query = M('user_play_info', 'tab_')->where($conditions)->order('create_time desc');
|
||||
|
||||
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'])
|
||||
];
|
||||
}
|
||||
|
||||
$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 getGameRoleId($gameId, $roleId)
|
||||
{
|
||||
return $gameId . '#' . $roleId;
|
||||
}
|
||||
|
||||
public function addTestingUsers()
|
||||
{
|
||||
$loginPromote = $this->getLoginPromote();
|
||||
$accountsStr = trim(I('accounts', ''), ',');
|
||||
if ($accountsStr == '') {
|
||||
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,
|
||||
]]);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
$role = null;
|
||||
if ($id != 0) {
|
||||
$role = M('user_play_info', 'tab_')
|
||||
->field(['id', 'role_id', 'user_id', 'game_id', 'server_id', 'user_account', 'role_name', 'testing_other_quota'])
|
||||
->where(['id' => $id])
|
||||
->find();
|
||||
}
|
||||
|
||||
$servers = [];
|
||||
$bindingRole = null;
|
||||
if ($role) {
|
||||
$servers = M('server', 'tab_')->field('id,server_name,server_id')->where(['game_id' => $role['game_id']])->order('server_id asc')->select();
|
||||
$binding = M('testing_binding', 'tab_')->where(['game_id' => $role['game_id'], 'role_id' => $role['role_id']])->find();
|
||||
if ($binding) {
|
||||
$bindingRole = M('user_play_info', 'tab_')
|
||||
->field(['id', 'role_id', 'user_id', 'game_id', 'server_id', 'user_account', 'role_name'])
|
||||
->where(['game_id' => $binding['game_id'], 'role_id' => $binding['bind_role_id']])
|
||||
->find();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo 目前固定游戏猫
|
||||
*/
|
||||
$games = M('game', 'tab_')->field(['id' , 'game_name'])->where(['id' => ['in', [229, 230]]])->select();
|
||||
$this->assign('games', $games);
|
||||
$this->assign('servers', $servers);
|
||||
$this->assign('bindingRole', $bindingRole);
|
||||
$this->assign('role', $role);
|
||||
$this->assign('quota', $this->getRemainQuota($role, $bindingRole));
|
||||
$this->display();
|
||||
}
|
||||
|
||||
public function doApply()
|
||||
{
|
||||
$gameId = I('game_id', 0);
|
||||
$roleId = I('role_id', '');
|
||||
$serverId = I('server_id', 0);
|
||||
$userAccount = I('user_account', '');
|
||||
$records = I('records', []);
|
||||
$loginPromote = $this->getLoginPromote();
|
||||
|
||||
if ($loginPromote['level'] > 2) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '权限不足']);
|
||||
}
|
||||
|
||||
$resources = [];
|
||||
/**
|
||||
* @todo 目前仅限游戏猫
|
||||
*/
|
||||
if ($gameId == 229) {
|
||||
$resources = $this->getGameCatResources('android');
|
||||
} elseif ($gameId == 230) {
|
||||
$resources = $this->getGameCatResources('ios');
|
||||
} else {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '该游戏不可申请资源']);
|
||||
}
|
||||
|
||||
$binding = M('testing_binding', 'tab_')->where(['game_id' => $gameId, 'role_id' => $roleId])->find();
|
||||
/* if (is_null($binding)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '该角色未绑定玩家角色']);
|
||||
} */
|
||||
|
||||
$user = M('user', 'tab_')->field(['id', 'promote_id'])->where(['account' => $userAccount])->find();
|
||||
if (is_null($user)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '玩家账号不存在']);
|
||||
}
|
||||
$testingUser = M('testing_user', 'tab_')->where(['user_id' => $user['id']])->find();
|
||||
if (is_null($testingUser)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '测试账号不存在']);
|
||||
}
|
||||
|
||||
$server = M('server', 'tab_')->field(['id', 'server_name', 'server_id'])->where(['id' => $serverId])->find();
|
||||
if (is_null($server)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '区服不存在']);
|
||||
}
|
||||
|
||||
$promoteService = new PromoteService();
|
||||
|
||||
$role = M('user_play_info', 'tab_')
|
||||
->field(['id', 'role_id', 'promote_id', 'game_id', 'testing_other_quota'])
|
||||
->where(['user_id' => $user['id'], 'game_id' => $gameId, 'server_id' => $server['server_id'], 'role_id' => $roleId])
|
||||
->find();
|
||||
if (is_null($role)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '角色不存在']);
|
||||
}
|
||||
|
||||
$otherRoleBatch = M('testing_resource_batch', 'tab_')
|
||||
->where([
|
||||
'user_id' => $user['id'],
|
||||
'game_id' => $gameId,
|
||||
'server_id' => $server['server_id'],
|
||||
'role_id' => ['neq', $roleId],
|
||||
'verify_status' => ['in', [0, 1]],
|
||||
])
|
||||
->find();
|
||||
if ($otherRoleBatch) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '每个账号同区服只能申请一个角色']);
|
||||
}
|
||||
|
||||
$testPromote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $role['promote_id']])->find();
|
||||
if (is_null($testPromote) || !$promoteService->isSubOrSelf($testPromote, $loginPromote)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '测试角色所属推广员异常']);
|
||||
}
|
||||
|
||||
$bindingRole = null;
|
||||
if ($binding) {
|
||||
$bindingRole = M('user_play_info', 'tab_')
|
||||
->field(['id', 'role_id', 'user_id', 'promote_id', 'game_id'])
|
||||
->where(['game_id' => $gameId, 'role_id' => $binding['bind_role_id']])
|
||||
->find();
|
||||
if (is_null($bindingRole)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '绑定玩家角色不存在']);
|
||||
}
|
||||
$bindPromote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $bindingRole['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' => '测试账号与玩家账号所属推广员不同']);
|
||||
} */
|
||||
}
|
||||
|
||||
$amount = 0;
|
||||
foreach ($records as $key => $record) {
|
||||
if (isset($resources[$record['resource_id']])) {
|
||||
$value = $resources[$record['resource_id']]['amount'];
|
||||
$records[$key]['value'] = $value;
|
||||
$records[$key]['resource_name'] = $resources[$record['resource_id']]['name'];
|
||||
$amount += $record['num'] * $value;
|
||||
} else {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '含有资源内容不存在']);
|
||||
}
|
||||
/**
|
||||
* @todo 游戏猫只能每个资源数量只能为1
|
||||
*/
|
||||
if ($record['num'] != 1) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '该游戏每次申请单项资源数量只能为1']);
|
||||
}
|
||||
}
|
||||
|
||||
$remainQuota = $this->getRemainQuota($role, $bindingRole);
|
||||
if ($amount > $remainQuota) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '额度不足']);
|
||||
}
|
||||
|
||||
$batchNo = date('YmdHis') . substr(md5($loginPromote['id'] . strval(microtime(true)) . rand(0, 9999)), 8, 16);
|
||||
|
||||
try {
|
||||
$model = new Model();
|
||||
$model->startTrans();
|
||||
|
||||
$batch = [
|
||||
'batch_no' => $batchNo,
|
||||
'user_id' => $testingUser['user_id'],
|
||||
'game_id' => $gameId,
|
||||
'role_id' => $roleId,
|
||||
'server_id' => $serverId,
|
||||
'apply_promote_id' => $loginPromote['id'],
|
||||
'apply_amount' => $amount,
|
||||
'provide_status' => 0,
|
||||
'verify_status' => 0,
|
||||
'create_time' => time(),
|
||||
'update_time' => time(),
|
||||
];
|
||||
$batchId = M('testing_resource_batch', 'tab_')->add($batch);
|
||||
$i = 1;
|
||||
foreach ($records as $record) {
|
||||
$orderNo = $batchNo . '_' . $i;
|
||||
$order = [
|
||||
'batch_id' => $batchId,
|
||||
'order_no' => $orderNo,
|
||||
'ref_id' => $record['resource_id'],
|
||||
'ref_name' => $record['resource_name'],
|
||||
'ref_amount' => $record['value'],
|
||||
'num' => $record['num'],
|
||||
'amount' => $record['num'] * $record['value'],
|
||||
'remark' => $record['remark'],
|
||||
];
|
||||
M('testing_resource_order', 'tab_')->add($order);
|
||||
}
|
||||
$model->commit();
|
||||
return $this->ajaxReturn(['status' => 1, 'message' => '申请成功,等待审核']);
|
||||
} catch (\Exception $e) {
|
||||
$model->rollback();
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '系统异常' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
public function bindRole()
|
||||
{
|
||||
$gameId = I('game_id', 0);
|
||||
$testingRoleId = I('testing_role_id', '');
|
||||
$bindRoleId = I('bind_role_id', '');
|
||||
$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' => '该测试账号角色已绑定有角色']);
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
$map = [
|
||||
'id' => ['in', [229, 230]]
|
||||
];
|
||||
$loginPromote = $this->getLoginPromote();
|
||||
$promoteService = new PromoteService();
|
||||
$visibleGameIds = $promoteService->getVisibleGameIds($loginPromote);
|
||||
$map['_string'] = 'id in (0)';
|
||||
if (count($visibleGameIds) > 0) {
|
||||
$map['_string'] = 'id in (' . implode(',', $visibleGameIds) . ')';
|
||||
}
|
||||
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 getResourceTypes()
|
||||
{
|
||||
$gameId = I('game_id', 0);
|
||||
$resourceTypes = [];
|
||||
|
||||
/**
|
||||
* @todo 目前固定游戏猫
|
||||
*/
|
||||
if ($gameId == 229) {
|
||||
$resourceTypes[] = ['id' => 1, 'name' => '通用'];
|
||||
} elseif ($gameId == 230) {
|
||||
$resourceTypes[] = ['id' => 2, 'name' => '通用'];
|
||||
}
|
||||
return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['resourceTypes' => $resourceTypes]]);
|
||||
}
|
||||
|
||||
public function getResources()
|
||||
{
|
||||
$typeId = I('type_id', 0);
|
||||
|
||||
$resources = [];
|
||||
|
||||
/**
|
||||
* @todo 目前固定游戏猫资源类型ID
|
||||
*/
|
||||
if ($typeId == 2) {
|
||||
$resources = $this->getGameCatResources('ios');
|
||||
} elseif ($typeId == 1) {
|
||||
$resources = $this->getGameCatResources('andriod');
|
||||
}
|
||||
|
||||
return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['resources' => $resources]]);
|
||||
}
|
||||
|
||||
public function getUserRoles()
|
||||
{
|
||||
$gameId = I('game_id', 0);
|
||||
$serverId = I('server_id', 0);
|
||||
$userAccount = I('user_account', '');
|
||||
$server = M('server', 'tab_')->field(['id', 'server_name', 'server_id'])->where(['id' => $serverId])->find();
|
||||
if (is_null($server)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '区服不存在']);
|
||||
}
|
||||
|
||||
$user = M('user', 'tab_')->field(['id', 'promote_id'])->where(['account' => $userAccount])->find();
|
||||
if (is_null($user)) {
|
||||
return $this->ajaxReturn(['status' => 0, 'message' => '账号不存在']);
|
||||
}
|
||||
|
||||
$testingUser = M('testing_user', 'tab_')->where(['user_account' => $userAccount])->find();
|
||||
$isTestingAccount = is_null($testingUser) ? false : true;
|
||||
|
||||
$roles = M('user_play_info', 'tab_')
|
||||
->field(['id', 'role_id', 'role_name'])
|
||||
->where(['user_account' => $userAccount, 'game_id' => $gameId, 'server_id' => $server['server_id']])
|
||||
->select();
|
||||
return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['roles' => $roles, 'is_testing_account' => $isTestingAccount]]);
|
||||
}
|
||||
|
||||
private function getGameCatResources($deviceType)
|
||||
{
|
||||
$resources = [];
|
||||
$gameCatClient = new GameCatClient();
|
||||
$result = $gameCatClient->api('get-pay-type', ['device_type' => $deviceType]);
|
||||
if ($result['state'] == 1) {
|
||||
$items = $result['data'];
|
||||
foreach ($items as $item) {
|
||||
$resources[$item['supportItem']] = [
|
||||
'ref_id' => $item['supportItem'],
|
||||
'name' => $item['content'],
|
||||
'amount' => $item['amount'],
|
||||
];
|
||||
}
|
||||
}
|
||||
return $resources;
|
||||
}
|
||||
}
|
@ -0,0 +1,574 @@
|
||||
<extend name="Public/basic"/>
|
||||
<block name="body">
|
||||
<style>
|
||||
.trunk-search .form-group {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.normal_table input {
|
||||
position: relative;
|
||||
padding: 5px;
|
||||
border: 1px solid #E5E5E5;
|
||||
border-radius: 4px;
|
||||
height: 25px;
|
||||
}
|
||||
.normal_table td {
|
||||
padding: 5px;
|
||||
}
|
||||
.normal_table td select {
|
||||
width: 100%;
|
||||
}
|
||||
.normal_table td button {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
display: block;
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.normal_table td button.delete-row {
|
||||
background-color: rgb(249,104,104);
|
||||
}
|
||||
.btn-row {
|
||||
position: relative;
|
||||
font-size: 11px;
|
||||
margin-top: 28px;
|
||||
text-align: center;
|
||||
}
|
||||
.btn-row button {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
display: block;
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
.btn-row button.close-btn {
|
||||
background: #E5E5E5;
|
||||
color: #535875;
|
||||
}
|
||||
.form-group .static-input {
|
||||
line-height: 32px;
|
||||
display: inline-block;
|
||||
}
|
||||
.trunk-search button {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
display: block;
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
.info-row {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.info-row button {
|
||||
width: 120px;
|
||||
height: 25px;
|
||||
display: block;
|
||||
background: #E5E5E5;
|
||||
color: #535875;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.info-row button.bind-btn {
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
<div class="page-search normal_list promoteCoin-record-search" style="padding: 20px;">
|
||||
<div class="trunk-content article">
|
||||
<div class="trunk-search clearfix" style="margin-bottom: 10px;">
|
||||
<form method="post" class="clearfix">
|
||||
<div class="clearfix">
|
||||
<div class="form-group fl">
|
||||
<select id="game-select" name="" class="select_gallery" style="width:150px" <?php if($role):?>disabled<?php endif;?>>
|
||||
<option value="0">请选择游戏</option>
|
||||
<?php foreach($games as $game):?>
|
||||
<option value="<?=$game['id']?>" <?php if($role && $role['game_id'] == $game['id']):?>selected<?php endif;?>>
|
||||
<?=$game['game_name']?>
|
||||
</option>
|
||||
<?php endforeach;?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<select id="server-select" class="select_gallery" style="width:150px" <?php if($role):?>disabled<?php endif;?>>
|
||||
<option value="0">请选择区服</option>
|
||||
<?php foreach($servers as $server):?>
|
||||
<option value="<?=$server['id']?>" <?php if($role && $server['server_id'] == $role['server_id']):?>selected<?php endif;?>>
|
||||
<?=$server['server_name']?>
|
||||
</option>
|
||||
<?php endforeach;?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<input id="test_account" type="text" name="account" class="txt normal_txt" placeholder="请输入测试资源账号" value="{$role.user_account}" <?php if($role):?>disabled<?php endif;?>>
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<select id="role-select" name="role_id" class="select_gallery" style="width:150px" <?php if($role):?>disabled<?php endif;?>>
|
||||
<option value="">请选择角色</option>
|
||||
<?php if($role):?>
|
||||
<option value="<?=$role['role_id']?>" selected><?=$role['role_name']?></option>
|
||||
<?php endif;?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($role):?>
|
||||
<div class="info-row">
|
||||
<?php if($bindingRole):?>
|
||||
<button type="button">绑定角色: <?= $bindingRole['role_name']?></button>
|
||||
<?php else:?>
|
||||
<button id="bind-btn" class="bind-btn" type="button">绑定玩家角色</button>
|
||||
<?php endif;?>
|
||||
<div class="" style="display:inline-block; margin-left: 10px;">
|
||||
当前可用额度:<span id="quota" data-quota="<?=$quota?>"><?=$quota?></span> 待审核额度:<span id="verify-quota">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="clearfix" style="margin-top: 10px;">
|
||||
<div class="form-group fl">
|
||||
<select id="resource-type-select" name="resource_type_id" style="width:150px" class="select_gallery">
|
||||
<option value="">请选择资源类型</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<select id="resource-select" name="resource_id" style="width:150px" class="select_gallery">
|
||||
<option value="">请选择资源内容</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<input id="remark-input" type="text" name="remark" class="txt normal_txt" id="uid" placeholder="请输入备注" value="">
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<p id="resource-amount" class="static-input">资源价值: --</p>
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<p class="static-input">资源数量: 1</p>
|
||||
<!-- <input id="num-input" type="text" name="num" class="txt normal_txt" id="uid" placeholder="请输入资源数量" value=""> -->
|
||||
</div>
|
||||
<div class="form-group fl">
|
||||
<button id="add-row" class="add-row" type="button">增加</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="trunk-list list_normal">
|
||||
<div class="table-wrapper" style="height: 280px;">
|
||||
<table id="resource-table" class="table normal_table">
|
||||
<thead>
|
||||
<tr class="table-header">
|
||||
<th width="150">资源类型</th>
|
||||
<th width="150">资源内容</th>
|
||||
<th>资源价值</th>
|
||||
<th>资源数量</th>
|
||||
<th>备注</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="btn-row clearfix">
|
||||
<button id="submit-btn" class="submit-btn" type="button">提交</button>
|
||||
<button id="close-btn" class="close-btn" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="bind-box" class="layer-box" style="display: none;">
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label>玩家账号</label>
|
||||
<div class="form-item" style="width: 250px">
|
||||
<input id="bind_account" name="account" type="text" class="form-input" style="width: 100%;">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>玩家角色</label>
|
||||
<div class="form-item" style="width: 250px">
|
||||
<select id="bind-role-select" name="role_id" style="width:270px" class="select_gallery">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<a id="submit-bind" href="javascript:;" class="add-submit btn">确定</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</block>
|
||||
<block name="script">
|
||||
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(".select_gallery").select2()
|
||||
var globalGameId = $('#game-select').val()
|
||||
if (globalGameId > 0) {
|
||||
initTable(globalGameId)
|
||||
}
|
||||
$('#game-select').on({
|
||||
change: function () {
|
||||
var gameId = $(this).val()
|
||||
globalGameId = gameId
|
||||
$.ajax({
|
||||
url: "{:U('getServers')}",
|
||||
type: "post",
|
||||
data: { game_id: gameId },
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
if (result.status == 1) {
|
||||
var servers = result.data.servers
|
||||
var html = "<option value='0'>请选择区服</option>";
|
||||
for (var i in servers){
|
||||
html += "<option value='"+servers[i].id+"'>"+servers[i].server_name+"</option>"
|
||||
}
|
||||
$("#server-select").html(html);
|
||||
$("#server-select").select2();
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
initTable(gameId)
|
||||
}
|
||||
})
|
||||
var resourceTypes = new Array()
|
||||
var rowCount = 0
|
||||
function initTable(gameId) {
|
||||
var table = $('#resource-table');
|
||||
table.find('.normal-row').remove()
|
||||
$.ajax({
|
||||
url: "{:U('getResourceTypes')}",
|
||||
type: "post",
|
||||
data: { game_id: gameId },
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
if (result.status == 1) {
|
||||
rowCount = 0
|
||||
resourceTypes = result.data.resourceTypes
|
||||
var selector = $('#resource-type-select')
|
||||
var html = getResourceTypesHtml()
|
||||
selector.html(html)
|
||||
selector.select2();
|
||||
|
||||
var resourceSelector = $('#resource-select')
|
||||
resourceSelector.html(getResourcesHtml([]))
|
||||
resourceSelector.select2();
|
||||
|
||||
$('#resource-amount').html('资源价值:--')
|
||||
$('#resource-table tbody').html('')
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
function getResourceTypesHtml() {
|
||||
var html = "<option value=''>请选择资源类型</option>";
|
||||
for (var i in resourceTypes) {
|
||||
html += "<option value='"+resourceTypes[i].id+"'>"+resourceTypes[i].name+"</option>"
|
||||
}
|
||||
return html
|
||||
}
|
||||
$('#resource-type-select').change(function () {
|
||||
var that = this
|
||||
var typeId = $(this).val()
|
||||
$.ajax({
|
||||
url: "{:U('getResources')}",
|
||||
type: "post",
|
||||
data: { type_id: typeId },
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
if (result.status == 1) {
|
||||
var resources = result.data.resources
|
||||
var html = getResourcesHtml(resources)
|
||||
var rowSelect = $('#resource-select')
|
||||
rowSelect.html(html);
|
||||
rowSelect.select2();
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
function getResourcesHtml(resources) {
|
||||
var html = "<option value=''>请选择资源内容</option>";
|
||||
for (var i in resources){
|
||||
html += "<option value='"+resources[i].ref_id+"' data-amount="+resources[i].amount+">"+resources[i].name+"</option>"
|
||||
}
|
||||
return html
|
||||
}
|
||||
$('#resource-select').change(function () {
|
||||
var amount = $(this).find('option:selected').attr('data-amount')
|
||||
amount = amount == undefined ? '--' : amount
|
||||
$('#resource-amount').html('资源价值:' + amount)
|
||||
})
|
||||
$('#add-row').click(function () {
|
||||
if (rowCount >= 5) {
|
||||
return layer.msg('最多同时只能添加5条')
|
||||
}
|
||||
var resourceTypeId = $('#resource-type-select').val()
|
||||
var resourceId = $('#resource-select').val()
|
||||
var resourceTypeName = $('#resource-type-select option:selected').html()
|
||||
var resourceName = $('#resource-select option:selected').html()
|
||||
var amount = $('#resource-select option:selected').attr('data-amount')
|
||||
amount = amount == undefined ? '--' : amount
|
||||
// var num = $('#num-input').val()
|
||||
var num = 1
|
||||
var remark = $('#remark-input').val()
|
||||
|
||||
if (resourceTypeId == '') {
|
||||
return layer.msg('请选择资源类型')
|
||||
}
|
||||
if (resourceId == '') {
|
||||
return layer.msg('请选择资源内容')
|
||||
}
|
||||
if (num == '') {
|
||||
return layer.msg('请输入资源数量')
|
||||
}
|
||||
|
||||
var html = '<tr class="normal-row" data-resource-id="' + resourceId + '" data-resource-type-id="' + resourceTypeId + '" >' +
|
||||
'<td>' + resourceTypeName + '</td>' +
|
||||
'<td>' + resourceName + '</td>' +
|
||||
'<td class="amount">' + amount + '</td>' +
|
||||
'<td class="num"><input name="num" type="text" value="' + num + '" readonly></td>' +
|
||||
'<td class="remark"><input name="remark" type="text" value="' + remark + '"></td>' +
|
||||
'<td><button class="delete-row" type="button" class="danger-btn">删除</button></td>' +
|
||||
'</tr>';
|
||||
|
||||
$('#resource-table tbody').append(html)
|
||||
rowCount ++
|
||||
$(".select_gallery").select2()
|
||||
statQuota()
|
||||
})
|
||||
$('#resource-table').on('click', '.delete-row', function () {
|
||||
var tr = $(this).parents('tr').eq(0)
|
||||
rowCount --
|
||||
tr.remove()
|
||||
statQuota()
|
||||
})
|
||||
$('#resource-table').on('blur', 'input[name=num]', function() {
|
||||
if($(this).val() == '') {
|
||||
return layer.msg('请输入资源数量')
|
||||
} else {
|
||||
statQuota()
|
||||
}
|
||||
})
|
||||
function statQuota() {
|
||||
var quota = $('#quota').attr('data-quota')
|
||||
var verifyQuota = 0
|
||||
$('#resource-table').find('.normal-row').each(function (index, ele) {
|
||||
verifyQuota += $(ele).find('.amount').html() * $(ele).find('.num').children('input').val()
|
||||
})
|
||||
$('#verify-quota').html(verifyQuota)
|
||||
$('#quota').html(quota-verifyQuota)
|
||||
}
|
||||
$('#test_account').on({
|
||||
blur: function() {
|
||||
var gameId = $('#game-select').val()
|
||||
if (gameId == 0) {
|
||||
return layer.msg('请选择游戏')
|
||||
}
|
||||
var serverId = $('#server-select').val()
|
||||
if (serverId == 0) {
|
||||
return layer.msg('请选择区服')
|
||||
}
|
||||
var userAccount = $('#test_account').val()
|
||||
if (userAccount == '') {
|
||||
return layer.msg('请输入测试资源账号')
|
||||
}
|
||||
getUserRoles(userAccount, gameId, serverId, function(roles, isTestingAccount) {
|
||||
if (roles.length == 0) {
|
||||
return layer.msg('当前账号在该区服未创建角色')
|
||||
}
|
||||
if (!isTestingAccount) {
|
||||
return layer.msg('此账号非测试账号')
|
||||
}
|
||||
var html = "<option value=''>请选择角色</option>";
|
||||
for (var i in roles){
|
||||
html += "<option value='"+roles[i].role_id+"'>"+roles[i].role_name+"</option>"
|
||||
}
|
||||
$("#role-select").html(html);
|
||||
$("#role-select").select2();
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
function getUserRoles(userAccount, gameId, serverId, callback) {
|
||||
$.ajax({
|
||||
url: "{:U('getUserRoles')}",
|
||||
type: "post",
|
||||
data: { user_account: userAccount, game_id: gameId, server_id: serverId },
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
if (result.status == 1) {
|
||||
var roles = result.data.roles
|
||||
var isTestingAccount = result.data.is_testing_account
|
||||
callback(roles, isTestingAccount)
|
||||
} else {
|
||||
layer.msg(result.message)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('#bind_account').on({
|
||||
blur: function () {
|
||||
var gameId = $('#game-select').val()
|
||||
if (gameId == 0) {
|
||||
return layer.msg('请选择游戏')
|
||||
}
|
||||
var serverId = $('#server-select').val()
|
||||
if (serverId == 0) {
|
||||
return layer.msg('请选择区服')
|
||||
}
|
||||
var userAccount = $('#bind_account').val()
|
||||
if (userAccount == '') {
|
||||
return layer.msg('请输入玩家账号')
|
||||
}
|
||||
getUserRoles(userAccount, gameId, serverId, function(roles, isTestingAccount) {
|
||||
if (roles.length == 0) {
|
||||
return layer.msg('玩家账号在该区服未创建角色')
|
||||
}
|
||||
if (isTestingAccount) {
|
||||
return layer.msg('此账号为测试账号,无法绑定')
|
||||
}
|
||||
var html = "<option value=''>请选择角色</option>";
|
||||
for (var i in roles){
|
||||
html += "<option value='"+roles[i].role_id+"'>"+roles[i].role_name+"</option>"
|
||||
}
|
||||
$("#bind-role-select").html(html);
|
||||
$("#bind-role-select").select2();
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
function getRecords() {
|
||||
var records = []
|
||||
$('#resource-table tbody tr').each(function (index, tr) {
|
||||
var num = $(tr).find('input[name=num]').val()
|
||||
var remark = $(tr).find('input[name=remark]').val()
|
||||
var resourceId = $(tr).attr('data-resource-id')
|
||||
var resourceTypeId = $(tr).attr('data-resource-type-id')
|
||||
records.push({
|
||||
resource_id: resourceId,
|
||||
resource_type_id: resourceTypeId,
|
||||
num: num,
|
||||
remark: remark,
|
||||
})
|
||||
})
|
||||
return records
|
||||
}
|
||||
|
||||
$('#bind-btn').click(function () {
|
||||
var box = $('#bind-box')
|
||||
layer.open({
|
||||
title: '绑定玩家角色',
|
||||
type: 1,
|
||||
content: box,
|
||||
area: ['500px', '250px'],
|
||||
zIndex: 250,
|
||||
scrollbar: false
|
||||
})
|
||||
});
|
||||
|
||||
$('#submit-bind').click(function () {
|
||||
var gameId = $('#game-select').val()
|
||||
if (gameId == 0) {
|
||||
return layer.msg('请选择游戏')
|
||||
}
|
||||
var roleId = $('#role-select').val()
|
||||
if (roleId == 0) {
|
||||
return layer.msg('请选择测试账号角色')
|
||||
}
|
||||
var bindRoleId = $('#bind-role-select').val()
|
||||
if (bindRoleId == 0) {
|
||||
return layer.msg('请选择玩家角色')
|
||||
}
|
||||
$.ajax({
|
||||
url: "{:U('bindRole')}",
|
||||
type: "post",
|
||||
data: { game_id: gameId, bind_role_id: bindRoleId, testing_role_id: roleId},
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
if (result.status == 1) {
|
||||
layer.msg(result.message, function(){
|
||||
window.location.href = window.location.href
|
||||
})
|
||||
} else {
|
||||
layer.msg(result.message)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
$('#submit-btn').on({
|
||||
click: function () {
|
||||
var records = getRecords()
|
||||
|
||||
if (records.length == 0) {
|
||||
return layer.msg('至少添加一项资源申请')
|
||||
}
|
||||
|
||||
for (var i in records) {
|
||||
if (records[i].num == '') {
|
||||
return layer.msg('请输入资源数量')
|
||||
}
|
||||
}
|
||||
|
||||
var gameId = $('#game-select').val()
|
||||
var serverId = $('#server-select').val()
|
||||
var userAccount = $('#test_account').val()
|
||||
var roleId = $('#role-select').val()
|
||||
|
||||
if (gameId == 0) {
|
||||
return layer.msg('请选择游戏')
|
||||
}
|
||||
if (serverId == 0) {
|
||||
return layer.msg('请选择区服')
|
||||
}
|
||||
if (userAccount == '') {
|
||||
return layer.msg('请输入测试资源账号')
|
||||
}
|
||||
if (roleId == 0) {
|
||||
return layer.msg('请选择角色')
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "{:U('doApply')}",
|
||||
type: "post",
|
||||
data: { records: records, game_id: gameId, server_id: serverId, user_account: userAccount, role_id: roleId},
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
if (result.status == 1) {
|
||||
layer.msg(result.message, function(){
|
||||
parent.window.location.href = "{:U('batches')}"
|
||||
})
|
||||
} else {
|
||||
layer.msg(result.message)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
$('#close-btn').on({
|
||||
click: function () {
|
||||
var index = parent.layer.getFrameIndex(window.name)
|
||||
parent.layer.close(index)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</block>
|
@ -0,0 +1,156 @@
|
||||
<extend name="Public/basic"/>
|
||||
<block name="body">
|
||||
<style>
|
||||
.trunk-search .form-group {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.normal_table input {
|
||||
position: relative;
|
||||
padding: 5px;
|
||||
border: 1px solid #E5E5E5;
|
||||
border-radius: 4px;
|
||||
height: 25px;
|
||||
}
|
||||
.normal_table td {
|
||||
padding: 5px;
|
||||
}
|
||||
.normal_table td select {
|
||||
width: 100%;
|
||||
}
|
||||
.normal_table td button {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
display: block;
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.normal_table td button.delete-row {
|
||||
background-color: rgb(249,104,104);
|
||||
}
|
||||
.btn-row {
|
||||
position: relative;
|
||||
font-size: 11px;
|
||||
margin-top: 28px;
|
||||
text-align: center;
|
||||
}
|
||||
.btn-row button {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
display: block;
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
.btn-row button.close-btn {
|
||||
background: #E5E5E5;
|
||||
color: #535875;
|
||||
}
|
||||
.form-group .static-input {
|
||||
line-height: 32px;
|
||||
display: inline-block;
|
||||
}
|
||||
.trunk-search button {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
display: block;
|
||||
background: #409eff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
.info-row {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.info-row button {
|
||||
width: 120px;
|
||||
height: 25px;
|
||||
display: block;
|
||||
background: #E5E5E5;
|
||||
color: #535875;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.normal_table td .status-0 {
|
||||
color: #e6a23c;
|
||||
}
|
||||
.normal_table td .status-1 {
|
||||
color: #67c23a;
|
||||
}
|
||||
.normal_table td .status-2 {
|
||||
color: #f56c6c;
|
||||
}
|
||||
.normal_table tr td {
|
||||
padding: 10px 5px;
|
||||
}
|
||||
</style>
|
||||
<div class="page-search normal_list promoteCoin-record-search" style="padding: 20px;">
|
||||
<div class="trunk-content article">
|
||||
<div class="trunk-list list_normal">
|
||||
<div class="table-wrapper" style="height: 200px;">
|
||||
<table id="resource-table" class="table normal_table">
|
||||
<tr class="odd zwm_tr">
|
||||
<th>申请ID</th>
|
||||
<th>申请时间</th>
|
||||
<th>游戏名称</th>
|
||||
<th>玩家账号</th>
|
||||
<th>区服名称</th>
|
||||
<th>角色名称</th>
|
||||
<th>申请人</th>
|
||||
<th>资源内容</th>
|
||||
<th>资源价值</th>
|
||||
<th>申请数量</th>
|
||||
<th>申请金额</th>
|
||||
<th>申请备注</th>
|
||||
<th>发放状态</th>
|
||||
</tr>
|
||||
<empty name="records">
|
||||
<tr><td colspan="14" style="text-align: center;height: 45vh;"><img src="__IMG__/20180207/icon_wushujv2.png"/><p style="line-height: 40px;color: #A5A5A5;">暂无数据</p></td></tr>
|
||||
<else />
|
||||
<volist name="records" id="record" mod="2">
|
||||
<tr data-id="{$record.id}" class="<eq name='mod' value='1'>odd</eq>">
|
||||
<td>{$record.id}</td>
|
||||
<td>
|
||||
<?=substr($record['create_time'], 0, 10)?>
|
||||
<br>
|
||||
<?=substr($record['create_time'], 10)?>
|
||||
</td>
|
||||
<td>{$record.game_name}</td>
|
||||
<td>{$record.user_account}</td>
|
||||
<td>{$record.server_name}</td>
|
||||
<td>{$record.role_name}</td>
|
||||
<td>{$record.apply_promote_account}</td>
|
||||
<td>{$record.ref_name}</td>
|
||||
<td>{$record.ref_amount}</td>
|
||||
<td>{$record.num}</td>
|
||||
<td>{$record.amount}</td>
|
||||
<td>{$record.remark}</td>
|
||||
<td><span class="status-{$record.provide_status}">{$record.provide_status_text}</span></td>
|
||||
</tr>
|
||||
</volist>
|
||||
</empty>
|
||||
</table>
|
||||
</div>
|
||||
<!-- <div class="pagenation clearfix">
|
||||
{$pagination}
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</block>
|
||||
<block name="script">
|
||||
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
</script>
|
||||
</block>
|
Loading…
Reference in New Issue