Browse Source

增加数据同步功能

宋悦 8 years ago
parent
commit
bca420d839

+ 10 - 0
core-api/pom.xml

@@ -22,6 +22,11 @@
             <artifactId>common-util</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.common</groupId>
+            <artifactId>common-dto</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>cn.com.qmth.examcloud.common</groupId>
             <artifactId>common-uac</artifactId>
@@ -68,6 +73,11 @@
             <artifactId>commons-fileupload</artifactId>
             <version>1.3.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.commons</groupId>
+            <artifactId>data-sync-rabbit</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 1 - 1
core-api/src/main/java/cn/com/qmth/examcloud/service/core/api/StudentApi.java

@@ -101,7 +101,7 @@ public class StudentApi {
     	student.setUpdateTime(new Date());
         User user = userRepo.findOne(student.getUser().getId());
         user.setName(student.getName());
-        userRepo.save(user);
+        student.setUser(user);
         return new ResponseEntity(studentRepo.save(student),HttpStatus.OK);
     }
 

+ 12 - 3
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/CourseService.java

@@ -10,6 +10,9 @@ import java.util.stream.Stream;
 import javax.persistence.criteria.Predicate;
 import javax.transaction.Transactional;
 
+import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
+import cn.com.qmth.examcloud.service.core.service.sync.DataSendService;
+import com.qmth.commons.dataSync.core.service.DataSyncService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -21,7 +24,6 @@ import cn.com.qmth.examcloud.common.util.excel.ExcelReader;
 import cn.com.qmth.examcloud.common.util.excel.ExcelReaderHandle;
 import cn.com.qmth.examcloud.service.core.dto.CourseDTO;
 import cn.com.qmth.examcloud.service.core.entity.Course;
-import cn.com.qmth.examcloud.service.core.enums.CourseLevel;
 import cn.com.qmth.examcloud.service.core.repo.CourseRepo;
 import org.springframework.util.StringUtils;
 
