feat(domain): 添加领域工作交接功能

dev_workchange
zhaokai 2026-06-23 17:35:25 +08:00
parent 1fd7eb5ea6
commit 2b0b9235fc
20 changed files with 611 additions and 0 deletions

View File

@ -0,0 +1,33 @@
package com.zcloud.domain.facade;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.domain.command.DomainWorkChangeExe;
import com.zcloud.domain.command.query.DomainWorkQueryExe;
import com.zcloud.gbscommon.zclouddomain.facade.ZcloudDomainFacade;
import com.zcloud.gbscommon.zclouddomain.request.DomainQry;
import com.zcloud.gbscommon.zclouddomain.request.DomainWorkChangeCmd;
import com.zcloud.gbscommon.zclouddomain.response.DomainListByUserCO;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import javax.annotation.Resource;
@DubboService
public class ZcloudDomainFacadeImpl implements ZcloudDomainFacade {
@Resource
private DomainWorkQueryExe domainWorkQueryExe;
@Resource
private DomainWorkChangeExe domainWorkChangeExe;
@Override
public MultiResponse<DomainListByUserCO> listManagerByUserId(DomainQry domainQry) {
return MultiResponse.of(domainWorkQueryExe.execute(domainQry));
}
@Override
public SingleResponse updateRiskWorkChange(DomainWorkChangeCmd domainWorkChangeCmd) {
domainWorkChangeExe.execute(domainWorkChangeCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,243 @@
package com.zcloud.domain.command;
import cn.hutool.json.JSONUtil;
import com.alibaba.cola.dto.SingleResponse;
import com.alibaba.cola.exception.BizException;
import com.alibaba.fastjson.JSONObject;
import com.jjb.saas.message.client.message.facede.MessageFacade;
import com.jjb.saas.message.client.message.request.MessageSendCmd;
import com.jjb.saas.message.client.message.request.MessageTargetCmd;
import com.zcloud.domain.domain.config.MessageConfig;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import com.zcloud.domain.persistence.repository.DomainDepartmentRepository;
import com.zcloud.domain.persistence.repository.DomainDepartmentUserRepository;
import com.zcloud.domain.persistence.repository.DomainGroupRepository;
import com.zcloud.domain.persistence.repository.DomainGroupUserRepository;
import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil;
import com.zcloud.gbscommon.todolistmq.event.TodoListAddEvent;
import com.zcloud.gbscommon.utils.UuidUtil;
import com.zcloud.gbscommon.zclouddomain.request.DomainWorkChangeCmd;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
*
*/
@Slf4j
@Component
@AllArgsConstructor
public class DomainWorkChangeExe {
private final DomainDepartmentRepository domainDepartmentRepository;
private final DomainDepartmentUserRepository domainDepartmentUserRepository;
private final DomainGroupRepository domainGroupRepository;
private final DomainGroupUserRepository domainGroupUserRepository;
private final TodoListEventPusherUtil todoListEventPusherUtil;
private final MessageConfig messageConfig;
@DubboReference
private MessageFacade messageFacade;
@Transactional(rollbackFor = Exception.class)
public void execute(DomainWorkChangeCmd domainWorkChangeCmd) {
checkParam(domainWorkChangeCmd);
if (changeDomainDepartment(domainWorkChangeCmd)) {
return;
}
if (changeDomainDepartmentUser(domainWorkChangeCmd)) {
return;
}
if (changeDomainGroup(domainWorkChangeCmd)) {
return;
}
if (changeDomainGroupUser(domainWorkChangeCmd)) {
return;
}
throw new BizException("未找到对应的领域交接工作");
}
private void checkParam(DomainWorkChangeCmd domainWorkChangeCmd) {
if (domainWorkChangeCmd == null || StringUtils.isBlank(domainWorkChangeCmd.getWorkId())) {
throw new BizException("工作标识不能为空");
}
if (domainWorkChangeCmd.getOldUserId() == null) {
throw new BizException("原交接人员不能为空");
}
if (domainWorkChangeCmd.getUserId() == null) {
throw new BizException("新交接人员不能为空");
}
}
private boolean changeDomainDepartment(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainDepartmentDO domainDepartmentDO = domainDepartmentRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainDepartmentDO == null) {
return false;
}
if (!Objects.equals(domainDepartmentDO.getMasterUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域负责人交接跳过当前负责人已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainDepartmentDO.getMasterUserId());
return true;
}
domainDepartmentDO.setMasterUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainDepartmentDO.setMasterDepartmentId(domainWorkChangeCmd.getDeptId());
}
domainDepartmentRepository.updateById(domainDepartmentDO);
sendWorkChangeMessage(domainWorkChangeCmd, domainDepartmentDO.getId(), "领域负责人", buildDomainDepartmentContent(domainDepartmentDO));
return true;
}
private boolean changeDomainDepartmentUser(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainDepartmentUserDO domainDepartmentUserDO = domainDepartmentUserRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainDepartmentUserDO == null) {
return false;
}
if (!Objects.equals(domainDepartmentUserDO.getUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域审核人员交接跳过当前审核人员已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainDepartmentUserDO.getUserId());
return true;
}
Long duplicateCount = domainDepartmentUserRepository.countByDomainDepartmentIdAndUserId(
domainDepartmentUserDO.getDomainDepartmentId(), domainWorkChangeCmd.getUserId(), domainDepartmentUserDO.getId());
if (duplicateCount != null && duplicateCount > 0) {
throw new BizException("新交接人员已存在于该领域审核人员中");
}
domainDepartmentUserDO.setUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainDepartmentUserDO.setDepartmentId(domainWorkChangeCmd.getDeptId());
}
domainDepartmentUserRepository.updateById(domainDepartmentUserDO);
DomainDepartmentDO domainDepartmentDO = domainDepartmentRepository.getInfoByUUID(domainDepartmentUserDO.getDomainDepartmentId());
sendWorkChangeMessage(domainWorkChangeCmd, domainDepartmentUserDO.getId(), "领域审核人员", buildDomainDepartmentContent(domainDepartmentDO));
return true;
}
private boolean changeDomainGroup(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainGroupDO domainGroupDO = domainGroupRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainGroupDO == null) {
return false;
}
if (!Objects.equals(domainGroupDO.getTeamUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域组组长交接跳过当前组长已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainGroupDO.getTeamUserId());
return true;
}
domainGroupDO.setTeamUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainGroupDO.setTeamDepartmentId(domainWorkChangeCmd.getDeptId());
}
if (domainWorkChangeCmd.getCorpId() != null) {
domainGroupDO.setCorpinfoId(domainWorkChangeCmd.getCorpId());
}
domainGroupRepository.updateById(domainGroupDO);
sendWorkChangeMessage(domainWorkChangeCmd, domainGroupDO.getId(), "领域组组长", buildDomainGroupContent(domainGroupDO));
return true;
}
private boolean changeDomainGroupUser(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainGroupUserDO domainGroupUserDO = domainGroupUserRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainGroupUserDO == null) {
return false;
}
if (!Objects.equals(domainGroupUserDO.getUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域组成员交接跳过当前成员已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainGroupUserDO.getUserId());
return true;
}
Long duplicateCount = domainGroupUserRepository.countByDomainGroupIdAndUserId(
domainGroupUserDO.getDomainGroupId(), domainWorkChangeCmd.getUserId(), domainGroupUserDO.getId());
if (duplicateCount != null && duplicateCount > 0) {
throw new BizException("新交接人员已存在于该领域组成员中");
}
domainGroupUserDO.setUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainGroupUserDO.setDepartmentId(domainWorkChangeCmd.getDeptId());
}
domainGroupUserRepository.updateById(domainGroupUserDO);
DomainGroupDO domainGroupDO = domainGroupRepository.getInfoByGroupId(domainGroupUserDO.getDomainGroupId());
sendWorkChangeMessage(domainWorkChangeCmd, domainGroupUserDO.getId(), "领域组成员", buildDomainGroupContent(domainGroupDO));
return true;
}
private void sendWorkChangeMessage(DomainWorkChangeCmd domainWorkChangeCmd, Long foreignKey, String workProject, String workContent) {
try {
MessageSendCmd messageSendCmd = new MessageSendCmd();
messageSendCmd.setBusinessId(UuidUtil.get32UUID());
MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
messageTargetCmd.setUserId(domainWorkChangeCmd.getUserId());
messageSendCmd.setTargetCmd(messageTargetCmd);
messageSendCmd.setSourceCode(resolveSourceCode(workProject));
messageSendCmd.setNeedTokenEnum(false);
messageSendCmd.setParams(buildSendParams(domainWorkChangeCmd, workProject, workContent));
log.info("领域工作交接发送消息参数:{}", JSONUtil.toJsonStr(messageSendCmd));
SingleResponse<Boolean> response = messageFacade.send(messageSendCmd);
log.info("领域工作交接发送消息结果:{}", JSONUtil.toJsonStr(response));
/* TodoListAddEvent event = new TodoListAddEvent();
event.setTitle("您有一条【领域工作】待处理");
event.setContent(workProject + "交接待处理");
event.setForeignKey(foreignKey);
event.setForeignSubsidiaryKey(foreignKey);
event.setReceiveUser(domainWorkChangeCmd.getUserId());
event.setPcFlag(1);
event.setAppFlag(0);
event.setOtherParams(new JSONObject());
todoListEventPusherUtil.sendMessageAddEvent(event);*/
} catch (Exception e) {
log.error("领域工作交接发送消息失败", e);
}
}
private String resolveSourceCode(String workProject) {
if ("领域负责人".equals(workProject) || "领域审核人员".equals(workProject)) {
return StringUtils.defaultIfEmpty(messageConfig.getDomainWorkChange(), messageConfig.getScoreTaskAssign());
}
return StringUtils.defaultIfEmpty(messageConfig.getDomainWorkChange(), messageConfig.getTaskAssign());
}
private Map<String, Object> buildSendParams(DomainWorkChangeCmd domainWorkChangeCmd, String workProject, String workContent) {
Map<String, Object> sendParams = new HashMap<>();
sendParams.put("oldUserId", domainWorkChangeCmd.getOldUserId());
sendParams.put("newUserId", domainWorkChangeCmd.getUserId());
sendParams.put("newUserName", domainWorkChangeCmd.getUserName());
sendParams.put("workProject", workProject);
sendParams.put("workContent", workContent);
sendParams.put("DomainDepartment", workContent);
return sendParams;
}
private String buildDomainDepartmentContent(DomainDepartmentDO domainDepartmentDO) {
if (domainDepartmentDO == null) {
return "领域配置";
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getDomainTypeName())) {
return domainDepartmentDO.getDomainTypeName();
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getMasterDepartmentName())) {
return domainDepartmentDO.getMasterDepartmentName();
}
return StringUtils.defaultIfEmpty(domainDepartmentDO.getDomainType(), "领域配置");
}
private String buildDomainGroupContent(DomainGroupDO domainGroupDO) {
if (domainGroupDO == null) {
return "领域组配置";
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainGroupName())) {
return domainGroupDO.getDomainGroupName();
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainTypeName())) {
return domainGroupDO.getDomainTypeName();
}
return StringUtils.defaultIfEmpty(domainGroupDO.getDomainType(), "领域组配置");
}
}

