Browse Source

add:新增audit-log/mongo-db

yonge 4 years ago
parent
commit
805b316301
33 changed files with 936 additions and 17 deletions
  1. 5 0
      cms/pom.xml
  2. 1 0
      mec-auth/mec-auth-api/.gitignore
  3. 5 0
      mec-auth/mec-auth-server/pom.xml
  4. 1 0
      mec-client-api/.gitignore
  5. 25 0
      mec-common/audit-log/pom.xml
  6. 16 0
      mec-common/audit-log/src/main/java/com/yonge/log/dal/dao/AuditLogDao.java
  7. 87 0
      mec-common/audit-log/src/main/java/com/yonge/log/dal/model/AuditLog.java
  8. 64 0
      mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java
  9. 16 0
      mec-common/audit-log/src/main/java/com/yonge/log/model/AuditLogAnnotation.java
  10. 8 0
      mec-common/audit-log/src/main/java/com/yonge/log/service/AuditLogService.java
  11. 23 0
      mec-common/audit-log/src/main/java/com/yonge/log/service/impl/AuditLogServiceImpl.java
  12. 20 0
      mec-common/audit-log/src/test/java/com/yonge/log/AuditLogServerApplication.java
  13. 87 0
      mec-common/audit-log/src/test/java/com/yonge/log/test/SpringBootMongodbApplicationTests.java
  14. 6 0
      mec-common/audit-log/src/test/resources/application.properties
  15. 24 0
      mec-common/mongo-db/pom.xml
  16. 153 0
      mec-common/mongo-db/src/main/java/com/yonge/mongodb/PageInfo.java
  17. 79 0
      mec-common/mongo-db/src/main/java/com/yonge/mongodb/QueryInfo.java
  18. 143 0
      mec-common/mongo-db/src/main/java/com/yonge/mongodb/dao/BaseDaoWithMongo.java
  19. 25 0
      mec-common/mongo-db/src/main/java/com/yonge/mongodb/service/BaseServiceWithMongo.java
  20. 75 0
      mec-common/mongo-db/src/main/java/com/yonge/mongodb/service/impl/BaseServiceImplWithMongo.java
  21. 4 3
      mec-common/pom.xml
  22. 5 0
      mec-eureka/pom.xml
  23. 5 0
      mec-gateway/mec-gateway-web/pom.xml
  24. 5 0
      mec-im/pom.xml
  25. 5 0
      mec-student/pom.xml
  26. 5 0
      mec-task/pom.xml
  27. 5 0
      mec-teacher/pom.xml
  28. 1 0
      mec-thirdparty/.gitignore
  29. 1 0
      mec-util/.gitignore
  30. 18 6
      mec-util/pom.xml
  31. 8 3
      mec-util/src/main/java/com/ym/mec/util/collection/MapUtil.java
  32. 5 0
      mec-web/pom.xml
  33. 6 5
      pom.xml

+ 5 - 0
cms/pom.xml

@@ -23,6 +23,11 @@
 		</dependency>
 
 		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+
+		<dependency>
 			<groupId>de.codecentric</groupId>
 			<artifactId>spring-boot-admin-starter-client</artifactId>
 		</dependency>

+ 1 - 0
mec-auth/mec-auth-api/.gitignore

@@ -0,0 +1 @@
+/target

+ 5 - 0
mec-auth/mec-auth-server/pom.xml

@@ -26,6 +26,11 @@
 
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-oauth2</artifactId>
 		</dependency>
 

+ 1 - 0
mec-client-api/.gitignore

@@ -0,0 +1 @@
+/target

+ 25 - 0
mec-common/audit-log/pom.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>com.ym</groupId>
+		<artifactId>mec-common</artifactId>
+		<version>1.0</version>
+	</parent>
+	<groupId>com.yonge.log</groupId>
+	<artifactId>audit-log</artifactId>
+	<name>audit-log</name>
+	<url>http://maven.apache.org</url>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>com.yonge.mongodb</groupId>
+			<artifactId>mongo-db</artifactId>
+		</dependency>
+	</dependencies>
+</project>

+ 16 - 0
mec-common/audit-log/src/main/java/com/yonge/log/dal/dao/AuditLogDao.java

