From 2174b22bbbb45284765a23b8189df59583c65d29 Mon Sep 17 00:00:00 2001
From: 胡仁荣 <897853850@qq.com>
Date: 星期五, 04 八月 2023 14:33:47 +0800
Subject: [PATCH] 统计人数

---
 src/main/java/com/qxueyou/scc/config/IpUtils.java                  |   95 +++++++++++
 src/main/java/com/qxueyou/scc/callback/CallbackExampleAct.java     |   76 +++++++++
 src/main/java/com/qxueyou/scc/base/model/Result.java               |    4 
 src/main/java/com/qxueyou/scc/teach/live/model/AccessLog.java      |  121 ++++++++++++++
 pom.xml                                                            |    5 
 src/main/java/com/qxueyou/scc/controller/VideoLiveController.java  |   61 +++++-
 src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java |   74 ++++++---
 7 files changed, 390 insertions(+), 46 deletions(-)

diff --git a/pom.xml b/pom.xml
index ac828c5..312cfca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -441,6 +441,11 @@
 			<version>2.8.3</version>
 		</dependency>
 
+		<dependency>
+			<groupId>org.lionsoul</groupId>
+			<artifactId>ip2region</artifactId>
+			<version>1.7.2</version>
+		</dependency>
 
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
diff --git a/src/main/java/com/qxueyou/scc/base/model/Result.java b/src/main/java/com/qxueyou/scc/base/model/Result.java
index d1188a2..d719e72 100644
--- a/src/main/java/com/qxueyou/scc/base/model/Result.java
+++ b/src/main/java/com/qxueyou/scc/base/model/Result.java
@@ -80,8 +80,8 @@
 		this.msg = success ? MSG_SUCCESS : MSG_FAIL;
 		this.data = CollectionUtils.newObjectMap(objs);
 	}
-	
-	public boolean isSuccess() {
+
+    public boolean isSuccess() {
 		return success;
 	}
 
diff --git a/src/main/java/com/qxueyou/scc/callback/CallbackExampleAct.java b/src/main/java/com/qxueyou/scc/callback/CallbackExampleAct.java
new file mode 100644
index 0000000..2e1a47c
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/callback/CallbackExampleAct.java
@@ -0,0 +1,76 @@
+package com.qxueyou.scc.callback;
+
+import com.qxueyou.scc.base.dao.CommonDAO;
+import com.qxueyou.scc.base.model.Result;
+import com.qxueyou.scc.base.util.CollectionUtils;
+import com.qxueyou.scc.sdk.MTCloud;
+import com.qxueyou.scc.teach.live.model.MediaVideoLive;
+import com.qxueyou.scc.teach.live.service.IMediaLiveService;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.List;
+
+
+@Slf4j
+@Controller
+@RequestMapping(value = "/callback")
+public class CallbackExampleAct {
+
+    @Autowired
+    CommonDAO commonDAO;
+
+    @RequestMapping(value = "/api", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
+    @ResponseBody
+    public Result callbackApi(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        //鑾峰彇璇锋眰鍙傛暟
+        HashMap<Object, Object> reqParams = new HashMap<Object, Object>();
+        reqParams.put("openID", request.getParameter("openID"));
+        reqParams.put("timestamp", request.getParameter("timestamp"));
+        reqParams.put("cmd", request.getParameter("cmd"));
+        reqParams.put("params", request.getParameter("params"));
+        reqParams.put("ver", request.getParameter("ver"));
+        //reqParams.put("sign", request.getParameter("sign"));
+        String sign = request.getParameter("sign");
+        MTCloud talkfunSDK = new MTCloud("56407","cd8ab50fbdb53a3b0338bda46186c58a");
+
+        if(!talkfunSDK.generateSign(reqParams).equals(sign)) {
+
+            //绛惧悕楠岃瘉澶辫触
+            return  new Result(false,"sign validate fail");
+
+        }
+        // 瑙f瀽params
+        String jsonStr = URLDecoder.decode((String) reqParams.get("params"), "UTF-8");
+        JSONObject params = JSONObject.fromObject(jsonStr);
+        //绛惧悕楠岃瘉鎴愬姛
+        if(reqParams.get("cmd").equals("live.start")){//鐩存挱寮�濮�
+            //璺紨鐩存挱鐘舵�佺粨鏉熶笟鍔″鐞�
+            Integer courseId =(Integer) params.get("course_id");
+            StringBuffer hql=new StringBuffer("from MediaVideoLive where deleteFlag is false and courseId=?");
+            List<Object> args = CollectionUtils.newList(courseId);
+            MediaVideoLive unique = commonDAO.findUnique(hql.toString(), args, MediaVideoLive.class);
+            unique.setStatus(MediaVideoLive.STATUS_LIVE_LIVE);
+            commonDAO.update(unique);
+        }else if(reqParams.get("cmd").equals("live.stop")){//鐩存挱缁撴潫
+            //璺紨鐩存挱鐘舵�佺粨鏉熶笟鍔″鐞�
+            Integer courseId =(Integer) params.get("course_id");
+            StringBuffer hql=new StringBuffer("from MediaVideoLive where deleteFlag is false and courseId=?");
+            List<Object> args = CollectionUtils.newList(courseId);
+            MediaVideoLive unique = commonDAO.findUnique(hql.toString(), args, MediaVideoLive.class);
+            unique.setStatus(MediaVideoLive.STATUS_LIVE_STOP);
+            commonDAO.update(unique);
+        }
+        return  new Result(true,"suc");
+    }
+}
diff --git a/src/main/java/com/qxueyou/scc/config/IpUtils.java b/src/main/java/com/qxueyou/scc/config/IpUtils.java
new file mode 100644
index 0000000..093b0a9
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/config/IpUtils.java
@@ -0,0 +1,95 @@
+package com.qxueyou.scc.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.lionsoul.ip2region.DataBlock;
+import org.lionsoul.ip2region.DbConfig;
+import org.lionsoul.ip2region.DbSearcher;
+import org.lionsoul.ip2region.Util;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.InputStream;
+
+/**
+ * @author: liuliu
+ * @date: 2023/07/03 10:28
+ * @description: ip宸ュ叿绫�
+ */
+@Slf4j
+public class IpUtils {
+
+    /**
+     * 鏈湴鐜洖鍦板潃
+     */
+    private static final String LOCAL_IP = "127.0.0.1";
+
+    /**
+     * 鏈煡
+     */
+    private static final String UNKNOWN = "unknown";
+
+    public static String getIpAddr(HttpServletRequest request) {
+
+        if (request == null) {
+            return UNKNOWN;
+        }
+
+        String ip = request.getHeader("x-forwarded-for");
+        if (StringUtils.isBlank(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+        if (StringUtils.isBlank(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("X-Forwarded-For");
+        }
+        if (StringUtils.isBlank(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (StringUtils.isBlank(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("X-Real-IP");
+        }
+
+        if (StringUtils.isBlank(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+
+        return "0:0:0:0:0:0:0:1".equals(ip) ? LOCAL_IP : ip;
+    }
+
+    public static String getCityInfo(String ip) throws Exception {
+
+        if (!Util.isIpAddress(ip)) {
+            log.error("閿欒: 鏃犳晥鐨刬p鍦板潃");
+            return null;
+        }
+
+        InputStream is = new PathMatchingResourcePatternResolver().getResources("ip2region.db")[0].getInputStream();
+        File target = new File("ip2region.db");
+        FileUtils.copyInputStreamToFile(is, target);
+        is.close();
+
+        if (StringUtils.isEmpty(String.valueOf(target))) {
+            log.error("閿欒: 鏃犳晥鐨刬p2region.db鏂囦欢");
+            return null;
+        }
+
+        DbSearcher searcher = new DbSearcher(new DbConfig(), String.valueOf(target));
+
+        try {
+            DataBlock dataBlock = (DataBlock) searcher.getClass().getMethod("btreeSearch", String.class).invoke(searcher, ip);
+
+            String ipInfo = dataBlock.getRegion();
+            if (!StringUtils.isEmpty(ipInfo)) {
+                ipInfo = ipInfo.replace("|0", "");
+                ipInfo = ipInfo.replace("0|", "");
+            }
+
+            return ipInfo;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
index 58b4d3a..5e75019 100644
--- a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
+++ b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
@@ -2,16 +2,22 @@
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.hankcs.hanlp.corpus.tag.Nature;
 import com.qxueyou.scc.base.dao.CommonDAO;
+import com.qxueyou.scc.config.IpUtils;
 import com.qxueyou.scc.sdk.MTCloud;
+import com.qxueyou.scc.teach.live.model.AccessLog;
+import com.qxueyou.scc.teach.live.utils.RedisCache;
 import io.swagger.models.auth.In;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpRequest;
 import org.springframework.web.bind.annotation.*;
 
 import com.qxueyou.scc.admin.classes.model.ClsClass;
@@ -31,11 +37,14 @@
 import io.swagger.annotations.ApiOperation;
 import springfox.documentation.spring.web.json.Json;
 
+import javax.servlet.http.HttpServletRequest;
+
 import static com.hankcs.hanlp.corpus.tag.Nature.r;
 import static com.hankcs.hanlp.corpus.tag.Nature.s;
 
 @Api(tags="鐩存挱绠$悊鎺ュ彛")
 @RestController
+@Slf4j
 @CrossOrigin(origins="*",maxAge=3600)
 @RequestMapping(value = "/admin/videoLive")
 public class VideoLiveController {
@@ -58,7 +67,9 @@
 
 	@Autowired
     CommonDAO commonDAO;
-	
+
+	@Autowired
+	private RedisCache redisCache;
 	/**
 	 * 鑾峰彇鐩存挱鍒楄〃
 	 * 
@@ -157,21 +168,43 @@
 
 	@ApiOperation(value = "寮�鍚洿鎾�")
 	@GetMapping(value = "OpenLive")
-	public Result OpenLive(int courseId) throws Exception {
+	public Result OpenLive(Integer courseId, String logId, HttpServletRequest request) throws Exception {
 		MTCloud client = new MTCloud();
+		String redisUrl = redisCache.getCacheObject("ZCR" + courseId);
+		AccessLog accessLog = new AccessLog();
 
-		HashMap<Object,Object> options = new HashMap<Object, Object>();
-		options.put("ssl", false);
-
-		String res = client.courseLogin(ClientUtils.getUserId(),MTCloud.ACCOUNT_TYPE_THIRD, options);
-		System.out.println(res);
-		JSONObject jsonObject = JSON.parseObject(res);
-		if(jsonObject.getString("code").equals("0")){
-            JSONObject data = jsonObject.getJSONObject("data");
-            String protocol = (String) data.get("url");
-            return new Result(true,"寮�鍚垚鍔�",protocol);
-        }
-		return new Result(false,jsonObject.getString("msg"));
+		if (StringUtils.isEmpty(logId)) {
+			String ip = IpUtils.getIpAddr(request);
+			String cityInfo = null;
+			try {
+				cityInfo = IpUtils.getCityInfo(ip);
+			} catch (Exception e) {
+				log.error("鑾峰彇ip褰掑睘鍦颁俊鎭け璐ワ紒");
+			}
+			accessLog.setCourseId(courseId.toString());
+			accessLog.setEnterTime(new Date());
+			accessLog.setType("videoLive");
+			accessLog.setName(ClientUtils.getUserName());
+			accessLog.setIp(ip);
+			accessLog.setIpAttribution(cityInfo);
+			accessLog.setCreateTime(new Date());
+			accessLog.setUpdateTime(new Date());
+			//璁块棶鐣欑棔
+			commonDAO.save(accessLog);
+		}
+		if (StringUtils.isEmpty(redisUrl)) {
+			HashMap<Object, Object> options = new HashMap<Object, Object>();
+			options.put("ssl", false);
+			String res = client.courseLogin(ClientUtils.getUserId(), MTCloud.ACCOUNT_TYPE_THIRD, options);
+			JSONObject jsonObject = JSON.parseObject(res);
+			if (jsonObject.getString("code").equals("0")) {
+				JSONObject data = jsonObject.getJSONObject("data");
+				String protocol = (String) data.get("url");
+				redisCache.setCacheObject("ZCR" + courseId, protocol, 1, TimeUnit.DAYS);
+				return new Result(true,"suc", CollectionUtils.newObjectMap("url", protocol, "log", accessLog.getLogId()));
+			}
+		}
+		return new Result(true,"suc",CollectionUtils.newObjectMap("url", redisUrl, "log", accessLog.getLogId()));
 	}
 
     @ApiOperation(value = "淇敼鐩存挱鐘舵��")
diff --git a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
index b465015..75c3cf6 100644
--- a/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
+++ b/src/main/java/com/qxueyou/scc/stucontroller/StuLiveController.java
@@ -6,9 +6,12 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.qxueyou.scc.base.dao.CommonDAO;
+import com.qxueyou.scc.base.model.Pager;
+import com.qxueyou.scc.config.IpUtils;
 import com.qxueyou.scc.sdk.MTCloud;
 import com.qxueyou.scc.teach.live.model.AccessLog;
 import com.qxueyou.scc.teach.live.utils.RedisCache;
+import com.qxueyou.scc.teach.student.model.StuStudent;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +34,8 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
+import javax.servlet.http.HttpServletRequest;
 
 @Slf4j
 @Api(tags="鐩存挱鎺ュ彛-瀛﹀憳绔�")
@@ -132,26 +137,29 @@
 	 * @return
 	 */
 	@GetMapping(value = "view")
-	public Result view(String couresId,String userId,String userName,String logId) throws Exception {
-		AccessLog log=new AccessLog();
+	public Result view(String couresId, String userId, String userName, String logId, HttpServletRequest request) throws Exception {
+		String redisLiveUrl = redisCache.getCacheObject("LIVE_URL" + userId);
+		AccessLog accessLog=new AccessLog();
 		if(StringUtils.isEmpty(logId)){
-//			String ip = IpUtils.getIpAddr(request);
-//			String cityInfo = null;
-//			try {
-//				cityInfo = IpUtils.getCityInfo(ip);
-//			} catch (Exception e) {
-//				log.error("鑾峰彇ip褰掑睘鍦颁俊鎭け璐ワ紒");
-//			}
-			log.setCourseId(couresId);
-			log.setEnterTime(new Date());
-			log.setType("guangxi");
-			log.setName(userName);
-//			log.setIp(ip);
-//			log.setIpAttribution(cityInfo);
-			commonDAO.save(log);
-		}else {
-			String liveUrl = redisCache.getCacheObject("LIVE_URL" + userId);
-			return new Result(true, "success",liveUrl);
+			String ip = IpUtils.getIpAddr(request);
+			String cityInfo = null;
+			try {
+				cityInfo = IpUtils.getCityInfo(ip);
+			} catch (Exception e) {
+				log.error("鑾峰彇ip褰掑睘鍦颁俊鎭け璐ワ紒");
+			}
+			accessLog.setCourseId(couresId);
+			accessLog.setEnterTime(new Date());
+			accessLog.setType("guangxi");
+			accessLog.setName(userName);
+			accessLog.setIp(ip);
+			accessLog.setIpAttribution(cityInfo);
+			accessLog.setCreateTime(new Date());
+			accessLog.setUpdateTime(new Date());
+			commonDAO.save(accessLog);
+		}
+		if (!StringUtils.isEmpty(redisLiveUrl)){
+			return new Result(true, "success",CollectionUtils.newObjectMap("url",redisLiveUrl,"log",accessLog.getLogId()));
 		}
 		MTCloud client = new MTCloud();
 		String userRole = null;
@@ -170,19 +178,35 @@
 		JSONObject jsonObject = JSON.parseObject(res);
 
 		if(jsonObject.getString("code").equals("0")){
-
 			JSONObject data = jsonObject.getJSONObject("data");
-
 			String liveUrl = (String) data.get("liveUrl");
-			StringBuffer redisLiveUrl = new StringBuffer("LIVE_URL");
-			redisLiveUrl=redisLiveUrl.append(userId);
-			redisCache.setCacheObject(redisLiveUrl.toString(),liveUrl,5, TimeUnit.MINUTES);
-			return new Result(true, "success",liveUrl);
+			StringBuffer redisLiveKey = new StringBuffer("LIVE_URL");
+			redisLiveKey.append(userId);
+			redisCache.setCacheObject(redisLiveKey.toString(),liveUrl,5, TimeUnit.MINUTES);
+			return new Result(true, "success",CollectionUtils.newObjectMap("url",liveUrl,"log",accessLog.getLogId()));
 		}
 
 		return new Result(false, jsonObject.getString("msg"));
 	}
 
+	@ApiOperation(value = "绂诲紑璺紨鐩存挱闂�")
+	@GetMapping(value = "leaveRoadShow")
+	public Result enterIntoRoadShow(String logId)  {
+//		System.out.println(logId);
+		if(!StringUtils.isEmpty(logId)){
+			StringBuffer hql=new StringBuffer("from AccessLog where logId=?");
+			List<Object> args = CollectionUtils.newList(logId);
+			AccessLog accessLogs = commonDAO.findUnique(hql.toString(), args, AccessLog.class);
+//			System.out.println(accessLogs);
+			accessLogs.setLeaveTime(new Date());
+			accessLogs.setUpdateTime(new Date());
+			commonDAO.update(accessLogs);
+			return new Result(true,"閫�鍑烘垚鍔�");
+		}
+		return new Result(false,"logId涓嶈兘涓虹┖");
+	}
+
+
 	public  String randomId() {
 			Random random=new Random();
 			String str="";
diff --git a/src/main/java/com/qxueyou/scc/teach/live/model/AccessLog.java b/src/main/java/com/qxueyou/scc/teach/live/model/AccessLog.java
index eb8c195..0549857 100644
--- a/src/main/java/com/qxueyou/scc/teach/live/model/AccessLog.java
+++ b/src/main/java/com/qxueyou/scc/teach/live/model/AccessLog.java
@@ -1,50 +1,161 @@
 package com.qxueyou.scc.teach.live.model;
 
+
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
 
 /**
  * 璁块棶鏃ュ織
  */
-@Data
-@NoArgsConstructor//鏃犲弬鏋勯�犳柟娉�
-@AllArgsConstructor//鍏ㄥ弬鏋勯�犳柟娉�
+@Entity
+//@NoArgsConstructor//鏃犲弬鏋勯�犳柟娉�
+//@AllArgsConstructor//鍏ㄥ弬鏋勯�犳柟娉�
 //@EqualsAndHashCode(callSuper = true)
 @Table(name="sa_access_log")
 public class AccessLog implements Serializable {
 
-    private static final long serialVersionUID = -1979488824632702882L;
+    private static final long serialVersionUID = -
+            1979488824632702882L;
+
+    public String getLogId() {
+        return logId;
+    }
+
+    public void setLogId(String logId) {
+        this.logId = logId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(String courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getIp() {
+        return ip;
+    }
+
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+
+    public Date getEnterTime() {
+        return enterTime;
+    }
+
+    public void setEnterTime(Date enterTime) {
+        this.enterTime = enterTime;
+    }
+
+    public Date getLeaveTime() {
+        return leaveTime;
+    }
+
+    public void setLeaveTime(Date leaveTime) {
+        this.leaveTime = leaveTime;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getIpAttribution() {
+        return ipAttribution;
+    }
+
+    public void setIpAttribution(String ipAttribution) {
+        this.ipAttribution = ipAttribution;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getDeleteFlag() {
+        return deleteFlag;
+    }
+
+    public void setDeleteFlag(Integer deleteFlag) {
+        this.deleteFlag = deleteFlag;
+    }
 
     @ApiModelProperty(value = "缂栧彿")
+    @Id
+    @GeneratedValue(generator = "hibernate-uuid")
+    @GenericGenerator(name = "hibernate-uuid", strategy = "uuid")
+    @Column(name="log_id")
     private  String logId;
     @ApiModelProperty(value = "濮撳悕")
     private  String name;
     @ApiModelProperty(value = "鐩存挱闂磇d")
+    @Column(name="course_id")
     private String courseId;
     @ApiModelProperty(value = "璁块棶ip")
     private String ip;
     @ApiModelProperty(value = "杩涘叆鐩存挱寮�濮嬫椂闂�")
+    @Column(name="enter_time")
     private Date enterTime;
     @ApiModelProperty(value = "绂诲紑鐩存挱鏃堕棿")
+    @Column(name="leave_time")
     private Date leaveTime;
     @ApiModelProperty(value = "濡傛灉鏄痷serId鍦ㄥ钩鍙版煡璇笉鍒板垯鏄父瀹�")
+    @Column(name="user_id")
     private String userId;
     @ApiModelProperty(value = "ip褰掑睘鍦颁俊鎭�")
+    @Column(name="ip_attribution")
     private String ipAttribution;
     @ApiModelProperty(value = "roadShow:璺紨锛宑onference:浼氳")
     private String type;
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @Column(name="create_time")
     private Date createTime;
     @ApiModelProperty(value = "淇敼鏃堕棿")
+    @Column(name="update_time")
     private Date updateTime;
     //鏄惁鍒犻櫎锛�0鏈垹闄� 1鍒犻櫎
     @ApiModelProperty(value = "鍒犻櫎鏍囪瘑")
+    @Column(name="delete_flag")
     private Integer deleteFlag;
 
 }

--
Gitblit v1.8.0