View File

@ -0,0 +1,124 @@
package com.zcloud.domain.command.query;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import com.zcloud.domain.persistence.repository.DomainDepartmentRepository;
import com.zcloud.domain.persistence.repository.DomainDepartmentUserRepository;
import com.zcloud.domain.persistence.repository.DomainGroupRepository;
import com.zcloud.domain.persistence.repository.DomainGroupUserRepository;
import com.zcloud.gbscommon.zclouddomain.request.DomainQry;
import com.zcloud.gbscommon.zclouddomain.response.DomainListByUserCO;
import lombok.AllArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Component
@AllArgsConstructor
public class DomainWorkQueryExe {
private final DomainDepartmentRepository domainDepartmentRepository;
private final DomainDepartmentUserRepository domainDepartmentUserRepository;
private final DomainGroupRepository domainGroupRepository;
private final DomainGroupUserRepository domainGroupUserRepository;
public List<DomainListByUserCO> execute(DomainQry domainQry) {
List<DomainListByUserCO> result = new ArrayList<>();
if (domainQry == null || domainQry.getUserId() == null || domainQry.getCorpinfoId() == null) {
return result;
}
result.addAll(listDomainDepartmentWork(domainQry));
result.addAll(listDomainDepartmentUserWork(domainQry));
result.addAll(listDomainGroupWork(domainQry));
result.addAll(listDomainGroupUserWork(domainQry));
return result;
}
private List<DomainListByUserCO> listDomainDepartmentWork(DomainQry domainQry) {
List<DomainDepartmentDO> domainDepartmentList = domainDepartmentRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainDepartmentDO domainDepartmentDO : domainDepartmentList) {
DomainDepartmentDO info = domainDepartmentRepository.getInfoByUUID(domainDepartmentDO.getDomainDepartmentId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainDepartmentDO.getDomainDepartmentId());
data.setWorkProject("领域负责人");
data.setWorkContent(buildDomainDepartmentContent(info == null ? domainDepartmentDO : info));
result.add(data);
}
return result;
}
private List<DomainListByUserCO> listDomainDepartmentUserWork(DomainQry domainQry) {
List<DomainDepartmentUserDO> domainDepartmentUserList = domainDepartmentUserRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainDepartmentUserDO domainDepartmentUserDO : domainDepartmentUserList) {
DomainDepartmentDO domainDepartmentDO = domainDepartmentRepository.getInfoByUUID(domainDepartmentUserDO.getDomainDepartmentId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainDepartmentUserDO.getDomainDepartmentUserId());
data.setWorkProject("领域审核人员");
data.setWorkContent(buildDomainDepartmentContent(domainDepartmentDO));
result.add(data);
}
return result;
}
private List<DomainListByUserCO> listDomainGroupWork(DomainQry domainQry) {
List<DomainGroupDO> domainGroupList = domainGroupRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainGroupDO domainGroupDO : domainGroupList) {
DomainGroupDO info = domainGroupRepository.getInfoByGroupId(domainGroupDO.getDomainGroupId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainGroupDO.getDomainGroupId());
data.setWorkProject("领域组组长");
data.setWorkContent(buildDomainGroupContent(info == null ? domainGroupDO : info));
result.add(data);
}
return result;
}
private List<DomainListByUserCO> listDomainGroupUserWork(DomainQry domainQry) {
List<DomainGroupUserDO> domainGroupUserList = domainGroupUserRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainGroupUserDO domainGroupUserDO : domainGroupUserList) {
DomainGroupDO domainGroupDO = domainGroupRepository.getInfoByGroupId(domainGroupUserDO.getDomainGroupId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainGroupUserDO.getDomainGroupUserId());
data.setWorkProject("领域组成员");
data.setWorkContent(buildDomainGroupContent(domainGroupDO));
result.add(data);
}
return result;
}
private String buildDomainDepartmentContent(DomainDepartmentDO domainDepartmentDO) {
if (domainDepartmentDO == null) {
return "领域配置";
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getDomainTypeName())) {
return domainDepartmentDO.getDomainTypeName();
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getMasterDepartmentName())) {
return domainDepartmentDO.getMasterDepartmentName();
}
return StringUtils.defaultIfEmpty(domainDepartmentDO.getDomainType(), "领域配置");
}
private String buildDomainGroupContent(DomainGroupDO domainGroupDO) {
if (domainGroupDO == null) {
return "领域组配置";
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainGroupName())) {
return domainGroupDO.getDomainGroupName();
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainTypeName())) {
return domainGroupDO.getDomainTypeName();
}
return StringUtils.defaultIfEmpty(domainGroupDO.getDomainType(), "领域组配置");
}
}

