Merge remote-tracking branch 'origin/dev' into dev

master
liuweiwen 5 years ago
commit 790b49c95b

@ -3424,80 +3424,127 @@ if ($key == 'model'){
* 登录记录
* @author 鹿文学
*/
public function login_record() {
public function login_record() {
$xlsName = $_REQUEST['xlsname'];
$xlsName = $_REQUEST['xlsname'];
$xlsCell = array(
array('user_account','玩家账号'),
array('game_name','游戏名称'),
array('server_name','游戏区服'),
array('user_nickname','角色名'),
array('login_time','登录时间'),
array('login_ip','最后登录ip'),
);
// $xlsCell = array(
// array('user_account','玩家账号'),
// array('game_name','游戏名称'),
// array('server_name','游戏区服'),
// array('user_nickname','角色名'),
// array('login_time','登录时间'),
// array('login_ip','最后登录ip'),
// );
$xlsCell = array(
'玩家账号',
'游戏名称',
'游戏区服',
'角色名',
'登录时间',
'最后登录ip',
);
if (isset($_REQUEST['login_ip'])) {
$map['login_ip'] = $_REQUEST['login_ip'];
}
if (isset($_REQUEST['game_id'])) {
$map['game_id'] = $_REQUEST['game_id'];
}
if (isset($_REQUEST['game_name'])) {
$map['game_name'] = ['like', $_REQUEST['game_name']."%"];
unset($_REQUEST['game_name']);
}
if (isset($_REQUEST['game_type'])) {
$map['sdk_version'] = $_REQUEST['game_type'];
unset($_REQUEST['game_type']);
}
if (isset($_REQUEST['server_name'])) {
$map['server_name'] = $_REQUEST['server_name'];
unset($_REQUEST['server_name']);
}
if (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])) {
$map['login_time'] = array('BETWEEN', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 24 * 60 * 60 - 1));
}elseif(isset($_REQUEST['timestart'])){
$map['login_time'] = array('GT',strtotime($_REQUEST['timestart']));
}elseif(isset($_REQUEST['timeend'])){
$map['login_time'] = array('lt',(strtotime($_REQUEST['timeend'])+ 24 * 60 * 60 - 1));
}
if (isset($_REQUEST['account'])) {
$map['user_account'] = array('like', '%' . trim($_REQUEST['account']) . '%');
}
$map['login_time'] = array('neq', 0);
$page = intval($_REQUEST['p']);
if (isset($_REQUEST['login_ip'])) {
$map['login_ip'] = $_REQUEST['login_ip'];
}
if (isset($_REQUEST['game_id'])) {
$map['game_id'] = $_REQUEST['game_id'];
}
if (isset($_REQUEST['game_name'])) {
$map['game_name'] = ['like', $_REQUEST['game_name']."%"];
unset($_REQUEST['game_name']);
}
if (isset($_REQUEST['game_type'])) {
$map['sdk_version'] = $_REQUEST['game_type'];
unset($_REQUEST['game_type']);
}
if (isset($_REQUEST['server_name'])) {
$map['server_name'] = $_REQUEST['server_name'];
unset($_REQUEST['server_name']);
}
if (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])) {
$map['login_time'] = array('BETWEEN', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 24 * 60 * 60 - 1));
}elseif(isset($_REQUEST['timestart'])){
$map['login_time'] = array('GT',strtotime($_REQUEST['timestart']));
}elseif(isset($_REQUEST['timeend'])){
$map['login_time'] = array('lt',(strtotime($_REQUEST['timeend'])+ 24 * 60 * 60 - 1));
}
if (isset($_REQUEST['account'])) {
$map['user_account'] = array('like', '%' . trim($_REQUEST['account']) . '%');
}
$page = $page?$page:1;
// $map['login_time'] = array('neq', 0);
$row = $_REQUEST['row']?$_REQUEST['row']:10;
$page = intval($_REQUEST['p']);
$data = M('UserLoginRecord','tab_')
->where($map)->order('id desc')->select();
$page = $page?$page:1;
$xlsData = [];
$row = $_REQUEST['row']?$_REQUEST['row']:10;
foreach($data as $k => $v) {
$v['login_time'] = date('Y-m-d H:i:s',$v['login_time']);
$v['server_name'] = empty($v['server_name'])?'空':$v['server_name'];
//查询数量
$accessNum = M('UserLoginRecord','tab_')
->where($map)->order('id desc')->count();
$gamename=trim(get_game_name($v['game_id'],'id'));
if ($accessNum > 1000000) {
echo "数据量过大大于100万";die();
}
$v['game_name'] = empty($gamename)?($v['type']==2?'APP登录':'平台登录'):$gamename;
$csvFileName = $xlsName.'.csv';
//设置好告诉浏览器要下载excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');//打开output流
mb_convert_variables('GBK', 'UTF-8', $xlsCell);
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
$xlsData[] = $v;
$perSize = 50000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
for($i = 1; $i <= $pages; $i++) {
}
$data = M('UserLoginRecord','tab_')
->field("user_account,game_name,server_name,user_nickname,login_time,login_ip")
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->order('id desc')
->select();
foreach($data as $k => $v) {
$this->exportExcel($xlsName, $xlsCell, $xlsData);
$v['login_time'] = date('Y-m-d H:i:s',$v['login_time']);
$v['server_name'] = empty($v['server_name'])?'空':$v['server_name'];
}
// $gamename=trim(get_game_name($v['game_id'],'id'));
// $v['game_name'] = empty($gamename)?($v['type']==2?'APP登录':'平台登录'):$gamename;
$xlsData[] = $v;
mb_convert_variables('GBK', 'UTF-8', $v);
fputcsv($fp, $v);
}
unset($xlsData);//释放变量的内存
//刷新输出缓冲到浏览器
ob_flush();
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
}
// $xlsData = [];
exit();
// $this->exportExcel($xlsName, $xlsCell, $xlsData);
}
/**

@ -132,9 +132,9 @@ class MendController extends ThinkController {
$id = I('id');
$status = M('ShiftTask')->where(['id' => $id,'status' => 0])->save(['status' => 2]);
if ($status) {
$this->success('取消补链成功', U('lists'), 2);
$this->ajaxReturn(array("status"=>1,"url"=> U('lists')));
} else {
$this->error("取消失败,或补链已生效",U('lists'));
$this->ajaxReturn(array("status"=>0,"url"=> U('lists')));
}
}
}

@ -130,6 +130,7 @@
<link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script type="text/javascript">
var start = $("#bind_time").val();
@ -151,8 +152,25 @@ Think.setValue("prmoote_id_to", {$data.promote_id|default = "''"});
$('#submit').click(function(){
//获取id
var taskid = $(this).data("id");
window.location.href = "{:U('Mend/cancelShift')}"+"&id="+taskid;
$.ajax({
type:"get",
dataType:"json",
url:"{:U('Mend/cancelShift')}"+"&id="+taskid,
success:function(data){
if(data.status == 1){
layer.msg('取消补链成功',function(){
window.location.href = data.url;
});
}else{
layer.msg('取消补链失败,或补链已经生效无法取消')
}
},
error:function(){
layer.msg('网络错误');
}
})
// window.location.href = "{:U('Mend/cancelShift')}"+"&id="+taskid;
});
$(function(){
$('.time').datetimepicker({

@ -94,6 +94,7 @@ class PromoteService {
$shiftIds = isset($params['shift_ids']) && $params['shift_ids'] ? $params['shift_ids'] : [];
$creatorId = isset($params['creator_id']) ? $params['creator_id'] : 0;
$creatorType = isset($params['creator_type']) ? $params['creator_type'] : 0;
$remark = isset($params['remark']) ? $params['remark'] : '';
if ($fromPromoteId == $toPromoteId) {
return [
@ -145,6 +146,7 @@ class PromoteService {
'creator_type' => $creatorType,
'status' => 0,
'type' => $type,
'remark' => $remark,
'shift_ids' => json_encode($shiftIds)
];
@ -303,6 +305,7 @@ class PromoteService {
$fromPromoteId = $task['from_promote_id'];
$orderTime = $task['order_time'];
$shiftIds = json_decode($task['shift_ids'], true) ?? [];
$remark = $task['remark'] ?? '';
$creator = null;
$opAccount = '';
@ -343,7 +346,7 @@ class PromoteService {
'promote_account' => $fromPromote['account'],
'promote_id_to' => $toPromote['id'],
'promote_account_to' => $toPromote['account'],
'remark' => $task['creator_type'] == 0 ? '后台补链' : '玩家迁移',
'remark' => $remark == '' ? ($task['creator_type'] == 0 ? '后台补链' : '玩家迁移') : $remark,
'order_time' => $orderTime,
'create_time' => time(),
'op_id' => $creator ? $creator['id'] : 0,

@ -1727,7 +1727,7 @@ class QueryController extends BaseController
$begTime = strtotime($initBegTime);
$endTime = strtotime($initEndTime);
$endTime += 3600 * 24;
$nowTime = strtotime(date('Y-m-d 00:00:00', time()));
$nowTime = strtotime($nowTime);
$promote = $this->getLoginPromote();
$levelPromote = $this->getLevelPromote();
@ -1842,7 +1842,7 @@ class QueryController extends BaseController
$this->assign('initBegTime', $initBegTime);
$this->assign('initEndTime', $initEndTime);
$this->assign('sort', $sort);
$this->assign('setdate', $nowTime);
$this->assign('setdate', date('Y-m-d', $nowTime));
$this->display('userRecharges');
}

@ -123,7 +123,7 @@
<i class="iconfont iconsort"></i>
</if>
</th>
<th class="sort" sort-name="recharge_cost_today">日充值
<th class="sort" sort-name="recharge_cost_today">日充值
<if condition="'recharge_cost_today' == I('sort_name', '')">
<if condition="1 == $sort">
<i class="iconfont iconsort-down"></i>
@ -201,6 +201,7 @@ $(function(){
$(".select_gallery").select2();
var date = "{$setdate}";
console.log(date);
$('#sdate').datetimepicker({
format: 'yyyy-mm-dd',
language: "zh-CN",

@ -595,4 +595,17 @@ CHANGE COLUMN `create_promote_id` `creator_id` int(11) NOT NULL DEFAULT 0 COMMEN
ALTER TABLE `sys_shift_task`
ADD COLUMN `creator_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '创建者类型 0 后台管理员 1 推广员' AFTER `creator_id`;
ALTER TABLE `tab_mend`
ADD COLUMN `op_type` tinyint(0) NOT NULL DEFAULT 0 COMMENT '0 管理员 1 推广员' AFTER `op_account`;
ADD COLUMN `op_type` tinyint(0) NOT NULL DEFAULT 0 COMMENT '0 管理员 1 推广员' AFTER `op_account`;
-- chenzhi
UPDATE `sys_model` SET `list_grid` = 'id:编号
user_account:
user_nickname:
promote_id:广
promote_account:广
promote_id_to:
promote_account_to:
remark:
create_time:
op_account:
order_time:' WHERE `id` = 29;
Loading…
Cancel
Save