@@ -0,0 +1,16 @@
+package com.yonge.log.dal.dao;
+
+import org.springframework.stereotype.Component;
+
+import com.yonge.log.dal.model.AuditLog;
+import com.yonge.mongodb.dao.BaseDaoWithMongo;
+
+@Component
+public class AuditLogDao extends BaseDaoWithMongo<Long, AuditLog> {
+
+	@Override
+	public Class<AuditLog> getClassEntity() {
+		return AuditLog.class;
+	}
+
+}

+ 87 - 0
mec-common/audit-log/src/main/java/com/yonge/log/dal/model/AuditLog.java

@@ -0,0 +1,87 @@
+package com.yonge.log.dal.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document(collection = "sys_audit_log")
+public class AuditLog implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 7721535265828759275L;
+
+	@Id
+	private Long id;
+
+	private String username;
+
+	private String operateName;
+
+	private String interfaceUrl;
+
+	private String inputParams;
+
+	private Date operateTime;
+
+	private String userIp;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getOperateName() {
+		return operateName;
+	}
+
+	public void setOperateName(String operateName) {
+		this.operateName = operateName;
+	}
+
+	public String getInterfaceUrl() {
+		return interfaceUrl;
+	}
+
+	public void setInterfaceUrl(String interfaceUrl) {
+		this.interfaceUrl = interfaceUrl;
+	}
+
+	public String getInputParams() {
+		return inputParams;
+	}
+
+	public void setInputParams(String inputParams) {
+		this.inputParams = inputParams;
+	}
+
+	public Date getOperateTime() {
+		return operateTime;
+	}
+
+	public void setOperateTime(Date operateTime) {
+		this.operateTime = operateTime;
+	}
+
+	public String getUserIp() {
+		return userIp;
+	}
+
+	public void setUserIp(String userIp) {
+		this.userIp = userIp;
+	}
+}

+ 64 - 0
mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java

@@ -0,0 +1,64 @@
+package com.yonge.log.interceptor;
+
+import java.io.IOException;
+import java.util.Date;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.ym.mec.util.json.JsonUtil;
+import com.ym.mec.util.web.WebUtil;
+import com.yonge.log.dal.model.AuditLog;
+import com.yonge.log.model.AuditLogAnnotation;
+import com.yonge.log.service.AuditLogService;
+
+/**
+ * 日志审计的拦截器
+ */
+public class AuditLogInterceptor extends HandlerInterceptorAdapter {
+
+	@Autowired
+	private AuditLogService auditLogService;
+
+	private String username;
+
+	public AuditLogInterceptor(String username) {
+		this.username = username;
+	}
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
+
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+
+		HandlerMethod handlerMethod = (HandlerMethod) handler;
+		AuditLogAnnotation anno = handlerMethod.getMethodAnnotation(AuditLogAnnotation.class);
+
+		if (anno != null) {
+			AuditLog auditLog = new AuditLog();
+			auditLog.setOperateName(anno.operateName());
+			auditLog.setInterfaceUrl(anno.interfaceURL());
+			auditLog.setUserIp(WebUtil.getRemoteIp(request));
+			auditLog.setInputParams(JsonUtil.toJSONString(WebUtil.getParameterMap(request)));
+			// 操作人
+			auditLog.setUsername(username);
+			auditLog.setOperateTime(new Date());
+			auditLogService.insert(auditLog);
+		}
+
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+}

+ 16 - 0
mec-common/audit-log/src/main/java/com/yonge/log/model/AuditLogAnnotation.java

@@ -0,0 +1,16 @@
+package com.yonge.log.model;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface AuditLogAnnotation {
+
+	String operateName();
+
+	String interfaceURL();
+
+}

+ 8 - 0
mec-common/audit-log/src/main/java/com/yonge/log/service/AuditLogService.java

@@ -0,0 +1,8 @@
+package com.yonge.log.service;
+
+import com.yonge.log.dal.model.AuditLog;
+import com.yonge.mongodb.service.BaseServiceWithMongo;
+
+public interface AuditLogService extends BaseServiceWithMongo<Long, AuditLog> {
+
+}

+ 23 - 0
mec-common/audit-log/src/main/java/com/yonge/log/service/impl/AuditLogServiceImpl.java