View File

@ -31,4 +31,9 @@ public class MessageConfig {
*
*/
private String scoreTaskAssign;
/**
*
*/
private String domainWorkChange;
}

View File

@ -6,6 +6,7 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -29,5 +30,9 @@ public interface DomainDepartmentMapper extends BaseMapper<DomainDepartmentDO> {
List<DomainDepartmentDO> listAll(Map<String, Object> params);
DomainDepartmentDO getInfoByUUID(String domainDepartmentId);
List<DomainDepartmentDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainDepartmentDO getByWorkId(@Param("workId") String workId);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -20,5 +21,13 @@ public interface DomainDepartmentUserMapper extends BaseMapper<DomainDepartmentU
List<DomainDepartmentUserDO> getListByDomainDepartmentId(String domainDepartmentId);
IPage<DomainDepartmentUserDO> listPage(IPage<DomainDepartmentUserDO> iPage, Map<String, Object> params);
List<DomainDepartmentUserDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainDepartmentUserDO getByWorkId(@Param("workId") String workId);
Long countByDomainDepartmentIdAndUserId(@Param("domainDepartmentId") String domainDepartmentId,
@Param("userId") Long userId,
@Param("excludeId") Long excludeId);
}

View File

@ -6,6 +6,7 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -29,5 +30,9 @@ public interface DomainGroupMapper extends BaseMapper<DomainGroupDO> {
List<DomainGroupDO> listAll(Map<String, Object> params);
DomainGroupDO getInfoByGroupId(String domainGroupId);
List<DomainGroupDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainGroupDO getByWorkId(@Param("workId") String workId);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -20,5 +21,13 @@ public interface DomainGroupUserMapper extends BaseMapper<DomainGroupUserDO> {
List<DomainGroupUserDO> getListByGroupId(String domainGroupId);
IPage<DomainGroupUserDO> listPage(IPage<DomainGroupUserDO> iPage, Map<String, Object> params);
List<DomainGroupUserDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainGroupUserDO getByWorkId(@Param("workId") String workId);
Long countByDomainGroupIdAndUserId(@Param("domainGroupId") String domainGroupId,
@Param("userId") Long userId,
@Param("excludeId") Long excludeId);
}

View File

@ -24,5 +24,9 @@ public interface DomainDepartmentRepository extends BaseRepository<DomainDepartm
List<DomainDepartmentDO> listAll(Map<String, Object> params);
DomainDepartmentDO getInfoByUUID(String domainDepartmentId);
List<DomainDepartmentDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainDepartmentDO getByWorkId(String workId);
}

