Commit fdede6c5 authored by maliang's avatar maliang

权限控制

parent f2431209
......@@ -62,4 +62,5 @@ public class WebMvcConfig implements WebMvcConfigurer {
.addResourceLocations(ResourceUtils.FILE_URL_PREFIX + filesPath + File.separator);
}
}
......@@ -3,13 +3,27 @@ package com.boot.security.server.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.boot.security.server.dao.AdvertDao;
import com.boot.security.server.model.AdvertiserData;
import com.boot.security.server.page.table.PageTableHandler;
import com.boot.security.server.page.table.PageTableRequest;
import com.boot.security.server.page.table.PageTableResponse;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/advertiserManagerController")
public class AdvertiserManagerController {
@Autowired
private AdvertDao advertDao;
@GetMapping("/table")
@ApiOperation(value = "获取广告商数据")
@ResponseBody
......@@ -31,8 +45,25 @@ public class AdvertiserManagerController {
jsonObject.put("data",array);
return jsonObject.toJSONString();
}
//返回所有用户和其对应的广告商列表
public String getUserAdvertiserMap() {
return null;
//返回根据日期返回所有广告商数据
@PreAuthorize("hasAuthority('advert:data:count')")
@PostMapping("/advertCount")
@ApiOperation(value = "获取广告商汇总数据")
@ResponseBody
public String getAdvertiserDataCount(@RequestBody PageTableRequest request) {
List<AdvertiserData> advertDataList = advertDao.getAdvertData(request.getStartTime(), request.getEndTime());
Integer count = advertDao.getAdvertDataCount(request.getStartTime(), request.getEndTime());
return PageTableHandler.getJSONObject(advertDataList,count);
}
//返回根据日期返回所有广告商数据
@PreAuthorize("hasAuthority('advertiser:data')")
@PostMapping("/advertiserData")
@ApiOperation(value = "获取广告商汇总数据")
@ResponseBody
public String getAdvertiserData(@RequestBody PageTableRequest request) {
List<AdvertiserData> advertDataList = advertDao.getAdvertData(request.getStartTime(), request.getEndTime());
Integer count = advertDao.getAdvertDataCount(request.getStartTime(), request.getEndTime());
return PageTableHandler.getJSONObject(advertDataList,count);
}
}
package com.boot.security.server.dao;
import com.boot.security.server.model.AdvertiserData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@Mapper
public interface AdvertDao {
@Select("select report_date reportDate,advertiser_id advertiserId,advertiser_name advertiserName,code_id codeId,ecpm,cpc,exposure,click,income from advert_data_count t where report_date>= #{startTime} and report_date<=#{endTime}")
List<AdvertiserData> getAdvertData(@Param("startTime") String startTime, @Param("endTime") String endTime);
@Select("select count(*) from advert_data_count t where report_date>= #{startTime} and report_date<=#{endTime}")
Integer getAdvertDataCount(@Param("startTime") String startTime, @Param("endTime") String endTime);
}
package com.boot.security.server.model;
public class AdvertiserData {
public String reportDate;
public Integer advertiserId;
public String advertiserName;
public String codeId;
public Double ecpm;
public Double cpc;
public Long exposure;
public Long click;
public Double income;
public String getReportDate() {
return reportDate;
}
public void setReportDate(String reportDate) {
this.reportDate = reportDate;
}
public Integer getAdvertiserId() {
return advertiserId;
}
public void setAdvertiserId(Integer advertiserId) {
this.advertiserId = advertiserId;
}
public String getAdvertiserName() {
return advertiserName;
}
public void setAdvertiserName(String advertiserName) {
this.advertiserName = advertiserName;
}
public String getCodeId() {
return codeId;
}
public void setCodeId(String codeId) {
this.codeId = codeId;
}
public Double getEcpm() {
return ecpm;
}
public void setEcpm(Double ecpm) {
this.ecpm = ecpm;
}
public Double getCpc() {
return cpc;
}
public void setCpc(Double cpc) {
this.cpc = cpc;
}
public Long getExposure() {
return exposure;
}
public void setExposure(Long exposure) {
this.exposure = exposure;
}
public Long getClick() {
return click;
}
public void setClick(Long click) {
this.click = click;
}
public Double getIncome() {
return income;
}
public void setIncome(Double income) {
this.income = income;
}
}
package com.boot.security.server.page.table;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.boot.security.server.model.AdvertiserData;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
......@@ -27,6 +32,19 @@ public class PageTableHandler {
this.orderHandler = orderHandler;
}
public static <E> String getJSONObject(List<E> list,Integer count){
JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
Iterator<E> iterator = list.iterator();
while (iterator.hasNext()){
array.add(JSONObject.toJSON(iterator.next()));
}
jsonObject.put("data",array);
jsonObject.put("count",count);
jsonObject.put("code",0);
return jsonObject.toJSONString();
}
public PageTableResponse handle(PageTableRequest dtRequest) {
int count = 0;
List<?> list = null;
......
......@@ -16,6 +16,24 @@ public class PageTableRequest implements Serializable {
private Integer offset;
private Integer limit;
private Map<String, Object> params;
private String startTime;
private String endTime;
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public Integer getOffset() {
return offset;
......
......@@ -17,6 +17,7 @@ public class PageTableResponse implements Serializable {
private Integer recordsFiltered;
private List<?> data;
public PageTableResponse(Integer recordsTotal, Integer recordsFiltered, List<?> data) {
super();
this.recordsTotal = recordsTotal;
......
......@@ -22,6 +22,22 @@ $.ajaxSetup({
}
});
Date.prototype.format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
function buttonDel(data, permission, pers){
if(permission != ""){
if ($.inArray(permission, pers) < 0) {
......
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>广告主数据汇总</title>
</head>
<link rel="stylesheet" href="../../css/treetable/jquery.treetable.css" />
<link rel="stylesheet" href="../../css/treetable/jquery.treetable.theme.default.css" />
<link rel="stylesheet" type="text/css" media="screen" href="../../layui/css/layui.css">
<body>
<div class="layui-inline">
<input type="text" class="layui-input" id="date1">
</div>
<table class="layui-table"><tr><td>投放概要</td></tr><tr><td><table id="demo" lay-filter="adveriserManagerTable"></table></td></tr></table>
</body>
</html>
<script type="text/javascript" src="../../js/libs/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../js/jq.js"></script>
<script type="text/javascript" src="../../layui/layui.js"></script>
<script type="text/javascript" src="../../js/my/permission.js"></script>
<script src="../../js/libs/jquery.treetable.js"></script>
<script>
var tableIns;
var startTime;
var endTime;
var day = new Date();
startTime = day.format("yyyy-MM-dd");
endTime=day.format("yyyy-MM-dd");
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#date1'
,range: true
,value:startTime+' - '+endTime
,done: function(value, date, endDate) {
startTime=date.year+'-'+date.month+'-'+date.date
endTime=endDate.year+'-'+endDate.month+'-'+endDate.date
tableIns.reload({where:{startTime:startTime,endTime:endTime}})
}
});
});
layui.use('table', function(){
var table = layui.table;
//第一个实例
tableIns=table.render({
elem: '#demo'
,url: '/advertiserManagerController/advertiserData' //数据接口
,contentType: 'application/json'
,method:'post'
//,toolbar:'true'
,where:{startTime:startTime,endTime:endTime}
,page: false //开启分页
,cols: [[ //表头
{field: 'reportDate', title: '日期'}
,{field: 'advertiserId', title: '广告主id',hide:"true"}
,{field: 'codeId', title: '广告id'}
,{field: 'ecpm', title: 'ecpm'}
,{field: 'cpc', title: 'cpc' }
,{field: 'exposure', title: '曝光'}
,{field: 'click', title: '点击'}
,{field: 'income', title: '收入'}
,{field: 'advertiserName', title: '广告主名称'}
]]
});
});
</script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>广告主数据汇总</title>
</head>
<link rel="stylesheet" href="../../css/treetable/jquery.treetable.css" />
<link rel="stylesheet" href="../../css/treetable/jquery.treetable.theme.default.css" />
<link rel="stylesheet" type="text/css" media="screen" href="../../layui/css/layui.css">
<body>
<div class="layui-inline">
<input type="text" class="layui-input" id="date1">
</div>
<table id="demo" lay-filter="adveriserManagerTable"></table>
</body>
</html>
<script type="text/javascript" src="../../js/libs/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../js/jq.js"></script>
<script type="text/javascript" src="../../layui/layui.js"></script>
<script type="text/javascript" src="../../js/my/permission.js"></script>
<script src="../../js/libs/jquery.treetable.js"></script>
<script>
var tableIns;
var startTime;
var endTime;
var day = new Date();
startTime = day.format("yyyy-MM-dd");
endTime=day.format("yyyy-MM-dd");
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#date1'
,range: true
,value:startTime+' - '+endTime
,done: function(value, date, endDate) {
startTime=date.year+'-'+date.month+'-'+date.date
endTime=endDate.year+'-'+endDate.month+'-'+endDate.date
tableIns.reload({where:{startTime:startTime,endTime:endTime}})
}
});
});
layui.use('table', function(){
var table = layui.table;
//第一个实例
tableIns=table.render({
elem: '#demo'
,url: '/advertiserManagerController/advertCount' //数据接口
,contentType: 'application/json'
,method:'post'
,toolbar:'true'
,where:{startTime:startTime,endTime:endTime}
,page: true //开启分页
,cols: [[ //表头
{field: 'reportDate', title: '日期', sort: true}
,{field: 'advertiserId', title: '广告主id',hide:"true"}
,{field: 'codeId', title: '广告id'}
,{field: 'ecpm', title: 'ecpm'}
,{field: 'cpc', title: 'cpc' }
,{field: 'exposure', title: '曝光'}
,{field: 'click', title: '点击'}
,{field: 'income', title: '收入'}
,{field: 'advertiserName', title: '广告主名称'}
]]
,defaultToolbar: ['filter', 'exports']
});
});
</script>
......@@ -11,7 +11,6 @@
<table id="demo" lay-filter="adveriserManagerTable"></table>
</body>
</html>
......
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>广告商负责人设置</title>
<link rel="stylesheet" type="text/css" media="screen" href="../../css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="../../css/dataTables.bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="../../layui/css/layui.css">
</head>
<body>
<div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<header style="height: 100%">
</header>
<div class="layui-form">
<div class="widget-body no-padding">
<table id="dt-table" class="table table-striped table-bordered table-hover" style="width:100%">
<thead>
<tr>
</tr>
<tr>
<th>id</th>
<th>nickname</th>
<th>广告商</th>
<!--<th>操作</th>-->
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
<script type="text/javascript" src="../../js/libs/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../js/jq.js"></script>
<script type="text/javascript" src="../../js/plugin/datatables/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="../../js/plugin/datatables/dataTables.bootstrap.min.js"></script>
<script type="text/javascript" src="../../js/my/permission.js"></script>
<script type="text/javascript" src="../../layui/layui.js"></script>
<script type="text/javascript" src="../../js/dict.js"></script>
<script type="text/javascript">
// layui.use([ 'layer' ], function() {
// var layer = layui.layer;
// });
var pers = checkPermission();
var example;
function init(){
example =
$('#dt-table').DataTable({
"searching": false,
"processing": false,
"serverSide" : true,
"language": {
"url": "/js/plugin/datatables/Chinese.lang"
},
"ajax": {
"url" : "/users/advertiserUserList",
"type":"get",
"error":function(xhr, textStatus, errorThrown){
var msg = xhr.responseText;
console.log(msg);
var response = JSON.parse(msg);
var code = response.code;
var message = response.message;
if (code == 400) {
layer.msg(message);
} else if (code == 401) {
localStorage.removeItem("token");
layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function(){
location.href = '/login.html';
});
} else if (code == 403) {
console.log("未授权:" + message);
layer.msg('未授权');
} else if (code == 500) {
layer.msg('系统错误:' + message);
}
}
},
"dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-10 col-xs-12 hidden-xs'i><'col-xs-12 col-sm-10' p v>>",
"columns": [
{ "data": "userId", "defaultContent": "","visible": false},
{ "data": "nickname", "defaultContent": ""},
{
"data": "status",
"defaultContent": "",
"orderable":false,
"render": function (data, type, row) {
var advertiserName = row['advertiserName'];
//console.log(advertiserName)
var advertiserId = row['advertiserId'];
var userId = row['userId'];
var adCb = checkboxEdit(data,advertiserName,advertiserId,userId,"sys:user:add", pers);
return "<input lay-filter='formCheckbox' type=\"checkbox\" advertiserId=\""+advertiserId+"\" title=\""+advertiserName+"\" userId=\""+userId+"\" checked>";
}
}
],
"order": [[ 0, "desc" ],[1, "asc"]]
} );
}
init();
var form;
layui.use('form', function() {
form = layui.form;
form.render();
form.on('checkbox(formCheckbox)', function(data){
var elem=data.elem;
console.log(data.elem.checked); //是否被选中,true或者false
console.log(elem.getAttribute("advertiserId"));
console.log(elem.getAttribute("userId")); //复选框value值,也可以通过data.elem.value得到
});
});
</script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment