From 93b03e14f7319d6a003169b4cb471edf05cdbcb4 Mon Sep 17 00:00:00 2001
From: fanghongchao <601470458@qq.com>
Date: Tue, 27 Nov 2018 17:59:24 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0elasticsearch=20=E5=B7=A5?=
=?UTF-8?q?=E5=85=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 42 ++
.../settings/UISettingsController.java | 44 +-
.../domain/elasticsearch/UserOptLog.java | 154 +++++++
.../primary/dao/settings/UisettingsDao.java | 4 +
.../primary/entity/settings/Uisettings.java | 1 +
.../com/gzzn/omms/adminapi/dto/EsPage.java | 84 ++++
.../omms/adminapi/service/IUserService.java | 8 +
.../service/impl/UserServiceImpl.java | 38 ++
.../adminapi/utils/ElasticsearchUtil.java | 400 ++++++++++++++++++
src/main/resources/application-dev.yml | 12 +-
10 files changed, 784 insertions(+), 3 deletions(-)
create mode 100644 src/main/java/com/gzzn/omms/adminapi/domain/elasticsearch/UserOptLog.java
create mode 100644 src/main/java/com/gzzn/omms/adminapi/dto/EsPage.java
create mode 100644 src/main/java/com/gzzn/omms/adminapi/utils/ElasticsearchUtil.java
diff --git a/pom.xml b/pom.xml
index 97c127d..f46decb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -104,6 +104,48 @@
spring-boot-devtools
true
+
+
+
+
+
+ org.elasticsearch
+ elasticsearch
+ 6.4.2
+
+
+
+
+ org.elasticsearch.client
+ transport
+ 6.4.2
+
+
+ org.elasticsearch
+ elasticsearch
+
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.16.20
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.15
+
diff --git a/src/main/java/com/gzzn/omms/adminapi/controller/settings/UISettingsController.java b/src/main/java/com/gzzn/omms/adminapi/controller/settings/UISettingsController.java
index 87022ea..12205ce 100644
--- a/src/main/java/com/gzzn/omms/adminapi/controller/settings/UISettingsController.java
+++ b/src/main/java/com/gzzn/omms/adminapi/controller/settings/UISettingsController.java
@@ -8,6 +8,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
@@ -16,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.fastjson.JSONObject;
+import com.gzzn.omms.adminapi.domain.elasticsearch.UserOptLog;
import com.gzzn.omms.adminapi.domain.primary.dao.settings.UisettingsDao;
import com.gzzn.omms.adminapi.domain.primary.entity.settings.Uisettings;
import com.gzzn.omms.adminapi.dto.ResponseDto;
@@ -23,10 +27,22 @@ import com.gzzn.omms.adminapi.dto.settings.UisettingsDto;
import com.gzzn.omms.adminapi.dto.settings.convert.UisettingsConvert;
import com.gzzn.omms.adminapi.service.IUserService;
import com.gzzn.omms.adminapi.utils.CommonUtils;
+import com.gzzn.omms.adminapi.utils.ElasticsearchUtil;
+import com.gzzn.omms.adminapi.utils.JsonUtil;
@RestController
public class UISettingsController {
+ private final Logger logger = LoggerFactory.getLogger(UISettingsController.class);
+ /**
+ * 测试索引
+ */
+ private final String INDEX_NAME = "oplog";
+ /**
+ * 类型
+ */
+ private String ES_TYPE = "oplog";
+
/**
* UI设置接口
*/
@@ -41,7 +57,8 @@ public class UISettingsController {
* 获取当前用户ID
*/
@Autowired
- private IUserService iUserService;
+ private IUserService userService;
+
/**
* 根据条件查找当前用户所有UI设置
* @return
@@ -75,7 +92,6 @@ public class UISettingsController {
UisettingsDto dto = uisettingsConvert.uisettingsToUisettingsDto(x);
return dto;
}).collect(Collectors.toList());
-
return ResponseDto.success(uisettingsListDto);
}
@@ -92,13 +108,37 @@ public class UISettingsController {
//Dto转实体类
Uisettings uisettings = uisettingsConvert.uisettingsDtoToUisettings(uisettingsDto);
+ Uisettings oldUisettings = null;
if(StringUtils.isEmpty(uisettings.getId()))
{
uisettings.setId(CommonUtils.getUUID32()); //uuid自动生成
+ }else{
+ oldUisettings = uisettingsDao.findByUserid(uisettings.getId());
}
uisettings = uisettingsDao.save(uisettings);
+ try {
+ if (!ElasticsearchUtil.isIndexExist(INDEX_NAME)) {
+ ElasticsearchUtil.createIndex(INDEX_NAME);
+ }
+
+ UserOptLog oplog = new UserOptLog(null, "更新或者新增用户设置", userService.getCurrentUserId(),userService.getCurrentUserName(),
+ userService.getCurrentUserRealName(), userService.getUserRemoteAddress().getHostString(),
+ this.getClass().getMethod("saveUISettings", UisettingsDto.class).getAnnotation(ApiOperation.class).value());
+ //设置日志类容 jsonarry 历史及最新的
+ JSONObject log_content = new JSONObject();
+ log_content.put("newData", JsonUtil.getString(uisettings));
+ log_content.put("oldData", null==oldUisettings?"无":JsonUtil.getString(oldUisettings));
+ oplog.setLog_content(log_content.toString());
+ JSONObject logJson = JSONObject.parseObject(JsonUtil.getString(oplog));
+ String id = ElasticsearchUtil.addData(logJson, INDEX_NAME, ES_TYPE);
+ logger.info("保存用户设置UI操作日志至Elatsticsearch成功:id="+id);
+ } catch (Exception e) {
+ logger.error("保存用户设置UI操作日志至Elatsticsearch异常:", e);
+ }
+
return ResponseDto.success(uisettings.getId());
}
+
}
diff --git a/src/main/java/com/gzzn/omms/adminapi/domain/elasticsearch/UserOptLog.java b/src/main/java/com/gzzn/omms/adminapi/domain/elasticsearch/UserOptLog.java
new file mode 100644
index 0000000..025c322
--- /dev/null
+++ b/src/main/java/com/gzzn/omms/adminapi/domain/elasticsearch/UserOptLog.java
@@ -0,0 +1,154 @@
+package com.gzzn.omms.adminapi.domain.elasticsearch;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Data
+@ToString
+@NoArgsConstructor
+public class UserOptLog {
+
+ private String id;
+
+ /**
+ * 标题
+ */
+ private String title;
+ /**
+ * 应用名
+ */
+ private String app_name = "adminapi";
+ /**
+ * 模块名
+ */
+ private String model_name;
+ /**
+ * 日志详情
+ */
+ private String log_content;
+ /**
+ * 操作日志类别 固定为oplog
+ */
+ private String log_type = "oplog";
+ /**
+ * 操作用户id
+ */
+ private String user_id;
+ /**
+ * 操作用户登录名
+ */
+ private String user_name;
+ /**
+ * 操作用户真实姓名
+ */
+ private String real_name;
+ /**
+ * 用户登录IP
+ */
+ private String login_ip;
+ /**
+ * 操作描述
+ */
+ private String summary;
+
+ public UserOptLog() {
+ }
+
+ /**
+ *
+ * @param title 标题
+ * @param model_name 模块名
+ * @param user_id 操作用户id
+ * @param user_name 操作用户登录名
+ * @param real_name 操作用户真实姓名
+ * @param login_ip 用户登录IP
+ * @param summary 操作描述
+ */
+ public UserOptLog(String title, String model_name, String user_id,
+ String user_name, String real_name, String login_ip, String summary) {
+ super();
+ this.title = title;
+ this.model_name = model_name;
+ this.user_id = user_id;
+ this.user_name = user_name;
+ this.real_name = real_name;
+ this.login_ip = login_ip;
+ this.summary = summary;
+ }
+ @Override
+ public String toString() {
+ return "UserOptLog [id=" + id + ", title=" + title + ", app_name="
+ + app_name + ", model_name=" + model_name + ", log_content="
+ + log_content + ", log_type=" + log_type + ", user_id="
+ + user_id + ", user_name=" + user_name + ", real_name="
+ + real_name + ", login_ip=" + login_ip + ", summary=" + summary
+ + "]";
+ }
+ public String getId() {
+ return id;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public String getTitle() {
+ return title;
+ }
+ public void setTitle(String title) {
+ this.title = title;
+ }
+ public String getApp_name() {
+ return app_name;
+ }
+ public void setApp_name(String app_name) {
+ this.app_name = app_name;
+ }
+ public String getModel_name() {
+ return model_name;
+ }
+ public void setModel_name(String model_name) {
+ this.model_name = model_name;
+ }
+ public String getLog_content() {
+ return log_content;
+ }
+ public void setLog_content(String log_content) {
+ this.log_content = log_content;
+ }
+ public String getLog_type() {
+ return log_type;
+ }
+ public void setLog_type(String log_type) {
+ this.log_type = log_type;
+ }
+ public String getUser_id() {
+ return user_id;
+ }
+ public void setUser_id(String user_id) {
+ this.user_id = user_id;
+ }
+ public String getUser_name() {
+ return user_name;
+ }
+ public void setUser_name(String user_name) {
+ this.user_name = user_name;
+ }
+ public String getReal_name() {
+ return real_name;
+ }
+ public void setReal_name(String real_name) {
+ this.real_name = real_name;
+ }
+ public String getLogin_ip() {
+ return login_ip;
+ }
+ public void setLogin_ip(String login_ip) {
+ this.login_ip = login_ip;
+ }
+ public String getSummary() {
+ return summary;
+ }
+ public void setSummary(String summary) {
+ this.summary = summary;
+ }
+}
diff --git a/src/main/java/com/gzzn/omms/adminapi/domain/primary/dao/settings/UisettingsDao.java b/src/main/java/com/gzzn/omms/adminapi/domain/primary/dao/settings/UisettingsDao.java
index 8f6700d..6d7afd7 100644
--- a/src/main/java/com/gzzn/omms/adminapi/domain/primary/dao/settings/UisettingsDao.java
+++ b/src/main/java/com/gzzn/omms/adminapi/domain/primary/dao/settings/UisettingsDao.java
@@ -1,7 +1,9 @@
package com.gzzn.omms.adminapi.domain.primary.dao.settings;
import java.util.List;
+
import org.springframework.data.repository.CrudRepository;
+
import com.gzzn.omms.adminapi.domain.primary.entity.settings.Uisettings;
public interface UisettingsDao extends CrudRepository{
@@ -17,4 +19,6 @@ public interface UisettingsDao extends CrudRepository{
//保存
Uisettings save(Uisettings uisettings);
+
+ Uisettings findByUserid(String userid);
}
\ No newline at end of file
diff --git a/src/main/java/com/gzzn/omms/adminapi/domain/primary/entity/settings/Uisettings.java b/src/main/java/com/gzzn/omms/adminapi/domain/primary/entity/settings/Uisettings.java
index d89eb65..61d4ba7 100644
--- a/src/main/java/com/gzzn/omms/adminapi/domain/primary/entity/settings/Uisettings.java
+++ b/src/main/java/com/gzzn/omms/adminapi/domain/primary/entity/settings/Uisettings.java
@@ -25,6 +25,7 @@ public class Uisettings implements Serializable {
@Column(name="setting_content")
private String settingContent; //具体的设置内容,json格式的设置内容。不超过60KB
+ @Column(name="userid")
private String userid; //用户id
public Uisettings() {
diff --git a/src/main/java/com/gzzn/omms/adminapi/dto/EsPage.java b/src/main/java/com/gzzn/omms/adminapi/dto/EsPage.java
new file mode 100644
index 0000000..2b68678
--- /dev/null
+++ b/src/main/java/com/gzzn/omms/adminapi/dto/EsPage.java
@@ -0,0 +1,84 @@
+package com.gzzn.omms.adminapi.dto;
+
+import java.util.List;
+import java.util.Map;
+
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@ToString
+public class EsPage {
+
+ /**
+ * 当前页
+ */
+ private int currentPage;
+ /**
+ * 每页显示多少条
+ */
+ private int pageSize;
+
+ /**
+ * 总记录数
+ */
+ private int recordCount;
+ /**
+ * 本页的数据列表
+ */
+ private List