View File

@ -19,5 +19,11 @@ public interface DomainDepartmentUserRepository extends BaseRepository<DomainDep
void deleteByDomainDepartmentId(String domainDepartmentId);
List<DomainDepartmentUserDO> getListByDomainDepartmentId(String domainDepartmentId);
List<DomainDepartmentUserDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainDepartmentUserDO getByWorkId(String workId);
Long countByDomainDepartmentIdAndUserId(String domainDepartmentId, Long userId, Long excludeId);
}

View File

@ -26,5 +26,9 @@ public interface DomainGroupRepository extends BaseRepository<DomainGroupDO> {
DomainGroupDO getInfoByGroupId(String domainGroupId);
List<DomainGroupDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainGroupDO getByWorkId(String workId);
}

View File

@ -20,5 +20,11 @@ public interface DomainGroupUserRepository extends BaseRepository<DomainGroupUse
List<DomainGroupUserDO> getListByGroupId(String domainGroupId);
List<DomainGroupUserDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainGroupUserDO getByWorkId(String workId);
Long countByDomainGroupIdAndUserId(String domainGroupId, Long userId, Long excludeId);
}

View File

@ -68,5 +68,15 @@ public class DomainDepartmentRepositoryImpl extends BaseRepositoryImpl<DomainDep
DomainDepartmentDO domainDepartmentDO = domainDepartmentMapper.getInfoByUUID(domainDepartmentId);
return domainDepartmentDO;
}
@Override
public List<DomainDepartmentDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainDepartmentMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainDepartmentDO getByWorkId(String workId) {
return domainDepartmentMapper.getByWorkId(workId);
}
}