@@ -0,0 +1,23 @@
+package com.yonge.log.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.yonge.log.dal.dao.AuditLogDao;
+import com.yonge.log.dal.model.AuditLog;
+import com.yonge.log.service.AuditLogService;
+import com.yonge.mongodb.dao.BaseDaoWithMongo;
+import com.yonge.mongodb.service.impl.BaseServiceImplWithMongo;
+
+@Service
+public class AuditLogServiceImpl extends BaseServiceImplWithMongo<Long, AuditLog> implements AuditLogService {
+
+	@Autowired
+	private AuditLogDao auditLogDao;
+
+	@Override
+	public BaseDaoWithMongo<Long, AuditLog> getDAO() {
+		return auditLogDao;
+	}
+
+}

+ 20 - 0
mec-common/audit-log/src/test/java/com/yonge/log/AuditLogServerApplication.java

@@ -0,0 +1,20 @@
+package com.yonge.log;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+@ComponentScan(basePackages = { "com.yonge.log" })
+@Configuration
+public class AuditLogServerApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(AuditLogServerApplication.class, args);
+	}
+
+}

+ 87 - 0
mec-common/audit-log/src/test/java/com/yonge/log/test/SpringBootMongodbApplicationTests.java

@@ -0,0 +1,87 @@
+package com.yonge.log.test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.ym.mec.util.json.JsonUtil;
+import com.yonge.log.AuditLogServerApplication;
+import com.yonge.log.dal.model.AuditLog;
+import com.yonge.log.service.AuditLogService;
+import com.yonge.mongodb.QueryInfo;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = AuditLogServerApplication.class)
+public class SpringBootMongodbApplicationTests {
+
+	@Autowired
+	private AuditLogService auditLogService;
+	
+	@Test
+	public void add() {
+		AuditLog auditLog = new AuditLog();
+		auditLog.setId(1L);
+		auditLog.setInputParams("{'signClassId':'','mixClassId':'','snapClassIds':'','highClassId':'','temporaryCourseFee':null,'studentRegistration':{'name':'上低08','gender':1,'birthdate':'2020-12-21','parentsName':'上低08家长','parentsPhone':'18881230038','currentGrade':'一年级','currentClass':'A','subjectId':2,'musicGroupId':'20123009470100001'},'studentPaymentOrderDetails':[]}");
+		auditLog.setInterfaceUrl("api-web/studentRegistration/insertStudent");
+		auditLog.setOperateName("进行中加学员");
+		auditLog.setUserIp("127.0.0.1");
+		auditLog.setUsername("xxx");
+		auditLogService.insert(auditLog);
+		
+		System.out.println("*********insert*********");
+		System.out.println(JsonUtil.toJSONString(auditLog));
+		System.out.println("******************");
+	}
+
+	@Test
+	public void query() {
+		System.out.println("********query**********");
+		System.out.println(JsonUtil.toJSONString(auditLogService.get(1L)));
+		System.out.println("******************");
+	}
+
+	@Test
+	public void update() {
+		AuditLog auditLog = auditLogService.get(1L);
+		auditLog.setInputParams("测试输入参数222");
+		System.out.println("********update**********");
+		System.out.println(JsonUtil.toJSONString(auditLogService.update(1L, auditLog)));
+		System.out.println("******************");
+	}
+
+	@Test
+	public void delete() {
+		System.out.println("********delete**********");
+		System.out.println(JsonUtil.toJSONString(auditLogService.delete(1L)));
+		System.out.println("******************");
+	}
+
+	@Test
+	public void findAll() {
+		System.out.println("********findAll**********");
+		System.out.println(JsonUtil.toJSONString(auditLogService.findAll(null)));
+		System.out.println("******************");
+	}
+
+	@Test
+	public void queryCount() {
+		System.out.println("********queryCount**********");
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("id", 1);
+		System.out.println(JsonUtil.toJSONString(auditLogService.queryCount(params)));
+		System.out.println("******************");
+	}
+
+	@Test
+	public void queryPage() {
+		System.out.println("********queryPage**********");
+		QueryInfo queryInfo = new QueryInfo();
+		System.out.println(JsonUtil.toJSONString(auditLogService.queryPage(queryInfo)));
+		System.out.println("******************");
+	}
+}