@@ -31,6 +33,9 @@ public class CourseService {
     @Autowired
     CourseRepo courseRepo;
 
+	@Autowired
+	DataSendService dataSendService;
+
     @Transactional
 	public List<ExcelError> importCourse(Long orgId,InputStream inputStream) {
 		List<Course> list = new ArrayList<Course>();
@@ -129,7 +134,9 @@ public class CourseService {
 	public Course save(Course course) throws Exception{
 		checkCode(course.getOrgId(),course.getCode());
 		course.setCreateTime(new Date());
-		return courseRepo.save(course);
+		Course reCourse = courseRepo.save(course);
+		dataSendService.sendCourse(reCourse);
+		return reCourse;
 	}
 
 	private void checkCode(Long orgId,String code) {
@@ -164,7 +171,9 @@ public class CourseService {
 			checkCode(course.getOrgId(),course.getCode());
 		}
 		course.setUpdateTime(new Date());
-		return courseRepo.save(course);
+		Course reCourse = courseRepo.save(course);
+		dataSendService.sendCourse(course);
+		return reCourse;
 	}
 
 }

+ 11 - 2
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/OrgService.java

@@ -6,6 +6,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import cn.com.qmth.examcloud.service.core.service.sync.DataSendService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
@@ -28,8 +29,12 @@ public class OrgService {
 
     @Autowired
     OrgRepo orgRepo;
+
     @Autowired
     UserRepo userRepo;
+
+	@Autowired
+	DataSendService dataSendService;
     
     @Transactional
 	public List<ExcelError> importLearnCenter(Long orgId, InputStream inputStream) {
@@ -117,7 +122,9 @@ public class OrgService {
 	public Org save(Org org) throws Exception{
 		checkCode(org.getParentId(),org.getCode());
 		org.setCreateTime(new Date());
-		return orgRepo.save(org);
+		Org reOrg = orgRepo.save(org);
+		dataSendService.sendOrg(reOrg);
+		return reOrg;
 	}
 
 	private void checkCode(Long parentId,String code) {
@@ -133,7 +140,9 @@ public class OrgService {
 			checkCode(org.getParentId(),org.getCode());
 		}
 		org.setUpdateTime(new Date());
-		return orgRepo.save(org);
+		Org reOrg = orgRepo.save(org);
+		dataSendService.sendOrg(reOrg);
+		return reOrg;
 	}
 
 }

+ 4 - 0
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/StudentService.java

@@ -114,6 +114,8 @@ public class StudentService {
                 if (domain != null) {//学号查找不为空,更新身份证号
                     domain.setIdentityNumber(student.getIdentityNumber());
                     domain.setUpdateTime(new Date());
+                    domain.setName(student.getName());
+                    domain.setOrgId(student.getOrgId());
                     return studentRepo.save(domain);
                 }
             }
@@ -122,6 +124,8 @@ public class StudentService {
             if (entity != null) {//身份证查找不为空,更新学号
                 entity.setStudentCode(student.getStudentCode());
                 entity.setUpdateTime(new Date());
+                entity.setName(student.getName());
+                entity.setOrgId(student.getOrgId());
                 return studentRepo.save(entity);
             }
             student.setOrgId(student.getUser().getOrgId());

+ 32 - 0
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/sync/DataReceiveService.java

@@ -0,0 +1,32 @@
+package cn.com.qmth.examcloud.service.core.service.sync;
+
+import com.qmth.commons.dataSync.core.annotations.DataReceive;
+import com.qmth.commons.dataSync.core.entity.BaseSyncData;
+import com.qmth.commons.dataSync.core.service.DataSyncService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by songyue on 17/8/3.
+ */
+@Service
+public class DataReceiveService {
+
+    private static final Logger log = LoggerFactory.getLogger(DataReceiveService.class);
+
+    @Autowired
+    DataSyncService dataSyncService;
+
+    @DataReceive(domain = "cn.com.qmth.examcloud.common.dto.core.CourseSync")
+    public synchronized void readCourse(BaseSyncData baseSyncData) {
+        if (dataSyncService.expired(baseSyncData)) {
+            return;
+        }
+        log.info("--------------coursesync---------");
+        log.info(baseSyncData.toString());
+    }
+
+
+}

+ 30 - 0
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/sync/DataSendService.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.examcloud.service.core.service.sync;
+
+import cn.com.qmth.examcloud.common.dto.core.CourseSync;
+import cn.com.qmth.examcloud.common.dto.core.OrgSync;
+import cn.com.qmth.examcloud.common.util.BeanCopierUtil;
+import cn.com.qmth.examcloud.service.core.entity.Course;
+import cn.com.qmth.examcloud.service.core.entity.Org;
+import com.qmth.commons.dataSync.core.service.DataSyncService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by songyue on 17/8/3.
+ */
+@Service
+public class DataSendService {
+
+    @Autowired
+    DataSyncService dataSyncService;
+
+    public void sendCourse(Course course){
+        CourseSync courseSync = BeanCopierUtil.copyProperties(course,CourseSync.class);
+        dataSyncService.send(courseSync);
+    }
+
+    public void sendOrg(Org org){
+        OrgSync orgSync = BeanCopierUtil.copyProperties(org,OrgSync.class);
+        dataSyncService.send(orgSync);
+    }
+}

+ 5 - 0
core-domain/pom.xml

@@ -33,5 +33,10 @@
             <artifactId>common-util</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.common</groupId>
+            <artifactId>common-dto</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>

+ 1 - 1
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/entity/Course.java

@@ -11,10 +11,10 @@ import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 
+import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import cn.com.qmth.examcloud.common.util.excel.ExcelProperty;
-import cn.com.qmth.examcloud.service.core.enums.CourseLevel;
 
 /**
  * 

+ 4 - 0
core-main/pom.xml

@@ -21,6 +21,10 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 7 - 0
core-main/src/main/java/cn/com/qmth/examcloud/service/core/Application.java

@@ -1,18 +1,25 @@
 package cn.com.qmth.examcloud.service.core;
 
+import com.qmth.commons.query.dao.impl.BaseQueryDaoImpl;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.netflix.feign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.web.multipart.MultipartResolver;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
+@ComponentScan(basePackages = {"com.qmth.commons","cn.com.qmth"})
+@EntityScan(basePackages = {"com.qmth.commons","cn.com.qmth"})
+@EnableJpaRepositories(basePackages = {"com.qmth.commons","cn.com.qmth"},repositoryBaseClass = BaseQueryDaoImpl.class)
 @SpringBootApplication
 @EnableEurekaClient
 @EnableFeignClients

+ 12 - 1
core-main/src/main/resources/application-dev.properties

@@ -1,5 +1,16 @@
 spring.datasource.url=jdbc:mysql://localhost:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
 spring.datasource.username=root
 spring.datasource.password=root
+
+
 spring.redis.host=127.0.0.1
-spring.redis.port=6379
+spring.redis.port=6379
+
+
+eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
+
+spring.rabbitmq.host=192.168.1.99
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=examcloud
+spring.rabbitmq.password=examcloud
+spring.rabbitmq.listener.acknowledgeMode=MANUAL

+ 1 - 1
pom.xml

@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>1.4.3.RELEASE</version>
+        <version>1.5.2.RELEASE</version>
     </parent>