From 49751b8760dae1da6fc932a0e06a93c4f32533a0 Mon Sep 17 00:00:00 2001 From: ELF <360197197@qq.com> Date: Mon, 10 Aug 2020 15:29:37 +0800 Subject: [PATCH 01/57] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/ConsoleController.class.php | 15 + .../Base/Service/PromoteService.class.php | 12 + .../TestingResourceController.class.php | 271 ++++++++++ .../View/default/TestingResource/index.html | 491 ++++++++++++++++++ Data/update.sql | 74 +++ Public/Home/css/20180207/common.css | 6 + 6 files changed, 869 insertions(+) create mode 100644 Application/Home/Controller/TestingResourceController.class.php create mode 100644 Application/Home/View/default/TestingResource/index.html diff --git a/Application/Admin/Controller/ConsoleController.class.php b/Application/Admin/Controller/ConsoleController.class.php index 771cf52d1..e094f86fe 100644 --- a/Application/Admin/Controller/ConsoleController.class.php +++ b/Application/Admin/Controller/ConsoleController.class.php @@ -131,6 +131,21 @@ class ConsoleController extends Think { var_dump($result); } + public function testGameCat() + { + $key = '123456'; + $params = [ + + ]; + ksort($params); + $paramsStr = http_build_query($params) . '&key=' . $key; + $sign = md5($paramsStr); + + $client = new AggregateClient(); + $result = $client->api('game-data', ['unique_codes' => ['w123'], 'started_at' => '2019-06-27', 'ended_at' => '2020-07-27']); + var_dump($result); + } + public function initMarketAdmin() { $marketService = new MarketService(); diff --git a/Application/Base/Service/PromoteService.class.php b/Application/Base/Service/PromoteService.class.php index 68962de83..2f54f9bbc 100644 --- a/Application/Base/Service/PromoteService.class.php +++ b/Application/Base/Service/PromoteService.class.php @@ -854,6 +854,18 @@ class PromoteService { return M('promote', 'tab_')->field($fields)->where($conditions)->select(); } + public function subInSql($promote, $withSelf = true) + { + $conditions = [ + 'chain' => ['like', $promote['chain'] . $promote['id'] . '/%'] + ]; + if ($withSelf != 0) { + $conditions['_logic'] = 'or'; + $conditions['id'] = $promote['id']; + } + return M('promote', 'tab_')->field(['id'])->where($conditions)->select(false); + } + public function getLevelName($level) { return self::$levels[$level] ?? '未知'; diff --git a/Application/Home/Controller/TestingResourceController.class.php b/Application/Home/Controller/TestingResourceController.class.php new file mode 100644 index 000000000..496e2fa65 --- /dev/null +++ b/Application/Home/Controller/TestingResourceController.class.php @@ -0,0 +1,271 @@ +getLoginPromote(); + + $conditions = []; + $subConditions = [ + '_string' => 'user_id = tab_user_play_info.user_id', + 'promote_id' => $loginPromote['id'], + ]; + + if ($createTimeStart) { + $subConditions['create_time'] = ['egt', strtotime($createTimeStart . ' 00:00:00')]; + } + if ($createTimeEnd) { + $subConditions['create_time'] = ['elt', strtotime($createTimeEnd . ' 23:59:59')]; + } + + $subSql = M('testing_user', 'tab_')->field(['1'])->where($subConditions)->select(false); + $strCondition = 'exists (' . $subSql . ')'; + + 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); + + $roleIds = array_column($roles, 'id'); + $userIds = array_unique(array_column($roles, 'user_id')); + + $users = []; + $bindings = []; + $bindingRoles = []; + if (count($roles) > 0) { + $users = M('user', 'tab_')->field(['id', 'phone'])->where(['id' => ['in', $userIds]])->select(); + $uesrs = index_by_column('id', $users); + $bindings = M('testing_binding', 'tab_')->field()->where(['role_id' => ['in', $roleIds]])->select(); + $bindings = index_by_column('role_id', $bindings); + $bindingRoleIds = array_column($bindings, 'bind_role_id'); + if (count($bindings) > 0) { + $bindingRoles = M('user_play_info', 'tab_')->field(['id', 'role_name'])->where(['id' => ['in', $bindingRoleIds]])->select(); + $bindingRoles = index_by_column('id', $bindingRoles); + } + } + + $records = []; + foreach ($roles as $role) { + $user = $users[$role['user_id']] ?? null; + $binding = $bindings[$role['id']] ?? null; + $bindingRole = $binding && $bindingRoles[$binding['bind_role_id']] ? $bindingRoles[$binding['bind_role_id']] : null; + $records[] = [ + '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' => $binding ? $binding['base_quota'] : 1200, + 'other_quota' => $binding ? $binding['other_quota'] : 0, + 'quota' => 0, + 'verify_amount' => 0, + 'provide_amount' => 0, + 'today_amount' => 0, + 'apply_amount' => 0, + 'status' => '可用', + 'create_time' => date('Y-m-d H:i:s', $role['create_time']) + ]; + } + + $this->assign('count', $count); + $this->assign('pagination', $pagination); + $this->assign('records', $records); + $this->display(); + } + + 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); + $existCount = count($existAccounts); + $newAccounts = array_diff($accounts, $existAccounts); + $errorCount = 0; + $successCount = 0; + if (count($newAccounts)) { + $users = M('user', 'tab_')->field(['id', 'account'])->where(['account' => ['in', $newAccounts]])->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, + 'promote_id' => $loginPromote['id'], + '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() + { + $verifyTimeStart = I('verify_time_start', ''); + $verifyTimeEnd = I('verify_time_end', ''); + $verifyStatus = I('verify_status', -1); + $status = I('status', -1); + $account = I('account'); + + $loginPromote = $this->getLoginPromote(); + $promoteService = new PromoteService(); + + $conditions = [ + '_string' => 'promote_id in (' . $promoteService->subInSql($loginPromote) . ')', + ]; + if ($verifyTimeStart) { + $conditions['verify_time'] = ['egt', strtotime($verifyTimeStart . ' 00:00:00')]; + } + if ($verifyTimeEnd) { + $conditions['verify_time'] = ['elt', strtotime($verifyTimeEnd . ' 23:59:59')]; + } + if ($verifyStatus != -1) { + $conditions['verify_status'] = $verifyStatus; + } + if ($status != -1) { + $conditions['status'] = $status; + } + if ($account) { + $user = M('user', 'tab_')->field(['id'])->where('account like ' . $account . '%')->find(); + if ($user) { + $conditions['user_id'] = $user['id']; + } else { + $conditions['_string'] = '1<>1'; + } + } + $query = M('testing_resource_batch', 'tab_')->where($conditions)->order('create_time desc')->select(); + list($batches, $pagination, $count) = $this->paginate($query); + + $this->assign('count', $count); + $this->assign('pagination', $pagination); + $this->assign('records', $records); + $this->display(); + } + + public function apply() + { + $records = I('records', []); + $batchNo = ''; + $loginPromote = $this->getLoginPromote(); + + $amount = 0; + foreach ($records as $record) { + $amount += $record['num'] * $record['value']; + } + + try { + $batch = [ + 'batch_id' => $batchId, + 'order_no' => $orderNo, + 'user_id' => $record['user_id'], + 'game_id' => $record['game_id'], + 'promote_id' => $loginPromote['id'], + 'amount' => $amount, + 'status' => 0, + 'verify_status' => 0, + 'remark' => $record['remark'], + 'create_time' => time(), + 'update_time' => time(), + ]; + $batchId = M('testing_resource_batch')->add($batch); + $i = 1; + foreach ($records as $record) { + $orderNo = $batchNo . '_' . $i; + $order = [ + 'batch_id' => $batchId, + 'order_no' => $orderNo, + 'testing_resource_id' => $record['resource_id'], + 'num' => $record['num'], + 'amount' => $record['num'] * $record['value'], + 'remark' => $record['remark'], + ]; + M('testing_resource_order')->add($order); + } + } catch (\Exception $e) { + + } + } + + public function bindRole() + { + $testingUserId = I('testing_user_id', 0); + $userAccount = I('user_account', ''); + $roleId = I('role_id', ''); + + $user = M('user', 'tab_')->field(['id', 'account'])->where(['account' => $userAccount])->find(); + if (is_null($user)) { + return $this->ajaxReturn(['status' => 0, 'message' => '用户不存在']); + } + + $existBind = M('testing_user', 'tab_')->field(['id'])->where(['bind_user_id' => $user['id']])->find(); + if ($existBind) { + return $this->ajaxReturn(['status' => 0, 'message' => '该玩家账号已被绑定']); + } + + M('testing_user', 'tab_')->where(['user_id' => $testingUserId])->save([ + 'role_id' => $roleId, + 'bind_user_id' => $user['id'], + 'bind_user_account' => $user['account'], + 'bind_role_id' => $roleId, + ]); + return $this->ajaxReturn(['status' => 1, 'message' => '绑定成功']); + } + + public function getRolesByUser() + { + + } +} \ No newline at end of file diff --git a/Application/Home/View/default/TestingResource/index.html b/Application/Home/View/default/TestingResource/index.html new file mode 100644 index 000000000..8803d252b --- /dev/null +++ b/Application/Home/View/default/TestingResource/index.html @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Data/update.sql b/Data/update.sql index 764f5718e..42af73acb 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -2401,3 +2401,77 @@ INSERT INTO `sys_kv`(`id`, `key`, `value`, `type`, `remark`) VALUES (4, 'cp_comp ALTER TABLE `sj_game_channel`.`sj_cptogether_company` ADD COLUMN `is_qualifity` tinyint(2) NULL COMMENT '是否具有游戏资质 0 否 1 是' AFTER `is_received`; + + +CREATE TABLE `tab_testing_user` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(11) unsigned NOT NULL COMMENT '测试用户ID', + `user_account` varchar(50) not null comment '测试用户账号', + `promote_id` int(11) not null default 0 COMMENT '推广员ID', + `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 禁用 1 可用', + `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间', + `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tab_testing_binding` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `user_id` int(11) unsigned NOT NULL COMMENT '测试用户ID', + `role_id` int(11) NOT NULL default '0' COMMENT '角色ID', + `bind_user_id` int(11) unsigned NOT NULL default 0 COMMENT '绑定用户ID', + `bind_role_id` int(11) NOT NULL default '0' COMMENT '绑定角色ID', + `base_quota` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '初始额度', + `other_quota` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '额外额度', + `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间', + `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tab_testing_resource` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(120) NOT NULL DEFAULT COMMENT '测试资源名称', + `game_id` int(11) NOT NULL COMMENT '游戏ID', + `type_id` int(11) NOT NULL COMMENT '测试资源类型ID', + `price` decimal(12, 2) NOT NULL default '0.00' COMMENT '资源价值', + `identifier` varchar(50) NOT NULL default '与CP对应资源标识' COMMENT '标识符', + `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间', + `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tab_testing_resource_type` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(120) NOT NULL COMMENT '测试资源类型名称', + `game_id` int(11) NOT NULL COMMENT '游戏ID', + `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间', + `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tab_testing_resource_order` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `batch_id` int(11) NOT NULL COMMENT '批次ID', + `order_no` varchar(30) NOT NULL COMMENT '订单号', + `testing_resource_id` int(11) NOT NULL COMMENT '测试资源ID', + `num` int(11) NOT NULL DEFAULT 0 COMMENT '申请数量' + `amount` decimal(12, 2) not null default '0.00' comment '申请金额', + `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tab_testing_resource_batch` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `batch_no` varchar(30) NOT NULL COMMENT '批次号', + `game_id` int(11) NOT NULL DEFAULT '0' COMMENT '游戏ID', + `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID', + `role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色ID', + `amount` decimal(12, 2) not null default '0.00' comment '申请金额', + `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 待发放 1 已经发放 2 拒绝 3 异常', + `promote_id` int(11) not null default 0 COMMENT '推广员ID', + `verify_status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 未审核 1 审核通过 1 未审核通过', + `verify_remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注', + `verify_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '审核时间', + `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间', + `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/Public/Home/css/20180207/common.css b/Public/Home/css/20180207/common.css index 1c304c5ac..83d318091 100644 --- a/Public/Home/css/20180207/common.css +++ b/Public/Home/css/20180207/common.css @@ -364,6 +364,12 @@ input,select,button{outline:none;font-size:14px;font-family:inherit;} 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; From c0fe59864c401511ff50c06eedbfb9b0a3645815 Mon Sep 17 00:00:00 2001 From: ELF <360197197@qq.com> Date: Tue, 11 Aug 2020 20:29:11 +0800 Subject: [PATCH 02/57] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Common/Common/extend.php | 10 +- .../TestingResourceController.class.php | 21 ++-- .../View/default/TestingResource/apply.html | 96 +++++++++++++++++++ .../View/default/TestingResource/index.html | 37 +++++-- 4 files changed, 150 insertions(+), 14 deletions(-) create mode 100644 Application/Home/View/default/TestingResource/apply.html diff --git a/Application/Common/Common/extend.php b/Application/Common/Common/extend.php index 6a50765dc..79d5ba2c7 100644 --- a/Application/Common/Common/extend.php +++ b/Application/Common/Common/extend.php @@ -833,7 +833,15 @@ function Status_recovery($msg){ if (empty($str)) {return $title;} $find = array('%webname%','%gamename%','%newsname%','%giftname%','%gametype%', '%catetitle%', '%gamedevice%'); - $replace = array($title,$array['game_name'],$array['news_title'],$array['giftbag_name'],$array['game_type_name'],$array['cate_title'],$array['game_device']); + $replace = array( + $title, + $array['game_name'] ?? '', + $array['news_title'] ?? '', + $array['giftbag_name'] ?? '', + $array['game_type_name'] ?? '', + $array['cate_title'] ?? '', + $array['game_device'] ?? '' + ); $str = str_replace($find,$replace,$str); return preg_replace('/((-|_)+)?((%[0-9A-Za-z_]*%)|%+)((-|_)+)?/','',$str); diff --git a/Application/Home/Controller/TestingResourceController.class.php b/Application/Home/Controller/TestingResourceController.class.php index 496e2fa65..564f08db1 100644 --- a/Application/Home/Controller/TestingResourceController.class.php +++ b/Application/Home/Controller/TestingResourceController.class.php @@ -23,7 +23,6 @@ class TestingResourceController extends BaseController $conditions = []; $subConditions = [ - '_string' => 'user_id = tab_user_play_info.user_id', 'promote_id' => $loginPromote['id'], ]; @@ -34,8 +33,8 @@ class TestingResourceController extends BaseController $subConditions['create_time'] = ['elt', strtotime($createTimeEnd . ' 23:59:59')]; } - $subSql = M('testing_user', 'tab_')->field(['1'])->where($subConditions)->select(false); - $strCondition = 'exists (' . $subSql . ')'; + $subSql = M('testing_user', 'tab_')->field(['user_id'])->where($subConditions)->select(false); + $strCondition = 'user_id in (' . $subSql . ')'; if ($account) { $user = M('user', 'tab_')->field(['id'])->where('account like ' . $account . '%')->find(); @@ -69,7 +68,7 @@ class TestingResourceController extends BaseController if (count($roles) > 0) { $users = M('user', 'tab_')->field(['id', 'phone'])->where(['id' => ['in', $userIds]])->select(); $uesrs = index_by_column('id', $users); - $bindings = M('testing_binding', 'tab_')->field()->where(['role_id' => ['in', $roleIds]])->select(); + $bindings = M('testing_binding', 'tab_')->where(['role_id' => ['in', $roleIds]])->select(); $bindings = index_by_column('role_id', $bindings); $bindingRoleIds = array_column($bindings, 'bind_role_id'); if (count($bindings) > 0) { @@ -115,12 +114,13 @@ class TestingResourceController extends BaseController { $loginPromote = $this->getLoginPromote(); $accountsStr = trim(I('accounts', ''), ','); - if ($accountsStr = '') { + 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; @@ -145,7 +145,7 @@ class TestingResourceController extends BaseController $successCount ++; } } - return $this->ajaxReturn(['status' => 1, 'message' => '请输入测试资源账号', 'data' => [ + return $this->ajaxReturn(['status' => 1, 'message' => '请求成功', 'data' => [ 'errorCount' => $errorCount, 'successCount' => $successCount, 'existCount' => $existCount, @@ -196,6 +196,15 @@ class TestingResourceController extends BaseController } public function apply() + { + $records = []; + $pagination = ''; + $this->assign('records', $records); + $this->assign('pagination', $pagination); + $this->display(); + } + + public function doApply() { $records = I('records', []); $batchNo = ''; diff --git a/Application/Home/View/default/TestingResource/apply.html b/Application/Home/View/default/TestingResource/apply.html new file mode 100644 index 000000000..f1e997459 --- /dev/null +++ b/Application/Home/View/default/TestingResource/apply.html @@ -0,0 +1,96 @@ + + + + + + + + + \ No newline at end of file diff --git a/Application/Home/View/default/TestingResource/index.html b/Application/Home/View/default/TestingResource/index.html index 8803d252b..76a91aa4f 100644 --- a/Application/Home/View/default/TestingResource/index.html +++ b/Application/Home/View/default/TestingResource/index.html @@ -156,7 +156,7 @@

-
@@ -259,7 +259,7 @@ @@ -293,19 +293,36 @@ timepicker: false }); + $('#apply').click(function () { + var title = '添加测试资源申请' + var url = "{:U('TestingResource/apply')}" + + layer.open({ + title: title, + type: 2, + content: [url , 'no'], + area: ['1000px', '550px'], + zIndex: 250, + scrollbar: false, + }) + }) + $('#add').click(function () { var box = $('#add-box') layer.open({ title: '新增测试账号', type: 1, content: box, - area: ['600px', '330px'], + area: ['800px', '330px'], zIndex: 250, }) }); $('#add-submit').on({ click: function () { + var box = $('#add-box') + var accounts = box.find('[name=accounts]').val() + console.log(accounts) $.ajax({ async: false, url: "{:U('addTestingUsers')}", @@ -314,12 +331,18 @@ data: { accounts: accounts }, success: function (result) { if (result.status == 0) { - layer.msg(result.msg); + layer.msg(result.message); } else { - layer.msg('修改成功'); - setTimeout(function () { + var message = '成功' + result.data.successCount + '个, 失败' + result.data.errorCount + '个, 已存在' + result.data.existCount + '个。' + layer.confirm(message, { + btn: ['确定'] //按钮 + }, function(){ + location.reload(); + }) + // layer.msg(result.message); + /* setTimeout(function () { location.reload(); - }, 1000); + }, 1000); */ } }, error: function () { From 3383b3d2d9c0ee5d83e3aa9b87f076e475451196 Mon Sep 17 00:00:00 2001 From: ELF <360197197@qq.com> Date: Wed, 12 Aug 2020 20:04:39 +0800 Subject: [PATCH 03/57] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/GameApiController.class.php | 27 ++ Application/Base/Tool/GameCatClient.class.php | 84 ++++ .../TestingResourceController.class.php | 199 +++++++- .../View/default/TestingResource/apply.html | 455 ++++++++++++++++-- .../View/default/TestingResource/batches.html | 0 .../View/default/TestingResource/index.html | 7 +- .../View/default/TestingResource/orders.html | 0 Data/update.sql | 4 +- 8 files changed, 707 insertions(+), 69 deletions(-) create mode 100644 Application/Admin/Controller/GameApiController.class.php create mode 100644 Application/Base/Tool/GameCatClient.class.php create mode 100644 Application/Home/View/default/TestingResource/batches.html create mode 100644 Application/Home/View/default/TestingResource/orders.html diff --git a/Application/Admin/Controller/GameApiController.class.php b/Application/Admin/Controller/GameApiController.class.php new file mode 100644 index 000000000..47fd29d50 --- /dev/null +++ b/Application/Admin/Controller/GameApiController.class.php @@ -0,0 +1,27 @@ +api('get-pay-type'); + + } +} diff --git a/Application/Base/Tool/GameCatClient.class.php b/Application/Base/Tool/GameCatClient.class.php new file mode 100644 index 000000000..8204dbb3f --- /dev/null +++ b/Application/Base/Tool/GameCatClient.class.php @@ -0,0 +1,84 @@ + ['uri' => '/api/pay/GetPayType', 'method' => 'get'], + 'internal-pay' => ['uri' => '/api/pay/InternalPayOrder/yushi', 'method' => 'post'], + 'check-role' => ['uri' => '/api/pay/CheckActorID', 'method' => 'get'] + ]; + + 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('接口不存在'); + } + $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', '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(); + 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'); + return md5(http_build_query($params)); + } +} \ No newline at end of file diff --git a/Application/Home/Controller/TestingResourceController.class.php b/Application/Home/Controller/TestingResourceController.class.php index 564f08db1..06dc7680e 100644 --- a/Application/Home/Controller/TestingResourceController.class.php +++ b/Application/Home/Controller/TestingResourceController.class.php @@ -6,6 +6,8 @@ namespace Home\Controller; use Base\Model\PromoteModel; use Base\Service\PromoteService; use OSS\Core\OssException; +use Base\Tool\GameCatClient; +use Think\Model; class TestingResourceController extends BaseController { @@ -199,6 +201,12 @@ class TestingResourceController extends BaseController { $records = []; $pagination = ''; + + /** + * @todo 目前固定游戏猫 + */ + $games = M('game', 'tab_')->field(['id' , 'game_name'])->where(['id' => ['in', [229, 230]]])->select(); + $this->assign('games', $games); $this->assign('records', $records); $this->assign('pagination', $pagination); $this->display(); @@ -206,21 +214,70 @@ class TestingResourceController extends BaseController public function doApply() { + $gameId = I('game_id', 0); + $roleId = I('role_id', 0); + $serverId = I('server_id', 0); + $userAccount = I('user_account', ''); $records = I('records', []); - $batchNo = ''; $loginPromote = $this->getLoginPromote(); + $resources = []; + /** + * @todo 目前仅限游戏猫 + */ + if (!in_array($gameId, [229, 230])) { + return $this->ajaxReturn(['status' => 0, 'message' => '该游戏不可申请资源']); + } else { + $resources = $this->getGameCatResources(); + } + + $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' => '区服不存在']); + } + + $role = M('user_play_info', 'tab_') + ->field(['id', 'role_id']) + ->where(['user_id' => $user['id'], 'game_id' => $gameId, 'server_id' => $server['server_id']]) + ->find(); + if (is_null($role)) { + return $this->ajaxReturn(['status' => 0, 'message' => '角色不存在']); + } + $amount = 0; - foreach ($records as $record) { - $amount += $record['num'] * $record['value']; + 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' => '含有资源内容不存在']); + } } + $batchNo = date('YmdHis') . substr(md5($loginPromote['id'] . strval(microtime(true)) . rand(0, 9999)), 8, 16); + try { + $model = new Model(); + $model->startTrans(); + $batch = [ 'batch_id' => $batchId, - 'order_no' => $orderNo, - 'user_id' => $record['user_id'], - 'game_id' => $record['game_id'], + 'batch_no' => $batchNo, + 'user_id' => $testingUser['user_id'], + 'game_id' => $gameId, + 'role_id' => $roleId, + 'server_id' => $serverId, 'promote_id' => $loginPromote['id'], 'amount' => $amount, 'status' => 0, @@ -236,39 +293,65 @@ class TestingResourceController extends BaseController $order = [ 'batch_id' => $batchId, 'order_no' => $orderNo, - 'testing_resource_id' => $record['resource_id'], + 'ref_id' => $record['resource_id'], + 'ref_name' => $record['resource_name'], 'num' => $record['num'], 'amount' => $record['num'] * $record['value'], 'remark' => $record['remark'], ]; M('testing_resource_order')->add($order); } + $model->commit(); + return $this->ajaxReturn(['status' => 1, 'message' => '申请成功,等待审核']); } catch (\Exception $e) { - + $model->rollback(); + return $this->ajaxReturn(['status' => 0, 'message' => '系统异常']); } } public function bindRole() { $testingUserId = I('testing_user_id', 0); - $userAccount = I('user_account', ''); - $roleId = I('role_id', ''); + $testingRoleId = I('testing_role_id', 0); + $bindUserId = I('bind_user_id', 0); + $bindRoleId = I('bind_role_id', 0); - $user = M('user', 'tab_')->field(['id', 'account'])->where(['account' => $userAccount])->find(); - if (is_null($user)) { + $bindUser = M('user', 'tab_')->field(['id', 'account'])->where(['id' => $bindUserId])->find(); + if (is_null($bindUser)) { return $this->ajaxReturn(['status' => 0, 'message' => '用户不存在']); } - $existBind = M('testing_user', 'tab_')->field(['id'])->where(['bind_user_id' => $user['id']])->find(); + $testingUser = M('testing_user', 'tab_')->where(['user_id' => $testingUserId])->find(); + if (is_null($testingUser)) { + return $this->ajaxReturn(['status' => 0, 'message' => '测试账号不存在']); + } + + $testingRole = M('user_play_info', 'tab_') + ->field(['id', 'role_id']) + ->where(['id' => $testingRoleId]) + ->find(); + if (is_null($testingRole)) { + return $this->ajaxReturn(['status' => 0, 'message' => '测试账号角色不存在']); + } + $bindRole = M('user_play_info', 'tab_') + ->field(['id', 'role_id']) + ->where(['id' => $bindRoleId]) + ->find(); + if (is_null($bindRole)) { + return $this->ajaxReturn(['status' => 0, 'message' => '玩家角色不存在']); + } + + + $existBind = M('testing_user', 'tab_')->field(['id'])->where(['bind_user_id' => $bindUser['id']])->find(); if ($existBind) { return $this->ajaxReturn(['status' => 0, 'message' => '该玩家账号已被绑定']); } M('testing_user', 'tab_')->where(['user_id' => $testingUserId])->save([ - 'role_id' => $roleId, - 'bind_user_id' => $user['id'], - 'bind_user_account' => $user['account'], - 'bind_role_id' => $roleId, + 'role_id' => $testingRole['id'], + 'bind_user_id' => $bindUser['id'], + 'bind_user_account' => $bindUser['account'], + 'bind_role_id' => $bindRoleId, ]); return $this->ajaxReturn(['status' => 1, 'message' => '绑定成功']); } @@ -277,4 +360,86 @@ class TestingResourceController extends BaseController { } + + public function getServers() + { + $gameId = I('game_id', 0); + $map = []; + $map['game_id'] = $gameId; + $servers = M('server', 'tab_') + ->field('id,server_name,server_id') + ->where($map) + ->order('server_id asc') + ->select(); + return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['servers' => $servers]]); + } + + public function getResourceTypes() + { + $gameId = I('game_id', 0); + $resourceTypes = []; + + /** + * @todo 目前固定游戏猫 + */ + if (in_array($gameId, [229, 230])) { + $resourceTypes[] = ['id' => 1, 'name' => '通用']; + } + return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['resourceTypes' => $resourceTypes]]); + } + + public function getResources() + { + $typeId = I('type_id', 0); + + $resources = []; + + /** + * @todo 目前固定游戏猫资源类型ID + */ + if ($typeId == 1) { + $resources = $this->getGameCatResources(); + } + + 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' => '区服不存在']); + } + $roles = M('user_play_info', 'tab_') + ->field(['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]]); + } + + private function getGameCatResources() + { + $resources = []; + $gameCatClient = new GameCatClient(); + $result = $gameCatClient->api('get-pay-type'); + if ($result['code'] == 1) { + $payTypeList = $result['paytypelist']; + foreach ($payTypeList as $item) { + $resources[$item['PayType']] = [ + 'ref_id' => $item['PayType'], + 'name' => $item['Text'], + 'amount' => $item['Amount'], + ]; + } + } + return $resources; + } + + private function getRemainAmount($user) + { + + } } \ No newline at end of file diff --git a/Application/Home/View/default/TestingResource/apply.html b/Application/Home/View/default/TestingResource/apply.html index f1e997459..e0f176b39 100644 --- a/Application/Home/View/default/TestingResource/apply.html +++ b/Application/Home/View/default/TestingResource/apply.html @@ -25,71 +25,434 @@ color: #fff; border: none; border-radius: 4px; + cursor: pointer; } - .normal_table td button.danger-btn { + .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; + } - + @@ -313,7 +310,7 @@ title: '新增测试账号', type: 1, content: box, - area: ['800px', '330px'], + area: ['700px', '330px'], zIndex: 250, }) }); diff --git a/Application/Home/View/default/TestingResource/orders.html b/Application/Home/View/default/TestingResource/orders.html new file mode 100644 index 000000000..e69de29bb diff --git a/Data/update.sql b/Data/update.sql index 42af73acb..782acec80 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -2452,7 +2452,8 @@ CREATE TABLE `tab_testing_resource_order` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `batch_id` int(11) NOT NULL COMMENT '批次ID', `order_no` varchar(30) NOT NULL COMMENT '订单号', - `testing_resource_id` int(11) NOT NULL COMMENT '测试资源ID', + `ref_id` varchar(30) NOT NULL COMMENT '测试资源ID(第三方)', + `ref_name` varchar(150) NOT NULL COMMENT '测试资源名称(第三方)', `num` int(11) NOT NULL DEFAULT 0 COMMENT '申请数量' `amount` decimal(12, 2) not null default '0.00' comment '申请金额', `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注', @@ -2464,6 +2465,7 @@ CREATE TABLE `tab_testing_resource_batch` ( `batch_no` varchar(30) NOT NULL COMMENT '批次号', `game_id` int(11) NOT NULL DEFAULT '0' COMMENT '游戏ID', `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID', + `server_id` int(11) NOT NULL DEFAULT '0' COMMENT '区服ID', `role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色ID', `amount` decimal(12, 2) not null default '0.00' comment '申请金额', `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 待发放 1 已经发放 2 拒绝 3 异常', From 9c59ba06e20153a22fd9a17fc93f9dd4ed24e2b7 Mon Sep 17 00:00:00 2001 From: ELF <360197197@qq.com> Date: Thu, 13 Aug 2020 20:30:32 +0800 Subject: [PATCH 04/57] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/GameApiController.class.php | 2 +- Application/Base/Tool/GameCatClient.class.php | 24 +- .../TestingResourceController.class.php | 175 ++++++--- .../View/default/TestingResource/apply.html | 150 ++++++-- .../View/default/TestingResource/batches.html | 353 ++++++++++++++++++ .../View/default/TestingResource/index.html | 13 +- .../View/default/TestingResource/orders.html | 143 +++++++ Data/update.sql | 11 +- 8 files changed, 776 insertions(+), 95 deletions(-) diff --git a/Application/Admin/Controller/GameApiController.class.php b/Application/Admin/Controller/GameApiController.class.php index 47fd29d50..d8b43e514 100644 --- a/Application/Admin/Controller/GameApiController.class.php +++ b/Application/Admin/Controller/GameApiController.class.php @@ -22,6 +22,6 @@ class GameApiController extends Think { public function getGameCatPayTypes() { $gameCatClient = new GameCatClient(); $result = $gameCatClient->api('get-pay-type'); - + var_dump($result); } } diff --git a/Application/Base/Tool/GameCatClient.class.php b/Application/Base/Tool/GameCatClient.class.php index 8204dbb3f..0b23bac3d 100644 --- a/Application/Base/Tool/GameCatClient.class.php +++ b/Application/Base/Tool/GameCatClient.class.php @@ -10,15 +10,24 @@ use GuzzleHttp\Exception\RequestException; */ class GameCatClient { - const SIGN_NAME = 'Sign'; + const SIGN_NAME = 'sign'; const SUCCESS = '0000'; protected $client; private $apis = [ - 'get-pay-type' => ['uri' => '/api/pay/GetPayType', 'method' => 'get'], - 'internal-pay' => ['uri' => '/api/pay/InternalPayOrder/yushi', 'method' => 'post'], - 'check-role' => ['uri' => '/api/pay/CheckActorID', 'method' => 'get'] + 'get-pay-type' => ['uri' => '/game/support/items/v1', 'method' => 'post'], + 'internal-pay' => ['uri' => '/game/support/provide/v1', 'method' => 'post'], + ]; + + private $appIds = [ + 'andriod' => 1746, + 'ios' => 1747, + ]; + + private $channelIds = [ + 'andriod' => 11595, + 'ios' => 11596, ]; public function __construct() @@ -35,6 +44,13 @@ class GameCatClient 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[self::SIGN_NAME] = $this->sign($params); try { diff --git a/Application/Home/Controller/TestingResourceController.class.php b/Application/Home/Controller/TestingResourceController.class.php index 06dc7680e..3f4b050d5 100644 --- a/Application/Home/Controller/TestingResourceController.class.php +++ b/Application/Home/Controller/TestingResourceController.class.php @@ -24,9 +24,7 @@ class TestingResourceController extends BaseController $loginPromote = $this->getLoginPromote(); $conditions = []; - $subConditions = [ - 'promote_id' => $loginPromote['id'], - ]; + $subConditions = []; if ($createTimeStart) { $subConditions['create_time'] = ['egt', strtotime($createTimeStart . ' 00:00:00')]; @@ -38,6 +36,9 @@ class TestingResourceController extends BaseController $subSql = M('testing_user', 'tab_')->field(['user_id'])->where($subConditions)->select(false); $strCondition = 'user_id in (' . $subSql . ')'; + $promoteService = new PromoteService(); + $strCondition .= ' and promote_id in (' . $promoteService->subInSql($loginPromote) . ')'; + if ($account) { $user = M('user', 'tab_')->field(['id'])->where('account like ' . $account . '%')->find(); if ($user) { @@ -74,17 +75,23 @@ class TestingResourceController extends BaseController $bindings = index_by_column('role_id', $bindings); $bindingRoleIds = array_column($bindings, 'bind_role_id'); if (count($bindings) > 0) { - $bindingRoles = M('user_play_info', 'tab_')->field(['id', 'role_name'])->where(['id' => ['in', $bindingRoleIds]])->select(); + $bindingRoles = M('user_play_info', 'tab_')->field(['id', 'role_id', 'role_name', 'user_account'])->where(['id' => ['in', $bindingRoleIds]])->select(); $bindingRoles = index_by_column('id', $bindingRoles); } } + if (count($bindingRoles) > 0) { + M('spend', 'tab_')->where(); + } + + $records = []; foreach ($roles as $role) { $user = $users[$role['user_id']] ?? null; $binding = $bindings[$role['id']] ?? null; $bindingRole = $binding && $bindingRoles[$binding['bind_role_id']] ? $bindingRoles[$binding['bind_role_id']] : null; $records[] = [ + 'id' => $role['id'], 'game_name' => $role['game_name'], 'server_name' => $role['server_name'], 'server_id' => $role['server_id'], @@ -94,7 +101,7 @@ class TestingResourceController extends BaseController 'role_name' => $role['role_name'], 'bind_user_account' => $bindingRole ? $bindingRole['user_account'] : '', 'bind_role_name' => $bindingRole ? $bindingRole['role_name'] : '', - 'base_quota' => $binding ? $binding['base_quota'] : 1200, + 'base_quota' => $binding ? $binding['base_quota'] : 0, 'other_quota' => $binding ? $binding['other_quota'] : 0, 'quota' => 0, 'verify_amount' => 0, @@ -128,7 +135,11 @@ class TestingResourceController extends BaseController $errorCount = 0; $successCount = 0; if (count($newAccounts)) { - $users = M('user', 'tab_')->field(['id', 'account'])->where(['account' => ['in', $newAccounts]])->select(); + + $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) { @@ -139,7 +150,6 @@ class TestingResourceController extends BaseController 'user_id' => $user['id'], 'user_account' => $user['account'], 'status' => 1, - 'promote_id' => $loginPromote['id'], 'create_time' => time(), 'update_time' => time(), ]; @@ -191,6 +201,48 @@ class TestingResourceController extends BaseController $query = M('testing_resource_batch', 'tab_')->where($conditions)->order('create_time desc')->select(); list($batches, $pagination, $count) = $this->paginate($query); + $records = []; + foreach ($batches as $batch) { + $records[] = [ + 'id' => $batch['id'], + 'batch_no' => $batch['batch_no'], + 'create_time' => date('Y-m-d H:i:s', $batch['create_time']), + 'game_name' => $batch['game_id'], + 'server_name' => $batch['server_id'], + 'role_name' => $batch['role_id'], + 'user_account' => $batch['user_id'], + 'user_phone' => $batch['batch_no'], + 'creator_account' => $batch['batch_no'], + 'history_provide_amount' => 0.00, + 'apply_amount' => $batch['apply_amount'], + 'provide_amount' => $batch['provide_amount'], + 'remark' => $batch['remark'], + 'verify_status_text' => $batch['verify_status'], + 'verify_time' => date('Y-m-d H:i:s', $batch['verify_time']), + 'status_text' => $batch['status'], + 'provide_status_text' => $batch['provide_status'], + 'provide_time' => date('Y-m-d H:i:s', $batch['provide_time']), + 'content' => $content, + ]; + } + + $this->assign('count', $count); + $this->assign('pagination', $pagination); + $this->assign('records', $records); + $this->display(); + } + + public function orders() + { + $batchId = I('batch_id', 0); + + $query = M('testing_resource_order', 'tab_')->where(['batch_id' => $batchId])->order('create_time desc')->select(); + list($orders, $pagination, $count) = $this->paginate($query); + + /** + * @todo + */ + $this->assign('count', $count); $this->assign('pagination', $pagination); $this->assign('records', $records); @@ -199,16 +251,31 @@ class TestingResourceController extends BaseController public function apply() { - $records = []; - $pagination = ''; + $roleId = I('role_id', 0); + + $role = null; + if ($roleId > 0) { + $role = M('user_play_info', 'tab_')->field(['id', 'role_id', 'user_id', 'game_id', 'server_id', 'user_account', 'role_name'])->where(['id' => $roleId])->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(['role_id' => $roleId])->find(); + if ($binding) { + $bindingRole = M('user_play_info', 'tab_')->field(['id', 'role_id', 'user_id', 'game_id', 'server_id', 'user_account', 'role_name'])->where(['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('records', $records); - $this->assign('pagination', $pagination); + $this->assign('servers', $servers); + $this->assign('bindingRole', $bindingRole); + $this->assign('role', $role); $this->display(); } @@ -311,56 +378,56 @@ class TestingResourceController extends BaseController public function bindRole() { - $testingUserId = I('testing_user_id', 0); $testingRoleId = I('testing_role_id', 0); - $bindUserId = I('bind_user_id', 0); $bindRoleId = I('bind_role_id', 0); - $bindUser = M('user', 'tab_')->field(['id', 'account'])->where(['id' => $bindUserId])->find(); - if (is_null($bindUser)) { - return $this->ajaxReturn(['status' => 0, 'message' => '用户不存在']); - } - - $testingUser = M('testing_user', 'tab_')->where(['user_id' => $testingUserId])->find(); - if (is_null($testingUser)) { - return $this->ajaxReturn(['status' => 0, 'message' => '测试账号不存在']); - } - $testingRole = M('user_play_info', 'tab_') - ->field(['id', 'role_id']) + ->field(['id', 'role_id', 'user_id']) ->where(['id' => $testingRoleId]) ->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' => '测试账号不存在']); + } + $bindRole = M('user_play_info', 'tab_') - ->field(['id', 'role_id']) + ->field(['id', 'role_id', 'user_id']) ->where(['id' => $bindRoleId]) ->find(); if (is_null($bindRole)) { return $this->ajaxReturn(['status' => 0, 'message' => '玩家角色不存在']); } - - $existBind = M('testing_user', 'tab_')->field(['id'])->where(['bind_user_id' => $bindUser['id']])->find(); + $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(['bind_role_id' => $bindRoleId])->find(); if ($existBind) { - return $this->ajaxReturn(['status' => 0, 'message' => '该玩家账号已被绑定']); + return $this->ajaxReturn(['status' => 0, 'message' => '该玩家角色已被绑定']); + } + + $testExistBind = M('testing_binding', 'tab_')->field(['id'])->where(['role_id' => $testingRoleId])->find(); + if ($testExistBind) { + return $this->ajaxReturn(['status' => 0, 'message' => '该测试账号角色已绑定有角色']); } - M('testing_user', 'tab_')->where(['user_id' => $testingUserId])->save([ + M('testing_binding', 'tab_')->add([ + 'user_id' => $testingRole['user_id'], 'role_id' => $testingRole['id'], - 'bind_user_id' => $bindUser['id'], - 'bind_user_account' => $bindUser['account'], - 'bind_role_id' => $bindRoleId, + 'bind_user_id' => $bindRole['user_id'], + 'bind_role_id' => $bindRole['id'], + 'create_time' => time(), + 'update_time' => time() ]); return $this->ajaxReturn(['status' => 1, 'message' => '绑定成功']); } - public function getRolesByUser() - { - - } - public function getServers() { $gameId = I('game_id', 0); @@ -382,8 +449,10 @@ class TestingResourceController extends BaseController /** * @todo 目前固定游戏猫 */ - if (in_array($gameId, [229, 230])) { + if ($gameId == 229) { $resourceTypes[] = ['id' => 1, 'name' => '通用']; + } elseif ($gameId == 230) { + $resourceTypes[] = ['id' => 2, 'name' => '通用']; } return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['resourceTypes' => $resourceTypes]]); } @@ -397,8 +466,10 @@ class TestingResourceController extends BaseController /** * @todo 目前固定游戏猫资源类型ID */ - if ($typeId == 1) { - $resources = $this->getGameCatResources(); + if ($typeId == 2) { + $resources = $this->getGameCatResources('ios'); + } elseif ($typeId == 1) { + $resources = $this->getGameCatResources('andriod'); } return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['resources' => $resources]]); @@ -413,25 +484,29 @@ class TestingResourceController extends BaseController if (is_null($server)) { 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_name']) ->where(['user_account' => $userAccount, 'game_id' => $gameId, 'server_id' => $server['server_id']]) ->select(); - return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['roles' => $roles]]); + return $this->ajaxReturn(['status' => 1, 'message' => '获取成功', 'data' => ['roles' => $roles, 'is_testing_account' => $isTestingAccount]]); } - private function getGameCatResources() + private function getGameCatResources($deviceType) { $resources = []; $gameCatClient = new GameCatClient(); - $result = $gameCatClient->api('get-pay-type'); - if ($result['code'] == 1) { - $payTypeList = $result['paytypelist']; - foreach ($payTypeList as $item) { - $resources[$item['PayType']] = [ - 'ref_id' => $item['PayType'], - 'name' => $item['Text'], - 'amount' => $item['Amount'], + $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'], ]; } } diff --git a/Application/Home/View/default/TestingResource/apply.html b/Application/Home/View/default/TestingResource/apply.html index e0f176b39..9c09f1b07 100644 --- a/Application/Home/View/default/TestingResource/apply.html +++ b/Application/Home/View/default/TestingResource/apply.html @@ -88,30 +88,44 @@
- disabled> - +
- disabled> + + +
- + disabled>
- disabled> + + +
- + +
当前可用额度:1364 待审核额度:0
+ + +
@@ -169,20 +183,20 @@
- +
-
@@ -191,7 +205,10 @@ + + + + + + + \ No newline at end of file diff --git a/Application/Home/View/default/TestingResource/index.html b/Application/Home/View/default/TestingResource/index.html index 986f073dd..2cfa29770 100644 --- a/Application/Home/View/default/TestingResource/index.html +++ b/Application/Home/View/default/TestingResource/index.html @@ -212,7 +212,7 @@ @@ -292,13 +292,20 @@ $('#apply').click(function () { var title = '添加测试资源申请' - var url = "{:U('TestingResource/apply')}" + var url = "{:U('TestingResource/apply', '', '')}" + + var id = $('input[name=role_id]:checked').val() + console.log(id) + id = id == undefined ? 0 : id; + if (id > 0) { + url += '/role_id/' + id + } layer.open({ title: title, type: 2, content: [url , 'no'], - area: ['1000px', '550px'], + area: ['1000px', '600px'], zIndex: 250, scrollbar: false, }) diff --git a/Application/Home/View/default/TestingResource/orders.html b/Application/Home/View/default/TestingResource/orders.html index e69de29bb..9432b427f 100644 --- a/Application/Home/View/default/TestingResource/orders.html +++ b/Application/Home/View/default/TestingResource/orders.html @@ -0,0 +1,143 @@ + + + + + + + + + \ No newline at end of file diff --git a/Data/update.sql b/Data/update.sql index 782acec80..e3e73fa6d 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -2454,7 +2454,7 @@ CREATE TABLE `tab_testing_resource_order` ( `order_no` varchar(30) NOT NULL COMMENT '订单号', `ref_id` varchar(30) NOT NULL COMMENT '测试资源ID(第三方)', `ref_name` varchar(150) NOT NULL COMMENT '测试资源名称(第三方)', - `num` int(11) NOT NULL DEFAULT 0 COMMENT '申请数量' + `num` int(11) NOT NULL DEFAULT 0 COMMENT '申请数量', `amount` decimal(12, 2) not null default '0.00' comment '申请金额', `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注', PRIMARY KEY (`id`) @@ -2467,9 +2467,12 @@ CREATE TABLE `tab_testing_resource_batch` ( `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID', `server_id` int(11) NOT NULL DEFAULT '0' COMMENT '区服ID', `role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色ID', - `amount` decimal(12, 2) not null default '0.00' comment '申请金额', - `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 待发放 1 已经发放 2 拒绝 3 异常', - `promote_id` int(11) not null default 0 COMMENT '推广员ID', + `role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色ID', + `apply_amount` decimal(12, 2) not null default '0.00' comment '申请金额', + `provide_amount` decimal(12, 2) not null default '0.00' comment '申请金额', + `provide_status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 待发放 1 已经发放 2 拒绝 3 异常', + `provide_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '审核时间', + `apply_promote_id` int(11) NOT NULL DEFAULT '0' COMMENT '申请推广员ID', `verify_status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 未审核 1 审核通过 1 未审核通过', `verify_remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注', `verify_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '审核时间', From ecf460e7c9da01928a59b836042544dc43264640 Mon Sep 17 00:00:00 2001 From: ELF <360197197@qq.com> Date: Fri, 14 Aug 2020 18:29:21 +0800 Subject: [PATCH 05/57] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Base/Service/PromoteService.class.php | 26 ++ Application/Base/Tool/GameCatClient.class.php | 1 + .../TestingResourceController.class.php | 254 ++++++++++++++---- .../View/default/TestingResource/apply.html | 44 ++- .../View/default/TestingResource/batches.html | 131 +++------ .../View/default/TestingResource/index.html | 15 +- Data/update.sql | 19 +- 7 files changed, 319 insertions(+), 171 deletions(-) diff --git a/Application/Base/Service/PromoteService.class.php b/Application/Base/Service/PromoteService.class.php index 2f54f9bbc..30e2bcf7d 100644 --- a/Application/Base/Service/PromoteService.class.php +++ b/Application/Base/Service/PromoteService.class.php @@ -825,6 +825,32 @@ class PromoteService { return $chain == '' ? 1 : count(explode('/', $chain)); } + public function getIdsByChain($chain) + { + $chain = trim($chain, '/'); + return $chain == '' ? [] : explode('/', $chain); + } + + public function isSub($promote, $parent) + { + $chainList = $this->getIdsByChain($promote['chain']); + if (in_array($parent['id'], $chainList)) { + return true; + } + return false; + } + + public function isSubOrSelf($promote, $parent) + { + if ($promote['id'] == $parent['id']) { + return true; + } elseif ($this->isSub($promote, $parent)) { + return true; + } else { + return false; + } + } + /** * 获取最上级的推广员 */ diff --git a/Application/Base/Tool/GameCatClient.class.php b/Application/Base/Tool/GameCatClient.class.php index 0b23bac3d..11e2bd73d 100644 --- a/Application/Base/Tool/GameCatClient.class.php +++ b/Application/Base/Tool/GameCatClient.class.php @@ -51,6 +51,7 @@ class GameCatClient } $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 { diff --git a/Application/Home/Controller/TestingResourceController.class.php b/Application/Home/Controller/TestingResourceController.class.php index 3f4b050d5..b61e70b12 100644 --- a/Application/Home/Controller/TestingResourceController.class.php +++ b/Application/Home/Controller/TestingResourceController.class.php @@ -62,7 +62,10 @@ class TestingResourceController extends BaseController list($roles, $pagination, $count) = $this->paginate($query); - $roleIds = array_column($roles, 'id'); + $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 = []; @@ -71,25 +74,44 @@ class TestingResourceController extends BaseController if (count($roles) > 0) { $users = M('user', 'tab_')->field(['id', 'phone'])->where(['id' => ['in', $userIds]])->select(); $uesrs = index_by_column('id', $users); - $bindings = M('testing_binding', 'tab_')->where(['role_id' => ['in', $roleIds]])->select(); - $bindings = index_by_column('role_id', $bindings); - $bindingRoleIds = array_column($bindings, 'bind_role_id'); + $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'])->where(['id' => ['in', $bindingRoleIds]])->select(); - $bindingRoles = index_by_column('id', $bindingRoles); + $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); } } - + $spendItems = []; if (count($bindingRoles) > 0) { - M('spend', 'tab_')->where(); + $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($spendOrWhere)->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['id']] ?? null; - $bindingRole = $binding && $bindingRoles[$binding['bind_role_id']] ? $bindingRoles[$binding['bind_role_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'], @@ -103,7 +125,7 @@ class TestingResourceController extends BaseController 'bind_role_name' => $bindingRole ? $bindingRole['role_name'] : '', 'base_quota' => $binding ? $binding['base_quota'] : 0, 'other_quota' => $binding ? $binding['other_quota'] : 0, - 'quota' => 0, + 'quota' => $bindingRole && isset($spendItems[$bindingRole['game_role_id']]) ? $spendItems[$bindingRole['game_role_id']] : 0, 'verify_amount' => 0, 'provide_amount' => 0, 'today_amount' => 0, @@ -119,6 +141,11 @@ class TestingResourceController extends BaseController $this->display(); } + private function getGameRoleId($gameId, $roleId) + { + return $gameId . '#' . $roleId; + } + public function addTestingUsers() { $loginPromote = $this->getLoginPromote(); @@ -175,8 +202,12 @@ class TestingResourceController extends BaseController $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' => 'promote_id in (' . $promoteService->subInSql($loginPromote) . ')', + '_string' => 'exists (' . $subSql . ')' ]; if ($verifyTimeStart) { $conditions['verify_time'] = ['egt', strtotime($verifyTimeStart . ' 00:00:00')]; @@ -195,28 +226,60 @@ class TestingResourceController extends BaseController if ($user) { $conditions['user_id'] = $user['id']; } else { - $conditions['_string'] = '1<>1'; + $conditions['_string'] .= ' and 1<>1'; } } - $query = M('testing_resource_batch', 'tab_')->where($conditions)->order('create_time desc')->select(); + $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); + } + } + $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' => $batch['batch_no'], + 'batch_no' => substr($batch['batch_no'], 14), 'create_time' => date('Y-m-d H:i:s', $batch['create_time']), - 'game_name' => $batch['game_id'], - 'server_name' => $batch['server_id'], - 'role_name' => $batch['role_id'], - 'user_account' => $batch['user_id'], - 'user_phone' => $batch['batch_no'], - 'creator_account' => $batch['batch_no'], + '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'], - 'remark' => $batch['remark'], 'verify_status_text' => $batch['verify_status'], 'verify_time' => date('Y-m-d H:i:s', $batch['verify_time']), 'status_text' => $batch['status'], @@ -249,22 +312,38 @@ class TestingResourceController extends BaseController $this->display(); } + private function getRemainQuota($gameId, $bindRoleId, $testingRoleId) + { + $totalQuota = M('spend', 'tab_') + ->where(['game_id' => $gameId, 'game_player_id' => $bindRoleId]) + ->group('game_id,game_player_id') + ->sum('pay_amount'); + $usedQuota = M('testing_resource_batch', 'tab_')->where(['game_id' => $gameId, 'role_id' => $testingRoleId])->sum('provide_amount'); + return round(floatval($totalQuota) - floatval($usedQuota), 2); + } + public function apply() { - $roleId = I('role_id', 0); + $id = I('id', 0); $role = null; - if ($roleId > 0) { - $role = M('user_play_info', 'tab_')->field(['id', 'role_id', 'user_id', 'game_id', 'server_id', 'user_account', 'role_name'])->where(['id' => $roleId])->find(); + if ($id != 0) { + $role = M('user_play_info', 'tab_') + ->field(['id', 'role_id', 'user_id', 'game_id', 'server_id', 'user_account', 'role_name']) + ->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(['role_id' => $roleId])->find(); + $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(['id' => $binding['bind_role_id']])->find(); + $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(); } } @@ -276,13 +355,14 @@ class TestingResourceController extends BaseController $this->assign('servers', $servers); $this->assign('bindingRole', $bindingRole); $this->assign('role', $role); + $this->assign('quota', $this->getRemainQuota($bindingRole['game_id'], $bindingRole['role_id'], $role['role_id'])); $this->display(); } public function doApply() { $gameId = I('game_id', 0); - $roleId = I('role_id', 0); + $roleId = I('role_id', ''); $serverId = I('server_id', 0); $userAccount = I('user_account', ''); $records = I('records', []); @@ -292,10 +372,17 @@ class TestingResourceController extends BaseController /** * @todo 目前仅限游戏猫 */ - if (!in_array($gameId, [229, 230])) { - return $this->ajaxReturn(['status' => 0, 'message' => '该游戏不可申请资源']); + if ($gameId == 229) { + $resources = $this->getGameCatResources('android'); + } elseif ($gameId == 230) { + $resources = $this->getGameCatResources('ios'); } else { - $resources = $this->getGameCatResources(); + 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(); @@ -312,14 +399,36 @@ class TestingResourceController extends BaseController return $this->ajaxReturn(['status' => 0, 'message' => '区服不存在']); } + $promoteService = new PromoteService(); + $role = M('user_play_info', 'tab_') - ->field(['id', 'role_id']) - ->where(['user_id' => $user['id'], 'game_id' => $gameId, 'server_id' => $server['server_id']]) + ->field(['id', 'role_id', 'promote_id']) + ->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' => '角色不存在']); } + $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 = M('user_play_info', 'tab_') + ->field(['id', 'role_id', 'user_id', 'promote_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']])) { @@ -332,6 +441,11 @@ class TestingResourceController extends BaseController } } + $remainQuota = $this->getRemainQuota($bindingRole['game_id'], $bindingRole['role_id'], $role['role_id']); + 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 { @@ -339,21 +453,19 @@ class TestingResourceController extends BaseController $model->startTrans(); $batch = [ - 'batch_id' => $batchId, 'batch_no' => $batchNo, 'user_id' => $testingUser['user_id'], 'game_id' => $gameId, 'role_id' => $roleId, 'server_id' => $serverId, - 'promote_id' => $loginPromote['id'], - 'amount' => $amount, - 'status' => 0, + 'apply_promote_id' => $loginPromote['id'], + 'apply_amount' => $amount, + 'provide_status' => 0, 'verify_status' => 0, - 'remark' => $record['remark'], 'create_time' => time(), 'update_time' => time(), ]; - $batchId = M('testing_resource_batch')->add($batch); + $batchId = M('testing_resource_batch', 'tab_')->add($batch); $i = 1; foreach ($records as $record) { $orderNo = $batchNo . '_' . $i; @@ -366,24 +478,29 @@ class TestingResourceController extends BaseController 'amount' => $record['num'] * $record['value'], 'remark' => $record['remark'], ]; - M('testing_resource_order')->add($order); + 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' => '系统异常']); + return $this->ajaxReturn(['status' => 0, 'message' => '系统异常' . $e->getMessage()]); } } public function bindRole() { - $testingRoleId = I('testing_role_id', 0); - $bindRoleId = I('bind_role_id', 0); + $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']) - ->where(['id' => $testingRoleId]) + ->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' => '测试账号角色不存在']); @@ -394,34 +511,50 @@ class TestingResourceController extends BaseController 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']) - ->where(['id' => $bindRoleId]) + ->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(['bind_role_id' => $bindRoleId])->find(); + $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(['role_id' => $testingRoleId])->find(); + $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['id'], + 'role_id' => $testingRole['role_id'], 'bind_user_id' => $bindRole['user_id'], - 'bind_role_id' => $bindRole['id'], + 'bind_role_id' => $bindRole['role_id'], 'create_time' => time(), 'update_time' => time() ]); @@ -485,11 +618,16 @@ class TestingResourceController extends BaseController 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_name']) + ->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]]); @@ -497,6 +635,14 @@ class TestingResourceController extends BaseController private function getGameCatResources($deviceType) { + /* return [ + 1 => ['ref_id' => 1, 'name' => '礼包钻石6', 'amount' => 6], + 2 => ['ref_id' => 2, 'name' => '礼包钻石18', 'amount' => 18], + 3 => ['ref_id' => 3, 'name' => '礼包钻石30', 'amount' => 30], + 4 => ['ref_id' => 4, 'name' => '礼包钻石98', 'amount' => 98], + 5 => ['ref_id' => 5, 'name' => '礼包钻石128', 'amount' => 128], + 6 => ['ref_id' => 6, 'name' => '礼包钻石648', 'amount' => 648], + ]; */ $resources = []; $gameCatClient = new GameCatClient(); $result = $gameCatClient->api('get-pay-type', ['device_type' => $deviceType]); diff --git a/Application/Home/View/default/TestingResource/apply.html b/Application/Home/View/default/TestingResource/apply.html index 9c09f1b07..3820eb0ce 100644 --- a/Application/Home/View/default/TestingResource/apply.html +++ b/Application/Home/View/default/TestingResource/apply.html @@ -112,21 +112,25 @@
+
-
当前可用额度:1364 待审核额度:0
+
+ 当前可用额度: 待审核额度:0 +
+
+
+ +
- +
- +
- +
-
- -
- -
- + + + + - +
- - - - + + +
- - -
@@ -102,7 +107,7 @@ 测试账号 手机号 所属推广员 - 申请人 + 申请人 发放总金额 申请金额 发放金额 @@ -192,6 +197,22 @@ $().ready(function(){ formatDate:'Y-m-d', timepicker:false }); + + $('.view-detail').on({ + click:function () { + var url = "{:U('TestingResource/orders', '', '')}" + var id = $(this).parents('tr').eq(0).attr('data-id') + url += '/id/' + id + layer.open({ + title: '查看申请订单', + type: 2, + content: [url , 'no'], + area: ['1200px', '400px'], + zIndex: 250, + scrollbar: false, + }) + } + }) }); diff --git a/Application/Admin/View/CompanyStatementPool/viewPuPool2.html b/Application/Admin/View/CompanyStatementPool/viewPuPool2.html new file mode 100644 index 000000000..80e02d5d5 --- /dev/null +++ b/Application/Admin/View/CompanyStatementPool/viewPuPool2.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
序号下游名称会长账号下游类型市场员下游性质产品产品类型结算时间推广流水分成比例补点奖励罚款结算金额户名帐号开户行是否支付宝打款是否结算备注操作
{$key-0+1}{$com.company_name}{$com.company_info.account}{$com.company_info.company_relation_str}{$com.company_info.nickname}{$com.company_info.company_type_str}{$com['statement_info'][0]['game_name']}{$com['statement_info'][0]['game_type_name']}{$com['statement_info'][0]['statement_begin_time']}-{$com['statement_info'][0]['statement_end_time']}{$com['statement_info'][0]['pay_amount']}{$com['statement_info'][0]['ratio']|default=0}%{$com['statement_info'][0]['increment_ratio']|default=0}%{$com['statement_info'][0]['reward']}{$com['statement_info'][0]['fine']}{$com['statement_info'][0]['sum_money']}{$com.company_info.payee_name} {$com.company_info.bank_account}{$com.company_info.opening_bank}{$com.company_info.ali_user}{$com.company_info.ali_account}{$com.remark} + + 不结算 + +
{$it['game_name']}{$it['game_type_name']}{$it['statement_begin_time']}-{$it['statement_end_time']}{$it['pay_amount']}{$it['ratio']|default=0}%{$it['increment_ratio']|default=0}%{$it['reward']}{$it['fine']}{$it['sum_money']}
合计:{$count.platform_amount|default=0}{$count.sum_money|default=0}
+
+
+ + + From 901198f5466629b933168229945461d9097bf102 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 18 Aug 2020 11:49:15 +0800 Subject: [PATCH 12/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/CompanyStatementPool/viewPuPool.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Application/Admin/View/CompanyStatementPool/viewPuPool.html b/Application/Admin/View/CompanyStatementPool/viewPuPool.html index 7c947cdd5..0473da900 100644 --- a/Application/Admin/View/CompanyStatementPool/viewPuPool.html +++ b/Application/Admin/View/CompanyStatementPool/viewPuPool.html @@ -152,8 +152,8 @@ {$com['statement_info'][0]['game_list'][0]['game_type_name']} {$com['statement_info'][0]['game_list'][0]['statement_begin_time']}-{$com['statement_info'][0]['game_list'][0]['statement_end_time']} {$com['statement_info'][0]['game_list'][0]['pay_amount']} - {$com['statement_info'][0]['game_list'][0]['ratio']|default=0}% - {$com['statement_info'][0]['game_list'][0]['increment_ratio']|default=0}% + {$com['statement_info'][0]['game_list'][0]['ratio']|showNumPercent} + {$com['statement_info'][0]['game_list'][0]['increment_ratio']|showNumPercent} {$com['statement_info'][0]['game_list'][0]['sum_money']} {$com['reward']} {$com['fine']} @@ -206,8 +206,8 @@ {$game['game_type_name']} {$game['statement_begin_time']}-{$game['statement_end_time']} {$game['pay_amount']} - {$game['ratio']|default=0}% - {$game['increment_ratio']|default=0}% + {$game['ratio']|showNumPercent} + {$game['increment_ratio']|showNumPercent} {$game['sum_money']} @@ -227,8 +227,8 @@ {$account['game_list'][0]['game_type_name']} {$account['game_list'][0]['statement_begin_time']}-{$account['game_list'][0]['statement_end_time']} {$account['game_list'][0]['pay_amount']} - {$account['game_list'][0]['ratio']|default=0}% - {$account['game_list'][0]['increment_ratio']|default=0}% + {$account['game_list'][0]['ratio']|showNumPercent} + {$account['game_list'][0]['increment_ratio']|showNumPercent} {$account['game_list'][0]['sum_money']} - @@ -249,8 +249,8 @@ {$game['game_type_name']} {$game['statement_begin_time']}-{$game['statement_end_time']} {$game['pay_amount']} - {$game['ratio']|default=0}% - {$game['increment_ratio']|default=0}% + {$game['ratio']|showNumPercent} + {$game['increment_ratio']|showNumPercent} {$game['sum_money']} From f91db42a5727f7d56604aedf3b5314e743bd61c9 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 18 Aug 2020 11:51:37 +0800 Subject: [PATCH 13/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E5=AF=BC=E5=87=BA2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/CompanyStatementPool/viewPuPool.html | 24 ++ .../CompanyStatementPool/viewPuPool2.html | 262 ------------------ 2 files changed, 24 insertions(+), 262 deletions(-) delete mode 100644 Application/Admin/View/CompanyStatementPool/viewPuPool2.html diff --git a/Application/Admin/View/CompanyStatementPool/viewPuPool.html b/Application/Admin/View/CompanyStatementPool/viewPuPool.html index 0473da900..1b6a6c127 100644 --- a/Application/Admin/View/CompanyStatementPool/viewPuPool.html +++ b/Application/Admin/View/CompanyStatementPool/viewPuPool.html @@ -277,6 +277,9 @@ + + + @@ -292,5 +295,26 @@ }); }); + $(".no_statement").on("click",function(){ + var id = $(this).data('id'); + $.ajax({ + type: "POST", + url: "{:U('cancelStatement')}", + dataType: 'json', + async: false, + data: {id:id}, + success:function(data){ + if(data.status==1){ + layer.msg("" + data.info + ""); + setTimeout(function(){ + window.location.reload(); + },1500); + }else{ + layer.msg("" + data.info + ""); + return false; + } + } + }); + }) diff --git a/Application/Admin/View/CompanyStatementPool/viewPuPool2.html b/Application/Admin/View/CompanyStatementPool/viewPuPool2.html deleted file mode 100644 index 80e02d5d5..000000000 --- a/Application/Admin/View/CompanyStatementPool/viewPuPool2.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
序号下游名称会长账号下游类型市场员下游性质产品产品类型结算时间推广流水分成比例补点奖励罚款结算金额户名帐号开户行是否支付宝打款是否结算备注操作
{$key-0+1}{$com.company_name}{$com.company_info.account}{$com.company_info.company_relation_str}{$com.company_info.nickname}{$com.company_info.company_type_str}{$com['statement_info'][0]['game_name']}{$com['statement_info'][0]['game_type_name']}{$com['statement_info'][0]['statement_begin_time']}-{$com['statement_info'][0]['statement_end_time']}{$com['statement_info'][0]['pay_amount']}{$com['statement_info'][0]['ratio']|default=0}%{$com['statement_info'][0]['increment_ratio']|default=0}%{$com['statement_info'][0]['reward']}{$com['statement_info'][0]['fine']}{$com['statement_info'][0]['sum_money']}{$com.company_info.payee_name} {$com.company_info.bank_account}{$com.company_info.opening_bank}{$com.company_info.ali_user}{$com.company_info.ali_account}{$com.remark} - - 不结算 - -
{$it['game_name']}{$it['game_type_name']}{$it['statement_begin_time']}-{$it['statement_end_time']}{$it['pay_amount']}{$it['ratio']|default=0}%{$it['increment_ratio']|default=0}%{$it['reward']}{$it['fine']}{$it['sum_money']}
合计:{$count.platform_amount|default=0}{$count.sum_money|default=0}
-
-
- - - From 7c2ada7e17e1f2ff7b1da3ac4b8f94382db305ba Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 18 Aug 2020 14:49:17 +0800 Subject: [PATCH 14/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Controller/CompanyStatementSetController.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 09780e132..db37408fd 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -1000,7 +1000,7 @@ class CompanyStatementSetController extends Controller { $company_ratio = 0; } //获取其他信息 - $v = $this->getCompanyOtherInfo($v,$k,$type); + $v = $this->getCompanyOtherInfo($v,$k); $countdata = &$user; $v['statement_money'] = 0; $v['pay_amount'] = 0; From 2b2acf833ccf46e2c33b68f38121d0dc3b325e55 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 18 Aug 2020 15:14:59 +0800 Subject: [PATCH 15/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/PartnerController.class.php | 5 +++++ .../PromoteCompanyController.class.php | 8 +++++++ .../Admin/View/PromoteCompany/add.html | 22 ++++++++++++++----- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Application/Admin/Controller/PartnerController.class.php b/Application/Admin/Controller/PartnerController.class.php index 6540bf3af..f84d722e2 100644 --- a/Application/Admin/Controller/PartnerController.class.php +++ b/Application/Admin/Controller/PartnerController.class.php @@ -324,6 +324,11 @@ class PartnerController extends ThinkController $this->error('已存在同名未审核的cp,请勿重复添加'); } + $has_check = M("partner","tab_")->where(["partner_name"=>$partner_info['partner']])->field("id")->find(); + if ($has_check) { + $this->error('已存在同名cp,请勿重复添加'); + } + $res =D("PartnerVerify")->add_db($save); if ($res) { //操作日志 diff --git a/Application/Admin/Controller/PromoteCompanyController.class.php b/Application/Admin/Controller/PromoteCompanyController.class.php index 8f7eac955..586c60fc6 100644 --- a/Application/Admin/Controller/PromoteCompanyController.class.php +++ b/Application/Admin/Controller/PromoteCompanyController.class.php @@ -970,6 +970,14 @@ class PromoteCompanyController extends ThinkController $this->error('推广公司已存在'); } } + if(!isset($save['id'])){ + $map['company_id'] = 0; + $res = M("PromoteCompanyVerify","tab_")->where($map)->field("id")->find(); + if($res){ + $this->error('已添加过此推广公司,请联系管理尽快审核'); + } + } + // if(!empty(I("contact_phone")) && !checkPhone(I('contact_phone'))) { // $this->error('联系电话格式不正确'); diff --git a/Application/Admin/View/PromoteCompany/add.html b/Application/Admin/View/PromoteCompany/add.html index 24915dbd4..530853b05 100644 --- a/Application/Admin/View/PromoteCompany/add.html +++ b/Application/Admin/View/PromoteCompany/add.html @@ -437,11 +437,23 @@ \ No newline at end of file From 62b566e8b8a571cfc635f8c48a43e738efac7102 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Thu, 20 Aug 2020 18:31:20 +0800 Subject: [PATCH 39/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E5=A1=AB=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Controller/FinancialSummaryController.class.php | 2 +- Application/Admin/Model/CmdTasksModel.class.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Application/Admin/Controller/FinancialSummaryController.class.php b/Application/Admin/Controller/FinancialSummaryController.class.php index 7fcb028c0..4dd97fdc8 100644 --- a/Application/Admin/Controller/FinancialSummaryController.class.php +++ b/Application/Admin/Controller/FinancialSummaryController.class.php @@ -43,7 +43,7 @@ class FinancialSummaryController extends AdminController public function updateStatement() { $temp = date('Y',time()).'-'.(date('m',time())-1); - $params = "cd ".ROOTTTTT.";php admin.php FinancialSummarySet/setMonthFinancialSummary/recount/1/count_date/{$temp}"; + $params = "php admin.php FinancialSummarySet/setMonthFinancialSummary/recount/1/count_date/{$temp}"; $r = D("CmdTasks")->addTask("FinancialSummary",$params); if($r){ $this->ajaxReturn(["success"=>"ok"]); diff --git a/Application/Admin/Model/CmdTasksModel.class.php b/Application/Admin/Model/CmdTasksModel.class.php index c85f59722..8e9d47b19 100644 --- a/Application/Admin/Model/CmdTasksModel.class.php +++ b/Application/Admin/Model/CmdTasksModel.class.php @@ -41,12 +41,15 @@ class CmdTasksModel extends Model{ } } //插入任务 - public function addTask($type,$params,$need_tasksid = true) + public function addTask($type,$params,$need_tasksid = true,$need_path=true) { $task = $this->field("end_time")->where(['status'=>"1",'type'=>$type])->order("id desc")->find(); if(!empty($task)){ return false; } + if($need_path){ + $params = "cd ".ROOTTTTT.";".$params; + } if($need_tasksid){ $params = rtrim($params,";").'/taskid/{$taskid};'; } From 8b82fff791e59e9a21cae865683693cdd063b02f Mon Sep 17 00:00:00 2001 From: chenzhi Date: Thu, 20 Aug 2020 18:33:27 +0800 Subject: [PATCH 40/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=8F=92=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Admin/Model/CmdTasksModel.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Admin/Model/CmdTasksModel.class.php b/Application/Admin/Model/CmdTasksModel.class.php index 8e9d47b19..ace3a88d2 100644 --- a/Application/Admin/Model/CmdTasksModel.class.php +++ b/Application/Admin/Model/CmdTasksModel.class.php @@ -43,7 +43,7 @@ class CmdTasksModel extends Model{ //插入任务 public function addTask($type,$params,$need_tasksid = true,$need_path=true) { - $task = $this->field("end_time")->where(['status'=>"1",'type'=>$type])->order("id desc")->find(); + $task = $this->field("end_time")->where(['status'=>["in","0,1"],'type'=>$type])->order("id desc")->find(); if(!empty($task)){ return false; } From 6e49bcc3538b2dc1d85a8d0680b58512679f84a4 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 09:56:35 +0800 Subject: [PATCH 41/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=E6=B1=87=E6=80=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/View/FinancialSummary/index.html | 149 +----------------- 1 file changed, 2 insertions(+), 147 deletions(-) diff --git a/Application/Admin/View/FinancialSummary/index.html b/Application/Admin/View/FinancialSummary/index.html index 93d095469..ea49c1fc8 100644 --- a/Application/Admin/View/FinancialSummary/index.html +++ b/Application/Admin/View/FinancialSummary/index.html @@ -294,7 +294,7 @@ if(data.success){ layer.alert('添加重算任务成功,请2分钟后刷新查看'); }else{ - layer.alert('添加任务失败,已有重算任务。请上个重算任务完成'); + layer.alert('添加任务失败,已有重算任务。请等待上个重算任务完成'); } }, error:function(){ @@ -304,54 +304,7 @@ }); }); }) - $(".paixu").click(function () { - var that = $(this); - $data_order = that.attr('data-order'); - $order_type = '{$userarpu_order}'; - if ($order_type == '' || $order_type == '4') { - $(".sortBy").attr('name', 'data_order'); - val = '3,' + $data_order; - $(".sortBy").attr('value', val); - $("#search").click(); - } else if ($order_type == '3') { - $(".sortBy").attr('name', 'data_order'); - val = '4,' + $data_order; - $(".sortBy").attr('value', val); - $("#search").click(); - } - }); - - $('.jssamlllist').click(function () { - var that = $(this), url = that.attr('data-url'); - var url = - layer.open({ - type: 2, - title: "【" + that.attr('data-account') + "】小号列表", - shadeClose: true, - shade: 0.8, - area: ['1062px', '80%'], - content: url,//iframe的url - }); - - return false; - }); - - $(".paixu").click(function () { - var val = $(this).attr('data-order'); - if (val == 1) { - val = 2; - } else if (val == 2) { - val = 1; - } - var name = $(this).attr('name'); - if (name == 'balance_status') { - $('#key').val(1); - } else { - $('#key').val(2); - } - $("#" + name).val(val); - $("#search").click(); - }); + //回车自动提交 $('.jssearch').find('input').keyup(function (event) { if (event.keyCode === 13) { @@ -359,105 +312,7 @@ } }); - $("#total_status").click(function () { - $("#search").click(); - }) - - - $('#time_start').datetimepicker({ - format: 'yyyy-mm-dd', - language: "zh-CN", - minView: 2, - autoclose: true - }); - - $('#datetimepicker').datetimepicker({ - format: 'yyyy-mm-dd', - language: "zh-CN", - minView: 2, - autoclose: true, - pickerPosition: 'bottom-left' - }) - - var promote_id = "{:I('promote_id')}"; - var company_id = "{:I('company_id')}"; - function getPromotersByCompanyid() { - var company_id = $("#company_id option:selected").val(); - if(!company_id){ - company_id = -1; - } - $.ajax({ - url: "{:U('Ajax/getPromotersByCompanyid')}", - type: "get", - data: { company_id:company_id}, - dataType: 'json', - success: function (response) { - str = ''; - if(company_id == 0 || company_id ==-1){ - str +=''; - } - data = response.data; - for (var i in data) { - str += "" - } - $("#promote_id").empty(); - $("#promote_id").append(str); - $("#promote_id").select2(); - } - }) - } - getPromotersByCompanyid(); - - $("#company_id").change(function(){ - getPromotersByCompanyid(); - }) }) - - - function shenhe(status) { - var text = $("input:checkbox[name='ids[]']:checked").map(function (index, elem) { - return $(elem).val(); - }).get().join("\n"); - var desc = ''; - if (status == 0) { - desc = '锁定'; - } else { - desc = '开启'; - } - layer.prompt({ - formType: 2, - value: text, - placeholder: '玩家账号(一个账号一行)', - title: '请输入要' + desc + '的玩家账号(一个账号一行)', - area: ['800px', '350px'] //自定义文本域宽高 - }, function (value, index, elem) { - if (value == '') { - layer.msg("请输入账户ID"); - return; - } - - $.ajax({ - cache: true, - type: "POST", - url: "{:U('Member/lock_status')}", - data: { accounts: value, lock_status: status },// 你的formid - async: false, - error: function (data) { - layer.alert("服务器故障,请稍后重试!", { icon: 2 }); - }, - success: function (data) { - // var obj = JSON.parse(data); - // layer.alert(obj.info,{icon:obj.status}) - layer.alert(data.info, { icon: data.status }) - window.location.reload() - } - }); - layer.close(index); - }); - } - - -
\ No newline at end of file From b88f2986bd0d8e22ae497ecaa4aeb94ff1501d00 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 10:30:43 +0800 Subject: [PATCH 42/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=87=8D=E7=AE=97?= =?UTF-8?q?=EF=BC=8C=E5=85=BC=E5=AE=B9wind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/CmdTasksController.class.php | 2 +- .../CompanyStatementSetController.class.php | 20 +++++++++---------- .../Admin/Model/CmdTasksModel.class.php | 7 ++++++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Application/Admin/Controller/CmdTasksController.class.php b/Application/Admin/Controller/CmdTasksController.class.php index ef64100e7..f8ab13fdc 100644 --- a/Application/Admin/Controller/CmdTasksController.class.php +++ b/Application/Admin/Controller/CmdTasksController.class.php @@ -20,7 +20,7 @@ class CmdTasksController extends Controller { $cmd = $params['params']; $cmd = str_replace('{$taskid}',$taskid,$cmd); try { - system($cmd); + exec($cmd); } catch (\Exception $e) { D("CmdTasks")->updateTask(['id'=>$params['id'],'status' => 3, 'end_time' => time(), 'result' => $e->getMessage()]); } diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 2a67d37c8..8baa03e63 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -537,16 +537,16 @@ class CompanyStatementSetController extends Controller { $pc =[]; $Promote = M("Promote","tab_"); foreach ($tmpp as $v) { - //获取会长的支付宝账号 - $p_map = [ - "company_id"=>$v['id'], - "withdraw_done"=>1 - ]; - $pres = $Promote->field("alipay_account,alipay_real_name")->where($p_map)->find(); - if(!empty($pres) && !empty($pres['alipay_account']) && !empty($pres['alipay_real_name'])){ - $v['ali_user'] = $pres['alipay_real_name']; - $v['ali_account'] = $pres['alipay_account']; - } + // //获取会长的支付宝账号 + // $p_map = [ + // "company_id"=>$v['id'], + // "withdraw_done"=>1 + // ]; + // $pres = $Promote->field("alipay_account,alipay_real_name")->where($p_map)->find(); + // if(!empty($pres) && !empty($pres['alipay_account']) && !empty($pres['alipay_real_name'])){ + // $v['ali_user'] = $pres['alipay_real_name']; + // $v['ali_account'] = $pres['alipay_account']; + // } if($v['has_ratio']){ $v['turnover_ratio'] = json_decode($v['turnover_ratio'],true); } diff --git a/Application/Admin/Model/CmdTasksModel.class.php b/Application/Admin/Model/CmdTasksModel.class.php index ace3a88d2..ccf7bc0cd 100644 --- a/Application/Admin/Model/CmdTasksModel.class.php +++ b/Application/Admin/Model/CmdTasksModel.class.php @@ -48,7 +48,12 @@ class CmdTasksModel extends Model{ return false; } if($need_path){ - $params = "cd ".ROOTTTTT.";".$params; + if(IS_WIN){ + $p = explode(':',ROOTTTTT); + $params = "{$p[0]}:&".'cd "'.$p[1].'"&'.$params; + }else{ + $params = "cd ".ROOTTTTT.";".$params; + } } if($need_tasksid){ $params = rtrim($params,";").'/taskid/{$taskid};'; From 4f70b8906325cce4be549b481ce7e97c1af7e007 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 11:24:30 +0800 Subject: [PATCH 43/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/CmdTasksController.class.php | 10 +++++----- .../FinancialSummarySetController.class.php | 16 ++-------------- Application/Admin/Model/CmdTasksModel.class.php | 8 +++----- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/Application/Admin/Controller/CmdTasksController.class.php b/Application/Admin/Controller/CmdTasksController.class.php index f8ab13fdc..e29cab07c 100644 --- a/Application/Admin/Controller/CmdTasksController.class.php +++ b/Application/Admin/Controller/CmdTasksController.class.php @@ -2,6 +2,7 @@ namespace Admin\Controller; use Think\Controller; +use Think\Exception; /** * 系统任务接口 @@ -16,12 +17,11 @@ class CmdTasksController extends Controller { if(!$params){ echo('暂无任务'); } - $taskid = $params['id']; - $cmd = $params['params']; - $cmd = str_replace('{$taskid}',$taskid,$cmd); try { - exec($cmd); - } catch (\Exception $e) { + exec($params['params'], $resArr, $status); + $result = json_encode($resArr,JSON_UNESCAPED_UNICODE); + D("CmdTasks")->updateTask(['id'=>$params['id'],'status' => 2, 'end_time' => time(), 'result' => $result]); + } catch (Exception $e) { D("CmdTasks")->updateTask(['id'=>$params['id'],'status' => 3, 'end_time' => time(), 'result' => $e->getMessage()]); } } diff --git a/Application/Admin/Controller/FinancialSummarySetController.class.php b/Application/Admin/Controller/FinancialSummarySetController.class.php index eb3894b23..739dc1299 100644 --- a/Application/Admin/Controller/FinancialSummarySetController.class.php +++ b/Application/Admin/Controller/FinancialSummarySetController.class.php @@ -1,5 +1,6 @@ GameSupersignModel = M("GameSupersign",'tab_'); $this->CoinPayOrderModel = M("CoinPayOrder",'tab_');//会长充值平台币表 $this->TestOrderModel = M("TestOrder",'tab_');//测试订单录入 - - $taskid = I("taskid"); - if(!empty($taskid)){ - $this->taskid = $taskid; - } - } /** * 更新某月数据 @@ -63,9 +58,6 @@ class FinancialSummarySetController extends \Think\Controller $this->reCount(); $this->setFinancialSummary(); - if($this->taskid){ - D("CmdTasks")->updateTask(['id'=>$this->taskid,'status'=>2,'end_time' => time(), 'result' =>$this->result]); - } } /** * 强制重新聚合 @@ -95,11 +87,7 @@ class FinancialSummarySetController extends \Think\Controller //判断是否已经聚合 $countRes = $this->FinancialSummaryModel->field("IFNULL(COUNT(*),0) count")->where("count_year = '{$this->year}' and count_month= '{$this->month}'")->find()['count']; if($countRes > 0){ - if($this->taskid){ - throw new \Exception("error:Repeated statistics,msg:{$this->date}已经聚合过"); - }else{ - die("error:Repeated statistics,msg:{$this->date}已经聚合过"); - } + die("error:Repeated statistics,msg:{$this->date}已经聚合过"); } echo "{$this->date}开始统计".PHP_EOL; echo "--收入类型统计中".PHP_EOL; diff --git a/Application/Admin/Model/CmdTasksModel.class.php b/Application/Admin/Model/CmdTasksModel.class.php index ccf7bc0cd..c923c197b 100644 --- a/Application/Admin/Model/CmdTasksModel.class.php +++ b/Application/Admin/Model/CmdTasksModel.class.php @@ -37,11 +37,11 @@ class CmdTasksModel extends Model{ if(empty($task)){ return false; }else{ - return date("Y-d-m H:i:s",$task['end_time']); + return date("Y-m-d H:i:s",$task['end_time']); } } //插入任务 - public function addTask($type,$params,$need_tasksid = true,$need_path=true) + public function addTask($type,$params,$need_path=true) { $task = $this->field("end_time")->where(['status'=>["in","0,1"],'type'=>$type])->order("id desc")->find(); if(!empty($task)){ @@ -55,9 +55,7 @@ class CmdTasksModel extends Model{ $params = "cd ".ROOTTTTT.";".$params; } } - if($need_tasksid){ - $params = rtrim($params,";").'/taskid/{$taskid};'; - } + $params = rtrim($params,";").' 2>&1'; $save = [ "uid"=>$_SESSION['onethink_admin']['user_auth']['uid'], "created_time"=>time(), From 8e2f07db38e03bbce3260e2e504fd35166839e94 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 13:54:36 +0800 Subject: [PATCH 44/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Admin/Controller/CmdTasksController.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/Application/Admin/Controller/CmdTasksController.class.php b/Application/Admin/Controller/CmdTasksController.class.php index e29cab07c..6381686de 100644 --- a/Application/Admin/Controller/CmdTasksController.class.php +++ b/Application/Admin/Controller/CmdTasksController.class.php @@ -7,7 +7,6 @@ use Think\Exception; /** * 系统任务接口 * @author cz - * TODO: 罚款的游戏没有流水不统计,补点为0 无法重算 */ class CmdTasksController extends Controller { From f5fb65e400bfdfd5d491923b12cda9e107940450 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 17:06:26 +0800 Subject: [PATCH 45/57] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E6=B8=B8=E6=88=8F=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementSetController.class.php | 89 ++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 8baa03e63..abdceb971 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -1261,8 +1261,6 @@ class CompanyStatementSetController extends Controller { } /** * 获取公司奖罚 - * @param [type] $paymount 支付金额 - * @param [type] $turnover_ratio 梯度 */ protected function getPromoteUserRewardRecord($cpmpamy_id,$begintime,$endtime) { @@ -1286,7 +1284,94 @@ class CompanyStatementSetController extends Controller { }else{ $rfres; } + } + public function getPromoteCompanyGameRatio($company_id,$game_ids,$begintime,$endtime,$company_belong=false){ + //获取默认比例 + if($company_belong === false){ + $company_belong = M("PromoteCompany","tab_")->field("company_belong")->where("id='{$company_id}'")->find()['company_belong']; + } + + $mwhere = [ + "company_belong"=>$company_belong, + "relation_game_id"=>["in",$game_ids] + ]; + $m_res = M("GameRatioMould","tab_")->where($mwhere)->select(); + $modul_ratio = []; + for ($i=0; $i < count($m_res); $i++) { + $modul_ratio[$m_res[$i]['relation_game_id']] = $m_res[$i]; + } + unset($m_res); + //设置默认 + $game_ratio = []; + $tmp_g = explode(",",$game_ids); + for ($i=0; $i < count($tmp_g); $i++) { + $game_ratio[$tmp_g[$i]] = [ + ["begintime"=>$begintime,"endtime"=>$endtime] + ]; + } + $map = [ + "company_id"=>$company_id, + "relation_game_id"=>['in',$game_ids], + "_string"=>"begin_time <={$endtime} AND ( end_time = 0 OR end_time >= {$begintime})" + ]; + $res = M("company_game_ratio","tab_")->where($map)->order("begin_time asc")->select(); + foreach($res as $k=>$v){ + //获取最后一个数据 + $tgr = &$game_ratio[$v['relation_game_id']]; + $last_time_ratio = end($game_ratio[$v['relation_game_id']]); + if($v['end_time'] == 0 || ($v['end_time'] >= $last_time_ratio['endtime'])){ + //全段 + if($v['begin_time'] <= $last_time_ratio['begintime']){ + $tgr[count($tgr)-1]['ratio'] = $v['ratio']; + $tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio']; + continue; + }else{ + //上分段 + $tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1; + $tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; + continue; + } + } + if($v['end_time'] < $last_time_ratio['endtime']){ + if($last_time_ratio['begintime'] < $v['begin_time']){ + //中段 + $tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1; + + $tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$v['end_time'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; + $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']]; + continue; + } + if($last_time_ratio['begintime'] > $v['begin_time']){ + //下分段 + $tgr[count($tgr)-1]['endtime'] = $v['end_time']; + $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; + continue; + } + if($last_time_ratio['begintime'] = $v['begin_time']){ + $tgr[count($tgr)-1]['endtime'] = $v['end_time']; + $tgr[count($tgr)-1]['ratio'] = $v['ratio']; + $tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio']; + + $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']]; + } + } + } + //模板填充 + foreach($game_ratio as $k=>&$list){ + foreach($list as $i => &$ratio){ + if(!isset($ratio['ratio'])){ + if(isset($modul_ratio[$k]['ratio'])){ + $ratio['ratio'] = $modul_ratio[$k]['ratio']; + $ratio['turnover_ratio'] = $modul_ratio[$k]['turnover_ratio']; + }else{ + $ratio['ratio'] = 0; + $ratio['turnover_ratio'] =null; + } + } + } + } + return $game_ratio; } /** From 492d7a8f737ea29ab8c99a647b4a08aeeeafa465 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 17:07:57 +0800 Subject: [PATCH 46/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementSetController.class.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index abdceb971..284ea2a78 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -1285,7 +1285,17 @@ class CompanyStatementSetController extends Controller { $rfres; } } - public function getPromoteCompanyGameRatio($company_id,$game_ids,$begintime,$endtime,$company_belong=false){ + /** + * 按公司获取游戏分成比例 + * + * @param [type] $company_id 公司id + * @param [type] $game_ids 游戏关联id + * @param [type] $begintime 开始时间 + * @param [type] $endtime 结束时间 + * @param boolean $company_belong 公司内外团 + * @return void + */ + protected function getPromoteCompanyGameRatio($company_id,$game_ids,$begintime,$endtime,$company_belong=false){ //获取默认比例 if($company_belong === false){ $company_belong = M("PromoteCompany","tab_")->field("company_belong")->where("id='{$company_id}'")->find()['company_belong']; From ff19f3259f8dce4181dc164efef40f41f3462327 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Fri, 21 Aug 2020 20:04:28 +0800 Subject: [PATCH 47/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E5=A4=9A=E6=AF=94=E4=BE=8B=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementSetController.class.php | 248 +++++++++--------- .../Model/CompanyGameRatioModel.class.php | 109 ++++++++ Application/Admin/Model/GameModel.class.php | 4 +- 3 files changed, 235 insertions(+), 126 deletions(-) create mode 100644 Application/Admin/Model/CompanyGameRatioModel.class.php diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 284ea2a78..3773c5c1c 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -562,7 +562,9 @@ class CompanyStatementSetController extends Controller { } unset($tmpp); unset($js_id); - $this->getPromoteCompanySpend($pcList,array_unique(array_keys($pcList)),$begintime,$endtime); + $this->getPromoteCompanySpend($pcList,array_unique(array_keys($pcList)),$begintime,$endtime); + + //数据整合 $verify_log=json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s")]); $StatementDb = M("CompanyStatement","tab_"); @@ -614,43 +616,85 @@ class CompanyStatementSetController extends Controller { $company_belong = $pc[$add_data['company_id']]['company_belong']; $add_data['company_belong']=$company_belong; $add_data['company_type']=$pc[$add_data['company_id']]['company_type']; - if(!isset($v['list'])){continue;} - //游戏统计 - foreach($v['list'] as $ke=>$va){ + + if(!isset($v['game_list'])){continue;} + //获取多段比例 + $game_ratio_list = D("CompanyGameRatio")->getPromoteCompanyGameRatio($add_data['company_id'],$v['game_ids'],$begintime,$endtime,$company_belong); + foreach ($game_ratio_list as $t_game_id => $t_game_ratio) { $game =[]; - $game['pay_amount'] =$va['pay_amount']; - $game['game_name'] =$va['game_name']; - //获取比例 - $game['relation_game_id']=$va['relation_game_id']; - if($type == 1){ - $tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong); - $tratio += $company_ratio; - }elseif($type == 0){ - $tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong); - }else{ - //补点 - $tratio1 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);; - $tratio2 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong); - $tratio = $tratio1-$tratio2+$company_ratio; - if($tratio <= 0){ continue;} - } - $tratio = $tratio-0; - if($v['type'] == 2){ - $game['increment_ratio']=$tratio; - }else{ - $game['ratio']=$tratio; - } - $add_data['pay_amount'] += $va['pay_amount']; + $game['game_name'] =$v['game_list'][$t_game_id]['game_name']; + $game['relation_game_id'] =$v['game_list'][$t_game_id]['relation_game_id']; + $game_all_payment = $v['game_list'][$t_game_id]['pay_amount']; + + // dump($tratio); + $game['fax_ratio']=$fax_ratio-0; + + $game['statement_type']=0; - $game['sum_money']=round($va['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(分成比例+补点比例)*(1-税费费率) - $add_data['statement_money'] += $game['sum_money']; + if(count($t_game_ratio) == 1){ + $tmp_game_ratio = $t_game_ratio[0]; + $game['pay_amount'] =$game_all_payment; + $game['pay_amount'] -=0; + + $game['statement_begin_time']=$statement_begin_time; + $game['statement_end_time']=$statement_end_time; + $add_data['pay_amount'] += $game['pay_amount']; - $game['fax_ratio']=$fax_ratio; + if($type == 1){ + $tratio =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio += $company_ratio; + }elseif($type == 0){ + $tratio = $t_game_ratio['ratio']; + }else{ + //补点 + $tratio1 =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio2 =$tmp_game_ratio['ratio']; + $tratio = $tratio1-$tratio2+$company_ratio; + if($tratio <= 0){ continue;} + } + if($v['type'] == 2){ + $game['increment_ratio']=$tratio; + }else{ + $game['ratio']=$tratio; + } - $game['statement_begin_time']=$statement_begin_time; - $game['statement_end_time']=$statement_end_time; - $game['statement_type']=0; - $add_data['statement_info'][] = $game; + $game['sum_money']=round($game['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(分成比例+补点比例)*(1-税费费率) + $add_data['statement_money'] += $game['sum_money']; + $add_data['statement_info'][] = $game; + }else{ + // dd($t_game_ratio); + for ($i=0; $i < count($t_game_ratio); $i++) { + $tmp_game_ratio = $t_game_ratio[$i]; + $temp_game = $game; + $temp_game['statement_begin_time']=date("Y.m.d",$tmp_game_ratio['begintime']); + $temp_game['statement_end_time']=date("Y.m.d",$tmp_game_ratio['endtime']); + // dd($t_game_id); + $temp_game['pay_amount'] =$this->getRelationGameIdSpend($add_data['company_id'],$t_game_id,$tmp_game_ratio['begintime'],$tmp_game_ratio['endtime']); + $temp_game['pay_amount'] -=0; + $add_data['pay_amount'] += $temp_game['pay_amount']; + + if($type == 1){ + $tratio =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio += $company_ratio; + }elseif($type == 0){ + $tratio = $t_game_ratio['ratio']; + }else{ + //补点 + $tratio1 =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio2 =$tmp_game_ratio['ratio']; + $tratio = $tratio1-$tratio2+$company_ratio; + if($tratio <= 0){ continue;} + } + if($v['type'] == 2){ + $temp_game['increment_ratio']=$tratio; + }else{ + $temp_game['ratio']=$tratio; + } + $temp_game['sum_money']=round($temp_game['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(分成比例+补点比例)*(1-税费费率) + $add_data['statement_money'] += $temp_game['sum_money']; + $add_data['statement_info'][] = $temp_game; + } + } } $add_data['platform_amount'] = $add_data['pay_amount']; if($type < 2){ @@ -789,9 +833,10 @@ class CompanyStatementSetController extends Controller { foreach($res as $k=>$v){ $pcList[$k]["pay_amount"] = $v['pay_amount']; unset($v['pay_amount']); - $pcList[$k]['list'] = $v; - + $pcList[$k]['game_list'] = $v; + $pcList[$k]['game_ids'] = implode(",",array_keys($pcList[$k]['game_list'])); } + } //获取推广公司推广金额 protected function getPuPromoteSpend(&$pcList,$idarr,$begintime,$endtime){ @@ -980,7 +1025,6 @@ class CompanyStatementSetController extends Controller { $pc[$v['id']]['is_payment']=$pcList[$v['id']]['is_payment']; } unset($tmpp); - // $this->getPromoteCompanySpend($pc,array_unique(array_keys($pc)),$begintime,$endtime); $this->getPuPromoteSpend($pc,array_unique(array_keys($pc)),$begintime,$endtime); @@ -1286,102 +1330,58 @@ class CompanyStatementSetController extends Controller { } } /** - * 按公司获取游戏分成比例 + * 获取比例 * - * @param [type] $company_id 公司id - * @param [type] $game_ids 游戏关联id - * @param [type] $begintime 开始时间 - * @param [type] $endtime 结束时间 - * @param boolean $company_belong 公司内外团 + * @param [type] $amount 总额 + * @param [type] $ratio 默认比例 + * @param [type] $turnover_ratio 比例梯度 * @return void */ - protected function getPromoteCompanyGameRatio($company_id,$game_ids,$begintime,$endtime,$company_belong=false){ - //获取默认比例 - if($company_belong === false){ - $company_belong = M("PromoteCompany","tab_")->field("company_belong")->where("id='{$company_id}'")->find()['company_belong']; - } - - $mwhere = [ - "company_belong"=>$company_belong, - "relation_game_id"=>["in",$game_ids] - ]; - $m_res = M("GameRatioMould","tab_")->where($mwhere)->select(); - $modul_ratio = []; - for ($i=0; $i < count($m_res); $i++) { - $modul_ratio[$m_res[$i]['relation_game_id']] = $m_res[$i]; + protected function getTurnoverRatio($amount,$ratio,$turnover_ratio) + { + if(empty($turnover_ratio)){ + return $ratio; } - unset($m_res); - //设置默认 - $game_ratio = []; - $tmp_g = explode(",",$game_ids); - for ($i=0; $i < count($tmp_g); $i++) { - $game_ratio[$tmp_g[$i]] = [ - ["begintime"=>$begintime,"endtime"=>$endtime] - ]; + if(!is_array($turnover_ratio)){ + $turnover_ratio = json_decode($turnover_ratio,true); } - $map = [ - "company_id"=>$company_id, - "relation_game_id"=>['in',$game_ids], - "_string"=>"begin_time <={$endtime} AND ( end_time = 0 OR end_time >= {$begintime})" - ]; - $res = M("company_game_ratio","tab_")->where($map)->order("begin_time asc")->select(); - foreach($res as $k=>$v){ - //获取最后一个数据 - $tgr = &$game_ratio[$v['relation_game_id']]; - $last_time_ratio = end($game_ratio[$v['relation_game_id']]); - if($v['end_time'] == 0 || ($v['end_time'] >= $last_time_ratio['endtime'])){ - //全段 - if($v['begin_time'] <= $last_time_ratio['begintime']){ - $tgr[count($tgr)-1]['ratio'] = $v['ratio']; - $tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio']; - continue; - }else{ - //上分段 - $tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1; - $tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; - continue; - } - } - if($v['end_time'] < $last_time_ratio['endtime']){ - if($last_time_ratio['begintime'] < $v['begin_time']){ - //中段 - $tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1; - - $tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$v['end_time'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; - - $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']]; - continue; + foreach($turnover_ratio as $k=>$v){ + if($v['instanceof'] == 1){ + if($amount >= $v['turnover']){ + $ratio = $v['ratio']; } - if($last_time_ratio['begintime'] > $v['begin_time']){ - //下分段 - $tgr[count($tgr)-1]['endtime'] = $v['end_time']; - $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; - continue; - } - if($last_time_ratio['begintime'] = $v['begin_time']){ - $tgr[count($tgr)-1]['endtime'] = $v['end_time']; - $tgr[count($tgr)-1]['ratio'] = $v['ratio']; - $tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio']; - - $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']]; - } - } - } - //模板填充 - foreach($game_ratio as $k=>&$list){ - foreach($list as $i => &$ratio){ - if(!isset($ratio['ratio'])){ - if(isset($modul_ratio[$k]['ratio'])){ - $ratio['ratio'] = $modul_ratio[$k]['ratio']; - $ratio['turnover_ratio'] = $modul_ratio[$k]['turnover_ratio']; - }else{ - $ratio['ratio'] = 0; - $ratio['turnover_ratio'] =null; - } + }else{ + if($amount > $v['turnover']){ + $ratio = $v['ratio']; } } } - return $game_ratio; + return $ratio; + } + + protected function getRelationGameIdSpend($company_id,$relation_game_id,$begintime,$endtime) + { + $res = []; + //获取推广员 + $Promote = M("Promote","tab_"); + $Spend = M("Spend","tab_"); + $spenMap = [ + "s.pay_status"=>1, + "s.payed_time"=>['between', [$begintime,$endtime]], + ]; + + $company_id = $company_id; + $pres = $Promote->field("group_concat(id) ids,count(id) count")->where("company_id = '{$company_id}'")->group("company_id")->find(); + if($pres['count'] ==0 ){return 0;} + $spenMap['s.promote_id']=["in",$pres['ids']]; + //游戏 + + $game_id = D("Game")->changeRelationGameidToGameid($relation_game_id); + // dd($game_id); + $spenMap['s.game_id'] =['in',$game_id]; + //获取支付记录 + $pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find(); + return $pay_amount['pay_amount'] ?? 0; } /** diff --git a/Application/Admin/Model/CompanyGameRatioModel.class.php b/Application/Admin/Model/CompanyGameRatioModel.class.php new file mode 100644 index 000000000..f2ebb4f1f --- /dev/null +++ b/Application/Admin/Model/CompanyGameRatioModel.class.php @@ -0,0 +1,109 @@ +field("company_belong")->where("id='{$company_id}'")->find()['company_belong']; + } + + $mwhere = [ + "company_belong"=>$company_belong, + "relation_game_id"=>["in",$game_ids] + ]; + $m_res = M("GameRatioMould","tab_")->where($mwhere)->select(); + $modul_ratio = []; + for ($i=0; $i < count($m_res); $i++) { + $modul_ratio[$m_res[$i]['relation_game_id']] = $m_res[$i]; + } + unset($m_res); + //设置默认 + $game_ratio = []; + $tmp_g = explode(",",$game_ids); + for ($i=0; $i < count($tmp_g); $i++) { + $game_ratio[$tmp_g[$i]] = [ + ["begintime"=>$begintime,"endtime"=>$endtime] + ]; + } + $map = [ + "company_id"=>$company_id, + "relation_game_id"=>['in',$game_ids], + "_string"=>"begin_time <={$endtime} AND ( end_time = 0 OR end_time >= {$begintime})" + ]; + $res = $this->where($map)->order("begin_time asc")->select(); + foreach($res as $k=>$v){ + //获取最后一个数据 + $tgr = &$game_ratio[$v['relation_game_id']]; + $last_time_ratio = end($game_ratio[$v['relation_game_id']]); + if($v['end_time'] == 0 || ($v['end_time'] >= $last_time_ratio['endtime'])){ + //全段 + if($v['begin_time'] <= $last_time_ratio['begintime']){ + $tgr[count($tgr)-1]['ratio'] = $v['ratio']; + $tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio']; + continue; + }else{ + //上分段 + $tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1; + $tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; + continue; + } + } + if($v['end_time'] < $last_time_ratio['endtime']){ + if($last_time_ratio['begintime'] < $v['begin_time']){ + //中段 + $tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1; + + $tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$v['end_time'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; + + $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']]; + continue; + } + if($last_time_ratio['begintime'] > $v['begin_time']){ + //下分段 + $tgr[count($tgr)-1]['endtime'] = $v['end_time']; + $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']]; + continue; + } + if($last_time_ratio['begintime'] = $v['begin_time']){ + $tgr[count($tgr)-1]['endtime'] = $v['end_time']; + $tgr[count($tgr)-1]['ratio'] = $v['ratio']; + $tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio']; + + $tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']]; + } + } + } + //模板填充 + foreach($game_ratio as $k=>&$list){ + foreach($list as $i => &$ratio){ + if(!isset($ratio['ratio'])){ + if(isset($modul_ratio[$k]['ratio'])){ + $ratio['ratio'] = $modul_ratio[$k]['ratio']; + $ratio['turnover_ratio'] = $modul_ratio[$k]['turnover_ratio']; + }else{ + $ratio['ratio'] = 0; + $ratio['turnover_ratio'] =null; + } + } + } + } + return $game_ratio; + } +} \ No newline at end of file diff --git a/Application/Admin/Model/GameModel.class.php b/Application/Admin/Model/GameModel.class.php index fdaee470c..545a2c22e 100644 --- a/Application/Admin/Model/GameModel.class.php +++ b/Application/Admin/Model/GameModel.class.php @@ -462,7 +462,7 @@ class GameModel extends Model{ */ public function changeRelationGameidToGameid($ids,$type=false) { - $rid = $this->field('id')->where(["relation_game_id"=>["in",$ids]])->select(); + $rid = $this->field('id')->where("relation_game_id in ({$ids})")->select(); if($type){ return array_column($rid,'id'); }else{ @@ -479,7 +479,7 @@ class GameModel extends Model{ */ public function changeGameidToRelationGameid($ids,$type=false) { - $rid = $this->field('relation_game_id')->where(["id"=>["in",$ids]])->group("relation_game_id")->select(); + $rid = $this->field('relation_game_id')->where("id in ({$ids})")->group("relation_game_id")->select(); if($type){ return array_column($rid,'relation_game_id'); }else{ From ed66facc8f63ddd4f8f66bae7aed3e08c558bbb8 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Mon, 24 Aug 2020 11:06:43 +0800 Subject: [PATCH 48/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/CompanyStatementPoolController.class.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementPoolController.class.php b/Application/Admin/Controller/CompanyStatementPoolController.class.php index e31476763..a86ca4153 100644 --- a/Application/Admin/Controller/CompanyStatementPoolController.class.php +++ b/Application/Admin/Controller/CompanyStatementPoolController.class.php @@ -970,10 +970,9 @@ class CompanyStatementPoolController extends ThinkController default: break; } - // - if($info['platform_amount'] <= 0 && $info['company_type'] != 2){ - $optist = array_diff($optist, ["viewPool"]); - } + // if($info['platform_amount'] <= 0 && $info['company_type'] != 2){ + // $optist = array_diff($optist, ["viewPool"]); + // } //个人重算,上游撤销 if($re_op){ From a18df8c6fb9646ccf42de1b8363036418514f5b7 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Mon, 24 Aug 2020 15:32:43 +0800 Subject: [PATCH 49/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=A4=9A=E6=AF=94=E4=BE=8B=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementSetController.class.php | 135 ++++++++++++++---- 1 file changed, 107 insertions(+), 28 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 3773c5c1c..ddd0b5e3b 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -644,7 +644,7 @@ class CompanyStatementSetController extends Controller { $tratio =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); $tratio += $company_ratio; }elseif($type == 0){ - $tratio = $t_game_ratio['ratio']; + $tratio = $tmp_game_ratio['ratio']; }else{ //补点 $tratio1 =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); @@ -878,6 +878,8 @@ class CompanyStatementSetController extends Controller { $game[$v['relation_game_id']]['pay_amount'] = $v['pay_amount']; } } + $pcList[$company_id]['game_ids'] = implode(",",array_keys($game)); + foreach($list as $k=>$v){ try { $res[$company_id]["pay_amount"] += $v['pay_amount']; @@ -1075,40 +1077,88 @@ class CompanyStatementSetController extends Controller { $v['statement_money'] -= $v['server_fee']; } } - + $promoteCompanyGameRatio = D("CompanyGameRatio")->getPromoteCompanyGameRatio($v['id'],$v['game_ids'],$begintime,$endtime,$company_belong); foreach($v['list'] as $ke=>$va){ $templist = $va['game_list']; $va['game_list'] = []; foreach($templist as $p_id => $p_info){ - // dd($p_info); - if($type == 1){ - $tratio = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],true,$company_belong); - $tratio += $company_ratio; - }elseif($type == 0){ - $tratio = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],false,$company_belong); - }else{ - //补点 - $tratio1 = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],true,$company_belong);; - $tratio2 = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],false,$company_belong); - $tratio = $tratio1-$tratio2+$company_ratio; - if($tratio <= 0){ - continue; + + $ratioCount = count($promoteCompanyGameRatio[$p_info['relation_game_id']]); + $isMoreRatio = $ratioCount > 1 ? true : false; + + if(!$isMoreRatio){ + $tmp_game_ratio = $promoteCompanyGameRatio[$p_info['relation_game_id']][0]; + if($type == 1){ + $tratio =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio += $company_ratio; + }elseif($type == 0){ + $tratio = $tmp_game_ratio['ratio']; + }else{ + //补点 + $tratio1 =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio2 =$tmp_game_ratio['ratio']; + $tratio = $tratio1-$tratio2+$company_ratio; + if($tratio <= 0){ continue;} } - } - if($type == 2){ - $p_info['increment_ratio']=$tratio; + $tratio -= 0; + if($type == 2){ + $p_info['increment_ratio']=$tratio; + }else{ + $p_info['ratio']=$tratio; + } + + $v['platform_amount'] += $p_info['pay_amount']; + $p_info['sum_money']=round($p_info['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例 + $v['pay_amount'] += $p_info['sum_money']; + $v['statement_money'] += $p_info['sum_money']; + $p_info['fax_ratio']=$fax_ratio; + $p_info['statement_begin_time']=$statement_begin_time; + $p_info['statement_end_time']=$statement_end_time; + $p_info['statement_type']=0; + $va['game_list'][] = $p_info; }else{ - $p_info['ratio']=$tratio; + for ($i=0; $i < $ratioCount; $i++) { + $temp_game = []; + $tmp_game_ratio = $promoteCompanyGameRatio[$p_info['relation_game_id']][$i]; + if($type == 1){ + $tratio =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio += $company_ratio; + }elseif($type == 0){ + $tratio = $tmp_game_ratio['ratio']; + }else{ + //补点 + $tratio1 =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio2 =$tmp_game_ratio['ratio']; + $tratio = $tratio1-$tratio2+$company_ratio; + if($tratio <= 0){ continue;} + } + $tratio -= 0; + if($type == 2){ + $temp_game['increment_ratio']=$tratio; + }else{ + $temp_game['ratio']=$tratio; + } + $temp_game['pay_amount'] = $this->getRelationGameIdPromoteSpend($p_info["p_id"],$p_info['relation_game_id'],$tmp_game_ratio['begintime'],$tmp_game_ratio['endtime']); + $temp_game['pay_amount'] -=0; + + $v['platform_amount'] += $temp_game['pay_amount']; + $temp_game['sum_money']=round($temp_game['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例 + $v['pay_amount'] += $temp_game['sum_money']; + $v['statement_money'] += $temp_game['sum_money']; + + $temp_game['fax_ratio']=$fax_ratio-0; + $temp_game['statement_begin_time']=date("Y.m.d",$tmp_game_ratio['begintime']); + $temp_game['statement_end_time']=date("Y.m.d",$tmp_game_ratio['endtime']); + $temp_game['statement_type']=0; + + $temp_game['relation_game_id']=$p_info["relation_game_id"]; + $temp_game['game_name']=$p_info["game_name"]; + $temp_game['game_type_name']=$p_info["game_type_name"]; + $temp_game['all_pay_amount']=$p_info["all_pay_amount"]; + + $va['game_list'][] = $temp_game; + } } - $v['platform_amount'] += $p_info['pay_amount']; - $p_info['sum_money']=round($p_info['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例 - $v['pay_amount'] += $p_info['sum_money']; - $v['statement_money'] += $p_info['sum_money']; - $p_info['fax_ratio']=$fax_ratio; - $p_info['statement_begin_time']=$statement_begin_time; - $p_info['statement_end_time']=$statement_end_time; - $p_info['statement_type']=0; - $va['game_list'][] = $p_info; } $v['statement_info'][] = $va; } @@ -1383,6 +1433,35 @@ class CompanyStatementSetController extends Controller { $pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find(); return $pay_amount['pay_amount'] ?? 0; } + + protected function getRelationGameIdPromoteSpend($promote_id,$relation_game_id,$begintime,$endtime) + { + $res = []; + //获取推广员 + $Promote = M("Promote","tab_"); + $Spend = M("Spend","tab_"); + $spenMap = [ + "s.pay_status"=>1, + "s.payed_time"=>['between', [$begintime,$endtime]], + ]; + + $Pmap = [ + "chain"=>["LIKE","%/{$promote_id}/%"], + "_logic"=>"OR", + "id"=>$promote_id + ]; + $pres = $Promote->field("group_concat(id) ids,count(id) count")->where($Pmap)->group("company_id")->find(); + if($pres['count'] ==0 ){return 0;} + $spenMap['s.promote_id']=["in",$pres['ids']]; + //游戏 + + $game_id = D("Game")->changeRelationGameidToGameid($relation_game_id); + // dd($game_id); + $spenMap['s.game_id'] =['in',$game_id]; + //获取支付记录 + $pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find(); + return $pay_amount['pay_amount'] ?? 0; + } /** * 重算接口 From 36d72848bbef5503ab4c11aff0d93c640f73db7c Mon Sep 17 00:00:00 2001 From: chenzhi Date: Mon, 24 Aug 2020 15:34:01 +0800 Subject: [PATCH 50/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B8=82=E5=9C=BA?= =?UTF-8?q?=E4=B8=93=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Admin/View/CompanyStatementPool/viewPuPool.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/Admin/View/CompanyStatementPool/viewPuPool.html b/Application/Admin/View/CompanyStatementPool/viewPuPool.html index 1b6a6c127..749557685 100644 --- a/Application/Admin/View/CompanyStatementPool/viewPuPool.html +++ b/Application/Admin/View/CompanyStatementPool/viewPuPool.html @@ -103,7 +103,7 @@ 下游名称 会长账号 下游类型 - 市场员 + 市场专员 下游性质 产品 产品类型 From 79468aa6f297ec2b59f1efc6e6fd772b72c124b6 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Mon, 24 Aug 2020 17:28:00 +0800 Subject: [PATCH 51/57] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementController.class.php | 16 +++++++++++++--- .../Admin/View/CompanyStatement/lists.html | 8 +++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementController.class.php b/Application/Admin/Controller/CompanyStatementController.class.php index 5288057f2..e157ef131 100644 --- a/Application/Admin/Controller/CompanyStatementController.class.php +++ b/Application/Admin/Controller/CompanyStatementController.class.php @@ -306,6 +306,16 @@ class CompanyStatementController extends ThinkController } } } + public function delStatement(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $dbres = $this->DBModel->where("id in ({$ids}) and verify_status = 0")->delete(); + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"删除成功" + )); + } + //审批通过 public function adminAgree(){ $this->setVerifyStatus(0,1,"admin"); @@ -729,9 +739,9 @@ class CompanyStatementController extends ThinkController } } //新增结算 - //获取要结算的公司及日期 public function getNewStatement() { + //获取要结算的公司及日期 $senddata = [ "up_company_id"=>[], "dowm_company_id"=>[], @@ -745,8 +755,7 @@ class CompanyStatementController extends ThinkController }else{ $dowm_company_id[]= $v['company_id']; } - } - ; + }; //获取上游 if(empty($up_company_id)){ $upwhere = "1=1"; @@ -895,6 +904,7 @@ class CompanyStatementController extends ThinkController "export"=>"批量导出", "updateNewStatement"=>"新增结算", "launch"=>"对外发起", + "delStatement"=>"批量删除" ]; $resarr = []; foreach ($mentBtn as $k => $v) { diff --git a/Application/Admin/View/CompanyStatement/lists.html b/Application/Admin/View/CompanyStatement/lists.html index 1fc8d3483..44518f378 100644 --- a/Application/Admin/View/CompanyStatement/lists.html +++ b/Application/Admin/View/CompanyStatement/lists.html @@ -443,7 +443,7 @@ }); }); - $("#adminAgree,#adminRefuse,#verifyAgree,#verifyRefuse,#pool,#updateStatement").on("click",function(){ + $("#adminAgree,#adminRefuse,#verifyAgree,#verifyRefuse,#pool,#updateStatement,#delStatement").on("click",function(){ var id = $(this).attr("id"); if(id == "adminAgree"){ var opname = "管理员审批通过"; @@ -466,6 +466,12 @@ var opst ="[汇总撤销,管理员审批拒绝,未进行审批,管理员审批通过]"; var status = [-3,-2,-1,0,1]; var confirm = true; + }else if(id=="delStatement"){ + var opname = "批量删除"; + var opurl = "{:U('delStatement')}"; + var opst ="[未进行审批]"; + var status = [0]; + var confirm = true; } var confirm = confirm ? confirm :false; var flag = false; From b35d0a0e958578fe994f9be0bbfa92f9e1dc12ad Mon Sep 17 00:00:00 2001 From: chenzhi Date: Mon, 24 Aug 2020 17:30:58 +0800 Subject: [PATCH 52/57] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Controller/CompanyStatementController.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Application/Admin/Controller/CompanyStatementController.class.php b/Application/Admin/Controller/CompanyStatementController.class.php index e157ef131..6b31b7964 100644 --- a/Application/Admin/Controller/CompanyStatementController.class.php +++ b/Application/Admin/Controller/CompanyStatementController.class.php @@ -310,6 +310,7 @@ class CompanyStatementController extends ThinkController if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; $dbres = $this->DBModel->where("id in ({$ids}) and verify_status = 0")->delete(); + addOperationLog(['op_type'=>2,'key'=>$ids,"op_name"=>"删除结算单",'url'=>U('lists')]); $this->ajaxReturn(array( 'status' => 1, "info"=>"删除成功" From e2d179acd80d284f59b84c6635a1a6aa18462c77 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 25 Aug 2020 09:20:22 +0800 Subject: [PATCH 53/57] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E6=89=93=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ompanyStatementOfflineController.class.php | 158 +++++++ .../CompanyStatementPoolController.class.php | 1 + .../View/CompanyStatementOffline/lists.html | 407 ++++++++++++++++++ 3 files changed, 566 insertions(+) create mode 100644 Application/Admin/Controller/CompanyStatementOfflineController.class.php create mode 100644 Application/Admin/View/CompanyStatementOffline/lists.html diff --git a/Application/Admin/Controller/CompanyStatementOfflineController.class.php b/Application/Admin/Controller/CompanyStatementOfflineController.class.php new file mode 100644 index 000000000..25893f7f5 --- /dev/null +++ b/Application/Admin/Controller/CompanyStatementOfflineController.class.php @@ -0,0 +1,158 @@ +"下游公司", + "2"=>"下游个人", + "3"=>"上游公司" + ]; + public $IsPayment = [ + "1"=>"是", + "2"=>"否" + ]; + public $PayStatus=[ + "-1"=>"打款失败", + "0"=>"未打款", + "1"=>"打款成功" + ]; + public $VerifyStatus=[ + "-1"=>"审批拒绝", + "0"=>"未审批", + "1"=>"审批通过", + ]; + public function lists() { + $params = I('get.'); + $page = $params['p'] ? intval($params['p']) : 1; + $row = $params['row'] ? intval($params['row']) : 10; + //权限分配 + if(!IS_ROOT){ + $this->OpAuthList= getModuleControllerAuth(); + } + $this->assign('menubtn',$this->menuAuth()); + + $map = [ + "c.verify_status"=>2 + ]; + if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) { + $time_start = strtotime($_REQUEST['time_start']); + $time_end = strtotime($_REQUEST['time_end'])+ 86399; + $map["_string"] = "(c.statement_begin_time BETWEEN {$time_start} AND {$time_end}) OR (c.statement_end_time BETWEEN {$time_start} AND {$time_end}) OR (c.statement_begin_time <= {$time_end} AND c.statement_end_time >= {$time_end})"; + } elseif (isset($_REQUEST['time_start'])) { + $time_start = strtotime($_REQUEST['time_start']); + $map["_string"] = "(c.statement_begin_time >= {$time_start} ) OR (c.statement_end_time >= {$time_start})"; + } elseif (isset($_REQUEST['time_end'])) { + $time_end = strtotime($_REQUEST['time_end'])+ 86399; + $map["_string"] = "(c.statement_begin_time <= {$time_end} ) OR (c.statement_end_time <= {$time_end})"; + } + + //其他 + if(isset($_REQUEST['company_type'])){ + $map['c.company_type'] = $_REQUEST['company_type']; + } + if(isset($_REQUEST['company_name'])){ + $map['c.company_name'] =["LIKE","%{$_REQUEST['company_name']}%"]; + } + // if(isset($_REQUEST['statement_pool_num'])){ + // $map['statement_pool_num'] =["LIKE","%{$_REQUEST['statement_pool_num']}%"]; + // } + // if(isset($_REQUEST['is_payment'])){ + // $map['is_payment'] = $_REQUEST['is_payment']; + // } + + // $this->checkListOrCountAuthRestMap($map);//导出权限 + + //条件end + $data = M("company_statement_info","tab_") + ->alias("c") + ->field("c.*,p.statement_num,p.verify_status") + ->where($map) + + ->join("left join tab_company_statement_pool as p ON c.pool_id = p.id") + + ->page($page,$row) + ->order("id desc") + ->select(); + + foreach($data as $k => &$v) { + + $v['statement_begin_time'] = date('Y.m.d',$v['statement_begin_time']); + $v['statement_end_time'] = date('Y.m.d',$v['statement_end_time']); + $v['company_type_str'] = $this->CompanyType[$v['company_type']]; + $v["valid"] = "{$v['statement_begin_time']}-{$v['statement_end_time']}"; + $v["pay_status_str"] = $this->PayStatus[$v["pay_status"]]; + if($v["verify_status"] < 0){ + $v["verify_status"] = -1; + } + if($v["verify_status"] > 0){ + $v["verify_status"] = 1; + } + $v["verify_status_str"] = $this->VerifyStatus[$v["verify_status"]]; + + + $v['oplist'] = $this->OpAuth($v); + } + + $count = M("company_statement_info","tab_")->alias("c")->field("count(id) count,sum(statement_money) statement_money")->where($map)->find(); + // dd($count); + $params['p'] = $page; + $params['row'] = $row; + $page = set_pagination($count['count'], $row, $params); + if ($page) { + $this->assign('_page', $page); + } + // dd($data); + $this->assign('data',$data); + $this->assign('count',$count); + $this->assign('CompanyType',$this->CompanyType); + $this->display(); + + } + + public function OpAuth($info) + { + $id = $info['id']; + $type = $info['company_type']; + //原始列表 + $opBtn = [ + "viewStatement"=>"查看", + ]; + //操作对应菜单 + $optist = ["viewStatement"]; + $resarr = []; + foreach ($optist as $k => $v) { + if(IS_ROOT){ + $resarr[] = $opBtn[$v]; + }else{ + if(in_array($v,$this->OpAuthList)){ + $resarr[] = $opBtn[$v]; + } + } + } + return $resarr; + } + public function menuAuth() + { + $mentBtn = [ + "pool"=>"发起汇总", + "export"=>"批量导出" + ]; + $resarr = []; + foreach ($mentBtn as $k => $v) { + if(IS_ROOT){ + $resarr[] = $v; + }else{ + if(in_array($k,$this->OpAuthList)){ + $resarr[] = $v; + } + } + } + return $resarr; + } + +} diff --git a/Application/Admin/Controller/CompanyStatementPoolController.class.php b/Application/Admin/Controller/CompanyStatementPoolController.class.php index a86ca4153..ccf4b5520 100644 --- a/Application/Admin/Controller/CompanyStatementPoolController.class.php +++ b/Application/Admin/Controller/CompanyStatementPoolController.class.php @@ -293,6 +293,7 @@ class CompanyStatementPoolController extends ThinkController $count["platform_amount"] = "=SUM(J2:J".$line.")"; $count["sum_money"] = "=SUM(P2:P".$line.")"; } + // dd($infolist); $this->assign("data",$infolist); $this->assign("count",$count); $this->assign("is_export",$is_export); diff --git a/Application/Admin/View/CompanyStatementOffline/lists.html b/Application/Admin/View/CompanyStatementOffline/lists.html new file mode 100644 index 000000000..c461dcf05 --- /dev/null +++ b/Application/Admin/View/CompanyStatementOffline/lists.html @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+   +
+ +
+   +
+ +
+ +  -  +
+ + +
+
+ + + +
+ 搜索 +
+ +
+
+ +
+
+ + {$vo} + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
合作公司公司类型结算时间结算金额结算流水汇总单状态打款状态汇总单号汇总单号操作
aOh! 暂时还没有内容!
{$data.company_name}{$data.company_type_str}{$data.valid}{$data.statement_money}{$data.platform_amount}{$data.verify_status_str}{$data.pay_status_str}{$data.statement_num} + + {$vo} + +
合计结算总金额: {$count.statement_money}
+
+ +
+
+ + + + {$_page|default=''} +
+
+ + + + if(C('COLOR_STYLE')=='blue_color') echo ' + + '; + + + + + + + + + + From 69cf42e895270a7fe6818b4d4ee0da94a6d8893f Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 25 Aug 2020 11:16:24 +0800 Subject: [PATCH 54/57] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=89=93=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ompanyStatementOfflineController.class.php | 88 ++++++++++++++----- .../CompanyStatementPoolController.class.php | 12 +-- .../View/CompanyStatementOffline/lists.html | 21 ++--- 3 files changed, 75 insertions(+), 46 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementOfflineController.class.php b/Application/Admin/Controller/CompanyStatementOfflineController.class.php index 25893f7f5..795822b43 100644 --- a/Application/Admin/Controller/CompanyStatementOfflineController.class.php +++ b/Application/Admin/Controller/CompanyStatementOfflineController.class.php @@ -21,11 +21,7 @@ class CompanyStatementOfflineController extends ThinkController "0"=>"未打款", "1"=>"打款成功" ]; - public $VerifyStatus=[ - "-1"=>"审批拒绝", - "0"=>"未审批", - "1"=>"审批通过", - ]; + public function lists() { $params = I('get.'); $page = $params['p'] ? intval($params['p']) : 1; @@ -37,7 +33,8 @@ class CompanyStatementOfflineController extends ThinkController $this->assign('menubtn',$this->menuAuth()); $map = [ - "c.verify_status"=>2 + "c.verify_status"=>2, + "p.verify_status"=>["GT",1] ]; if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) { $time_start = strtotime($_REQUEST['time_start']); @@ -58,14 +55,6 @@ class CompanyStatementOfflineController extends ThinkController if(isset($_REQUEST['company_name'])){ $map['c.company_name'] =["LIKE","%{$_REQUEST['company_name']}%"]; } - // if(isset($_REQUEST['statement_pool_num'])){ - // $map['statement_pool_num'] =["LIKE","%{$_REQUEST['statement_pool_num']}%"]; - // } - // if(isset($_REQUEST['is_payment'])){ - // $map['is_payment'] = $_REQUEST['is_payment']; - // } - - // $this->checkListOrCountAuthRestMap($map);//导出权限 //条件end $data = M("company_statement_info","tab_") @@ -73,7 +62,7 @@ class CompanyStatementOfflineController extends ThinkController ->field("c.*,p.statement_num,p.verify_status") ->where($map) - ->join("left join tab_company_statement_pool as p ON c.pool_id = p.id") + ->join("tab_company_statement_pool as p ON c.pool_id = p.id") ->page($page,$row) ->order("id desc") @@ -86,19 +75,18 @@ class CompanyStatementOfflineController extends ThinkController $v['company_type_str'] = $this->CompanyType[$v['company_type']]; $v["valid"] = "{$v['statement_begin_time']}-{$v['statement_end_time']}"; $v["pay_status_str"] = $this->PayStatus[$v["pay_status"]]; - if($v["verify_status"] < 0){ - $v["verify_status"] = -1; - } - if($v["verify_status"] > 0){ - $v["verify_status"] = 1; + + $v["pay_info"] = json_decode($v['pay_info'], true); + if(isset($v['pay_info']['payment_user'])){ + $v["payment"]= "{$v['pay_status_str']}({$v['verify_log']['payment_user']})
{$v['verify_log']['payment_time']}"; + }else{ + $v["payment"] = $v["pay_status_str"]; } - $v["verify_status_str"] = $this->VerifyStatus[$v["verify_status"]]; - $v['oplist'] = $this->OpAuth($v); } - $count = M("company_statement_info","tab_")->alias("c")->field("count(id) count,sum(statement_money) statement_money")->where($map)->find(); + $count = M("company_statement_info","tab_")->alias("c")->field("count(c.id) count,sum(c.statement_money) statement_money")->join("tab_company_statement_pool as p ON c.pool_id = p.id")->where($map)->find(); // dd($count); $params['p'] = $page; $params['row'] = $row; @@ -113,6 +101,58 @@ class CompanyStatementOfflineController extends ThinkController $this->display(); } + public function doPayment() + { + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + //获取所有的母单id + $companyStatementInfo = M("company_statement_info","tab_"); + $statementPool = $companyStatementInfo->where("id in ($ids) and pay_status <> 1")->field("pool_id,count(id) count")->group("pool_id")->select(); + $poolInfo = []; + foreach ($statementPool as $k => $v) { + $poolInfo[$v['pool_id']] = $v['count']; + } + unset($statementPool); + + //修改info + $saveData = [ + "pay_type"=>3, + "pay_status"=>1, + "pay_info"=>json_encode(["payment_user"=>$_SESSION['onethink_admin']['user_auth']["username"],"payment_time"=>date("Y-m-d H:i:s")]) + ]; + $ires = $companyStatementInfo->where("id in ($ids)")->save($saveData); + + //获取母单未支付完成订单 + $poolIds = implode(",",array_keys($poolInfo)); + $poolInfo = $companyStatementInfo->where("pool_id in ($poolIds) and pay_status <> 1")->field("pool_id,count(id) count")->group("pool_id")->select(); + + //全部就打款成功,否则打款中 + $companyStatementPool = M("company_statement_pool","tab_"); + foreach ($poolInfo as $k => $v) { + if($v['count'] == $poolInfo[$v['pool_id']]){ + //打款成功 + $this->setOneVerifyStatus(4,"payment",$v['pool_id']); + }else{ + //打款中 + $this->setOneVerifyStatus(3,"payment",$v['pool_id']); + } + } + + $this->ajaxReturn(array( + 'status' =>1, + "info"=>"打款确认成功" + )); + } + protected function setOneVerifyStatus($change_status,$op_pre,$id) + { + $dbres = M("company_statement_pool","tab_")->field("id,verify_status,verify_log")->where("id = {$id}")->find(); + $dbres['verify_log'] = json_decode($dbres['verify_log'],true); + $dbres['verify_log'][$op_pre.'_user']=$_SESSION['onethink_admin']['user_auth']["username"]; + $dbres['verify_log'][$op_pre.'_time']=date("Y-m-d H:i:s"); + $dbres['verify_log'] = json_encode($dbres['verify_log']); + $dbres['verify_status']=$change_status; + M("company_statement_pool","tab_")->save($dbres); + } public function OpAuth($info) { @@ -139,7 +179,7 @@ class CompanyStatementOfflineController extends ThinkController public function menuAuth() { $mentBtn = [ - "pool"=>"发起汇总", + "doPayment"=>"打款确认", "export"=>"批量导出" ]; $resarr = []; diff --git a/Application/Admin/Controller/CompanyStatementPoolController.class.php b/Application/Admin/Controller/CompanyStatementPoolController.class.php index ccf4b5520..ad6a3bf0f 100644 --- a/Application/Admin/Controller/CompanyStatementPoolController.class.php +++ b/Application/Admin/Controller/CompanyStatementPoolController.class.php @@ -151,24 +151,16 @@ class CompanyStatementPoolController extends ThinkController if(isset($v['verify_log']['payment_user'])){ if($v['verify_status'] == -2){ $ts = "拒绝打款"; - $v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}"; }elseif($v['verify_status'] == 2){ $ts = "待打款"; - $v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}"; }elseif($v['verify_status'] == 3){ $ts = "打款中"; - $v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}"; }elseif($v['verify_status'] == 4){ - if($v['is_payment']==1){ - $ts="线上打款成功"; - }else{ - $ts="线下打款成功"; - } - $v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}"; + $ts="打款成功"; }elseif($v['verify_status'] == 5){ $ts="无需打款"; - $v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}"; } + $v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}"; }else{ $v["payment"] = '--'; } diff --git a/Application/Admin/View/CompanyStatementOffline/lists.html b/Application/Admin/View/CompanyStatementOffline/lists.html index c461dcf05..97e8017e6 100644 --- a/Application/Admin/View/CompanyStatementOffline/lists.html +++ b/Application/Admin/View/CompanyStatementOffline/lists.html @@ -162,7 +162,6 @@ 结算金额 结算流水 - 汇总单状态 打款状态 汇总单号汇总单号 @@ -180,13 +179,12 @@ - + {$data.company_name} {$data.company_type_str} {$data.valid} {$data.statement_money} {$data.platform_amount} - {$data.verify_status_str} {$data.pay_status_str} {$data.statement_num} @@ -279,24 +277,23 @@ }); }); - $("#pool").on("click",function(){ + $("#doPayment").on("click",function(){ var id = $(this).attr("id"); var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { - return $(elem).val(); + if($(elem).data("paystatus") == 0){ + return $(elem).val(); + } }).get(); - if(text.length > 40){ - layer.msg("" + '为保证效率暂不支持超过40条的批量操作' + ""); - return; - } if(text.length < 1){ - layer.msg("" + '无需要汇总的操作'+""); + layer.msg("无需要进行确认打款确认操作的数据"); return; } + text = text.join(","); if(confirm){ - layer.confirm('【警告】汇总后将不可回退,如需继续请点击确认', { + layer.confirm('【警告】确认打款后将不可回退,如需继续请点击确认', { btn: ['确认','取消'], title:false }, function(){ @@ -310,7 +307,7 @@ //执行 $.ajax({ type: "POST", - url: "{:U('pool')}", + url: "{:U('doPayment')}", dataType: 'json', async: false, data: {ids:text}, From 4a98c587fa1a80c9705883cf14dfd1f8310af68f Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 25 Aug 2020 14:46:57 +0800 Subject: [PATCH 55/57] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E6=89=93=E6=AC=BE=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ompanyStatementOfflineController.class.php | 58 ++++++++++++++++++- .../CompanyStatementPoolController.class.php | 11 +++- .../View/CompanyStatementOffline/lists.html | 38 ++++++------ .../View/CompanyStatementPool/lists.html | 4 +- .../CompanyStatementPool/viewPayment.html | 25 ++++++-- 5 files changed, 105 insertions(+), 31 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementOfflineController.class.php b/Application/Admin/Controller/CompanyStatementOfflineController.class.php index 795822b43..c9b44d4f3 100644 --- a/Application/Admin/Controller/CompanyStatementOfflineController.class.php +++ b/Application/Admin/Controller/CompanyStatementOfflineController.class.php @@ -56,6 +56,12 @@ class CompanyStatementOfflineController extends ThinkController $map['c.company_name'] =["LIKE","%{$_REQUEST['company_name']}%"]; } + if(isset($_REQUEST['statement_pool_num'])){ + $map['p.statement_num'] =["LIKE","%{$_REQUEST['statement_pool_num']}%"]; + } + + + //条件end $data = M("company_statement_info","tab_") ->alias("c") @@ -78,7 +84,7 @@ class CompanyStatementOfflineController extends ThinkController $v["pay_info"] = json_decode($v['pay_info'], true); if(isset($v['pay_info']['payment_user'])){ - $v["payment"]= "{$v['pay_status_str']}({$v['verify_log']['payment_user']})
{$v['verify_log']['payment_time']}"; + $v["payment"]= "{$v['pay_status_str']}({$v['pay_info']['payment_user']})
{$v['pay_info']['payment_time']}"; }else{ $v["payment"] = $v["pay_status_str"]; } @@ -143,6 +149,56 @@ class CompanyStatementOfflineController extends ThinkController "info"=>"打款确认成功" )); } + public function viewStatement() + { + if(!isset($_REQUEST['id'])){ + $this->error('参数错误'); + } + $id = $_REQUEST['id']; + $is_export= false; + if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ + $is_export = true; + } + //获取基本信息 + $dbres = M("company_statement_info","tab_")->where("id='{$id}'")->select(); + $title = $dbres[0]['company_name']; + $this->assign("title",$title); + + if($dbres[0]['company_type'] == 3){ + //上游 + A("CompanyStatementPool")->viewCpPool($dbres,$is_export); + }elseif($dbres[0]['company_type'] == 1){ + //下游公司 + A("CompanyStatementPool")->viewPcPool($dbres,$is_export); + }else{ + A("CompanyStatementPool")->viewPuPool($dbres,$is_export); + } + } + + public function export(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $dbres = M("company_statement_info","tab_")->where("id in ({$ids})")->select(); + + $is_export= false; + if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ + $is_export = true; + } + + if($dbres[0]['company_type'] == 3){ + //上游 + $this->assign("title","上游公司线下打款"); + A("CompanyStatementPool")->viewCpPool($dbres,$is_export); + }elseif($dbres[0]['company_type'] == 1){ + //下游公司 + $this->assign("title","下游公司线下打款"); + A("CompanyStatementPool")->viewPcPool($dbres,$is_export); + }else{ + $this->assign("title","下游个人线下打款"); + A("CompanyStatementPool")->viewPuPool($dbres,$is_export); + } + } + protected function setOneVerifyStatus($change_status,$op_pre,$id) { $dbres = M("company_statement_pool","tab_")->field("id,verify_status,verify_log")->where("id = {$id}")->find(); diff --git a/Application/Admin/Controller/CompanyStatementPoolController.class.php b/Application/Admin/Controller/CompanyStatementPoolController.class.php index ad6a3bf0f..08214598f 100644 --- a/Application/Admin/Controller/CompanyStatementPoolController.class.php +++ b/Application/Admin/Controller/CompanyStatementPoolController.class.php @@ -578,11 +578,16 @@ class CompanyStatementPoolController extends ThinkController $v['company_info'] = json_decode($v['company_info'],true); $v['company_info']['ali_user'] ?? ''; $v['company_info']['ali_account'] ?? ''; - $v['verify_status_str'] = $this->InfoVerifyStatus[ $v['verify_status']]; + + if($v['verify_status'] == 2){ + $v['is_payment'] = 2; + }else{ + $v['is_payment'] = 1; + } + + $v['verify_status_str'] = $this->PayStatus[$v['pay_status']]; if($v['verify_status'] == 1){ - - $v['verify_status_str'] = $this->PayStatus[$v['pay_status']]; if($v['pay_status'] == 1){ $v['pay_type'] = $v['pay_type'] == 1 ? "提现" :"线上打款"; $v['verify_status_str'] .= ("/". $v['pay_type']); diff --git a/Application/Admin/View/CompanyStatementOffline/lists.html b/Application/Admin/View/CompanyStatementOffline/lists.html index 97e8017e6..935c60ec7 100644 --- a/Application/Admin/View/CompanyStatementOffline/lists.html +++ b/Application/Admin/View/CompanyStatementOffline/lists.html @@ -44,9 +44,9 @@ font-weight: 600; font-size: 18px; } - /* .data_list table td{ + .data_list table td{ line-height: 2; - } */ + } .layui-layer-title { text-align: center; @@ -179,13 +179,13 @@ - + {$data.company_name} {$data.company_type_str} {$data.valid} {$data.statement_money} {$data.platform_amount} - {$data.pay_status_str} + {$data.payment} {$data.statement_num} @@ -327,24 +327,22 @@ }) $("#export").click(function () { + var company = []; var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { - return $(elem).val(); - }).get(); - - if(text.length > 20){ - layer.msg("" + '暂不支持超过20条的批量导出' + ""); - return; - } - if(text.length < 1){ - layer.msg("" + '请先选择要导出的结算单' + ""); - return; - } - for (var index = 0; index < text.length; index++) { - var id = text[index]; - var url ="{:U('viewStatement')}"+"&id="+id+"&export=1"; - var iframeExcel = ""//添加下载的地址到iframe,这里是公司信息,我用**表示了。 + var cid = $(elem).data("companytype"); + try { + company[cid].push($(elem).val()); + } catch (error) { + company[cid] = []; + company[cid].push($(elem).val()); + } + }); + company.forEach(function(e){ + var ids = e.join(","); + var url ="{:U('export')}"+"&ids="+ids+"&export=1"; + var iframeExcel = ""; $("body").append(iframeExcel) - } + }); }) diff --git a/Application/Admin/View/CompanyStatementPool/lists.html b/Application/Admin/View/CompanyStatementPool/lists.html index 831d04102..3f5ef3ef7 100644 --- a/Application/Admin/View/CompanyStatementPool/lists.html +++ b/Application/Admin/View/CompanyStatementPool/lists.html @@ -430,7 +430,7 @@ title: "海南万盟天下科技有限公司", shadeClose: true, shade: 0.8, - area: ['80%', '80%'], + area: ['100%', '100%'], content: url }); }) @@ -442,7 +442,7 @@ title: "海南万盟天下科技有限公司", shadeClose: true, shade: 0.8, - area: ['70%', '80%'], + area: ['100%', '100%'], content: url }); }) diff --git a/Application/Admin/View/CompanyStatementPool/viewPayment.html b/Application/Admin/View/CompanyStatementPool/viewPayment.html index 3c2edbee7..4f1dfca5a 100644 --- a/Application/Admin/View/CompanyStatementPool/viewPayment.html +++ b/Application/Admin/View/CompanyStatementPool/viewPayment.html @@ -105,8 +105,12 @@ 序号 合作公司 - 支付宝真实名称 - 支付宝账号 + + 是否支付宝打款 + 户名 + 帐号 + 开户行 + 关联结算汇总单订单号 金额(元) 备注 @@ -119,8 +123,19 @@ {$key-0+1} {$vo.company_name} - {$vo.company_info.ali_user} - {$vo.company_info.ali_account} + + + 是 + {$vo.company_info.ali_user} + {$vo.company_info.ali_account} + + + 否 + {$vo.company_info.payee_name} + {$vo.company_info.bank_account} + {$vo.company_info.opening_bank} + + {$vo.statement_num} {$vo.statement_money} {$vo.remark} @@ -130,7 +145,7 @@ 合计: - 打款总金额:{$CompanyInfo[0]['all_money']} + 打款总金额:{$CompanyInfo[0]['all_money']} From 180332ab87d7c88be1aea7d7b144777bd91df364 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 25 Aug 2020 15:42:32 +0800 Subject: [PATCH 56/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E6=B8=B8?= =?UTF-8?q?=E6=9C=AA=E6=B1=87=E6=80=BB=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementLackController.class.php | 24 ++++++++++++++ .../View/CompanyStatementLack/lists.html | 33 +++++++++---------- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/Application/Admin/Controller/CompanyStatementLackController.class.php b/Application/Admin/Controller/CompanyStatementLackController.class.php index 94068a4d4..425229108 100644 --- a/Application/Admin/Controller/CompanyStatementLackController.class.php +++ b/Application/Admin/Controller/CompanyStatementLackController.class.php @@ -241,6 +241,30 @@ class CompanyStatementLackController extends ThinkController "info"=>"汇总成功" )); } + + public function export(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $dbres = $this->DBModel->where("id in ({$ids})")->select(); + + $is_export= false; + if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ + $is_export = true; + } + if($dbres[0]['company_type'] == 3){ + //上游 + $this->assign("title","上游公司未汇总"); + A("CompanyStatementPool")->viewCpPool($dbres,$is_export); + }elseif($dbres[0]['company_type'] == 1){ + //下游公司 + $this->assign("title","下游公司未汇总"); + A("CompanyStatementPool")->viewPcPool($dbres,$is_export); + }else{ + $this->assign("title","下游个人未汇总"); + A("CompanyStatementPool")->viewPuPool($dbres,$is_export); + } + } + protected function addStatementInfo($va,$ke,&$v,$k){ if($k=="ups" || $k=='downs' || $k =="users"){ $verify_status = 0; diff --git a/Application/Admin/View/CompanyStatementLack/lists.html b/Application/Admin/View/CompanyStatementLack/lists.html index bebe385d3..83f332070 100644 --- a/Application/Admin/View/CompanyStatementLack/lists.html +++ b/Application/Admin/View/CompanyStatementLack/lists.html @@ -177,7 +177,7 @@ - + {$data.company_name} {$data.company_type_str} {$data.valid} @@ -327,24 +327,23 @@ }) $("#export").click(function () { + var company = []; var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { - return $(elem).val(); - }).get(); - - if(text.length > 20){ - layer.msg("" + '暂不支持超过20条的批量导出' + ""); - return; - } - if(text.length < 1){ - layer.msg("" + '请先选择要导出的结算单' + ""); - return; - } - for (var index = 0; index < text.length; index++) { - var id = text[index]; - var url ="{:U('viewStatement')}"+"&id="+id+"&export=1"; - var iframeExcel = ""//添加下载的地址到iframe,这里是公司信息,我用**表示了。 + var cid = $(elem).data("companytype"); + try { + company[cid].push($(elem).val()); + } catch (error) { + company[cid] = []; + company[cid].push($(elem).val()); + } + }); + company.forEach(function(e){ + var ids = e.join(","); + var url ="{:U('export')}"+"&ids="+ids+"&export=1"; + var iframeExcel = ""; $("body").append(iframeExcel) - } + }); + }) From 57b692cd67d0521aa982d96216d29536f2997636 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 25 Aug 2020 17:21:56 +0800 Subject: [PATCH 57/57] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8A=E6=B8=B8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Admin/Controller/PartnerController.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Application/Admin/Controller/PartnerController.class.php b/Application/Admin/Controller/PartnerController.class.php index 6ad244e4c..b30c63d31 100644 --- a/Application/Admin/Controller/PartnerController.class.php +++ b/Application/Admin/Controller/PartnerController.class.php @@ -321,12 +321,12 @@ class PartnerController extends ThinkController $save['uid'] = UID; $save['create_time'] = time(); - $has_check = M("partner_verify","tab_")->where(["partner_name"=>$partner_info['partner'],"verify_status"=>0])->field("id")->find(); + $has_check = M("partner_verify","tab_")->where(["partner_name"=>$save['partner'],"verify_status"=>0])->field("id")->find(); if ($has_check) { $this->error('已存在同名未审核的cp,请勿重复添加'); } - $has_check = M("partner","tab_")->where(["partner_name"=>$partner_info['partner']])->field("id")->find(); + $has_check = M("partner","tab_")->where(["partner"=>$save['partner']])->field("id")->find(); if ($has_check) { $this->error('已存在同名cp,请勿重复添加'); }