feat:支持hexo本地访问不增加访问量配置

This commit is contained in:
fanxb 2022-03-02 15:03:54 +08:00
parent b2276d041d
commit 9a87940fe9
5 changed files with 15 additions and 29 deletions

View File

@ -45,8 +45,8 @@ public class ApplicationController {
*/ */
@GetMapping("/visit") @GetMapping("/visit")
@ResponseBody @ResponseBody
public void visit(HttpServletRequest request, HttpServletResponse response, public void visit(HttpServletRequest request, HttpServletResponse response, @NotBlank(message = "回调函数不能为空") String callBack
@NotBlank(message = "回调函数不能为空") String callBack, @NotBlank(message = "key不能为空") String key) throws IOException { , @NotBlank(message = "key不能为空") String key, @NotBlank(message = "path不能为空") String path, boolean notAdd) throws IOException {
applicationService.visit(request, response, callBack, key); applicationService.visit(request, response, callBack, key, path, notAdd);
} }
} }

View File

@ -32,8 +32,10 @@ public interface ApplicationService {
* @param response response * @param response response
* @param callBack callBack * @param callBack callBack
* @param key key * @param key key
* @param path path
* @param notAdd 只返回不计数
* @author fanxb * @author fanxb
* date 2022/2/16 10:20 * date 2022/2/16 10:20
*/ */
void visit(HttpServletRequest request, HttpServletResponse response, String callBack, String key) throws IOException; void visit(HttpServletRequest request, HttpServletResponse response, String callBack, String key, String path, boolean notAdd) throws IOException;
} }

View File