+ 6 - 0
mec-common/audit-log/src/test/resources/application.properties

@@ -0,0 +1,6 @@
+spring.application.name=audit-log
+
+# mongodb
+spring.data.mongodb.uri=mongodb://47.114.1.200:27018
+
+spring.data.mongodb.database=mec_dev

+ 24 - 0
mec-common/mongo-db/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>com.ym</groupId>
+		<artifactId>mec-common</artifactId>
+		<version>1.0</version>
+	</parent>
+	<groupId>com.yonge.mongodb</groupId>
+	<artifactId>mongo-db</artifactId>
+	<name>mongo-db</name>
+	<url>http://maven.apache.org</url>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-mongodb</artifactId>
+		</dependency>
+	</dependencies>
+</project>

+ 153 - 0
mec-common/mongo-db/src/main/java/com/yonge/mongodb/PageInfo.java

@@ -0,0 +1,153 @@
+/**
+ * PageInfo.java 
+ * Copyright © 2015-2015
+ * 
+ * @author pengdc
+ * @create 2015年7月14日
+ */
+package com.yonge.mongodb;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 分页对象
+ */
+public class PageInfo<T> implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -5951140453033647399L;
+
+	private int pageNo;
+	private int offset;
+	private int limit;
+	private long total = 0;
+	private int totalPage = 0;
+
+	/**
+	 * 分页信息
+	 */
+	protected List<T> rows = new ArrayList<T>();
+
+	protected List<T> footer = new ArrayList<T>();
+
+	/** 默认构造函数 */
+	public PageInfo() {
+	}
+
+	public PageInfo(Integer pageNo) {
+		if (pageNo == null || pageNo < 1)
+			pageNo = 1;
+		this.setPageNo(pageNo);
+	}
+
+	/** 构造函数 */
+	public PageInfo(Integer pageNo, int pageSize) {
+		if (pageNo == null || pageNo < 1)
+			pageNo = 1;
+		this.setPageNo(pageNo);
+		this.limit = pageSize;
+		this.offset = (pageNo - 1) * limit;
+	}
+
+	/**
+	 * 是否还有上一页
+	 * @return
+	 */
+	public boolean hasPre() {
+		return (pageNo > 1);
+	}
+
+	/**
+	 * 是否还有下一页.
+	 */
+	public boolean hasNext() {
+		return (pageNo < totalPage);
+	}
+
+	/**
+	 * 取得上页的页号, 序号从1开始. 当前页为首页时返回首页序号.
+	 */
+	public int getPrePage() {
+		if (hasPre()) {
+			return pageNo - 1;
+		} else {
+			return pageNo;
+		}
+	}
+
+	/**
+	 * 取得下页的页号, 序号从1开始. 当前页为尾页时仍返回尾页序号.
+	 */
+	public int getNextPage() {
+		if (hasNext()) {
+			return pageNo + 1;
+		} else {
+			return pageNo;
+		}
+	}
+
+	public int getPageNo() {
+		return pageNo;
+	}
+
+	public void setPageNo(int pageNo) {
+		if (pageNo > 0) {
+			this.pageNo = pageNo;
+		}
+	}
+
+	public int getOffset() {
+		return offset;
+	}
+
+	public void setOffset(int offset) {
+		this.offset = offset;
+	}
+
+	public int getLimit() {
+		return limit;
+	}
+
+	public void setLimit(int limit) {
+		this.limit = limit;
+	}
+
+	public void setTotalPage(int totalPage) {
+		this.totalPage = totalPage;
+	}
+
+	public int getTotalPage() {
+		return totalPage;
+	}
+
+	public long getTotal() {
+		return total;
+	}
+
+	public void setTotal(long total) {
+		this.total = total;
+		this.totalPage=new BigDecimal(total).divide(new BigDecimal(limit),0,BigDecimal.ROUND_CEILING).intValue();
+	}
+
+	public List<T> getRows() {
+		return rows;
+	}
+
+	public void setRows(List<T> rows) {
+		this.rows = rows;
+	}
+
+	public List<T> getFooter() {
+		return footer;
+	}
+
+	public void setFooter(List<T> footer) {
+		this.footer = footer;
+	}
+
+}

