| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- <?php
- /**
- * 后台的公共控制器类
- *
- */
- namespace app\admin\controller;
- use app\common\controller\Base;
- use app\common\logic\Websocket;
- use app\common\model\Admin as AdminModel;
- use think\Db;
- use think\Session;
- class Admin extends Base
- {
- // 不验证权限的action
- protected $noCheckAuth = [];
- protected $admin_info; //后台登录用户资料
- protected $current_node;
- /**
- * 初始化操作
- */
- protected function _initialize()
- {
- parent::_initialize();
- $session_admin_id = session('ADMIN_ID');
- log_message('Admin@input: sid='.session_id() .' - '. json_encode(input()), 'log', LOG_PATH . 'adminlog/');
- if (!empty($session_admin_id)) {
- if (!$this->checkAccess($session_admin_id)) {
- $this->error("您没有访问权限!");
- }
- // 登陆账户的session到期后,重置token
- if (!session('WS_CONNECT_KEY')) {
- $ws = new Websocket;
- $ws->resettingToken(session_id(), $session_admin_id);
- }
- } else {
- if ($this->request->isPost()) {
- $this->error("您还没有登录!", '/login/index');
- } else {
- return $this->redirect('/login/index');
- }
- }
- $this->current_node = strtolower($this->request->module() . '/' . $this->request->controller() . '/' . $this->request->action());
- }
- /**
- * 检查后台用户访问权限
- * @param int $userId 后台用户id
- * @return boolean 检查通过返回true
- */
- private function checkAccess($userId)
- {
- // 如果用户id是1,则无需判断
- if ($userId == 1) {
- return true;
- }
- $module = $this->request->module();
- $controller = $this->request->controller();
- $action = $this->request->action();
- $rule = $module . $controller . $action;
- // action检测
- $actionCheck = in_array(strtolower($action),
- array_map(function ($val){
- return strtolower($val);
- }, $this->noCheckAuth)
- );
- $notRequire = ["adminIndexindex", "adminMainindex"];
- if (!in_array($rule, $notRequire) &&
- ! $actionCheck) {
- return cmf_auth_check($userId);
- } else {
- return true;
- }
- }
- /**
- * 返回 json
- * @access protected
- * @param mixed $data 要返回的数据
- * @param int $code 返回的 code
- * @param mixed $msg 提示信息
- * @return void
- * @throws HttpResponseException
- */
- public function jsonResult($data, $code = 0, $msg = '')
- {
- $this->result($data, $code, $msg, 'json');
- }
- /**
- * 初始化nw前缀 model
- */
- public function nwModel($dbName)
- {
- return Db::name('nw_' . $dbName);
- }
- /**
- * 初始化cy前缀 model
- */
- public function cyModel($dbName)
- {
- return Db::name('cy_' . $dbName);
- }
- /**
- * 发送短信验证码
- */
- public function sendSmsCode()
- {
- if (request()->isAjax()) {
- $action = input('post.action', '', 'trim');
- switch ($action) {
- case 'coinSend': //发币时短信验证
- $mobile = (new AdminModel)->where(['id' => session('ADMIN_ID')])->value('mobile');
- break;
- default:
- $mobile = input('post.mobile', '', 'trim');
- break;
- }
- $result = (new \app\common\library\Sms)->sendCode($mobile);
- if ($result['status']) {
- $this->success('发送成功,请查收');
- } else {
- $this->error($result['msg']);
- }
- } else {
- $this->error('非法请求');
- }
- }
- protected function insertLog($node = '', $content = '', $type = 0, $admin_id = '', $username = '')
- {
- if (empty($admin_id)) {
- $admin_id = session('ADMIN_ID') ?: 1;
- }
- if (empty($username)) {
- $username = session('USERNAME') ?: '';
- }
-
- return \app\common\logic\Log::insertOperateLog($node, $content, $type, $admin_id, $username);
- }
- /**
- * 排序 排序字段为list_orders数组 POST 排序字段为:list_order
- */
- protected function listOrders($model ,$pk = 'id')
- {
- if (!is_object($model)) {
- return false;
- }
- if ($pk !== 'id') {
- $pk = $model->pk; //获取主键名称
- }
- $ids = $this->request->post("list_orders/a");
- if (!empty($ids)) {
- foreach ($ids as $key => $r) {
- $data['list_order'] = $r;
- $model->where([$pk => $key])->update($data);
- }
- }
- return true;
- }
- /**
- * 下载成exel表格
- *
- * @param array $list 数组
- *
- * @return null
- */
- protected function downloadexls($list,$title,$type,$list_more=array()) {
- Vendor('PHPExcel.PHPExcel');//调用类库,路径是基于vendor文件夹的
- Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');
- Vendor('PHPExcel.PHPExcel.Writer.Excel2007');
- $objExcel = new \PHPExcel();
- //set document Property
- $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
- if ($type == 'finance') {
- $objActSheet = $objExcel->getActiveSheet();
- $key = ord("A");
- $letter =explode(',',"A,B,C,D,E,F,G,H,I");
- $arrHeader = array('开始时间','结束时间','游戏名称','渠道(包括子渠道)','结算类型','补点起止时间','消费金额','补点(%)','补点金额');
- //填充表头信息
- $lenth = count($arrHeader);
- for($i = 0;$i < $lenth;$i++) {
- $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
- };
- //填充表格信息
- foreach($list as $k=>$v){
- $k +=2;
- $objActSheet->setCellValue('A'.$k,$v['starttime']);
- $objActSheet->setCellValue('B'.$k, $v['endtime']);
- $objActSheet->setCellValue('C'.$k, $v['game_name']);
- $objActSheet->setCellValue('D'.$k, $v['channel_name']);
- $objActSheet->setCellValue('E'.$k, $v['settle_type']);
- $objActSheet->setCellValue('F'.$k, $v['begin_date'].'~'.$v['end_date']);
- $objActSheet->setCellValue('G'.$k, floatval($v['total_amount']));
- $objActSheet->setCellValue('H'.$k, $v['point']);
- $objActSheet->setCellValue('I'.$k, floatval($v['point_amt']));
- // 表格高度
- $objActSheet->getRowDimension($k)->setRowHeight(20);
- }
- }
- else if($type=='queryChildChannel'){
- $objActSheet = $objExcel->getActiveSheet();
- $key = ord("A");
- $letter =explode(',',"A,B");
- $arrHeader = array('计数','渠道名称');
- //填充表头信息
- $lenth = count($arrHeader);
- for($i = 0;$i < $lenth;$i++) {
- $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
- };
- //填充表格信息
- foreach($list as $k=>$v){
- $k +=2;
- $objActSheet->setCellValue('A'.$k,$k-1);
- $objActSheet->setCellValue('B'.$k, $v['name']);
- // 表格高度
- $objActSheet->getRowDimension($k)->setRowHeight(20);
- }
- }
- else if($type=='listGame'){
- $objActSheet = $objExcel->getActiveSheet();
- $key = ord("A");
- $letter =explode(',',"A,B,C,D,E,F");
- $arrHeader = array('游戏ID','游戏名称','游戏原名','渠道名称','创建时间','备注');
- //填充表头信息
- $lenth = count($arrHeader);
- for($i = 0;$i < $lenth;$i++) {
- $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
- };
- //填充表格信息
- foreach($list as $k=>$v){
- $k +=2;
- $objActSheet->setCellValue('A'.$k, $v['game_id']);
- $objActSheet->setCellValue('B'.$k, $v['game_name']);
- $objActSheet->setCellValue('C'.$k, $v['origin_name']);
- $objActSheet->setCellValue('D'.$k, $v['channel_name']);
- $objActSheet->setCellValue('E'.$k, $v['create_time']);
- $objActSheet->setCellValue('F'.$k, $v['remark']);
- // 表格高度
- $objActSheet->getRowDimension($k)->setRowHeight(20);
- }
- }
- else if($type=='listGameFrozen'){
- //聚合游戏冻结配置
- $objActSheet = $objExcel->getActiveSheet();
- $key = ord("A");
- $letter =explode(',',"A,B,C,D,E,F,G,H,I,J,K,L");
- $arrHeader = array('游戏名称','游戏原名','预付状态','当前流水',"折扣", "折扣后流水", '祈盟分成点位','扣除预付款','禁止新增','禁止登录','禁止充值','时间');
- //填充表头信息
- $lenth = count($arrHeader);
- for($i = 0;$i < $lenth;$i++) {
- $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
- };
- //填充表格信息
- foreach($list as $k=>$v){
- $index = $k + 2;
- $objActSheet->setCellValue('A'.$index, $v['game_name']);
- $objActSheet->setCellValue('B'.$index, $v['game_name']);
- $objActSheet->setCellValue('C'.$index, $v['status'] ? '开启' : '关闭');
- $objActSheet->setCellValue('D'.$index, $v['total_amount']);
- $objActSheet->setCellValue('E'.$index, $v['discount']??'--');
- $objActSheet->setCellValue('F'.$index, $v['discount_amount']??0);
- $objActSheet->setCellValue('G'.$index, $v['divide_point'] ?? '--');
- $objActSheet->setCellValue('H'.$index, $v['divide_point'] ? $v['total_amount']*$v['divide_point']/10 : 0);
- $objActSheet->setCellValue('I'.$index, $v['depf_register'] ? '是' : '否');
- $objActSheet->setCellValue('J'.$index, $v['depf_login'] ? '是' : '否');
- $objActSheet->setCellValue('K'.$index, $v['depf_consume'] ? '是' : '否');
- $objActSheet->setCellValue('L'.$index, $v['create_time']);
- // 表格高度
- $objActSheet->getRowDimension($index)->setRowHeight(20);
- }
-
- $index = $index+2;
- $objActSheet->setCellValue('B' . $index, '预付状态未开启的游戏流水,不计入渠道总流水(实际总流水)。');
- $index = $index+1;
- $objActSheet->setCellValue('B' . $index, '总流水:');
- $objActSheet->setCellValue('C' . $index, $list_more['count_total_amount']);
- $index = $index+1;
- $objActSheet->setCellValue('B' . $index, '实际总流水:');
- $objActSheet->setCellValue('C' . $index, $list_more['count_real_amount']);
- $index = $index+1;
- $objActSheet->setCellValue('B' . $index, '累计预付款:');
- $objActSheet->setCellValue('C' . $index, $list_more['total_advance']);
- $index = $index+1;
- $objActSheet->setCellValue('B' . $index, '当前余额:');
- $objActSheet->setCellValue('C' . $index, $list_more['balance']);
- $index = $index+1;
- $objActSheet->setCellValue('B' . $index, '最后预付款:');
- $objActSheet->setCellValue('C' . $index, $list_more['last_advance']);
- }
- else if($type=='channelWithdraw'){
- //聚合游戏冻结配置
- $objActSheet = $objExcel->getActiveSheet();
- $key = ord("A");
- $letter =explode(',',"A,B,C,D,E,F,G,H,I");
- $arrHeader = array('订单编号','公会名称','会长银行开户名','银行名称','会长银行开户行','会长银行卡号','会长支付宝','提现金额(元)','审核时间');
- //填充表头信息
- $lenth = count($arrHeader);
- for($i = 0;$i < $lenth;$i++) {
- $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
- };
- //填充表格信息
- foreach($list as $k=>$v){
- $index = $k + 2;
- $objActSheet->setCellValueExplicit('A'.$index, $v['orderid'],'s');
- $objActSheet->setCellValueExplicit('B'.$index, $v['channel_name'],'s');
- $objActSheet->setCellValueExplicit('C'.$index, $v['real_name'],'s');
- $objActSheet->setCellValueExplicit('D'.$index, $v['bank_name'],'s');
- $objActSheet->setCellValueExplicit('E'.$index, $v['bank_open_name'],'s');
- $objActSheet->setCellValueExplicit('F'.$index, $v['bank_number'],'s');
- $objActSheet->setCellValueExplicit('G'.$index, $v['zfb_account'],'s');
- $objActSheet->setCellValue('H'.$index, floatval($v['withdraw_amt']));
- $objActSheet->setCellValue('I'.$index, date("Y-m-d H:i:s",$v['audit_time']));
- // 表格高度
- $objActSheet->getRowDimension($index)->setRowHeight(20);
- }
-
- $index = $index+3;
- $objActSheet->setCellValue('G' . $index, '汇总:');
- $objActSheet->setCellValue('H' . $index, $list_more['total_withdraw_amt']);
- $index = $index+3;
- $objActSheet->setCellValue('A' . $index, '制表人:');
- $objActSheet->setCellValue('C' . $index, '财务专员:');
- $objActSheet->setCellValue('E' . $index, '财务经理:');
- }
- else if($type=='settleMonthData'){
- //聚合游戏冻结配置
- $objActSheet = $objExcel->getActiveSheet();
- $key = ord("A");
- $letter =explode(',',"A,B,C,D,E,F,G");
- $arrHeader = array('会长ID','会长账号','未结算订单总额','结算中订单总额','未提现余额','提现中总额','汇总金额');
- //填充表头信息
- $lenth = count($arrHeader);
- for($i = 0;$i < $lenth;$i++) {
- $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
- };
- //填充表格信息
- foreach($list as $k=>$v){
- $index = $k + 2;
- $objActSheet->setCellValueExplicit('A'.$index, $v['channel_id'],'s');
- $objActSheet->setCellValueExplicit('B'.$index, $v['channel_name'],'s');
- $objActSheet->setCellValue('C'.$index, floatval($v['unsettle_amt']));
- $objActSheet->setCellValue('D'.$index, floatval($v['settle_apply_amt']));
- $objActSheet->setCellValue('E'.$index, floatval($v['unwithdraw_amt']));
- $objActSheet->setCellValue('F'.$index, floatval($v['withdraw_apply_amt']));
- $objActSheet->setCellValue('G'.$index, floatval($v['total_amt']));
- // 表格高度
- $objActSheet->getRowDimension($index)->setRowHeight(20);
- }
- }
- else if($type=='channelExtraPoint'){
- //聚合游戏冻结配置
- $objActSheet = $objExcel->getActiveSheet();
- $objActSheet->setCellValue('A1', '月补点汇总表');
- $objActSheet->mergeCells('A1:K1');
- $objActSheet->getStyle('A1:K1')->getAlignment()->setHorizontal('center');
- $objActSheet->setCellValue('A2', '序列');
- $objActSheet->mergeCells('A2'.':'.'A3');
- $objActSheet->getStyle('A2:A3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('B2', '时间');
- $objActSheet->mergeCells('B2'.':'.'B3');
- $objActSheet->getStyle('B2:B3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('C2', '游戏名');
- $objActSheet->mergeCells('C2'.':'.'C3');
- $objActSheet->getStyle('C2:C3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('D2', '公会名');
- $objActSheet->mergeCells('D2'.':'.'D3');
- $objActSheet->getStyle('D2:D3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('E2', '充值流水');
- $objActSheet->mergeCells('E2:G2');
- $objActSheet->getStyle('E2:G2')->getAlignment()->setHorizontal('center');
- $objActSheet->setCellValue('E3', '充值流水');
- $objActSheet->setCellValue('F3', '点位(阶梯)');
- $objActSheet->setCellValue('G3', '公会所得金额');
- $objActSheet->setCellValue('H2', '收款名称');
- $objActSheet->mergeCells('H2'.':'.'H3');
- $objActSheet->getStyle('H2:H3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('I2', '支付宝账号');
- $objActSheet->mergeCells('I2'.':'.'I3');
- $objActSheet->getStyle('I2:I3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('J2', '银行账号');
- $objActSheet->mergeCells('J2'.':'.'J3');
- $objActSheet->getStyle('J2:J3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('K2', '银行名称');
- $objActSheet->mergeCells('K2'.':'.'K3');
- $objActSheet->getStyle('K2:K3')->getAlignment()->setVertical('center');
- $objActSheet->setCellValue('L2', '开户行');
- $objActSheet->mergeCells('L2'.':'.'L3');
- $objActSheet->getStyle('L2:L3')->getAlignment()->setVertical('center');
- //填充表格信息
- $index = 4;
- $channelRank = 1;
- $totalPayAmt = $totalDivideAmt = 0;
- foreach($list_more as $k=>$v){
- $totalPayAmt += $v['channel_pay_amt'];
- $totalDivideAmt += $v['channel_divide_amt'];
- $channelCnt = $v['channel_game_cnt'];
- $channelIndex = 1;
- foreach($list[$v['channel_id']] as $k2=>$v2){
- if($channelIndex==1){
- $objActSheet->setCellValue('A'.$index, $channelRank);
- $objActSheet->getStyle('A'.$index)->getAlignment()->setHorizontal('center');
- $objActSheet->mergeCells('A'.$index.':A'.($index+$channelCnt));
- $objActSheet->getStyle('A'.$index.':A'.($index+$channelCnt))->getAlignment()->setVertical('center');
- }
- $objActSheet->setCellValueExplicit('B'.$index, $v2['start_date'].' ~ '.$v2['end_date'],'s');
- $objActSheet->setCellValueExplicit('C'.$index, $v2['game_name'],'s');
- $objActSheet->setCellValueExplicit('D'.$index, $v2['channel_name'],'s');
- $objActSheet->setCellValue('E'.$index, floatval($v2['pay_amt']));
- $objActSheet->setCellValueExplicit('F'.$index, $v2['rate']."%",'s');
- $objActSheet->getStyle('F'.$index)->getAlignment()->setHorizontal('center');
- $objActSheet->setCellValue('G'.$index, floatval($v2['divide_amt']));
-
- if($channelIndex==1){
- $objActSheet->setCellValueExplicit('H'.$index, $v2['real_name'],'s');
- $objActSheet->mergeCells('H'.$index.':H'.($index+$channelCnt-1));
- $objActSheet->getStyle('H'.$index.':H'.($index+$channelCnt-1))->getAlignment()->setVertical('center');
- $objActSheet->setCellValueExplicit('I'.$index, $v2['zfb_account'],'s');
- $objActSheet->mergeCells('I'.$index.':I'.($index+$channelCnt-1));
- $objActSheet->getStyle('I'.$index.':I'.($index+$channelCnt-1))->getAlignment()->setVertical('center');
- $objActSheet->setCellValueExplicit('J'.$index, $v2['bank_number'],'s');
- $objActSheet->mergeCells('J'.$index.':J'.($index+$channelCnt-1));
- $objActSheet->getStyle('J'.$index.':J'.($index+$channelCnt-1))->getAlignment()->setVertical('center');
- $objActSheet->setCellValueExplicit('K'.$index, $v2['bank_name'],'s');
- $objActSheet->mergeCells('K'.$index.':K'.($index+$channelCnt-1));
- $objActSheet->getStyle('K'.$index.':K'.($index+$channelCnt-1))->getAlignment()->setVertical('center');
- $objActSheet->setCellValueExplicit('L'.$index, $v2['bank_open_name'],'s');
- $objActSheet->mergeCells('L'.$index.':L'.($index+$channelCnt-1));
- $objActSheet->getStyle('L'.$index.':L'.($index+$channelCnt-1))->getAlignment()->setVertical('center');
- $objActSheet->getRowDimension($k)->setRowHeight(20);
- }
- $index++;
- $channelIndex++;
- }
- $objActSheet->setCellValueExplicit('B'.$index, '合计','s');
- $objActSheet->mergeCells('B'.$index.':D'.$index);
- $objActSheet->getStyle('B'.$index.':D'.$index)->getAlignment()->setHorizontal('center');
- $objActSheet->setCellValue('E'.$index, $v['channel_pay_amt']);
- $objActSheet->setCellValueExplicit('F'.$index, '-','s');
- $objActSheet->setCellValue('G'.$index, $v['channel_divide_amt']);
- $objActSheet->setCellValueExplicit('H'.$index, '','s');
- $objActSheet->setCellValueExplicit('I'.$index, '','s');
- $objActSheet->setCellValueExplicit('J'.$index, '','s');
- $objActSheet->setCellValueExplicit('K'.$index, '','s');
- $objActSheet->getRowDimension($k)->setRowHeight(20);
- $index++;
- $channelRank++;
- }
-
- $objActSheet->setCellValueExplicit('A' . $index, '', 's');
- $objActSheet->setCellValueExplicit('B'.$index, '总计','s');
- $objActSheet->mergeCells('B'.$index.':D'.$index);
- $objActSheet->getStyle('B'.$index.':D'.$index)->getAlignment()->setHorizontal('center');
- $objActSheet->setCellValue('E' . $index, $totalPayAmt);
- $objActSheet->setCellValueExplicit('F' . $index, '','s');
- $objActSheet->setCellValue('G' . $index, $totalDivideAmt);
- }
- if(trim($title)){
- $outfile = trim($title).".xls";
- }
- else{
- $outfile = date('YmdHis').".xls";
- }
- try {
- if (ob_get_level() > 0) {
- ob_end_clean();
- }
- header("Content-Type: application/force-download");
- header("Content-Type: application/octet-stream");
- header("Content-Type: application/download");
- header('Content-Disposition:inline;filename="'.urlencode($outfile).'"');
- header("Content-Transfer-Encoding: binary");
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header("Pragma: no-cache");
- $objWriter->save('php://output');
- } catch (\Exception $e) {
- // log_message('Export error: ' . $e->getMessage(), 'error', LOG_PATH . 'export/');
- $this->error('导出失败:' . $e->getMessage());
- }
- exit;
- }
- // 空方法
- public function _empty()
- {
- return $this->redirect('/index/index');
- }
- }
|