update:调整数据同步用户-部门,用户-岗位同步顺序
This commit is contained in:
@@ -1,56 +1,101 @@
|
||||
package com.zt.plat.framework.databus.client.handler.userdept;
|
||||
|
||||
import com.zt.plat.module.databus.api.data.DatabusUserDeptData;
|
||||
import com.zt.plat.module.system.api.userdept.UserDeptApi;
|
||||
import com.zt.plat.module.system.api.userdept.dto.UserDeptSaveReqDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 用户-部门关系同步服务实现
|
||||
* 用户-部门关系同步服务实现(通过 Feign API 调用远程服务)
|
||||
* <p>
|
||||
* 使用条件:
|
||||
* 1. zt.databus.sync.client.enabled=true
|
||||
* 2. 系统中存在 UserDeptApi 接口(Feign 客户端)
|
||||
* <p>
|
||||
* 注意:由于用户-部门关系通常集成在用户管理中,此实现为占位符。
|
||||
* 分公司可以根据实际情况:
|
||||
* 1. 自定义实现此接口,直接操作本地数据库
|
||||
* 2. 或者通过用户管理 API 间接处理关联关系
|
||||
* 如果分公司需要自定义实现,可以创建自己的 UserDeptSyncService Bean,
|
||||
* 此默认实现会自动失效(@ConditionalOnMissingBean)
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@ConditionalOnProperty(prefix = "zt.databus.sync.client", name = "enabled", havingValue = "true")
|
||||
@ConditionalOnClass(name = "com.zt.plat.module.system.api.userdept.UserDeptApi")
|
||||
public class UserDeptSyncServiceImpl implements UserDeptSyncService {
|
||||
|
||||
@Autowired(required = false)
|
||||
private UserDeptApi userDeptApi; // Feign 远程调用接口
|
||||
|
||||
@Override
|
||||
public void create(DatabusUserDeptData data) {
|
||||
log.info("[UserDeptSync] 收到创建用户-部门关系请求, userId={}, deptId={}",
|
||||
data.getUserId(), data.getDeptId());
|
||||
log.warn("[UserDeptSync] 用户-部门关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法,通过本地 API 或直接数据库操作完成同步
|
||||
if (userDeptApi == null) {
|
||||
log.warn("[UserDeptSync] UserDeptApi未注入,跳过创建用户-部门关系, userId={}", data.getUserId());
|
||||
return;
|
||||
}
|
||||
UserDeptSaveReqDTO dto = buildUserDeptDTO(data);
|
||||
userDeptApi.createUserDept(dto).checkError();
|
||||
log.info("[UserDeptSync] 用户-部门关系创建成功, userId={}, deptId={}", data.getUserId(), data.getDeptId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(DatabusUserDeptData data) {
|
||||
log.info("[UserDeptSync] 收到更新用户-部门关系请求, userId={}, deptId={}",
|
||||
data.getUserId(), data.getDeptId());
|
||||
log.warn("[UserDeptSync] 用户-部门关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法
|
||||
if (userDeptApi == null) {
|
||||
log.warn("[UserDeptSync] UserDeptApi未注入,跳过更新用户-部门关系, userId={}", data.getUserId());
|
||||
return;
|
||||
}
|
||||
UserDeptSaveReqDTO dto = buildUserDeptDTO(data);
|
||||
userDeptApi.updateUserDept(dto).checkError();
|
||||
log.info("[UserDeptSync] 用户-部门关系更新成功, userId={}, deptId={}", data.getUserId(), data.getDeptId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long id) {
|
||||
log.info("[UserDeptSync] 收到删除用户-部门关系请求, id={}", id);
|
||||
log.warn("[UserDeptSync] 用户-部门关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法
|
||||
if (userDeptApi == null) {
|
||||
log.warn("[UserDeptSync] UserDeptApi未注入,跳过删除用户-部门关系, id={}", id);
|
||||
return;
|
||||
}
|
||||
userDeptApi.deleteUserDept(id).checkError();
|
||||
log.info("[UserDeptSync] 用户-部门关系删除成功, id={}", id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fullSync(DatabusUserDeptData data) {
|
||||
log.info("[UserDeptSync] 收到全量同步用户-部门关系请求, userId={}, deptId={}",
|
||||
data.getUserId(), data.getDeptId());
|
||||
log.warn("[UserDeptSync] 用户-部门关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法,逻辑:存在则更新,不存在则插入
|
||||
if (userDeptApi == null) {
|
||||
log.warn("[UserDeptSync] UserDeptApi未注入,跳过全量同步用户-部门关系, userId={}", data.getUserId());
|
||||
return;
|
||||
}
|
||||
UserDeptSaveReqDTO dto = buildUserDeptDTO(data);
|
||||
try {
|
||||
// 尝试获取,存在则更新,不存在则创建
|
||||
var existing = userDeptApi.getUserDept(dto.getId());
|
||||
if (existing.isSuccess() && existing.getData() != null) {
|
||||
userDeptApi.updateUserDept(dto).checkError();
|
||||
log.info("[UserDeptSync] 用户-部门关系全量同步-更新成功, id={}", dto.getId());
|
||||
} else {
|
||||
userDeptApi.createUserDept(dto).checkError();
|
||||
log.info("[UserDeptSync] 用户-部门关系全量同步-创建成功, id={}", dto.getId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 获取失败,尝试创建
|
||||
log.warn("[UserDeptSync] 用户-部门关系获取失败,尝试创建, id={}", dto.getId());
|
||||
userDeptApi.createUserDept(dto).checkError();
|
||||
log.info("[UserDeptSync] 用户-部门关系全量同步-创建成功, id={}", dto.getId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建用户部门关系 DTO(用于 Feign 调用)
|
||||
*/
|
||||
private UserDeptSaveReqDTO buildUserDeptDTO(DatabusUserDeptData data) {
|
||||
UserDeptSaveReqDTO dto = new UserDeptSaveReqDTO();
|
||||
dto.setId(data.getId());
|
||||
dto.setUserId(data.getUserId());
|
||||
dto.setDeptId(data.getDeptId());
|
||||
dto.setRemark(data.getRemark());
|
||||
return dto;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,56 +1,100 @@
|
||||
package com.zt.plat.framework.databus.client.handler.userpost;
|
||||
|
||||
import com.zt.plat.module.databus.api.data.DatabusUserPostData;
|
||||
import com.zt.plat.module.system.api.userpost.UserPostApi;
|
||||
import com.zt.plat.module.system.api.userpost.dto.UserPostSaveReqDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 用户-岗位关系同步服务实现
|
||||
* 用户-岗位关系同步服务实现(通过 Feign API 调用远程服务)
|
||||
* <p>
|
||||
* 使用条件:
|
||||
* 1. zt.databus.sync.client.enabled=true
|
||||
* 2. 系统中存在 UserPostApi 接口(Feign 客户端)
|
||||
* <p>
|
||||
* 注意:由于用户-岗位关系通常集成在用户管理中,此实现为占位符。
|
||||
* 分公司可以根据实际情况:
|
||||
* 1. 自定义实现此接口,直接操作本地数据库
|
||||
* 2. 或者通过用户管理 API 间接处理关联关系
|
||||
* 如果分公司需要自定义实现,可以创建自己的 UserPostSyncService Bean,
|
||||
* 此默认实现会自动失效(@ConditionalOnMissingBean)
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@ConditionalOnProperty(prefix = "zt.databus.sync.client", name = "enabled", havingValue = "true")
|
||||
@ConditionalOnClass(name = "com.zt.plat.module.system.api.userpost.UserPostApi")
|
||||
public class UserPostSyncServiceImpl implements UserPostSyncService {
|
||||
|
||||
@Autowired(required = false)
|
||||
private UserPostApi userPostApi; // Feign 远程调用接口
|
||||
|
||||
@Override
|
||||
public void create(DatabusUserPostData data) {
|
||||
log.info("[UserPostSync] 收到创建用户-岗位关系请求, userId={}, postId={}",
|
||||
data.getUserId(), data.getPostId());
|
||||
log.warn("[UserPostSync] 用户-岗位关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法,通过本地 API 或直接数据库操作完成同步
|
||||
if (userPostApi == null) {
|
||||
log.warn("[UserPostSync] UserPostApi未注入,跳过创建用户-岗位关系, userId={}", data.getUserId());
|
||||
return;
|
||||
}
|
||||
UserPostSaveReqDTO dto = buildUserPostDTO(data);
|
||||
userPostApi.createUserPost(dto).checkError();
|
||||
log.info("[UserPostSync] 用户-岗位关系创建成功, userId={}, postId={}", data.getUserId(), data.getPostId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(DatabusUserPostData data) {
|
||||
log.info("[UserPostSync] 收到更新用户-岗位关系请求, userId={}, postId={}",
|
||||
data.getUserId(), data.getPostId());
|
||||
log.warn("[UserPostSync] 用户-岗位关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法
|
||||
if (userPostApi == null) {
|
||||
log.warn("[UserPostSync] UserPostApi未注入,跳过更新用户-岗位关系, userId={}", data.getUserId());
|
||||
return;
|
||||
}
|
||||
UserPostSaveReqDTO dto = buildUserPostDTO(data);
|
||||
userPostApi.updateUserPost(dto).checkError();
|
||||
log.info("[UserPostSync] 用户-岗位关系更新成功, userId={}, postId={}", data.getUserId(), data.getPostId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long id) {
|
||||
log.info("[UserPostSync] 收到删除用户-岗位关系请求, id={}", id);
|
||||
log.warn("[UserPostSync] 用户-岗位关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法
|
||||
if (userPostApi == null) {
|
||||
log.warn("[UserPostSync] UserPostApi未注入,跳过删除用户-岗位关系, id={}", id);
|
||||
return;
|
||||
}
|
||||
userPostApi.deleteUserPost(id).checkError();
|
||||
log.info("[UserPostSync] 用户-岗位关系删除成功, id={}", id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fullSync(DatabusUserPostData data) {
|
||||
log.info("[UserPostSync] 收到全量同步用户-岗位关系请求, userId={}, postId={}",
|
||||
data.getUserId(), data.getPostId());
|
||||
log.warn("[UserPostSync] 用户-岗位关系同步服务需要分公司自定义实现,当前为占位符实现");
|
||||
// TODO: 分公司需要实现此方法,逻辑:存在则更新,不存在则插入
|
||||
if (userPostApi == null) {
|
||||
log.warn("[UserPostSync] UserPostApi未注入,跳过全量同步用户-岗位关系, userId={}", data.getUserId());
|
||||
return;
|
||||
}
|
||||
UserPostSaveReqDTO dto = buildUserPostDTO(data);
|
||||
try {
|
||||
// 尝试获取,存在则更新,不存在则创建
|
||||
var existing = userPostApi.getUserPost(dto.getId());
|
||||
if (existing.isSuccess() && existing.getData() != null) {
|
||||
userPostApi.updateUserPost(dto).checkError();
|
||||
log.info("[UserPostSync] 用户-岗位关系全量同步-更新成功, id={}", dto.getId());
|
||||
} else {
|
||||
userPostApi.createUserPost(dto).checkError();
|
||||
log.info("[UserPostSync] 用户-岗位关系全量同步-创建成功, id={}", dto.getId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 获取失败,尝试创建
|
||||
log.warn("[UserPostSync] 用户-岗位关系获取失败,尝试创建, id={}", dto.getId());
|
||||
userPostApi.createUserPost(dto).checkError();
|
||||
log.info("[UserPostSync] 用户-岗位关系全量同步-创建成功, id={}", dto.getId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建用户岗位关系 DTO(用于 Feign 调用)
|
||||
*/
|
||||
private UserPostSaveReqDTO buildUserPostDTO(DatabusUserPostData data) {
|
||||
UserPostSaveReqDTO dto = new UserPostSaveReqDTO();
|
||||
dto.setId(data.getId());
|
||||
dto.setUserId(data.getUserId());
|
||||
dto.setPostId(data.getPostId());
|
||||
return dto;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user