+ 79 - 0
mec-common/mongo-db/src/main/java/com/yonge/mongodb/QueryInfo.java

@@ -0,0 +1,79 @@
+/**
+ * QueryInfo.java 
+ * Copyright © 2015-2015
+ * 
+ * @author pengdc
+ * @create 2015年7月14日
+ */
+package com.yonge.mongodb;
+
+/**
+ * 查询对象基类
+ */
+public class QueryInfo {
+	/**
+	 * 默认当前页码
+	 */
+	private int page = 1;
+	/**
+	 * 默认页码大小
+	 */
+	private int rows = 20;
+	/**
+	 * 默认排序列
+	 */
+	private String sort = "create_time_";
+	/**
+	 * 默认排序方向
+	 */
+	private String order = "desc";
+
+	public QueryInfo() {
+	}
+
+	public QueryInfo(int page, int rows, String sort, String order) {
+		super();
+		this.page = page;
+		this.rows = rows;
+		this.sort = sort;
+		this.order = order;
+	}
+
+	public QueryInfo(int page, int rows) {
+		super();
+		this.page = page;
+		this.rows = rows;
+	}
+
+	public int getPage() {
+		return page;
+	}
+
+	public void setPage(int page) {
+		this.page = page;
+	}
+
+	public int getRows() {
+		return rows;
+	}
+
+	public void setRows(int rows) {
+		this.rows = rows;
+	}
+
+	public String getSort() {
+		return sort;
+	}
+
+	public void setSort(String sort) {
+		this.sort = sort;
+	}
+
+	public String getOrder() {
+		return order;
+	}
+
+	public void setOrder(String order) {
+		this.order = order;
+	}
+}

+ 143 - 0
mec-common/mongo-db/src/main/java/com/yonge/mongodb/dao/BaseDaoWithMongo.java