View File

@ -45,5 +45,20 @@ public class DomainDepartmentUserRepositoryImpl extends BaseRepositoryImpl<Domai
public List<DomainDepartmentUserDO> getListByDomainDepartmentId(String domainDepartmentId) {
return domainDepartmentUserMapper.getListByDomainDepartmentId(domainDepartmentId);
}
@Override
public List<DomainDepartmentUserDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainDepartmentUserMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainDepartmentUserDO getByWorkId(String workId) {
return domainDepartmentUserMapper.getByWorkId(workId);
}
@Override
public Long countByDomainDepartmentIdAndUserId(String domainDepartmentId, Long userId, Long excludeId) {
return domainDepartmentUserMapper.countByDomainDepartmentIdAndUserId(domainDepartmentId, userId, excludeId);
}
}

View File

@ -66,5 +66,15 @@ public class DomainGroupRepositoryImpl extends BaseRepositoryImpl<DomainGroupMap
public DomainGroupDO getInfoByGroupId(String domainGroupId) {
return domainGroupMapper.getInfoByGroupId(domainGroupId);
}
@Override
public List<DomainGroupDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainGroupMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainGroupDO getByWorkId(String workId) {
return domainGroupMapper.getByWorkId(workId);
}
}

View File

@ -46,5 +46,20 @@ public class DomainGroupUserRepositoryImpl extends BaseRepositoryImpl<DomainGrou
public List<DomainGroupUserDO> getListByGroupId(String domainGroupId) {
return domainGroupUserMapper.getListByGroupId(domainGroupId);
}
@Override
public List<DomainGroupUserDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainGroupUserMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainGroupUserDO getByWorkId(String workId) {
return domainGroupUserMapper.getByWorkId(workId);
}
@Override
public Long countByDomainGroupIdAndUserId(String domainGroupId, Long userId, Long excludeId) {
return domainGroupUserMapper.countByDomainGroupIdAndUserId(domainGroupId, userId, excludeId);
}
}

View File

