提交 7f7b6cea authored 作者: 吴德鹏's avatar 吴德鹏

Traffic statistics

上级 d4a2384d
......@@ -348,7 +348,7 @@ public class AuthController extends Controller {
if (!optional.isPresent() && user.getPhone() != null && !user.getPhone().isEmpty() && userRepository.existsByAccount(user.getPhone().replace("+", ""))) {
optional = userRepository.findFirstByAccount(user.getPhone().replace("+", ""));
}
logger.info("user is exist:"+optional.isPresent());
if (!optional.isPresent()) {
......@@ -449,6 +449,7 @@ public class AuthController extends Controller {
private void fixCoupon(TbCfUserInfo user) {
logger.info("Issue coupons to new users...");
try {
List<TbCfCoupon> couponVailList = couponRepository.findAllByCouponVaild(1);
//获取当前时间的时分秒
......@@ -459,6 +460,7 @@ public class AuthController extends Controller {
c.add(Calendar.DATE, 7);
Date endDate = c.getTime();
for (TbCfCoupon tbCfCoupon : couponVailList) {
logger.info("coupon:"+tbCfCoupon.getCouponTitle());
TbCfToicoupon toi = new TbCfToicoupon();
//把上面获取到的值,赋值到实体类中
toi.setToitableId(IdUtil.createIdbyUUID());
......
......@@ -14,6 +14,7 @@ import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseAuthException;
import com.google.firebase.auth.FirebaseToken;
import com.google.firebase.messaging.*;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpEntity;
......@@ -21,8 +22,11 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.HashMap;
......@@ -31,6 +35,10 @@ import java.util.regex.Pattern;
abstract class Controller {
public static final String LOCAL_IP = "127.0.0.1";//本地ip地址
public static final String DEFAULT_IP = "0:0:0:0:0:0:0:1";//默认ip地址
public static final int DEFAULT_IP_LENGTH = 15;//默认ip地址长度
String uid() {
return IdUtil.createIdbyUUID();
}
......@@ -204,4 +212,50 @@ abstract class Controller {
return null;
}
}
/**
* 获取合法ip地址
* @param request
* @return
*/
public static String getRealIpAddress(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");//squid 服务代理
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");//apache服务代理
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");//weblogic 代理
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");//有些代理
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP"); //nginx代理
}
/*
* 如果此时还是获取不到ip地址,那么最后就使用request.getRemoteAddr()来获取
* */
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
if (StringUtils.equals(ip, LOCAL_IP) || StringUtils.equals(ip, DEFAULT_IP)) {
//根据网卡取本机配置的IP
InetAddress iNet = null;
try {
iNet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
}
ip = iNet.getHostAddress();
}
}//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
//"***.***.***.***".length() = 15
if(!StringUtils.isEmpty(ip) && ip.length()> DEFAULT_IP_LENGTH){
if(ip.indexOf(",") > 0){
ip = ip.substring(0,ip.indexOf(","));
}
}
return ip;
}
}
package com.example.afrishop_v3.controllers;
import com.example.afrishop_v3.base.Result;
import com.example.afrishop_v3.models.TbCfVisit;
import com.example.afrishop_v3.repository.TbCfVisitRepository;
import com.example.afrishop_v3.security.services.AuthenticationUser;
import com.example.afrishop_v3.util.IdUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
/**
* @Auther: wudepeng
* @Date: 2020/12/01
* @Description:
*/
@RestController
@RequestMapping("/visit")
public class VisitController extends Controller {
private final HttpServletRequest request; //自动注入request
private final TbCfVisitRepository visitRepository;
private final AuthenticationUser user;
public VisitController(HttpServletRequest request, TbCfVisitRepository visitRepository, AuthenticationUser user) {
this.request = request;
this.visitRepository = visitRepository;
this.user = user;
}
@GetMapping("/getVisitCount")
public Result getVisitCount(@RequestBody TbCfVisit visit) {
String ip = getRealIpAddress(request);
System.err.println(ip);
Long count = visitRepository.existsByVisitUser(visit.getSource(), ip, user.userId());
if (count == 0) {
//保存访问记录
visit.setId(IdUtil.createIdbyUUID());
visit.setIp(ip);
visit.setUserId(user.userId());
visit.setVisitTime(new Date());
visitRepository.save(visit);
}
return new Result();
}
}
package com.example.afrishop_v3.models;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
/**
* 实体
* 表名 tb_cf_visit
*
* @author lipengjun
* @date 2020-08-11 11:06:10
*/
@Entity
public class TbCfVisit implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@Id
private String id;
/**
* 访问来源 0:app 1:pc web 2:mobile web
*/
private Integer source;
/**
* 用户ID
*/
private String userId;
/**
* 访问时间
*/
private Date visitTime;
private String ip;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
/**
* 设置:ID
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取:ID
*/
public String getId() {
return id;
}
/**
* 设置:访问来源 0:app 1:pc web 2:mobile web
*/
public void setSource(Integer source) {
this.source = source;
}
/**
* 获取:访问来源 0:app 1:pc web 2:mobile web
*/
public Integer getSource() {
return source;
}
/**
* 设置:用户ID
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* 获取:用户ID
*/
public String getUserId() {
return userId;
}
/**
* 设置:访问时间
*/
public void setVisitTime(Date visitTime) {
this.visitTime = visitTime;
}
/**
* 获取:访问时间
*/
public Date getVisitTime() {
return visitTime;
}
}
package com.example.afrishop_v3.repository;
import com.example.afrishop_v3.models.TbCfVisit;
import com.example.afrishop_v3.models.Visit;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import javax.xml.crypto.Data;
import java.util.Date;
/**
* @Auther: wudepeng
* @Date: 2020/12/01
* @Description:
*/
public interface TbCfVisitRepository extends PagingAndSortingRepository<TbCfVisit, String> {
// @Query(value = "select count(t) from TbCfVisit t where t.source=:source and t.ip=:ip and t.userId=:userId and t.visitTime=CURRENT_DATE ")
@Query(value = "select count(1) from tb_cf_visit where source=:source and ip=:ip and user_id=:userId and DATE_FORMAT(visit_time,'%Y-%m-%d')=CURRENT_DATE", nativeQuery = true)
Long existsByVisitUser(Integer source, String ip, String userId);
}
package com.example.afrishop_v3.security.services;
import com.example.afrishop_v3.controllers.DpoPayController;
import com.example.afrishop_v3.models.TbCfUserInfo;
import com.example.afrishop_v3.repository.UserRepository;
import org.slf4j.Logger;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论