@@ -0,0 +1,143 @@
+package com.yonge.mongodb.dao;
+
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.annotation.Resource;
+
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+
+import com.yonge.mongodb.PageInfo;
+
+public abstract class BaseDaoWithMongo<PK, T extends Serializable> {
+
+	@Resource
+	private MongoTemplate mongoTemplate;
+
+	public abstract Class<T> getClassEntity();
+
+	/**
+	 * 通过主键id获取对象
+	 * @param id
+	 * @return T
+	 */
+	public T get(PK id) {
+		Query query = new Query(Criteria.where("_id").is(id));
+		return mongoTemplate.findOne(query, getClassEntity());
+	}
+
+	/**
+	 * 更新实体对象
+	 * @param bean
+	 */
+	public long update(PK id, T bean) {
+		Query query = new Query(Criteria.where("_id").is(id));
+
+		Update update = new Update();
+
+		Field[] fieldList = bean.getClass().getDeclaredFields();
+		for (Field field : fieldList) {
+			field.setAccessible(true);
+			try {
+				update.set(field.getName(), field.get(bean));
+			} catch (IllegalArgumentException e) {
+				e.printStackTrace();
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			}
+		}
+
+		return mongoTemplate.updateFirst(query, update, getClassEntity()).getModifiedCount();
+	}
+
+	/**
+	 * 通过主键id删除对象
+	 * @param id
+	 */
+	public long delete(final PK id) {
+		Query query = new Query(Criteria.where("_id").is(id));
+		return mongoTemplate.remove(query, getClassEntity()).getDeletedCount();
+	}
+
+	/**
+	 * 写入实体对象
+	 * @param bean
+	 */
+	public void insert(T bean) {
+		mongoTemplate.insert(bean);
+	}
+
+	/**
+	 * 通过参数查找所有结果集
+	 * @param params
+	 * @return
+	 */
+	public List<T> findAll(Map<String, Object> params) {
+		Query query = new Query();
+
+		Criteria criteria = new Criteria();
+		if (params != null) {
+			for (Entry<String, Object> entry : params.entrySet()) {
+				criteria.and(entry.getKey()).is(entry.getValue());
+			}
+		}
+		query.addCriteria(criteria);
+		return mongoTemplate.find(query, getClassEntity());
+	}
+
+	/**
+	 * 通过参数查找结果集,适合分页场景
+	 * @param params
+	 * @return
+	 */
+	public PageInfo<T> queryPage(int page, int size, Map<String, Object> params) {
+		PageInfo<T> pageInfo = new PageInfo<T>(page, size);
+
+		List<T> dataList = null;
+		long total = this.queryCount(params);
+		if (total > 0) {
+			pageInfo.setTotal(total);
+
+			Query query = new Query();
+			Criteria criteria = new Criteria();
+			if (params != null) {
+				for (Entry<String, Object> entry : params.entrySet()) {
+					criteria.and(entry.getKey()).is(entry.getValue());
+				}
+			}
+			query.addCriteria(criteria);
+			query.skip(pageInfo.getOffset()).limit(pageInfo.getLimit());
+			dataList = mongoTemplate.find(query, getClassEntity());
+		}
+		if (total == 0) {
+			dataList = new ArrayList<T>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	/**
+	 * 通过参数查找结果集数目
+	 * @param params
+	 * @return
+	 */
+	public long queryCount(Map<String, Object> params) {
+		Query query = new Query();
+
+		Criteria criteria = new Criteria();
+		if (params != null) {
+			for (Entry<String, Object> entry : params.entrySet()) {
+				criteria.and(entry.getKey()).is(entry.getValue());
+			}
+		}
+		query.addCriteria(criteria);
+		return mongoTemplate.count(query, getClassEntity());
+	}
+}

+ 25 - 0
mec-common/mongo-db/src/main/java/com/yonge/mongodb/service/BaseServiceWithMongo.java

@@ -0,0 +1,25 @@
+package com.yonge.mongodb.service;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import com.yonge.mongodb.PageInfo;
+import com.yonge.mongodb.QueryInfo;
+
+public interface BaseServiceWithMongo<PK, T extends Serializable> {
+
+	public T get(PK id);
+	
+	public long update(PK id, T bean);
+	
+	public long delete(final PK id);
+	
+	public void insert(T bean);
+	
+	public List<T> findAll(Map<String, Object> params);
+	
+	public PageInfo<T> queryPage(QueryInfo queryInfo);
+	
+	public long queryCount(Map<String, Object> params);
+}

+ 75 - 0
mec-common/mongo-db/src/main/java/com/yonge/mongodb/service/impl/BaseServiceImplWithMongo.java

@@ -0,0 +1,75 @@
+package com.yonge.mongodb.service.impl;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.ym.mec.util.collection.MapUtil;
+import com.yonge.mongodb.PageInfo;
+import com.yonge.mongodb.QueryInfo;
+import com.yonge.mongodb.dao.BaseDaoWithMongo;
+import com.yonge.mongodb.service.BaseServiceWithMongo;
+
+public abstract class BaseServiceImplWithMongo<PK, T extends Serializable> implements BaseServiceWithMongo<PK, T> {
+
+	public abstract BaseDaoWithMongo<PK, T> getDAO();
+
+	public T get(PK id) {
+		return getDAO().get(id);
+	}
+
+	/**
+	 * 更新实体对象
+	 * @param bean
+	 */
+	public long update(PK id, T bean) {
+		return getDAO().update(id, bean);
+	}
+
+	/**
+	 * 通过主键id删除对象
+	 * @param id
+	 */
+	public long delete(final PK id) {
+		return getDAO().delete(id);
+	}
+
+	/**
+	 * 写入实体对象
+	 * @param bean
+	 */
+	public void insert(T bean) {
+		getDAO().insert(bean);
+	}
+
+	/**
+	 * 通过参数查找所有结果集
+	 * @param params
+	 * @return
+	 */
+	public List<T> findAll(Map<String, Object> params) {
+		return getDAO().findAll(params);
+	}
+
+	/**
+	 * 通过参数查找结果集,适合分页场景
+	 * @param params
+	 * @return
+	 */
+	public PageInfo<T> queryPage(QueryInfo queryInfo) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo, "page", "rows", "sort", "order");
+		return getDAO().queryPage(queryInfo.getPage(), queryInfo.getRows(), params);
+	}
+
+	/**
+	 * 通过参数查找结果集数目
+	 * @param params
+	 * @return
+	 */
+	public long queryCount(Map<String, Object> params) {
+		return getDAO().queryCount(params);
+	}
+
+}

