|
|
@ -8,6 +8,8 @@ import com.crm.customer.port.ProjectOwnerSyncPort; |
|
|
import com.crm.project.constant.ProjectConstants; |
|
|
import com.crm.project.constant.ProjectConstants; |
|
|
import com.crm.project.domain.entity.CrmProject; |
|
|
import com.crm.project.domain.entity.CrmProject; |
|
|
import com.crm.project.mapper.CrmProjectMapper; |
|
|
import com.crm.project.mapper.CrmProjectMapper; |
|
|
|
|
|
import com.crm.project.service.ProjectOplogWriter; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
import lombok.RequiredArgsConstructor; |
|
|
import lombok.RequiredArgsConstructor; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.context.annotation.Primary; |
|
|
import org.springframework.context.annotation.Primary; |
|
|
@ -29,6 +31,7 @@ public class ProjectOwnerSyncPortImpl implements ProjectOwnerSyncPort { |
|
|
|
|
|
|
|
|
private final CrmProjectMapper projectMapper; |
|
|
private final CrmProjectMapper projectMapper; |
|
|
private final IAuthUserService authUserService; |
|
|
private final IAuthUserService authUserService; |
|
|
|
|
|
private final ProjectOplogWriter oplogWriter; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public int syncOwnerByCustomer(Long customerId, Long newOwnerId) { |
|
|
public int syncOwnerByCustomer(Long customerId, Long newOwnerId) { |
|
|
@ -37,11 +40,19 @@ public class ProjectOwnerSyncPortImpl implements ProjectOwnerSyncPort { |
|
|
throw new BusinessErrorException(ProjectConstants.CODE_PROJECT_INVALID, |
|
|
throw new BusinessErrorException(ProjectConstants.CODE_PROJECT_INVALID, |
|
|
"项目 owner 同步接收人不存在"); |
|
|
"项目 owner 同步接收人不存在"); |
|
|
} |
|
|
} |
|
|
|
|
|
// 先取命中项目(逐项目写动态留痕,评审 P3-6:ACTION_TRANSFER 不再是死代码)
|
|
|
|
|
|
java.util.List<CrmProject> affected = projectMapper.selectList( |
|
|
|
|
|
new LambdaQueryWrapper<CrmProject>().eq(CrmProject::getCustomerId, customerId)); |
|
|
int updated = projectMapper.update(null, new LambdaUpdateWrapper<CrmProject>() |
|
|
int updated = projectMapper.update(null, new LambdaUpdateWrapper<CrmProject>() |
|
|
.eq(CrmProject::getCustomerId, customerId) |
|
|
.eq(CrmProject::getCustomerId, customerId) |
|
|
.set(CrmProject::getOwnerUserId, newOwnerId) |
|
|
.set(CrmProject::getOwnerUserId, newOwnerId) |
|
|
.set(CrmProject::getOwnerNameSnapshot, receiver.getUsername()) |
|
|
.set(CrmProject::getOwnerNameSnapshot, receiver.getUsername()) |
|
|
.set(CrmProject::getOwnerDeptId, receiver.getDeptId())); |
|
|
.set(CrmProject::getOwnerDeptId, receiver.getDeptId())); |
|
|
|
|
|
for (CrmProject project : affected) { |
|
|
|
|
|
oplogWriter.write(project.getId(), ProjectConstants.ACTION_TRANSFER, |
|
|
|
|
|
"移交:客户换负责人 → 项目 owner 同步变更为 " + receiver.getUsername(), |
|
|
|
|
|
newOwnerId, receiver.getUsername()); |
|
|
|
|
|
} |
|
|
if (updated > 0) { |
|
|
if (updated > 0) { |
|
|
log.info("[project-owner-sync] 客户 {} 换负责人 → 项目 owner 同步 {} 行", customerId, updated); |
|
|
log.info("[project-owner-sync] 客户 {} 换负责人 → 项目 owner 同步 {} 行", customerId, updated); |
|
|
} |
|
|
} |
|
|
|