提交 05d9a191 authored 作者: 黄承天's avatar 黄承天

fix(user):修正一些错误

上级 14fd8bf7
...@@ -6,7 +6,7 @@ import lombok.Data; ...@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* * 增量数据对象
* @author c * @author c
* @since 2022-03-21 * @since 2022-03-21
*/ */
...@@ -18,8 +18,8 @@ public class Change { ...@@ -18,8 +18,8 @@ public class Change {
private String type; private String type;
private String table; private String entity;
private String key; private String id;
} }
package org.matrix.remote.service; package org.matrix.remote.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.matrix.local.mapper.KsProjectMapper; import org.matrix.local.mapper.KsProjectMapper;
import org.matrix.local.mapper.KsUserMapper; import org.matrix.local.mapper.KsUserMapper;
import org.matrix.local.mapper.KsUserProjectMapper; import org.matrix.local.mapper.KsUserProjectMapper;
import org.matrix.remote.entity.ZtProject; import org.matrix.remote.entity.ZtProject;
import org.matrix.remote.entity.ZtUser; import org.matrix.remote.entity.ZtUser;
import org.matrix.remote.entity.ZtUserView; import org.matrix.remote.entity.ZtUserView;
import org.matrix.remote.mapper.ChangeMapper;
import org.matrix.remote.mapper.ZtProjectMapper; import org.matrix.remote.mapper.ZtProjectMapper;
import org.matrix.remote.mapper.ZtUserMapper; import org.matrix.remote.mapper.ZtUserMapper;
import org.matrix.remote.mapper.ZtUserViewMapper; import org.matrix.remote.mapper.ZtUserViewMapper;
...@@ -19,9 +21,12 @@ import java.util.List; ...@@ -19,9 +21,12 @@ import java.util.List;
/** /**
* 禅道数据全量同步工具 * 禅道数据全量同步工具
*/ */
@Slf4j
@Service @Service
public class DataAllCollector { public class DataAllCollector {
@Autowired
private ChangeMapper changeMapper;
@Autowired @Autowired
private ZtUserMapper ztUserMapper; private ZtUserMapper ztUserMapper;
@Autowired @Autowired
...@@ -45,6 +50,9 @@ public class DataAllCollector { ...@@ -45,6 +50,9 @@ public class DataAllCollector {
* 执行一次全量同步 * 执行一次全量同步
*/ */
public void execute() { public void execute() {
log.info("全量同步禅道用户项目数据...");
//清空增量记录
changeMapper.delete(Wrappers.lambdaQuery());
//用户数据 //用户数据
collectUser(); collectUser();
saveUser(); saveUser();
...@@ -54,6 +62,7 @@ public class DataAllCollector { ...@@ -54,6 +62,7 @@ public class DataAllCollector {
//用户项目关系数据 //用户项目关系数据
collectUserView(); collectUserView();
saveUserProject(); saveUserProject();
log.info("同步结束....");
} }
//------------------------------------private------------------------------------- //------------------------------------private-------------------------------------
......
...@@ -20,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -20,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Objects;
import static java.util.Objects.nonNull; import static java.util.Objects.nonNull;
...@@ -52,19 +51,25 @@ public class DataTriggerCollector { ...@@ -52,19 +51,25 @@ public class DataTriggerCollector {
* 执行一次增量同步 * 执行一次增量同步
*/ */
public void execute() { public void execute() {
boolean hasChanges = changeMapper.selectCount(Wrappers.lambdaQuery()) > 0; Long count = changeMapper.selectCount(Wrappers.lambdaQuery());
boolean hasChanges = count > 0;
if (hasChanges) { if (hasChanges) {
List<Change> changes = changeMapper.selectList(Wrappers.lambdaQuery()); List<Change> changes = changeMapper.selectList(Wrappers.lambdaQuery());
changes.forEach(this::handle); changes.forEach(this::handle);
} }
changeMapper.delete(Wrappers.lambdaQuery());
} }
//----------------------------------------private----------------------------------------- //----------------------------------------private-----------------------------------------
/**
* 增量数据同步处理
* @param change 增量数据
*/
private void handle(Change change) { private void handle(Change change) {
String table = change.getTable(); String entity = change.getEntity();
log.info("发现数据变更 数据类型:{} 操作类型:{} 主键:{}", change.getTable(), change.getType(), change.getKey()); log.info("发现数据变更 数据类型:{} 操作类型:{} 主键:{}", change.getEntity(), change.getType(), change.getId());
switch (table) { switch (entity) {
case "user": case "user":
handleUser(change); handleUser(change);
return; return;
...@@ -76,11 +81,10 @@ public class DataTriggerCollector { ...@@ -76,11 +81,10 @@ public class DataTriggerCollector {
return; return;
default: default:
} }
changeMapper.delete(Wrappers.lambdaQuery(change));
} }
private void handleUser(Change change) { private void handleUser(Change change) {
Integer id = Integer.valueOf(change.getKey()); Integer id = Integer.valueOf(change.getId());
ZtUser ztUser = ztUserMapper.selectById(id); ZtUser ztUser = ztUserMapper.selectById(id);
String type = change.getType(); String type = change.getType();
switch (type) { switch (type) {
...@@ -104,7 +108,7 @@ public class DataTriggerCollector { ...@@ -104,7 +108,7 @@ public class DataTriggerCollector {
} }
private void handleProject(Change change) { private void handleProject(Change change) {
Integer id = Integer.valueOf(change.getKey()); Integer id = Integer.valueOf(change.getId());
ZtProject ztProject = ztProjectMapper.selectById(id); ZtProject ztProject = ztProjectMapper.selectById(id);
String type = change.getType(); String type = change.getType();
switch (type) { switch (type) {
...@@ -128,7 +132,7 @@ public class DataTriggerCollector { ...@@ -128,7 +132,7 @@ public class DataTriggerCollector {
} }
private void handleUserView(Change change) { private void handleUserView(Change change) {
String account = change.getKey(); String account = change.getId();
ZtUserView ztUserView = ztUserViewMapper.selectOne(Wrappers.<ZtUserView>lambdaQuery().eq(ZtUserView::getAccount, account)); ZtUserView ztUserView = ztUserViewMapper.selectOne(Wrappers.<ZtUserView>lambdaQuery().eq(ZtUserView::getAccount, account));
String type = change.getType(); String type = change.getType();
switch (type) { switch (type) {
......
...@@ -4,15 +4,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; ...@@ -4,15 +4,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.matrix.local.entity.Project; import org.matrix.local.entity.Project;
import org.matrix.local.entity.User; import org.matrix.local.entity.User;
import org.matrix.local.entity.UserProject; import org.matrix.local.entity.UserProject;
import org.matrix.local.mapper.KsProjectMapper;
import org.matrix.local.mapper.KsUserMapper; import org.matrix.local.mapper.KsUserMapper;
import org.matrix.local.mapper.KsUserProjectMapper;
import org.matrix.remote.entity.ZtProject; import org.matrix.remote.entity.ZtProject;
import org.matrix.remote.entity.ZtUser; import org.matrix.remote.entity.ZtUser;
import org.matrix.remote.entity.ZtUserView; import org.matrix.remote.entity.ZtUserView;
import org.matrix.remote.mapper.ZtProjectMapper; import org.matrix.remote.mapper.ZtProjectMapper;
import org.matrix.remote.mapper.ZtUserMapper;
import org.matrix.remote.mapper.ZtUserViewMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -24,21 +20,16 @@ import java.util.stream.Collectors; ...@@ -24,21 +20,16 @@ import java.util.stream.Collectors;
import static java.util.Objects.nonNull; import static java.util.Objects.nonNull;
/**
* 数据类型转换器
*/
@Service @Service
public class TransHelper { public class TransHelper {
@Autowired
private ZtUserMapper ztUserMapper;
@Autowired
private ZtUserViewMapper ztUserViewMapper;
@Autowired @Autowired
private ZtProjectMapper ztProjectMapper; private ZtProjectMapper ztProjectMapper;
@Autowired @Autowired
private KsUserMapper ksUserMapper; private KsUserMapper ksUserMapper;
@Autowired
private KsProjectMapper ksProjectMapper;
@Autowired
private KsUserProjectMapper ksUserProjectMapper;
public User user(ZtUser ztUser) { public User user(ZtUser ztUser) {
return new User(Long.valueOf(ztUser.getId()), ztUser.getRealname(), ztUser.getAccount(), ztUser.getPassword()); return new User(Long.valueOf(ztUser.getId()), ztUser.getRealname(), ztUser.getAccount(), ztUser.getPassword());
...@@ -48,7 +39,7 @@ public class TransHelper { ...@@ -48,7 +39,7 @@ public class TransHelper {
return new Project(Long.valueOf(ztProject.getId()), ztProject.getName()); return new Project(Long.valueOf(ztProject.getId()), ztProject.getName());
} }
public List<UserProject> userProjects(ZtUserView ztUserView) { List<UserProject> userProjects(ZtUserView ztUserView) {
User user = ksUserMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getAccount, ztUserView.getAccount())); User user = ksUserMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getAccount, ztUserView.getAccount()));
if (nonNull(user)) { if (nonNull(user)) {
Long userId = user.getId(); Long userId = user.getId();
...@@ -64,8 +55,9 @@ public class TransHelper { ...@@ -64,8 +55,9 @@ public class TransHelper {
} }
} }
//private---------------------------------------------------------------------------
public Long findProjectId(ZtProject ztProject) { private Long findProjectId(ZtProject ztProject) {
if (nonNull(ztProject.getProject()) && ztProject.getProject() > 0) { if (nonNull(ztProject.getProject()) && ztProject.getProject() > 0) {
return Long.valueOf(ztProject.getProject()); return Long.valueOf(ztProject.getProject());
} else { } else {
...@@ -73,7 +65,7 @@ public class TransHelper { ...@@ -73,7 +65,7 @@ public class TransHelper {
} }
} }
public List<String> toList(String content) { private List<String> toList(String content) {
List<String> result = Arrays.stream(content.split(",")).collect(Collectors.toList()); List<String> result = Arrays.stream(content.split(",")).collect(Collectors.toList());
result.remove(0); result.remove(0);
return result; return result;
......
...@@ -8,11 +8,11 @@ import org.springframework.stereotype.Service; ...@@ -8,11 +8,11 @@ import org.springframework.stereotype.Service;
/** /**
* 用于增量同步的初始化操作 * 用于增量同步的初始化操作
* 1.对需要监听数据的表进行添加触发器 * 1.对需要监听数据的表进行添加触发器
* 2.与创建记录数据变化的表 * 2.与创建记录数据变化的增量表
* <p>
* 触发器的内容是对增量表里插入该条数据变化的关键内容
* 此后可通过读取该增量表来进行增量同步
* <p> * <p>
* 触发器的内容是对记录用的表里插入该条数据变化的大致内容
* 此后可通过读取该表来进行增量同步
*
* PS:选择性使用 * PS:选择性使用
*/ */
@SuppressWarnings("SqlNoDataSourceInspection") @SuppressWarnings("SqlNoDataSourceInspection")
...@@ -26,19 +26,19 @@ public class TriggerInitial { ...@@ -26,19 +26,19 @@ public class TriggerInitial {
/** /**
* 创建数据变化 * 创建增量数据
* 该表有3个字段 * 该表有3个字段
* type:该条变化数据的操作类型(INSERT、UPDATE、DELETE) * type:该条变化数据的操作类型(INSERT、UPDATE、DELETE)
* table:该条变化数据属于哪个表 * entity:该条增量数据属于哪个表
* key:该条变化数据的主键值(可以根据该主键值在原表查出具体数据再做同步更新、删除操作则只需指定主键值 * key:该条变化数据的唯一标识(一般为主键值 可以根据该标识在原表查出具体数据再做同步更新、删除操作则只需指定标识
*/ */
public void createChangeTable() { public void createChangeTable() {
String dropChangeTableSQL = "DROP TABLE IF EXISTS `zentao`.`kt_change`;\n"; String dropChangeTableSQL = "DROP TABLE IF EXISTS `zentao`.`kt_change`;\n";
jdbcTemplate.execute(dropChangeTableSQL); jdbcTemplate.execute(dropChangeTableSQL);
String createChangeTableSQL = "CREATE TABLE `zentao`.`kt_change` (\n" + String createChangeTableSQL = "CREATE TABLE `zentao`.`kt_change` (\n" +
" `type` VARCHAR(11) NULL,\n" + " `type` VARCHAR(11) NULL,\n" +
" `table` VARCHAR(255) NULL,\n" + " `entity` VARCHAR(255) NULL,\n" +
" `data_key` VARCHAR(255) NULL);\n"; " `id` VARCHAR(255) NULL);\n";
jdbcTemplate.execute(createChangeTableSQL); jdbcTemplate.execute(createChangeTableSQL);
} }
...@@ -49,21 +49,24 @@ public class TriggerInitial { ...@@ -49,21 +49,24 @@ public class TriggerInitial {
String dropInsertTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_user_AFTER_INSERT`;\n"; String dropInsertTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_user_AFTER_INSERT`;\n";
String createInsertTrigger = "CREATE TRIGGER `zentao`.`zt_user_AFTER_INSERT` AFTER INSERT ON `zt_user` FOR EACH ROW\n" + String createInsertTrigger = "CREATE TRIGGER `zentao`.`zt_user_AFTER_INSERT` AFTER INSERT ON `zt_user` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `content`) values ('insert','user',new.id);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('insert','user',new.id);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropInsertTrigger); jdbcTemplate.execute(dropInsertTrigger);
jdbcTemplate.execute(createInsertTrigger); jdbcTemplate.execute(createInsertTrigger);
String dropUpdateTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_user_AFTER_UPDATE`;\n"; String dropUpdateTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_user_AFTER_UPDATE`;\n";
String createUpdateTrigger = "CREATE TRIGGER `zentao`.`zt_user_AFTER_UPDATE` AFTER UPDATE ON `zt_user` FOR EACH ROW\n" + String createUpdateTrigger = "CREATE TRIGGER `zentao`.`zt_user_AFTER_UPDATE` AFTER UPDATE ON `zt_user` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `key`) values ('update','user',new.id);\n" + "IF(new.account != old.account or new.password != old.password or new.realname != old.realname)\n" +
"THEN\n" +
"insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('update','user',new.id);\n" +
"END IF;\n" +
"END;"; "END;";
jdbcTemplate.execute(dropUpdateTrigger); jdbcTemplate.execute(dropUpdateTrigger);
jdbcTemplate.execute(createUpdateTrigger); jdbcTemplate.execute(createUpdateTrigger);
String dropDeleteTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_user_AFTER_DELETE`;\n"; String dropDeleteTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_user_AFTER_DELETE`;\n";
String createDeleteTrigger = "CREATE TRIGGER `zentao`.`zt_user_AFTER_DELETE` AFTER DELETE ON `zt_user` FOR EACH ROW\n" + String createDeleteTrigger = "CREATE TRIGGER `zentao`.`zt_user_AFTER_DELETE` AFTER DELETE ON `zt_user` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `key`) values ('delete','user',old.id);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('delete','user',old.id);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropDeleteTrigger); jdbcTemplate.execute(dropDeleteTrigger);
jdbcTemplate.execute(createDeleteTrigger); jdbcTemplate.execute(createDeleteTrigger);
...@@ -76,21 +79,24 @@ public class TriggerInitial { ...@@ -76,21 +79,24 @@ public class TriggerInitial {
String dropInsertTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_project_AFTER_INSERT`;\n"; String dropInsertTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_project_AFTER_INSERT`;\n";
String createInsertTrigger = "CREATE TRIGGER `zentao`.`zt_project_AFTER_INSERT` AFTER INSERT ON `zt_project` FOR EACH ROW\n" + String createInsertTrigger = "CREATE TRIGGER `zentao`.`zt_project_AFTER_INSERT` AFTER INSERT ON `zt_project` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `content`) values ('insert','project',new.id);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('insert','project',new.id);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropInsertTrigger); jdbcTemplate.execute(dropInsertTrigger);
jdbcTemplate.execute(createInsertTrigger); jdbcTemplate.execute(createInsertTrigger);
String dropUpdateTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_project_AFTER_UPDATE`;\n"; String dropUpdateTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_project_AFTER_UPDATE`;\n";
String createUpdateTrigger = "CREATE TRIGGER `zentao`.`zt_project_AFTER_UPDATE` AFTER UPDATE ON `zt_project` FOR EACH ROW\n" + String createUpdateTrigger = "CREATE TRIGGER `zentao`.`zt_project_AFTER_UPDATE` AFTER UPDATE ON `zt_project` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `key`) values ('update','project',new.id);\n" + "IF(new.name != old.name)\n" +
"THEN\n" +
"insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('update','project',new.id);\n" +
"END IF;\n" +
"END;"; "END;";
jdbcTemplate.execute(dropUpdateTrigger); jdbcTemplate.execute(dropUpdateTrigger);
jdbcTemplate.execute(createUpdateTrigger); jdbcTemplate.execute(createUpdateTrigger);
String dropDeleteTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_project_AFTER_DELETE`;\n"; String dropDeleteTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_project_AFTER_DELETE`;\n";
String createDeleteTrigger = "CREATE TRIGGER `zentao`.`zt_project_AFTER_DELETE` AFTER DELETE ON `zt_project` FOR EACH ROW\n" + String createDeleteTrigger = "CREATE TRIGGER `zentao`.`zt_project_AFTER_DELETE` AFTER DELETE ON `zt_project` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `key`) values ('delete','project',old.id);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('delete','project',old.id);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropDeleteTrigger); jdbcTemplate.execute(dropDeleteTrigger);
jdbcTemplate.execute(createDeleteTrigger); jdbcTemplate.execute(createDeleteTrigger);
...@@ -103,21 +109,21 @@ public class TriggerInitial { ...@@ -103,21 +109,21 @@ public class TriggerInitial {
String dropInsertTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_userview_AFTER_INSERT`;\n"; String dropInsertTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_userview_AFTER_INSERT`;\n";
String createInsertTrigger = "CREATE TRIGGER `zentao`.`zt_userview_AFTER_INSERT` AFTER INSERT ON `zt_userview` FOR EACH ROW\n" + String createInsertTrigger = "CREATE TRIGGER `zentao`.`zt_userview_AFTER_INSERT` AFTER INSERT ON `zt_userview` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `content`) values ('insert','userview',new.account);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('insert','userview',new.account);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropInsertTrigger); jdbcTemplate.execute(dropInsertTrigger);
jdbcTemplate.execute(createInsertTrigger); jdbcTemplate.execute(createInsertTrigger);
String dropUpdateTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_userview_AFTER_UPDATE`;\n"; String dropUpdateTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_userview_AFTER_UPDATE`;\n";
String createUpdateTrigger = "CREATE TRIGGER `zentao`.`zt_userview_AFTER_UPDATE` AFTER UPDATE ON `zt_userview` FOR EACH ROW\n" + String createUpdateTrigger = "CREATE TRIGGER `zentao`.`zt_userview_AFTER_UPDATE` AFTER UPDATE ON `zt_userview` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `key`) values ('update','userview',new.account);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('update','userview',new.account);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropUpdateTrigger); jdbcTemplate.execute(dropUpdateTrigger);
jdbcTemplate.execute(createUpdateTrigger); jdbcTemplate.execute(createUpdateTrigger);
String dropDeleteTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_userview_AFTER_DELETE`;\n"; String dropDeleteTrigger = "DROP TRIGGER IF EXISTS `zentao`.`zt_userview_AFTER_DELETE`;\n";
String createDeleteTrigger = "CREATE TRIGGER `zentao`.`zt_userview_AFTER_DELETE` AFTER DELETE ON `zt_userview` FOR EACH ROW\n" + String createDeleteTrigger = "CREATE TRIGGER `zentao`.`zt_userview_AFTER_DELETE` AFTER DELETE ON `zt_userview` FOR EACH ROW\n" +
"BEGIN\n" + "BEGIN\n" +
"insert into `zentao`.`kt_change` (`type`,`table`, `key`) values ('delete','userview',old.account);\n" + "insert into `zentao`.`kt_change` (`type`,`entity`, `id`) values ('delete','userview',old.account);\n" +
"END;"; "END;";
jdbcTemplate.execute(dropDeleteTrigger); jdbcTemplate.execute(dropDeleteTrigger);
jdbcTemplate.execute(createDeleteTrigger); jdbcTemplate.execute(createDeleteTrigger);
......
...@@ -2,6 +2,7 @@ package org.matrix.remote.task; ...@@ -2,6 +2,7 @@ package org.matrix.remote.task;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.matrix.remote.service.DataAllCollector; import org.matrix.remote.service.DataAllCollector;
import org.matrix.remote.service.DataTriggerCollector;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
...@@ -14,23 +15,36 @@ import org.springframework.stereotype.Component; ...@@ -14,23 +15,36 @@ import org.springframework.stereotype.Component;
@Component @Component
public class DataCollectorTask implements CommandLineRunner { public class DataCollectorTask implements CommandLineRunner {
@Autowired @Autowired
private DataAllCollector dataAllCollector; private DataAllCollector dataAllCollector;
@Autowired
private DataTriggerCollector dataTriggerCollector;
/** /**
* 同步禅道取的用户和项目数据 * 全量同步禅道取的用户和项目数据
* 每小时收集一次 * 每小时收集一次
*/ */
@Scheduled(cron = "0 0 */1 * * ?") // @Scheduled(cron = "0 0 */1 * * ?")
public void collect() { public void allCollect() {
log.info("同步禅道用户项目数据...");
dataAllCollector.execute(); dataAllCollector.execute();
log.info("同步结束....");
} }
/**
* 增量同步禅道取的用户和项目数据
* 每分钟收集一次
*/
@Scheduled(cron = "0 */1 * * * ?")
public void triggerCollect() {
dataTriggerCollector.execute();
}
/**
* 在项目刚启动时进行一次全量同步
* 后续则轮询进行增量同步
*/
@Override @Override
public void run(String... args) { public void run(String... args) {
allCollect();
} }
} }
...@@ -20,7 +20,10 @@ class KtZentaoApplicationTests { ...@@ -20,7 +20,10 @@ class KtZentaoApplicationTests {
@Test @Test
void test() { void test() {
triggerInitial.createChangeTable();
triggerInitial.createUserTrigger();
triggerInitial.createProjectTrigger(); triggerInitial.createProjectTrigger();
triggerInitial.createUserViewTrigger();
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论