+ 4 - 3
mec-common/pom.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<groupId>com.ym</groupId>
@@ -27,5 +26,7 @@
 	<modules>
 		<module>common-core</module>
 		<module>common-log</module>
-	</modules>
+	  <module>mongo-db</module>
+    <module>audit-log</module>
+  </modules>
 </project>

+ 5 - 0
mec-eureka/pom.xml

@@ -21,6 +21,11 @@
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
 		
 		<dependency>
 			<groupId>org.springframework.boot</groupId>

+ 5 - 0
mec-gateway/mec-gateway-web/pom.xml

@@ -32,6 +32,11 @@
 
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
 		</dependency>
 

+ 5 - 0
mec-im/pom.xml

@@ -20,6 +20,11 @@
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-jpa</artifactId>

+ 5 - 0
mec-student/pom.xml

@@ -19,6 +19,11 @@
 
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-security</artifactId>
 		</dependency>
 

+ 5 - 0
mec-task/pom.xml

@@ -24,6 +24,11 @@
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
 		
 		<dependency>
 			<groupId>org.quartz-scheduler</groupId>

+ 5 - 0
mec-teacher/pom.xml

@@ -22,6 +22,11 @@
 
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-security</artifactId>
 		</dependency>
 

+ 1 - 0
mec-thirdparty/.gitignore

@@ -0,0 +1 @@
+/target

+ 1 - 0
mec-util/.gitignore

@@ -0,0 +1 @@
+/target

+ 18 - 6
mec-util/pom.xml

@@ -79,10 +79,22 @@
 			<artifactId>iTextAsian</artifactId>
 			<version>1.0</version>
 		</dependency>
-        <dependency>
-            <groupId>org.ini4j</groupId>
-            <artifactId>ini4j</artifactId>
-            <version>0.5.4</version>
-        </dependency>
-    </dependencies>
+		<dependency>
+			<groupId>org.ini4j</groupId>
+			<artifactId>ini4j</artifactId>
+			<version>0.5.4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.70</version>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.8.0</version>
+		</dependency>
+	</dependencies>
 </project>

+ 8 - 3
mec-util/src/main/java/com/ym/mec/util/collection/MapUtil.java

@@ -1,5 +1,6 @@
 package com.ym.mec.util.collection;
 
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.beans.BeanInfo;
@@ -28,15 +29,15 @@ public class MapUtil {
 	* @param bean
 	* @return
 	*/
-	public static Map<String, Object> populateMap(Map<String, Object> map, Object bean) {
-		return populateMap(map, bean, null);
+	public static Map<String, Object> populateMap(Map<String, Object> map, Object bean, String... ignoreKeys) {
+		return populateMapWithPrefix(map, bean, null, ignoreKeys);
 	}
 
 	/**
 	 * 假设prefix=detail.,bean带有一个属性name,则map中将有一个项:
 	 * key=detail.name,value为bean的name属性值。
 	 */
-	public static Map<String, Object> populateMap(Map<String, Object> map, Object bean, String prefix) {
+	public static Map<String, Object> populateMapWithPrefix(Map<String, Object> map, Object bean, String prefix, String... ignoreKeys) {
 		boolean withoutPrefix = StringUtils.isBlank(prefix);
 
 		try {
@@ -53,6 +54,10 @@ public class MapUtil {
 					}
 
 					String key = withoutPrefix ? propName : prefix + propName;
+					
+					if(ArrayUtils.contains(ignoreKeys, key)){
+						continue;
+					}
 
 					Object value = methods[i].invoke(bean, EMPTY_ARRAY);
 					if (value != null) {

+ 5 - 0
mec-web/pom.xml

@@ -23,6 +23,11 @@
 
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-security</artifactId>
 		</dependency>
 

+ 6 - 5
pom.xml

@@ -82,6 +82,12 @@
 				<artifactId>mec-util</artifactId>
 				<version>1.0</version>
 			</dependency>
+			
+			<dependency>
+				<groupId>com.yonge.mongodb</groupId>
+				<artifactId>mongo-db</artifactId>
+				<version>1.0</version>
+			</dependency>
 
 			<dependency>
 				<groupId>com.ym</groupId>
@@ -256,11 +262,6 @@
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
 		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-		</dependency>
 	</dependencies>
 
 	<build>