@ -49,5 +49,24 @@
where dd.delete_enum = 'FALSE'
and dd.domain_department_id = #{domainDepartmentId}
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentDO">
select dd.*, d.name as masterDepartmentName, u.name as masterUserName
from domain_department dd
left join department d on dd.master_department_id = d.id and d.delete_enum = 'FALSE'
left join user u on dd.master_user_id = u.id and u.delete_enum = 'FALSE'
where dd.delete_enum = 'FALSE'
and dd.master_user_id = #{userId}
and d.corpinfo_id = #{corpinfoId}
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentDO">
select dd.*, d.name as masterDepartmentName, u.name as masterUserName
from domain_department dd
left join department d on dd.master_department_id = d.id and d.delete_enum = 'FALSE'
left join user u on dd.master_user_id = u.id and u.delete_enum = 'FALSE'
where dd.delete_enum = 'FALSE'
and dd.domain_department_id = #{workId}
</select>
</mapper>

View File

@ -24,5 +24,36 @@
and ddu.domain_department_id = #{params.domainDepartmentId}
order by ddu.create_time desc
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO">
select ddu.*, d.name as departmentname, u.name as username, c.corp_name as corpinfoName, c.id as corpinfoId
from domain_department_user ddu
left join department d on ddu.department_id = d.id and d.delete_enum = 'FALSE'
left join corp_info c on d.corpinfo_id = c.id and c.delete_enum = 'FALSE'
left join user u on ddu.user_id = u.id and u.delete_enum = 'FALSE'
where ddu.delete_enum = 'FALSE'
and ddu.user_id = #{userId}
and d.corpinfo_id = #{corpinfoId}
order by ddu.create_time desc
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO">
select ddu.*, d.name as departmentname, u.name as username, c.corp_name as corpinfoName, c.id as corpinfoId
from domain_department_user ddu
left join department d on ddu.department_id = d.id and d.delete_enum = 'FALSE'
left join corp_info c on d.corpinfo_id = c.id and c.delete_enum = 'FALSE'
left join user u on ddu.user_id = u.id and u.delete_enum = 'FALSE'
where ddu.delete_enum = 'FALSE'
and ddu.domain_department_user_id = #{workId}
</select>
<select id="countByDomainDepartmentIdAndUserId" resultType="java.lang.Long">
select count(1)
from domain_department_user ddu
where ddu.delete_enum = 'FALSE'
and ddu.domain_department_id = #{domainDepartmentId}
and ddu.user_id = #{userId}
and ddu.id <![CDATA[<>]]> #{excludeId}
</select>
</mapper>

View File

@ -70,5 +70,32 @@
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false' and dg.domain_group_id=#{domainGroupId}
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupDO">
select dg.*,
c.corp_name as corpinfoname,
d.name as teamdepartmentname,
u.name as teamusername
from domain_group dg
left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false'
left join department d on dg.team_department_id = d.id and d.delete_enum = 'false'
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false'
and dg.team_user_id = #{userId}
and dg.corpinfo_id = #{corpinfoId}
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupDO">
select dg.*,
c.corp_name as corpinfoname,
d.name as teamdepartmentname,
u.name as teamusername
from domain_group dg
left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false'
left join department d on dg.team_department_id = d.id and d.delete_enum = 'false'
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false'
and dg.domain_group_id = #{workId}
</select>
</mapper>

View File

@ -24,5 +24,36 @@
group by dgu.id
order by dgu.create_time desc
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupUserDO">
select dgu.*, d.name as departmentname, u.name as username
from domain_group_user dgu
left join department d on dgu.department_id = d.id and d.delete_enum = 'false'
left join user u on dgu.user_id = u.id and u.delete_enum = 'false'
left join domain_group dg on dgu.domain_group_id = dg.domain_group_id and dg.delete_enum = 'false'
where dgu.delete_enum = 'false'
and dgu.user_id = #{userId}
and dg.corpinfo_id = #{corpinfoId}
group by dgu.id
order by dgu.create_time desc
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupUserDO">
select dgu.*, d.name as departmentname, u.name as username
from domain_group_user dgu
left join department d on dgu.department_id = d.id and d.delete_enum = 'false'
left join user u on dgu.user_id = u.id and u.delete_enum = 'false'
where dgu.delete_enum = 'false'
and dgu.domain_group_user_id = #{workId}
</select>
<select id="countByDomainGroupIdAndUserId" resultType="java.lang.Long">
select count(1)
from domain_group_user dgu
where dgu.delete_enum = 'FALSE'
and dgu.domain_group_id = #{domainGroupId}
and dgu.user_id = #{userId}
and dgu.id <![CDATA[<>]]> #{excludeId}
</select>
</mapper>