@ -67,22 +67,7 @@ public class ApplicationServiceImpl implements ApplicationService {
} }
@Override @Override
public void visit(HttpServletRequest request, HttpServletResponse response, String callBack, String key) throws IOException { public void visit(HttpServletRequest request, HttpServletResponse response, String callBack, String key, String path, boolean notAdd) throws IOException {
String refer = request.getHeader("Referer");
if (StrUtil.isEmpty(refer)) {
throw new CustomBaseException("未获取到来源路径");
}
String path;
try {
URL url = new URL(refer);
path = StrUtil.isEmpty(url.getPath()) ? "/" : url.getPath();
} catch (Exception e) {
throw new CustomBaseException("url解析错误", e);
}
if (path.length() > 100) {
throw new CustomBaseException("路径长度不能大于100," + path);
}
int hostId = getHostId(key); int hostId = getHostId(key);
HostPo hostData = hostDao.getUvPvById(hostId); HostPo hostData = hostDao.getUvPvById(hostId);
DetailPagePo detailData = detailPageDao.getUvPvById(hostId, path); DetailPagePo detailData = detailPageDao.getUvPvById(hostId, path);
@ -90,7 +75,9 @@ public class ApplicationServiceImpl implements ApplicationService {
detailData = new DetailPagePo().setHostId(hostId).setPath(path).setUv(0).setPv(0); detailData = new DetailPagePo().setHostId(hostId).setPath(path).setUv(0).setPv(0);
} }
//数据计算更新 //数据计算更新
updateData(NetUtil.getClientIp(request), hostData, detailData); if (!notAdd) {
updateData(NetUtil.getClientIp(request), hostData, detailData);
}
//写出 //写出
UvPvVo uvPvVo = new UvPvVo(hostData.getUv(), hostData.getPv(), detailData.getUv(), detailData.getPv()); UvPvVo uvPvVo = new UvPvVo(hostData.getUv(), hostData.getPv(), detailData.getUv(), detailData.getPv());
String uvPvVoStr = JSON.toJSONString(uvPvVo); String uvPvVoStr = JSON.toJSONString(uvPvVo);
@ -101,7 +88,7 @@ public class ApplicationServiceImpl implements ApplicationService {
} }
/** /**
* 更新数据 * 更新数据,pv:每次都增加uv:24小时内同一ip,0-24点只统计一次
* *
* @param ip 来源ip * @param ip 来源ip
* @param hostPo hostPo * @param hostPo hostPo

View File

@ -1,4 +1,3 @@
(function () { (function () {
var name = "qieziStatisticHtml"; var name = "qieziStatisticHtml";
var callback = name + "CallBack"; var callback = name + "CallBack";
@ -42,14 +41,12 @@
key = temp; key = temp;
} }
} }
var ignoreLocalhost = window.CONFIG !== undefined && window.CONFIG.web_analytics.qieziStatistics.ignore_local;
console.log(requestHost, key); console.log(requestHost, key);
if (!key) { if (!key) {
return; return;
} }
script.src = requestHost + var notAdd = ignoreLocalhost && ['127.0.0.1', 'localhost'].indexOf(window.location.hostname) > -1;
"/qiezi/api/application/visit?callBack=" + script.src = `${requestHost}/qiezi/api/application/visit?callBack=${callback}&key=${key}&path=${encodeURIComponent(window.location.pathname)}&notAdd=${notAdd}`;
callback +
"&key=" +
key;
document.getElementsByTagName("head")[0].appendChild(script); document.getElementsByTagName("head")[0].appendChild(script);
})(); })();

View File

@ -1 +1 @@
(function(){var name="qieziStatisticHtml";var callback=name+"CallBack";window[callback]=function(a){var hostPvNode=document.getElementById(name+"HostPv");if(hostPvNode!=null){document.getElementById(name+"HostPvValue").innerText=a.totalPv;hostPvNode.style.display="inline"}var hostUvNode=document.getElementById(name+"HostUv");if(hostUvNode!=null){document.getElementById(name+"HostUvValue").innerText=a.totalUv;hostUvNode.style.display="inline"}var postNode=document.getElementById(name+"Post");if(postNode!=null){document.getElementById(name+"PostPv").innerText=a.pagePv;postNode.style.display="inline"}};var script=document.createElement("script");script.type="text/javascript";script.defer=true;var requestHost="https://qiezi.fleyx.com";if(window.qieziStatisticHost!=undefined&&window.qieziStatisticHost.trim().length>0){requestHost=window.qieziStatisticHost}else if(window.CONFIG&&window.CONFIG.web_analytics.qieziStatistics.app_host){var temp=window.CONFIG.web_analytics.qieziStatistics.app_host;if(temp.trim().length>0){requestHost=temp}}var key=null;if(window.qieziStatisticKey&&window.qieziStatisticKey.trim().length>0){key=window.qieziStatisticKey}else if(window.CONFIG&&window.CONFIG.web_analytics.qieziStatistics.app_key){var temp=window.CONFIG.web_analytics.qieziStatistics.app_key;if(temp.trim().length>0){key=temp}}console.log(requestHost,key);if(!key){return}script.src=requestHost+"/qiezi/api/application/visit?callBack="+callback+"&key="+key;document.getElementsByTagName("head")[0].appendChild(script)})(); (function(){var name="qieziStatisticHtml";var callback=name+"CallBack";window[callback]=function(a){var hostPvNode=document.getElementById(name+"HostPv");if(hostPvNode!=null){document.getElementById(name+"HostPvValue").innerText=a.totalPv;hostPvNode.style.display="inline"}var hostUvNode=document.getElementById(name+"HostUv");if(hostUvNode!=null){document.getElementById(name+"HostUvValue").innerText=a.totalUv;hostUvNode.style.display="inline"}var postNode=document.getElementById(name+"Post");if(postNode!=null){document.getElementById(name+"PostPv").innerText=a.pagePv;postNode.style.display="inline"}};var script=document.createElement("script");script.type="text/javascript";script.defer=true;var requestHost="https://qiezi.fleyx.com";if(window.qieziStatisticHost!==undefined&&window.qieziStatisticHost.trim().length>0){requestHost=window.qieziStatisticHost}else if(window.CONFIG&&window.CONFIG.web_analytics.qieziStatistics.app_host){var temp=window.CONFIG.web_analytics.qieziStatistics.app_host;if(temp.trim().length>0){requestHost=temp}}var key=null;if(window.qieziStatisticKey&&window.qieziStatisticKey.trim().length>0){key=window.qieziStatisticKey}else if(window.CONFIG&&window.CONFIG.web_analytics.qieziStatistics.app_key){var temp=window.CONFIG.web_analytics.qieziStatistics.app_key;if(temp.trim().length>0){key=temp}}var ignoreLocalhost=window.CONFIG!==undefined&&window.CONFIG.web_analytics.qieziStatistics.ignore_local;console.log(requestHost,key);if(!key){return}var notAdd=ignoreLocalhost&&['127.0.0.1','localhost'].indexOf(window.location.hostname)>-1;script.src="".concat(requestHost,"/qiezi/api/application/visit?callBack=").concat(callback,"&key=").concat(key,"&path=").concat(encodeURIComponent(window.location.pathname),"&notAdd=").concat(notAdd);document.getElementsByTagName("head")[0].appendChild(script)})();