新增用户统计

This commit is contained in:
zhanghongqing
2018-11-05 10:17:14 +08:00
parent feaef70c3c
commit 051d16bfc9
11 changed files with 1837 additions and 1050 deletions

View File

@@ -0,0 +1,140 @@
package com.nis.domain.dashboard;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.google.gson.annotations.SerializedName;
import com.wordnik.swagger.annotations.ApiModelProperty;
public class NtcRadiusReport implements Serializable{
private static final long serialVersionUID = 7635016645942704971L;
@JsonInclude(value = Include.NON_NULL)
@ApiModelProperty(value = "接入IP", required = true)
protected String nasIp;
@JsonInclude(value = Include.NON_NULL)
@ApiModelProperty(value = "用户名", required = true)
protected String account;
@JsonInclude(value = Include.NON_NULL)
@ApiModelProperty(value = "次数", required = true)
protected Long num;
@JsonInclude(value = Include.NON_NULL)
@ApiModelProperty(value = "统计时间", required = true)
protected String reportTime;
/**
* 业务类型1:用户名和接口IP列表 2:根据用户统计IP变化趋势 3IP根据统计用户变化趋势
*/
protected String searchBusinessType = "1";
@SerializedName("searchReportStartTime")
protected String searchFoundStartTime;
@SerializedName("searchReportEndTime")
protected String searchFoundEndTime;
protected Long searchReportStartTimeCluster;
protected Long searchReportEndTimeCluster;
protected String searchNasIp;
protected String searchAccount;
protected String groupType;
public String getNasIp() {
return nasIp;
}
public void setNasIp(String nasIp) {
this.nasIp = nasIp;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public Long getNum() {
return num;
}
public void setNum(Long num) {
this.num = num;
}
public String getReportTime() {
return reportTime;
}
public void setReportTime(String reportTime) {
this.reportTime = reportTime;
}
public String getSearchBusinessType() {
return searchBusinessType;
}
@JsonIgnore
public void setSearchBusinessType(String searchBusinessType) {
this.searchBusinessType = searchBusinessType;
}
@JsonIgnore
public String getSearchFoundStartTime() {
return searchFoundStartTime;
}
public void setSearchFoundStartTime(String searchFoundStartTime) {
this.searchFoundStartTime = searchFoundStartTime;
}
@JsonIgnore
public String getSearchFoundEndTime() {
return searchFoundEndTime;
}
public void setSearchFoundEndTime(String searchFoundEndTime) {
this.searchFoundEndTime = searchFoundEndTime;
}
@JsonIgnore
public Long getSearchReportStartTimeCluster() {
return searchReportStartTimeCluster;
}
public void setSearchReportStartTimeCluster(
Long searchReportStartTimeCluster) {
this.searchReportStartTimeCluster = searchReportStartTimeCluster;
}
@JsonIgnore
public Long getSearchReportEndTimeCluster() {
return searchReportEndTimeCluster;
}
public void setSearchReportEndTimeCluster(Long searchReportEndTimeCluster) {
this.searchReportEndTimeCluster = searchReportEndTimeCluster;
}
@JsonIgnore
public String getSearchNasIp() {
return searchNasIp;
}
public void setSearchNasIp(String searchNasIp) {
this.searchNasIp = searchNasIp;
}
@JsonIgnore
public String getSearchAccount() {
return searchAccount;
}
public void setSearchAccount(String searchAccount) {
this.searchAccount = searchAccount;
}
@JsonIgnore
public String getGroupType() {
return groupType;
}
public void setGroupType(String groupType) {
this.groupType = groupType;
}
}

View File

@@ -680,6 +680,7 @@ public final class Constants {
public static final String NTC_TOTAL_REPORT=Configurations.getStringProperty("ntcTotalReport","ntcTotalReport");
public static final String TRAFFIC_IPACTIVE_FIVEMINUTE=Configurations.getStringProperty("trafficIpActiveFiveMinute","trafficIpActiveFiveMinute");
public static final String TRAFFIC_IPACTIVE_ONEHOUR=Configurations.getStringProperty("trafficIpActiveOneHour","trafficIpActiveOneHour");
public static final String NTC_RADIUS_REPORT=Configurations.getStringProperty("ntcRadiusReport","ntcRadiusReport");
/**
* httpclient 工具超时时间设置

View File

@@ -51,6 +51,7 @@ import com.alibaba.fastjson.JSON;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.Constants;
import com.nis.util.Encodes;
import com.nis.util.StringUtil;
/**
* @ClassName: HttpClientBean.java
@@ -193,8 +194,12 @@ public class HttpClientUtil {
String url = "";
try {
URIBuilder uriBuilder = new URIBuilder(destUrl);
for (String param : params.keySet()) {
uriBuilder.addParameter(param, params.get(param).toString());
if(params!=null) {
for (String param : params.keySet()) {
if(!StringUtil.isBlank(param)&&params.get(param)!=null) {
uriBuilder.addParameter(param, params.get(param).toString());
}
}
}
System.err.println(uriBuilder);
url=uriBuilder.toString();

View File

@@ -6,31 +6,17 @@ import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.PageLog;
import com.nis.domain.configuration.RequestInfo;
import com.nis.domain.log.NtcIpLog;
import com.nis.domain.log.SearchReport;
import com.nis.domain.maat.LogRecvData;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.httpclient.HttpClientUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.controller.report.TestBean;
@Controller
@RequestMapping("${adminPath}/dashboard/traffic")
@@ -111,17 +97,5 @@ public class TrafficStatisticsInfoController extends BaseController {
}
return m;
}
@RequestMapping("userBehavior")
public String list(@ModelAttribute("bean") SearchReport bean,Model model, HttpServletRequest request, HttpServletResponse response) {
List<RequestInfo> requestInfos = requestInfoService.getAllRequestInfo();
model.addAttribute("requestInfos", requestInfos);
Page<TestBean> page=new Page<TestBean>(request, response);
List<TestBean> list=new ArrayList<>();
list.add(new TestBean());
page.setList(list);
model.addAttribute("page", page);
model.addAttribute("bean", bean);
return "/dashboard/trafficUserBehavior";
}
}

View File

@@ -0,0 +1,132 @@
package com.nis.web.controller.dashboard;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.nis.domain.dashboard.NtcRadiusReport;
import com.nis.util.Constants;
import com.nis.util.DateUtils;
import com.nis.util.StringUtil;
import com.nis.util.httpclient.HttpClientUtil;
import com.nis.web.controller.BaseController;
@Controller
@RequestMapping("${adminPath}/traffic")
public class TrafficStatisticsReportController extends BaseController {
/**
* 用户行为查询
* @param bean
* @param model
* @param request
* @param response
* @return
*/
@RequestMapping("userBehavior")
public String list(@ModelAttribute("log") NtcRadiusReport bean,Model model, HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> fromJsonList = new HashMap<String, Object>();
Map<String, Object> userJsonList = new HashMap<String, Object>();
Map<String, Object> ipJsonList = new HashMap<String, Object>();
String searchBusinessType = bean.getSearchBusinessType();
if("2".endsWith(searchBusinessType)) {
model.addAttribute("searchBusinessType", 2);// 用户查询
}
if("3".endsWith(searchBusinessType)) {
model.addAttribute("searchBusinessType", 3);// IP查询
}
String url = Constants.DASHBOARD_URL+Constants.NTC_RADIUS_REPORT;
String statTime = bean.getSearchFoundStartTime();
String endTime = bean.getSearchFoundEndTime();
String account = bean.getAccount();
String nasIp = bean.getNasIp();
String destUrl = url+ "?searchBusinessType=1";
String userUrl = url+ "?searchBusinessType=2";
String ipUrl =url + "?searchBusinessType=3";
List list = new ArrayList();
List userList = new ArrayList();
List ipList = new ArrayList();
try {
if(StringUtil.isBlank(statTime)&&StringUtil.isBlank(endTime)) {
statTime=DateUtils.getDate()+" 00:00:00"; // 默认今天
endTime=DateUtils.getDateTime();
bean.setSearchFoundStartTime(statTime);
bean.setSearchFoundEndTime(endTime);
}else {
statTime=URLEncoder.encode(statTime, "UTF-8");
endTime=URLEncoder.encode(endTime, "UTF-8");
String paramUrl="&searchReportStartTime="+statTime+"&searchReportEndTime="+endTime;
destUrl=destUrl+paramUrl;
userUrl=userUrl+paramUrl;
ipUrl=ipUrl+paramUrl;
}
// 用户及IP数据
String string = HttpClientUtil.get(destUrl);
Gson gson = new GsonBuilder().create();
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
list = (ArrayList) fromJsonList.get("data");
Map map = (Map) list.get(0);
List nasIpList=(List) map.get("nasIpList");
List accountList=(List) map.get("accountList");
model.addAttribute("nasIpList", nasIpList);
model.addAttribute("accountList", accountList);
if("2".endsWith(searchBusinessType)&&!StringUtil.isBlank(account)) {
String userString = HttpClientUtil.get(userUrl+"&searchAccount="+account);
// 指定用户 查询
Gson usergson = new GsonBuilder().create();
userJsonList = usergson.fromJson(userString, new TypeToken<Map>(){}.getType());
userList = (ArrayList) userJsonList.get("data");
model.addAttribute("userList", userList);
}
if ("3".endsWith(searchBusinessType)&&!StringUtil.isBlank(nasIp)) {
String ipString = HttpClientUtil.get(ipUrl+"&searchNasIp="+nasIp);
// 指定IP查询
Gson ipgson = new GsonBuilder().create();
ipJsonList = ipgson.fromJson(ipString, new TypeToken<Map>(){}.getType());
ipList = (ArrayList) ipJsonList.get("data");
model.addAttribute("ipList", ipList);
}
} catch (Exception e) {
e.printStackTrace();
}
return "/dashboard/trafficUserBehavior";
}
public static void main(String[] args) {
Map<String, Object> fromJsonList = new HashMap<String, Object>();
HashMap<String, Object> m = new HashMap<String, Object>();
List list = new ArrayList();
String string;
try {
string = HttpClientUtil.get("http://localhost:8082/galaxy-service/service/log/v1/ntcRadiusReport?"
+ "searchBusinessType=1&searchReportStartTime=2018-06-01+15%3A41%3A21&searchReportEndTime=2018-10-30+15%3A46%3A21");
Gson gson = new GsonBuilder().create();
fromJsonList = gson.fromJson(string, new TypeToken<Map>(){}.getType());
list = (ArrayList) fromJsonList.get("data");
Map map = (Map) list.get(0);
List nasIpList=(List) map.get("nasIpList");
List accountList=(List) map.get("accountList");
System.err.println(map.get("nasIpList"));
System.err.println(map.get("accountList"));
} catch (Exception e) {
e.printStackTrace();
}
}
}