You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1746 lines
95 KiB

package com.example.web.service.impl;
import com.example.web.entity.Contacts;
import com.example.web.entity.CustomerData;
import com.example.web.entity.Enterprise;
import com.example.web.entity.Favorites;
import com.example.web.entity.Login;
import com.example.web.entity.Managers;
import com.example.web.entity.InformationTra;
import com.example.web.entity.Products;
import com.example.web.entity.Users;
import com.example.web.entity.UsersContacts;
import com.example.web.entity.UsersManagements;
import com.example.web.mapper.CustomerMapper;
import com.example.web.mapper.InformationTraMapper;
import com.example.web.mapper.WechatCustomerMapper;
import com.example.web.service.CustomerService;
import com.example.web.service.NotificationService;
import com.example.web.utils.CustomerTraceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
/**
* @Description: 客户数据服务实现类
*/
@Service
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerMapper customerMapper;
@Autowired
private WechatCustomerMapper wechatCustomerMapper;
@Autowired
private InformationTraMapper informationTraMapper;
@Autowired
private CustomerTraceUtil customerTraceUtil;
@Autowired
private NotificationService notificationService;
@Override
public List<CustomerData> getAllCustomers() {
List<CustomerData> allCustomers = new ArrayList<>();
// 获取primary数据源的客户数据
List<CustomerData> primaryCustomers = getPrimaryCustomers();
System.out.println("DEBUG: getPrimaryCustomers returned: " + primaryCustomers.size() + " records");
allCustomers.addAll(primaryCustomers);
// 获取wechat数据源的客户数据
List<CustomerData> wechatCustomers = getWechatCustomers();
System.out.println("DEBUG: getWechatCustomers returned: " + wechatCustomers.size() + " records");
allCustomers.addAll(wechatCustomers);
System.out.println("DEBUG: getAllCustomers total: " + allCustomers.size() + " records");
return allCustomers;
}
@Override
public boolean followupCustomer(String phoneNumber, String followupContent, String dataSource, Login login) {
try {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
System.out.println("DEBUG: 开始跟进客户,电话号码: " + phoneNumber + ", 跟进内容: " + followupContent);
// 1. 尝试从primary数据源查找客户,添加连接重试机制
Contacts contacts = null;
int retryCount = 0;
int maxRetries = 3;
long retryDelay = 1000; // 1秒
while (retryCount < maxRetries) {
try {
contacts = customerMapper.getContactsByPhoneNumber(phoneNumber);
break; // 获取成功,退出重试循环
} catch (Exception e) {
retryCount++;
System.out.println("DEBUG: 第" + retryCount + "次尝试获取primary数据源连接失败,异常信息: " + e.getMessage());
if (retryCount >= maxRetries) {
throw e; // 达到最大重试次数,抛出异常
}
// 等待一段时间后重试
Thread.sleep(retryDelay);
retryDelay *= 2; // 指数退避
}
}
if (contacts != null) {
System.out.println("DEBUG: 在primary数据源中找到客户");
// 保存原始数据用于操作记录
String originalData = "{\"followup\": \"" + (contacts.getFollowup() == null ? "" : contacts.getFollowup()) + "\", \"followup_at\": \"" + (contacts.getFollowup_at() == null ? "" : contacts.getFollowup_at().toString()) + "\"}";
// 更新跟进信息和时间
contacts.setFollowup(followupContent);
contacts.setFollowup_at(now);
contacts.setUpdated_at(now);
int result = customerMapper.updateContacts(contacts);
System.out.println("DEBUG: 更新primary数据源联系人结果: " + result);
// 跟进后将客户状态更新为未分级
Enterprise enterprise = customerMapper.getEnterpriseByContactId(contacts.getId());
if (enterprise != null) {
enterprise.setLevel("unclassified");
customerMapper.updateEnterprise(enterprise);
}
// 保存操作记录
if (result > 0) {
String modifiedData = "{\"followup\": \"" + followupContent + "\", \"followup_at\": \"" + now.toString() + "\"}";
String changedFields = "[\"followup\", \"followup_at\"]";
saveOperationRecord(contacts.getId(), login, "跟进客户", originalData, modifiedData, changedFields);
// 记录客户跟进操作
customerTraceUtil.recordCustomerFollowup(contacts.getId(), login.getManagercompany(), login.getManagerdepartment(), login.getOrganization(), login.getProjectName(), login.getUserName(), originalData, modifiedData, changedFields);
}
return result > 0;
}
System.out.println("DEBUG: 在primary数据源中未找到客户,尝试从wechat数据源查找");
// 2. 尝试从wechat数据源查找客户,添加连接重试机制
Users user = null;
retryCount = 0;
retryDelay = 1000; // 1秒
while (retryCount < maxRetries) {
try {
user = wechatCustomerMapper.getUsersByPhoneNumber(phoneNumber);
break; // 获取成功,退出重试循环
} catch (Exception e) {
retryCount++;
System.out.println("DEBUG: 第" + retryCount + "次尝试获取wechat数据源连接失败,异常信息: " + e.getMessage());
if (retryCount >= maxRetries) {
throw e; // 达到最大重试次数,抛出异常
}
// 等待一段时间后重试
Thread.sleep(retryDelay);
retryDelay *= 2; // 指数退避
}
}
if (user != null) {
System.out.println("DEBUG: 在wechat数据源中找到客户");
// 保存原始数据用于操作记录
String originalData = "{\"followup\": \"" + (user.getFollowup() == null ? "" : user.getFollowup()) + "\", \"followup_at\": \"" + (user.getFollowup_at() == null ? "" : user.getFollowup_at().toString()) + "\"}";
// 更新跟进信息、时间和状态
user.setFollowup(followupContent);
user.setFollowup_at(now);
user.setUpdated_at(now);
// 跟进后将客户状态更新为未分级
user.setLevel("unclassified");
int result = wechatCustomerMapper.updateUsers(user);
System.out.println("DEBUG: 更新wechat数据源用户结果: " + result);
// 保存操作记录
if (result > 0) {
String modifiedData = "{\"followup\": \"" + followupContent + "\", \"followup_at\": \"" + now.toString() + "\"}";
String changedFields = "[\"followup\", \"followup_at\"]";
saveOperationRecord(String.valueOf(user.getUserId()), login, "跟进客户", originalData, modifiedData, changedFields);
// 记录客户跟进操作
customerTraceUtil.recordCustomerFollowup(String.valueOf(user.getUserId()), login.getManagercompany(), login.getManagerdepartment(), login.getOrganization(), login.getProjectName(), login.getUserName(), originalData, modifiedData, changedFields);
}
return result > 0;
}
System.out.println("DEBUG: 在两个数据源中都未找到客户信息");
return false;
} catch (InterruptedException e) {
System.out.println("DEBUG: 跟进客户过程中线程被中断,异常信息: " + e.getMessage());
Thread.currentThread().interrupt();
throw new RuntimeException("跟进客户失败: 线程中断");
} catch (Exception e) {
System.out.println("DEBUG: 跟进客户失败,异常信息: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("跟进客户失败: " + e.getMessage());
}
}
@Override
public boolean saveOperationRecord(String userId, Login login, String operationEvent, String originalData, String modifiedData, String changedFields) {
try {
// 创建信息跟踪记录
InformationTra informationTra = new InformationTra();
informationTra.setUserId(userId);
informationTra.setTracompany(login.getManagercompany());
informationTra.setTradepartment(login.getManagerdepartment());
informationTra.setTraorganization(login.getOrganization());
informationTra.setTrarole(login.getProjectName());
informationTra.setTrauserName(login.getUserName());
informationTra.setOperationEvent(operationEvent);
informationTra.setOperationTime(LocalDateTime.now());
informationTra.setCreatedAt(LocalDateTime.now());
informationTra.setUpdatedAt(LocalDateTime.now());
informationTra.setOriginalData(originalData);
informationTra.setModifiedData(modifiedData);
informationTra.setChangedFields(changedFields);
// 保存到数据库
int result = informationTraMapper.insertInformationTra(informationTra);
System.out.println("DEBUG: 保存操作记录,用户ID: " + userId + ", 操作人: " + login.getUserName() + ", 操作事件: " + operationEvent + ", 结果: " + result);
return result > 0;
} catch (Exception e) {
System.out.println("DEBUG: 保存操作记录失败,异常信息: " + e.getMessage());
e.printStackTrace();
return false;
}
}
@Override
public boolean recordCustomerView(String userId, Login login) {
try {
System.out.println("DEBUG: 记录客户查看操作,客户ID: " + userId + ", 操作人: " + login.getUserName());
// 保存操作记录
return saveOperationRecord(userId, login, "查看客户详情", "", "", "");
} catch (Exception e) {
System.out.println("DEBUG: 记录客户查看操作失败,异常信息: " + e.getMessage());
e.printStackTrace();
return false;
}
}
@Override
public boolean claimCustomer(String customerId, Login login) {
try {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
System.out.println("DEBUG: 开始认领客户,客户ID: " + customerId);
// 1. 尝试从primary数据源查找客户
Contacts contacts = null;
int retryCount = 0;
int maxRetries = 3;
long retryDelay = 1000; // 1秒
while (retryCount < maxRetries) {
try {
contacts = customerMapper.getContactsById(customerId);
break; // 获取成功,退出重试循环
} catch (Exception e) {
retryCount++;
System.out.println("DEBUG: 第" + retryCount + "次尝试获取primary数据源连接失败,异常信息: " + e.getMessage());
if (retryCount >= maxRetries) {
throw e; // 达到最大重试次数,抛出异常
}
// 等待一段时间后重试
Thread.sleep(retryDelay);
retryDelay *= 2; // 指数退避
}
}
if (contacts != null) {
System.out.println("DEBUG: 在primary数据源中找到客户");
// 获取企业信息和负责人信息
Enterprise enterprise = customerMapper.getEnterpriseByContactId(contacts.getId());
Managers managers = customerMapper.getManagerByContactId(contacts.getId());
// 保存原始数据用于操作记录
StringBuilder originalData = new StringBuilder("{");
if (enterprise != null) {
originalData.append("\"level\": \"" + (enterprise.getLevel() == null ? "" : enterprise.getLevel()) + "\",");
}
if (managers != null) {
originalData.append("\"managercompany\": \"" + (managers.getManagercompany() == null ? "" : managers.getManagercompany()) + "\",");
originalData.append("\"managerdepartment\": \"" + (managers.getManagerdepartment() == null ? "" : managers.getManagerdepartment()) + "\",");
originalData.append("\"organization\": \"" + (managers.getOrganization() == null ? "" : managers.getOrganization()) + "\",");
originalData.append("\"userName\": \"" + (managers.getUserName() == null ? "" : managers.getUserName()) + "\",");
}
// 移除末尾逗号
if (originalData.length() > 1 && originalData.charAt(originalData.length() - 1) == ',') {
originalData.setLength(originalData.length() - 1);
}
originalData.append("}");
// 更新企业等级为未分级
String originalLevel = null;
if (enterprise != null) {
originalLevel = enterprise.getLevel();
enterprise.setLevel("unclassified");
customerMapper.updateEnterprise(enterprise);
}
// 更新负责人信息
String originalManagerInfo = "";
if (managers != null) {
originalManagerInfo = managers.getManagercompany() + "," + managers.getManagerdepartment() + "," + managers.getOrganization() + "," + managers.getUserName();
managers.setManagercompany(login.getManagercompany());
managers.setManagerdepartment(login.getManagerdepartment());
managers.setOrganization(login.getOrganization());
managers.setUserName(login.getUserName());
customerMapper.updateManagers(managers);
} else {
managers = new Managers();
managers.setId(contacts.getId());
managers.setManagercompany(login.getManagercompany());
managers.setManagerdepartment(login.getManagerdepartment());
managers.setOrganization(login.getOrganization());
managers.setUserName(login.getUserName());
managers.setRole(login.getProjectName());
managers.setCreated_at(now);
managers.setUpdated_at(now);
customerMapper.insertManagers(managers);
}
// 构建修改后的数据
StringBuilder modifiedData = new StringBuilder("{");
modifiedData.append("\"level\": \"unclassified\",");
modifiedData.append("\"managercompany\": \"" + login.getManagercompany() + "\",");
modifiedData.append("\"managerdepartment\": \"" + login.getManagerdepartment() + "\",");
modifiedData.append("\"organization\": \"" + login.getOrganization() + "\",");
modifiedData.append("\"userName\": \"" + login.getUserName() + "\"");
modifiedData.append("}");
// 保存操作记录
String changedFields = "[\"level\", \"managercompany\", \"managerdepartment\", \"organization\", \"userName\"]";
saveOperationRecord(contacts.getId(), login, "认领客户", originalData.toString(), modifiedData.toString(), changedFields);
// 记录客户认领操作
customerTraceUtil.recordCustomerFollowup(contacts.getId(), login.getManagercompany(), login.getManagerdepartment(), login.getOrganization(), login.getProjectName(), login.getUserName(), originalData.toString(), modifiedData.toString(), changedFields);
// 发送客户认领通知
notificationService.sendCustomerUpdateNotification(contacts.getId(), "客户已被认领");
return true;
}
System.out.println("DEBUG: 在primary数据源中未找到客户,尝试从wechat数据源查找");
// 2. 尝试从wechat数据源查找客户
Users user = null;
retryCount = 0;
retryDelay = 1000; // 1秒
while (retryCount < maxRetries) {
try {
user = wechatCustomerMapper.getUsersByUserId(customerId);
break; // 获取成功,退出重试循环
} catch (Exception e) {
retryCount++;
System.out.println("DEBUG: 第" + retryCount + "次尝试获取wechat数据源连接失败,异常信息: " + e.getMessage());
if (retryCount >= maxRetries) {
throw e; // 达到最大重试次数,抛出异常
}
// 等待一段时间后重试
Thread.sleep(retryDelay);
retryDelay *= 2; // 指数退避
}
}
if (user != null) {
System.out.println("DEBUG: 在wechat数据源中找到客户");
// 获取负责人信息
UsersManagements managements = wechatCustomerMapper.getManagementsByUserId(user.getUserId());
// 保存原始数据用于操作记录
StringBuilder originalData = new StringBuilder("{");
originalData.append("\"level\": \"" + (user.getLevel() == null ? "" : user.getLevel()) + "\",");
if (managements != null) {
originalData.append("\"managercompany\": \"" + (managements.getManagercompany() == null ? "" : managements.getManagercompany()) + "\",");
originalData.append("\"managerdepartment\": \"" + (managements.getManagerdepartment() == null ? "" : managements.getManagerdepartment()) + "\",");
originalData.append("\"organization\": \"" + (managements.getOrganization() == null ? "" : managements.getOrganization()) + "\",");
originalData.append("\"userName\": \"" + (managements.getUserName() == null ? "" : managements.getUserName()) + "\",");
}
// 移除末尾逗号
if (originalData.length() > 1 && originalData.charAt(originalData.length() - 1) == ',') {
originalData.setLength(originalData.length() - 1);
}
originalData.append("}");
// 更新用户等级为未分级
user.setLevel("unclassified");
user.setUpdated_at(now);
// 更新负责人信息
if (managements == null) {
managements = new UsersManagements();
managements.setUserId(user.getUserId());
}
managements.setManagercompany(login.getManagercompany());
managements.setManagerdepartment(login.getManagerdepartment());
managements.setOrganization(login.getOrganization());
managements.setUserName(login.getUserName());
managements.setRole(login.getProjectName());
int result = wechatCustomerMapper.updateUsers(user);
// 保存或更新负责人信息
int managerResult = wechatCustomerMapper.getManagementsByUserId(user.getUserId()) == null
? wechatCustomerMapper.updateUsersManagements(managements)
: wechatCustomerMapper.updateUsersManagements(managements);
System.out.println("DEBUG: 更新wechat数据源用户结果: " + result + ", 更新负责人结果: " + managerResult);
// 保存操作记录
if (result > 0 || managerResult > 0) {
StringBuilder modifiedData = new StringBuilder("{");
modifiedData.append("\"level\": \"unclassified\",");
modifiedData.append("\"managercompany\": \"" + login.getManagercompany() + "\",");
modifiedData.append("\"managerdepartment\": \"" + login.getManagerdepartment() + "\",");
modifiedData.append("\"organization\": \"" + login.getOrganization() + "\",");
modifiedData.append("\"userName\": \"" + login.getUserName() + "\"");
modifiedData.append("}");
String changedFields = "[\"level\", \"managercompany\", \"managerdepartment\", \"organization\", \"userName\"]";
saveOperationRecord(String.valueOf(user.getUserId()), login, "认领客户", originalData.toString(), modifiedData.toString(), changedFields);
// 记录客户认领操作
customerTraceUtil.recordCustomerFollowup(String.valueOf(user.getUserId()), login.getManagercompany(), login.getManagerdepartment(), login.getOrganization(), login.getProjectName(), login.getUserName(), originalData.toString(), modifiedData.toString(), changedFields);
// 发送客户认领通知
notificationService.sendCustomerUpdateNotification(String.valueOf(user.getUserId()), "客户已被认领");
}
return result > 0;
}
System.out.println("DEBUG: 在两个数据源中都未找到客户信息");
return false;
} catch (InterruptedException e) {
System.out.println("DEBUG: 认领客户过程中线程被中断,异常信息: " + e.getMessage());
Thread.currentThread().interrupt();
throw new RuntimeException("认领客户失败: 线程中断");
} catch (Exception e) {
System.out.println("DEBUG: 认领客户失败,异常信息: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("认领客户失败: " + e.getMessage());
}
}
@Override
public List<CustomerData> getDepartmentSeaPool(String role, Login login) {
// 移除重复解码,前端已解码
System.out.println("DEBUG: getDepartmentSeaPool called with role: " + role + ", login: " + login);
List<CustomerData> departmentSeaPool = new ArrayList<>();
// 获取primary数据源的部门公海池数据
List<CustomerData> primaryData = getPrimaryDepartmentSeaPool(role, login);
System.out.println("DEBUG: getPrimaryDepartmentSeaPool returned: " + primaryData.size() + " records");
departmentSeaPool.addAll(primaryData);
// 获取wechat数据源的部门公海池数据
List<CustomerData> wechatData = getWechatDepartmentSeaPool(role, login);
System.out.println("DEBUG: getWechatDepartmentSeaPool returned: " + wechatData.size() + " records");
departmentSeaPool.addAll(wechatData);
System.out.println("DEBUG: Total departmentSeaPool returned: " + departmentSeaPool.size() + " records");
return departmentSeaPool;
}
@Override
public List<CustomerData> getOrganizationSeaPool(String role, Login login) {
// 移除重复解码,前端已解码
System.out.println("DEBUG: getOrganizationSeaPool called with role: " + role + ", login: " + login);
List<CustomerData> organizationSeaPool = new ArrayList<>();
// 获取primary数据源的组织公海池数据
List<CustomerData> primaryData = getPrimaryOrganizationSeaPool(role, login);
System.out.println("DEBUG: getPrimaryOrganizationSeaPool returned: " + primaryData.size() + " records");
organizationSeaPool.addAll(primaryData);
// 获取wechat数据源的组织公海池数据
List<CustomerData> wechatData = getWechatOrganizationSeaPool(role, login);
System.out.println("DEBUG: getWechatOrganizationSeaPool returned: " + wechatData.size() + " records");
organizationSeaPool.addAll(wechatData);
System.out.println("DEBUG: Total organizationSeaPool returned: " + organizationSeaPool.size() + " records");
return organizationSeaPool;
}
@Override
public List<CustomerData> getCustomersByRole(String role, Login login) {
List<CustomerData> filteredCustomers = new ArrayList<>();
System.out.println("DEBUG: getCustomersByRole called with role: " + role + ", login: " + login);
System.out.println("DEBUG: Login info - userName: " + login.getUserName() + ", company: " + login.getManagercompany() + ", department: " + login.getManagerdepartment() + ", organization: " + login.getOrganization());
// 获取primary数据源的角色数据
List<CustomerData> primaryData = getPrimaryCustomersByRole(role, login);
System.out.println("DEBUG: getPrimaryCustomersByRole returned: " + primaryData.size() + " records");
filteredCustomers.addAll(primaryData);
// 获取wechat数据源的角色数据
List<CustomerData> wechatData = getWechatCustomersByRole(role, login);
System.out.println("DEBUG: getWechatCustomersByRole returned: " + wechatData.size() + " records");
filteredCustomers.addAll(wechatData);
System.out.println("DEBUG: Total customers after filtering: " + filteredCustomers.size());
return filteredCustomers;
}
/**
* 获取primary数据源的角色数据
* @param role 角色
* @param login 登录信息
* @return primary数据源的角色数据
*/
private List<CustomerData> getPrimaryCustomersByRole(String role, Login login) {
List<CustomerData> roleCustomers = new ArrayList<>();
// 直接从数据库获取符合条件的联系人信息
List<Contacts> contactsList = customerMapper.getCustomersByRole(
role, login.getUserName(), login.getManagercompany(),
login.getManagerdepartment(), login.getOrganization());
for (Contacts contacts : contactsList) {
CustomerData customerData = new CustomerData();
// 设置联系人基本信息
customerData.setId(contacts.getId());
customerData.setNickName(contacts.getNickName());
customerData.setPhoneNumber(contacts.getPhoneNumber());
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
customerData.setFollowup(contacts.getFollowup());
customerData.setCreated_at(contacts.getCreated_at());
customerData.setUpdated_at(contacts.getUpdated_at());
// 获取并设置企业信息
Enterprise enterprise = customerMapper.getEnterpriseByContactId(contacts.getId());
if (enterprise != null) {
customerData.setCompany(enterprise.getCompany());
customerData.setRegion(enterprise.getRegion());
customerData.setLevel(enterprise.getLevel());
customerData.setType(enterprise.getType());
customerData.setDemand(enterprise.getDemand());
customerData.setSpec(enterprise.getSpec());
}
// 获取并设置负责人信息
Managers managers = customerMapper.getManagerByContactId(contacts.getId());
if (managers != null) {
customerData.setManagercompany(managers.getManagercompany());
customerData.setManagerdepartment(managers.getManagerdepartment());
customerData.setOrganization(managers.getOrganization());
customerData.setProjectName(managers.getRole());
customerData.setRole(managers.getRole());
customerData.setUserName(managers.getUserName());
customerData.setAssistant(managers.getAssistant());
}
// 设置收藏产品信息
customerData.setFavorites(new ArrayList<>());
roleCustomers.add(customerData);
}
return roleCustomers;
}
/**
* 获取wechat数据源的角色数据
* @param role 角色
* @param login 登录信息
* @return wechat数据源的角色数据
*/
private List<CustomerData> getWechatCustomersByRole(String role, Login login) {
List<CustomerData> roleCustomers = new ArrayList<>();
// 直接从数据库获取符合条件的用户信息
List<Users> usersList = wechatCustomerMapper.getCustomersByRole(
role, login.getUserName(), login.getManagercompany(),
login.getManagerdepartment(), login.getOrganization());
for (Users user : usersList) {
// 跳过type为manager的用户
if ("manager".equals(user.getType())) {
continue;
}
CustomerData customerData = new CustomerData();
// 设置用户基本信息
customerData.setId(user.getUserId());
customerData.setNickName(user.getNickName());
customerData.setPhoneNumber(user.getPhoneNumber());
customerData.setType(user.getType());
customerData.setCompany(user.getCompany());
customerData.setRegion(user.getRegion());
customerData.setLevel(user.getLevel());
customerData.setDemand(user.getDemand());
customerData.setSpec(user.getSpec());
customerData.setFollowup(user.getFollowup());
customerData.setNotice(user.getNotice());
customerData.setFollowup_at(user.getFollowup_at());
customerData.setCreated_at(user.getCreated_at());
customerData.setUpdated_at(user.getUpdated_at());
// 获取并设置联系人信息
UsersContacts contacts = wechatCustomerMapper.getContactsByUserId(user.getUserId());
if (contacts != null) {
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
}
// 获取并设置负责人信息
UsersManagements managements = wechatCustomerMapper.getManagementsByUserId(user.getUserId());
if (managements != null) {
customerData.setManagercompany(managements.getManagercompany());
customerData.setManagerdepartment(managements.getManagerdepartment());
customerData.setOrganization(managements.getOrganization());
customerData.setProjectName(managements.getRole());
customerData.setRole(managements.getRole());
customerData.setUserName(managements.getUserName());
customerData.setAssistant(managements.getAssistant());
}
// 获取并设置收藏产品信息
customerData.setFavorites(getProductFavorites(user.getPhoneNumber()));
roleCustomers.add(customerData);
}
return roleCustomers;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addCustomer(Map<String, Object> customerData) {
try {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 1. 插入企业信息
Enterprise enterprise = new Enterprise();
enterprise.setId((String) customerData.get("id"));
enterprise.setCompany((String) customerData.get("company"));
enterprise.setRegion((String) customerData.get("region"));
enterprise.setLevel((String) customerData.get("level"));
enterprise.setType((String) customerData.get("type"));
enterprise.setDemand((String) customerData.get("demand"));
enterprise.setSpec((String) customerData.get("spec"));
customerMapper.insertEnterprise(enterprise);
// 2. 插入联系人信息
Contacts contacts = new Contacts();
contacts.setContact_id((String) customerData.get("contact_id"));
contacts.setId((String) customerData.get("id"));
contacts.setNickName((String) customerData.get("nickName"));
contacts.setPhoneNumber((String) customerData.get("phoneNumber"));
contacts.setWechat((String) customerData.get("wechat"));
contacts.setAccount((String) customerData.get("account"));
contacts.setAccountNumber((String) customerData.get("accountNumber"));
contacts.setBank((String) customerData.get("bank"));
contacts.setAddress((String) customerData.get("address"));
contacts.setFollowup((String) customerData.get("followup"));
contacts.setCreated_at(now);
contacts.setUpdated_at(now);
customerMapper.insertContacts(contacts);
// 3. 插入负责人信息
Managers managers = new Managers();
// manager_id是自增主键,不需要手动设置,数据库会自动生成
managers.setId((String) customerData.get("id"));
managers.setManagerId((String) customerData.get("managerId"));
managers.setManagercompany((String) customerData.get("managercompany"));
managers.setManagerdepartment((String) customerData.get("managerdepartment"));
managers.setOrganization((String) customerData.get("organization"));
managers.setRole((String) customerData.get("role"));
managers.setRoot("normal"); // 默认权限
managers.setCreated_at(now);
managers.setUpdated_at(now);
managers.setUserName((String) customerData.get("userName"));
managers.setAssistant((String) customerData.get("assistant"));
customerMapper.insertManagers(managers);
return true;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("添加客户失败: " + e.getMessage());
}
}
@Override
public boolean updateCustomer(Map<String, Object> customerData, Login login) {
try {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 获取电话号码作为唯一标识
String phoneNumber = (String) customerData.get("phoneNumber");
if (phoneNumber == null || phoneNumber.isEmpty()) {
System.out.println("DEBUG: 电话号码为空,无法更新客户信息");
return false;
}
System.out.println("DEBUG: 开始更新客户信息,电话号码: " + phoneNumber);
System.out.println("DEBUG: 客户数据: " + customerData);
// 1. 尝试从primary数据源更新,添加连接重试机制
Contacts existingContacts = null;
int retryCount = 0;
int maxRetries = 3;
long retryDelay = 1000; // 1秒
while (retryCount < maxRetries) {
try {
existingContacts = customerMapper.getContactsByPhoneNumber(phoneNumber);
break; // 获取成功,退出重试循环
} catch (Exception e) {
retryCount++;
System.out.println("DEBUG: 第" + retryCount + "次尝试获取primary数据源连接失败,异常信息: " + e.getMessage());
if (retryCount >= maxRetries) {
throw e; // 达到最大重试次数,抛出异常
}
// 等待一段时间后重试
Thread.sleep(retryDelay);
retryDelay *= 2; // 指数退避
}
}
if (existingContacts != null) {
System.out.println("DEBUG: 在primary数据源中找到联系人信息,contactId: " + existingContacts.getContact_id());
// 获取企业信息和负责人信息
Enterprise existingEnterprise = customerMapper.getEnterpriseByContactId(existingContacts.getId());
Managers existingManagers = customerMapper.getManagerByContactId(existingContacts.getId());
// 保存原始数据快照
// 保存Contacts表原始数据
String originalContactNickName = existingContacts.getNickName();
String originalContactWechat = existingContacts.getWechat();
String originalContactAccount = existingContacts.getAccount();
String originalContactAccountNumber = existingContacts.getAccountNumber();
String originalContactBank = existingContacts.getBank();
String originalContactAddress = existingContacts.getAddress();
String originalContactFollowup = existingContacts.getFollowup();
LocalDateTime originalContactFollowupAt = existingContacts.getFollowup_at();
// 保存Enterprise表原始数据
String originalEnterpriseCompany = (existingEnterprise != null ? existingEnterprise.getCompany() : null);
String originalEnterpriseRegion = (existingEnterprise != null ? existingEnterprise.getRegion() : null);
String originalEnterpriseLevel = (existingEnterprise != null ? existingEnterprise.getLevel() : null);
String originalEnterpriseType = (existingEnterprise != null ? existingEnterprise.getType() : null);
String originalEnterpriseDemand = (existingEnterprise != null ? existingEnterprise.getDemand() : null);
String originalEnterpriseSpec = (existingEnterprise != null ? existingEnterprise.getSpec() : null);
// 1.1 更新primary数据源中的数据
boolean primaryResult = updatePrimaryCustomer(existingContacts, customerData, now);
System.out.println("DEBUG: primary数据源更新结果: " + primaryResult);
// 获取更新后的企业信息和负责人信息
Enterprise updatedEnterprise = customerMapper.getEnterpriseByContactId(existingContacts.getId());
Managers updatedManagers = customerMapper.getManagerByContactId(existingContacts.getId());
// 构建完整的原始数据JSON
StringBuilder originalDataBuilder = new StringBuilder("{");
originalDataBuilder.append("\"nickName\": \"" + (originalContactNickName == null ? "" : originalContactNickName) + "\",");
originalDataBuilder.append("\"wechat\": \"" + (originalContactWechat == null ? "" : originalContactWechat) + "\",");
originalDataBuilder.append("\"account\": \"" + (originalContactAccount == null ? "" : originalContactAccount) + "\",");
originalDataBuilder.append("\"accountNumber\": \"" + (originalContactAccountNumber == null ? "" : originalContactAccountNumber) + "\",");
originalDataBuilder.append("\"bank\": \"" + (originalContactBank == null ? "" : originalContactBank) + "\",");
originalDataBuilder.append("\"address\": \"" + (originalContactAddress == null ? "" : originalContactAddress) + "\",");
originalDataBuilder.append("\"followup\": \"" + (originalContactFollowup == null ? "" : originalContactFollowup) + "\",");
originalDataBuilder.append("\"followup_at\": \"" + (originalContactFollowupAt == null ? "" : originalContactFollowupAt.toString()) + "\",");
originalDataBuilder.append("\"company\": \"" + (originalEnterpriseCompany == null ? "" : originalEnterpriseCompany) + "\",");
originalDataBuilder.append("\"region\": \"" + (originalEnterpriseRegion == null ? "" : originalEnterpriseRegion) + "\",");
originalDataBuilder.append("\"level\": \"" + (originalEnterpriseLevel == null ? "" : originalEnterpriseLevel) + "\",");
originalDataBuilder.append("\"type\": \"" + (originalEnterpriseType == null ? "" : originalEnterpriseType) + "\",");
originalDataBuilder.append("\"demand\": \"" + (originalEnterpriseDemand == null ? "" : originalEnterpriseDemand) + "\",");
originalDataBuilder.append("\"spec\": \"" + (originalEnterpriseSpec == null ? "" : originalEnterpriseSpec) + "\"");
originalDataBuilder.append("}");
String originalData = originalDataBuilder.toString();
// 构建完整的修改后数据JSON
StringBuilder modifiedDataBuilder = new StringBuilder("{");
modifiedDataBuilder.append("\"nickName\": \"" + (existingContacts.getNickName() == null ? "" : existingContacts.getNickName()) + "\",");
modifiedDataBuilder.append("\"wechat\": \"" + (existingContacts.getWechat() == null ? "" : existingContacts.getWechat()) + "\",");
modifiedDataBuilder.append("\"account\": \"" + (existingContacts.getAccount() == null ? "" : existingContacts.getAccount()) + "\",");
modifiedDataBuilder.append("\"accountNumber\": \"" + (existingContacts.getAccountNumber() == null ? "" : existingContacts.getAccountNumber()) + "\",");
modifiedDataBuilder.append("\"bank\": \"" + (existingContacts.getBank() == null ? "" : existingContacts.getBank()) + "\",");
modifiedDataBuilder.append("\"address\": \"" + (existingContacts.getAddress() == null ? "" : existingContacts.getAddress()) + "\",");
modifiedDataBuilder.append("\"followup\": \"" + (existingContacts.getFollowup() == null ? "" : existingContacts.getFollowup()) + "\",");
modifiedDataBuilder.append("\"followup_at\": \"" + (existingContacts.getFollowup_at() == null ? "" : existingContacts.getFollowup_at().toString()) + "\",");
modifiedDataBuilder.append("\"company\": \"" + (updatedEnterprise != null ? (updatedEnterprise.getCompany() == null ? "" : updatedEnterprise.getCompany()) : "") + "\",");
modifiedDataBuilder.append("\"region\": \"" + (updatedEnterprise != null ? (updatedEnterprise.getRegion() == null ? "" : updatedEnterprise.getRegion()) : "") + "\",");
modifiedDataBuilder.append("\"level\": \"" + (updatedEnterprise != null ? (updatedEnterprise.getLevel() == null ? "" : updatedEnterprise.getLevel()) : "") + "\",");
modifiedDataBuilder.append("\"type\": \"" + (updatedEnterprise != null ? (updatedEnterprise.getType() == null ? "" : updatedEnterprise.getType()) : "") + "\",");
modifiedDataBuilder.append("\"demand\": \"" + (updatedEnterprise != null ? (updatedEnterprise.getDemand() == null ? "" : updatedEnterprise.getDemand()) : "") + "\",");
modifiedDataBuilder.append("\"spec\": \"" + (updatedEnterprise != null ? (updatedEnterprise.getSpec() == null ? "" : updatedEnterprise.getSpec()) : "") + "\"");
modifiedDataBuilder.append("}");
String modifiedData = modifiedDataBuilder.toString();
// 确定实际变更的字段
StringBuilder changedFieldsBuilder = new StringBuilder("[");
boolean hasChanged = false;
// 比较Contacts表字段
if (!equals(originalContactNickName, existingContacts.getNickName())) {
changedFieldsBuilder.append("\"nickName\", ");
hasChanged = true;
}
if (!equals(originalContactWechat, existingContacts.getWechat())) {
changedFieldsBuilder.append("\"wechat\", ");
hasChanged = true;
}
if (!equals(originalContactAccount, existingContacts.getAccount())) {
changedFieldsBuilder.append("\"account\", ");
hasChanged = true;
}
if (!equals(originalContactAccountNumber, existingContacts.getAccountNumber())) {
changedFieldsBuilder.append("\"accountNumber\", ");
hasChanged = true;
}
if (!equals(originalContactBank, existingContacts.getBank())) {
changedFieldsBuilder.append("\"bank\", ");
hasChanged = true;
}
if (!equals(originalContactAddress, existingContacts.getAddress())) {
changedFieldsBuilder.append("\"address\", ");
hasChanged = true;
}
if (!equals(originalContactFollowup, existingContacts.getFollowup())) {
changedFieldsBuilder.append("\"followup\", ");
hasChanged = true;
}
if (!equals(originalContactFollowupAt, existingContacts.getFollowup_at())) {
changedFieldsBuilder.append("\"followup_at\", ");
hasChanged = true;
}
// 比较Enterprise表字段
if (!equals(originalEnterpriseCompany, (updatedEnterprise != null ? updatedEnterprise.getCompany() : null))) {
changedFieldsBuilder.append("\"company\", ");
hasChanged = true;
}
if (!equals(originalEnterpriseRegion, (updatedEnterprise != null ? updatedEnterprise.getRegion() : null))) {
changedFieldsBuilder.append("\"region\", ");
hasChanged = true;
}
if (!equals(originalEnterpriseLevel, (updatedEnterprise != null ? updatedEnterprise.getLevel() : null))) {
changedFieldsBuilder.append("\"level\", ");
hasChanged = true;
}
if (!equals(originalEnterpriseType, (updatedEnterprise != null ? updatedEnterprise.getType() : null))) {
changedFieldsBuilder.append("\"type\", ");
hasChanged = true;
}
if (!equals(originalEnterpriseDemand, (updatedEnterprise != null ? updatedEnterprise.getDemand() : null))) {
changedFieldsBuilder.append("\"demand\", ");
hasChanged = true;
}
if (!equals(originalEnterpriseSpec, (updatedEnterprise != null ? updatedEnterprise.getSpec() : null))) {
changedFieldsBuilder.append("\"spec\", ");
hasChanged = true;
}
// 移除末尾的逗号和空格
String changedFields;
if (hasChanged) {
changedFields = changedFieldsBuilder.substring(0, changedFieldsBuilder.length() - 2) + "]";
} else {
changedFields = "[]";
}
// 记录客户编辑操作
customerTraceUtil.recordCustomerEdit(existingContacts.getId(), login.getManagercompany(), login.getManagerdepartment(), login.getOrganization(), login.getProjectName(), login.getUserName(), originalData, modifiedData, changedFields);
// 发送客户更新通知
notificationService.sendCustomerUpdateNotification(existingContacts.getId(), "客户信息已更新");
return primaryResult;
}
System.out.println("DEBUG: 在primary数据源中未找到联系人信息,尝试从wechat数据源更新");
// 2. 尝试从wechat数据源更新,添加异常处理
try {
Users existingUser = wechatCustomerMapper.getUsersByPhoneNumber(phoneNumber);
if (existingUser != null) {
System.out.println("DEBUG: 在wechat数据源中找到用户信息,userId: " + existingUser.getUserId());
// 获取联系人信息和负责人信息
UsersContacts existingWechatContacts = wechatCustomerMapper.getContactsByUserId(existingUser.getUserId());
UsersManagements existingManagements = wechatCustomerMapper.getManagementsByUserId(existingUser.getUserId());
// 保存原始数据快照
// 保存Users表原始数据
String originalUserNickName = existingUser.getNickName();
String originalUserCompany = existingUser.getCompany();
String originalUserRegion = existingUser.getRegion();
String originalUserLevel = existingUser.getLevel();
String originalUserDemand = existingUser.getDemand();
String originalUserSpec = existingUser.getSpec();
String originalUserFollowup = existingUser.getFollowup();
String originalUserNotice = existingUser.getNotice();
LocalDateTime originalUserFollowupAt = existingUser.getFollowup_at();
// 保存UsersContacts表原始数据
String originalContactWechat = (existingWechatContacts != null ? existingWechatContacts.getWechat() : null);
String originalContactAccount = (existingWechatContacts != null ? existingWechatContacts.getAccount() : null);
String originalContactAccountNumber = (existingWechatContacts != null ? existingWechatContacts.getAccountNumber() : null);
String originalContactBank = (existingWechatContacts != null ? existingWechatContacts.getBank() : null);
String originalContactAddress = (existingWechatContacts != null ? existingWechatContacts.getAddress() : null);
// 2.1 更新wechat数据源中的数据
boolean wechatResult = updateWechatCustomer(existingUser, customerData, now);
System.out.println("DEBUG: wechat数据源更新结果: " + wechatResult);
// 获取更新后的联系人信息和负责人信息
UsersContacts updatedContacts = wechatCustomerMapper.getContactsByUserId(existingUser.getUserId());
UsersManagements updatedManagements = wechatCustomerMapper.getManagementsByUserId(existingUser.getUserId());
// 构建完整的原始数据JSON
StringBuilder originalDataBuilder = new StringBuilder("{");
originalDataBuilder.append("\"nickName\": \"" + (originalUserNickName == null ? "" : originalUserNickName) + "\",");
originalDataBuilder.append("\"company\": \"" + (originalUserCompany == null ? "" : originalUserCompany) + "\",");
originalDataBuilder.append("\"region\": \"" + (originalUserRegion == null ? "" : originalUserRegion) + "\",");
originalDataBuilder.append("\"level\": \"" + (originalUserLevel == null ? "" : originalUserLevel) + "\",");
originalDataBuilder.append("\"demand\": \"" + (originalUserDemand == null ? "" : originalUserDemand) + "\",");
originalDataBuilder.append("\"spec\": \"" + (originalUserSpec == null ? "" : originalUserSpec) + "\",");
originalDataBuilder.append("\"followup\": \"" + (originalUserFollowup == null ? "" : originalUserFollowup) + "\",");
originalDataBuilder.append("\"notice\": \"" + (originalUserNotice == null ? "" : originalUserNotice) + "\",");
originalDataBuilder.append("\"followup_at\": \"" + (originalUserFollowupAt == null ? "" : originalUserFollowupAt.toString()) + "\",");
originalDataBuilder.append("\"wechat\": \"" + (originalContactWechat == null ? "" : originalContactWechat) + "\",");
originalDataBuilder.append("\"account\": \"" + (originalContactAccount == null ? "" : originalContactAccount) + "\",");
originalDataBuilder.append("\"accountNumber\": \"" + (originalContactAccountNumber == null ? "" : originalContactAccountNumber) + "\",");
originalDataBuilder.append("\"bank\": \"" + (originalContactBank == null ? "" : originalContactBank) + "\",");
originalDataBuilder.append("\"address\": \"" + (originalContactAddress == null ? "" : originalContactAddress) + "\"");
originalDataBuilder.append("}");
String originalData = originalDataBuilder.toString();
// 构建完整的修改后数据JSON
StringBuilder modifiedDataBuilder = new StringBuilder("{");
modifiedDataBuilder.append("\"nickName\": \"" + (existingUser.getNickName() == null ? "" : existingUser.getNickName()) + "\",");
modifiedDataBuilder.append("\"company\": \"" + (existingUser.getCompany() == null ? "" : existingUser.getCompany()) + "\",");
modifiedDataBuilder.append("\"region\": \"" + (existingUser.getRegion() == null ? "" : existingUser.getRegion()) + "\",");
modifiedDataBuilder.append("\"level\": \"" + (existingUser.getLevel() == null ? "" : existingUser.getLevel()) + "\",");
modifiedDataBuilder.append("\"demand\": \"" + (existingUser.getDemand() == null ? "" : existingUser.getDemand()) + "\",");
modifiedDataBuilder.append("\"spec\": \"" + (existingUser.getSpec() == null ? "" : existingUser.getSpec()) + "\",");
modifiedDataBuilder.append("\"followup\": \"" + (existingUser.getFollowup() == null ? "" : existingUser.getFollowup()) + "\",");
modifiedDataBuilder.append("\"notice\": \"" + (existingUser.getNotice() == null ? "" : existingUser.getNotice()) + "\",");
modifiedDataBuilder.append("\"followup_at\": \"" + (existingUser.getFollowup_at() == null ? "" : existingUser.getFollowup_at().toString()) + "\",");
modifiedDataBuilder.append("\"wechat\": \"" + (updatedContacts != null ? (updatedContacts.getWechat() == null ? "" : updatedContacts.getWechat()) : "") + "\",");
modifiedDataBuilder.append("\"account\": \"" + (updatedContacts != null ? (updatedContacts.getAccount() == null ? "" : updatedContacts.getAccount()) : "") + "\",");
modifiedDataBuilder.append("\"accountNumber\": \"" + (updatedContacts != null ? (updatedContacts.getAccountNumber() == null ? "" : updatedContacts.getAccountNumber()) : "") + "\",");
modifiedDataBuilder.append("\"bank\": \"" + (updatedContacts != null ? (updatedContacts.getBank() == null ? "" : updatedContacts.getBank()) : "") + "\",");
modifiedDataBuilder.append("\"address\": \"" + (updatedContacts != null ? (updatedContacts.getAddress() == null ? "" : updatedContacts.getAddress()) : "") + "\"");
modifiedDataBuilder.append("}");
String modifiedData = modifiedDataBuilder.toString();
// 确定实际变更的字段
StringBuilder changedFieldsBuilder = new StringBuilder("[");
boolean hasChanged = false;
// 比较Users表字段
if (!equals(originalUserNickName, existingUser.getNickName())) {
changedFieldsBuilder.append("\"nickName\", ");
hasChanged = true;
}
if (!equals(originalUserCompany, existingUser.getCompany())) {
changedFieldsBuilder.append("\"company\", ");
hasChanged = true;
}
if (!equals(originalUserRegion, existingUser.getRegion())) {
changedFieldsBuilder.append("\"region\", ");
hasChanged = true;
}
if (!equals(originalUserLevel, existingUser.getLevel())) {
changedFieldsBuilder.append("\"level\", ");
hasChanged = true;
}
if (!equals(originalUserDemand, existingUser.getDemand())) {
changedFieldsBuilder.append("\"demand\", ");
hasChanged = true;
}
if (!equals(originalUserSpec, existingUser.getSpec())) {
changedFieldsBuilder.append("\"spec\", ");
hasChanged = true;
}
if (!equals(originalUserFollowup, existingUser.getFollowup())) {
changedFieldsBuilder.append("\"followup\", ");
hasChanged = true;
}
if (!equals(originalUserNotice, existingUser.getNotice())) {
changedFieldsBuilder.append("\"notice\", ");
hasChanged = true;
}
if (!equals(originalUserFollowupAt, existingUser.getFollowup_at())) {
changedFieldsBuilder.append("\"followup_at\", ");
hasChanged = true;
}
// 比较UsersContacts表字段
if (!equals(originalContactWechat, (updatedContacts != null ? updatedContacts.getWechat() : null))) {
changedFieldsBuilder.append("\"wechat\", ");
hasChanged = true;
}
if (!equals(originalContactAccount, (updatedContacts != null ? updatedContacts.getAccount() : null))) {
changedFieldsBuilder.append("\"account\", ");
hasChanged = true;
}
if (!equals(originalContactAccountNumber, (updatedContacts != null ? updatedContacts.getAccountNumber() : null))) {
changedFieldsBuilder.append("\"accountNumber\", ");
hasChanged = true;
}
if (!equals(originalContactBank, (updatedContacts != null ? updatedContacts.getBank() : null))) {
changedFieldsBuilder.append("\"bank\", ");
hasChanged = true;
}
if (!equals(originalContactAddress, (updatedContacts != null ? updatedContacts.getAddress() : null))) {
changedFieldsBuilder.append("\"address\", ");
hasChanged = true;
}
// 移除末尾的逗号和空格
String changedFields;
if (hasChanged) {
changedFields = changedFieldsBuilder.substring(0, changedFieldsBuilder.length() - 2) + "]";
} else {
changedFields = "[]";
}
// 记录客户编辑操作
customerTraceUtil.recordCustomerEdit(String.valueOf(existingUser.getUserId()), login.getManagercompany(), login.getManagerdepartment(), login.getOrganization(), login.getProjectName(), login.getUserName(), originalData, modifiedData, changedFields);
// 发送客户更新通知
notificationService.sendCustomerUpdateNotification(String.valueOf(existingUser.getUserId()), "客户信息已更新");
return wechatResult;
}
} catch (Exception e) {
System.out.println("DEBUG: 从wechat数据源查询用户信息失败,异常信息: " + e.getMessage());
e.printStackTrace();
// 忽略wechat数据源查询失败的异常,继续执行
}
System.out.println("DEBUG: 在两个数据源中都未找到客户信息,无法更新");
// 3. 两个数据源中都没有找到,返回false
return false;
} catch (InterruptedException e) {
System.out.println("DEBUG: 更新客户过程中线程被中断,异常信息: " + e.getMessage());
Thread.currentThread().interrupt();
throw new RuntimeException("更新客户失败: 线程中断");
} catch (Exception e) {
System.out.println("DEBUG: 更新客户失败,异常信息: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("更新客户失败: " + e.getMessage());
}
}
/**
* 更新primary数据源中的客户信息
*/
private boolean updatePrimaryCustomer(Contacts existingContacts, Map<String, Object> customerData, LocalDateTime now) {
try {
String contactId = existingContacts.getContact_id();
String enterpriseId = existingContacts.getId();
System.out.println("DEBUG: 开始更新primary数据源中的客户信息,contactId: " + contactId + ", enterpriseId: " + enterpriseId);
// 只更新customerData中存在的字段,避免将现有字段设为null
// 更新联系人信息
if (customerData.containsKey("nickName")) {
existingContacts.setNickName((String) customerData.get("nickName"));
}
if (customerData.containsKey("wechat")) {
existingContacts.setWechat((String) customerData.get("wechat"));
}
if (customerData.containsKey("account")) {
existingContacts.setAccount((String) customerData.get("account"));
}
if (customerData.containsKey("accountNumber")) {
existingContacts.setAccountNumber((String) customerData.get("accountNumber"));
}
if (customerData.containsKey("bank")) {
existingContacts.setBank((String) customerData.get("bank"));
}
if (customerData.containsKey("address")) {
existingContacts.setAddress((String) customerData.get("address"));
}
existingContacts.setUpdated_at(now);
int contactsUpdateResult = customerMapper.updateContacts(existingContacts);
System.out.println("DEBUG: 更新联系人信息结果: " + contactsUpdateResult);
// 更新企业信息
Enterprise enterprise = new Enterprise();
enterprise.setId(enterpriseId);
if (customerData.containsKey("company")) {
enterprise.setCompany((String) customerData.get("company"));
}
if (customerData.containsKey("region")) {
enterprise.setRegion((String) customerData.get("region"));
}
if (customerData.containsKey("level")) {
enterprise.setLevel((String) customerData.get("level"));
}
if (customerData.containsKey("type")) {
enterprise.setType((String) customerData.get("type"));
}
if (customerData.containsKey("demand")) {
enterprise.setDemand((String) customerData.get("demand"));
}
if (customerData.containsKey("spec")) {
enterprise.setSpec((String) customerData.get("spec"));
}
int enterpriseUpdateResult = customerMapper.updateEnterprise(enterprise);
System.out.println("DEBUG: 更新企业信息结果: " + enterpriseUpdateResult);
// 更新负责人信息
Managers managers = new Managers();
managers.setId(enterpriseId);
if (customerData.containsKey("managercompany")) {
managers.setManagercompany((String) customerData.get("managercompany"));
}
if (customerData.containsKey("managerdepartment")) {
managers.setManagerdepartment((String) customerData.get("managerdepartment"));
}
if (customerData.containsKey("organization")) {
managers.setOrganization((String) customerData.get("organization"));
}
if (customerData.containsKey("projectName")) {
managers.setRole((String) customerData.get("projectName"));
}
if (customerData.containsKey("userName")) {
managers.setUserName((String) customerData.get("userName"));
}
if (customerData.containsKey("assistant")) {
managers.setAssistant((String) customerData.get("assistant"));
}
managers.setUpdated_at(now);
int managersUpdateResult = customerMapper.updateManagers(managers);
System.out.println("DEBUG: 更新负责人信息结果: " + managersUpdateResult);
System.out.println("DEBUG: 更新primary数据源客户成功");
return true;
} catch (Exception e) {
System.out.println("DEBUG: 更新primary数据源客户失败,异常信息: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("更新primary数据源客户失败: " + e.getMessage());
}
}
/**
* 更新wechat数据源中的客户信息
*/
private boolean updateWechatCustomer(Users existingUser, Map<String, Object> customerData, LocalDateTime now) {
try {
String userId = existingUser.getUserId();
System.out.println("DEBUG: 开始更新wechat数据源中的客户信息,userId: " + userId);
// 只更新customerData中存在的字段,避免将现有字段设为null
if (customerData.containsKey("nickName")) {
existingUser.setNickName((String) customerData.get("nickName"));
}
if (customerData.containsKey("company")) {
existingUser.setCompany((String) customerData.get("company"));
}
if (customerData.containsKey("region")) {
existingUser.setRegion((String) customerData.get("region"));
}
if (customerData.containsKey("level")) {
existingUser.setLevel((String) customerData.get("level"));
}
if (customerData.containsKey("demand")) {
existingUser.setDemand((String) customerData.get("demand"));
}
if (customerData.containsKey("notice")) {
existingUser.setNotice((String) customerData.get("notice"));
}
existingUser.setUpdated_at(now);
int usersUpdateResult = wechatCustomerMapper.updateUsers(existingUser);
System.out.println("DEBUG: 更新用户信息结果: " + usersUpdateResult);
// 获取或创建联系人信息
UsersContacts contacts = wechatCustomerMapper.getContactsByUserId(userId);
System.out.println("DEBUG: 获取联系人信息结果: " + (contacts != null ? "找到" : "未找到"));
if (contacts != null) {
// 只更新customerData中存在的字段,避免将现有字段设为null
if (customerData.containsKey("wechat")) {
contacts.setWechat((String) customerData.get("wechat"));
}
if (customerData.containsKey("account")) {
contacts.setAccount((String) customerData.get("account"));
}
if (customerData.containsKey("accountNumber")) {
contacts.setAccountNumber((String) customerData.get("accountNumber"));
}
if (customerData.containsKey("bank")) {
contacts.setBank((String) customerData.get("bank"));
}
if (customerData.containsKey("address")) {
contacts.setAddress((String) customerData.get("address"));
}
contacts.setUpdated_at(now);
int contactsUpdateResult = wechatCustomerMapper.updateUsersContacts(contacts);
System.out.println("DEBUG: 更新联系人信息结果: " + contactsUpdateResult);
}
// 获取或创建负责人信息
UsersManagements managements = wechatCustomerMapper.getManagementsByUserId(userId);
System.out.println("DEBUG: 获取负责人信息结果: " + (managements != null ? "找到" : "未找到"));
if (managements != null) {
// 只更新customerData中存在的字段,避免将现有字段设为null
if (customerData.containsKey("managercompany")) {
managements.setManagercompany((String) customerData.get("managercompany"));
}
if (customerData.containsKey("managerdepartment")) {
managements.setManagerdepartment((String) customerData.get("managerdepartment"));
}
if (customerData.containsKey("organization")) {
managements.setOrganization((String) customerData.get("organization"));
}
if (customerData.containsKey("projectName")) {
managements.setRole((String) customerData.get("projectName"));
}
if (customerData.containsKey("userName")) {
managements.setUserName((String) customerData.get("userName"));
}
if (customerData.containsKey("assistant")) {
managements.setAssistant((String) customerData.get("assistant"));
}
managements.setUpdated_at(now);
int managementsUpdateResult = wechatCustomerMapper.updateUsersManagements(managements);
System.out.println("DEBUG: 更新负责人信息结果: " + managementsUpdateResult);
}
System.out.println("DEBUG: 更新wechat数据源客户成功");
return true;
} catch (Exception e) {
System.out.println("DEBUG: 更新wechat数据源客户失败,异常信息: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("更新wechat数据源客户失败: " + e.getMessage());
}
}
/**
* 获取primary数据源的客户数据
* @return primary数据源的客户数据列表
*/
private List<CustomerData> getPrimaryCustomers() {
List<CustomerData> primaryCustomers = new ArrayList<>();
// 获取所有联系人信息
List<Contacts> contactsList = customerMapper.getAllContacts();
for (Contacts contacts : contactsList) {
CustomerData customerData = new CustomerData();
// 设置联系人基本信息
customerData.setId(contacts.getId()); // 设置客户ID
customerData.setNickName(contacts.getNickName());
customerData.setPhoneNumber(contacts.getPhoneNumber());
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
customerData.setFollowup(contacts.getFollowup());
customerData.setCreated_at(contacts.getCreated_at());
customerData.setUpdated_at(contacts.getUpdated_at());
// 获取并设置企业信息
Enterprise enterprise = customerMapper.getEnterpriseByContactId(contacts.getId());
if (enterprise != null) {
customerData.setCompany(enterprise.getCompany());
customerData.setRegion(enterprise.getRegion());
// 明确设置部门公海池的level值,与wechat数据保持一致
customerData.setLevel("department-sea-pools");
customerData.setType(enterprise.getType());
customerData.setDemand(enterprise.getDemand());
customerData.setSpec(enterprise.getSpec());
}
// 获取并设置负责人信息
Managers managers = customerMapper.getManagerByContactId(contacts.getId());
if (managers != null) {
customerData.setManagercompany(managers.getManagercompany());
customerData.setManagerdepartment(managers.getManagerdepartment());
customerData.setOrganization(managers.getOrganization());
customerData.setProjectName(managers.getRole()); // 使用实际的role字段
customerData.setRole(managers.getRole()); // 同时设置role字段
customerData.setUserName(managers.getUserName());
customerData.setAssistant(managers.getAssistant());
}
// 设置收藏产品信息(primary数据源暂时没有收藏功能)
customerData.setFavorites(new ArrayList<>());
primaryCustomers.add(customerData);
}
return primaryCustomers;
}
/**
* 获取wechat数据源的客户数据
* @return wechat数据源的客户数据列表
*/
private List<CustomerData> getWechatCustomers() {
List<CustomerData> wechatCustomers = new ArrayList<>();
// 获取所有用户信息
List<Users> usersList = wechatCustomerMapper.getAllUsers();
for (Users user : usersList) {
// 跳过type为manager的用户
if ("manager".equals(user.getType())) {
continue;
}
CustomerData customerData = new CustomerData();
// 设置用户基本信息
customerData.setId(user.getUserId()); // 设置客户ID
customerData.setNickName(user.getNickName());
customerData.setPhoneNumber(user.getPhoneNumber());
customerData.setType(user.getType());
customerData.setCompany(user.getCompany());
customerData.setRegion(user.getRegion());
customerData.setLevel(user.getLevel());
customerData.setDemand(user.getDemand());
customerData.setSpec(user.getSpec());
customerData.setFollowup(user.getFollowup());
customerData.setNotice(user.getNotice());
customerData.setFollowup_at(user.getFollowup_at());
customerData.setCreated_at(user.getCreated_at());
customerData.setUpdated_at(user.getUpdated_at());
// 获取并设置联系人信息
UsersContacts contacts = wechatCustomerMapper.getContactsByUserId(user.getUserId());
if (contacts != null) {
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
}
// 获取并设置负责人信息
UsersManagements managements = wechatCustomerMapper.getManagementsByUserId(user.getUserId()); // 使用user.getUserId()获取关联字段
if (managements != null) {
customerData.setManagercompany(managements.getManagercompany());
customerData.setManagerdepartment(managements.getManagerdepartment());
customerData.setOrganization(managements.getOrganization());
customerData.setProjectName(managements.getRole()); // 使用role字段作为职位信息
customerData.setRole(managements.getRole()); // 同时设置role字段
customerData.setUserName(managements.getUserName());
customerData.setAssistant(managements.getAssistant());
}
// 获取并设置收藏产品信息
customerData.setFavorites(getProductFavorites(user.getPhoneNumber()));
wechatCustomers.add(customerData);
}
return wechatCustomers;
}
/**
* 比较两个对象是否相等处理null情况
* @param obj1 第一个对象
* @param obj2 第二个对象
* @return 是否相等
*/
private boolean equals(Object obj1, Object obj2) {
if (obj1 == null && obj2 == null) {
return true;
}
if (obj1 == null || obj2 == null) {
return false;
}
return obj1.equals(obj2);
}
/**
* URL解码工具方法
* @param encodedStr URL编码的字符串
* @return 解码后的字符串
*/
private String urlDecode(String encodedStr) {
if (encodedStr == null) {
return null;
}
try {
return URLDecoder.decode(encodedStr, StandardCharsets.UTF_8.name());
} catch (Exception e) {
// 如果解码失败,返回原始字符串
return encodedStr;
}
}
/**
* 获取用户收藏的产品信息
* @param userPhone 用户手机号
* @return 产品收藏列表
*/
private List<CustomerData.ProductFavorite> getProductFavorites(String userPhone) {
List<CustomerData.ProductFavorite> productFavorites = new ArrayList<>();
// 获取收藏的产品ID列表
List<Favorites> favoritesList = wechatCustomerMapper.getFavoritesByUserPhone(userPhone);
for (Favorites favorite : favoritesList) {
// 获取产品信息
Products product = wechatCustomerMapper.getProductById(favorite.getProductId());
if (product != null) {
CustomerData.ProductFavorite productFavorite = new CustomerData.ProductFavorite();
productFavorite.setProductName(product.getProductName());
productFavorite.setPrice(product.getPrice());
productFavorite.setQuantity(String.valueOf(product.getQuantity()));
productFavorite.setGrossWeight(product.getGrossWeight());
productFavorite.setYolk(product.getYolk());
productFavorite.setFavoriteDate(favorite.getDate());
productFavorites.add(productFavorite);
}
}
return productFavorites;
}
/**
* 获取primary数据源的部门公海池数据
* @param login 用户登录信息
* @return primary数据源的部门公海池数据
*/
private List<CustomerData> getPrimaryDepartmentSeaPool(String role, Login login) {
List<CustomerData> departmentSeaPool = new ArrayList<>();
// 获取部门公海池的联系人信息
List<Contacts> contactsList = customerMapper.getDepartmentSeaPoolContacts(
role, login.getManagercompany(), login.getManagerdepartment());
for (Contacts contacts : contactsList) {
CustomerData customerData = new CustomerData();
// 设置联系人基本信息
customerData.setId(contacts.getId()); // 设置客户ID
customerData.setNickName(contacts.getNickName());
customerData.setPhoneNumber(contacts.getPhoneNumber());
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
customerData.setFollowup(contacts.getFollowup());
customerData.setCreated_at(contacts.getCreated_at());
customerData.setUpdated_at(contacts.getUpdated_at());
// 获取并设置企业信息
Enterprise enterprise = customerMapper.getEnterpriseByContactId(contacts.getId());
if (enterprise != null) {
customerData.setCompany(enterprise.getCompany());
customerData.setRegion(enterprise.getRegion());
// 统一设置部门公海池的level值
customerData.setLevel("department-sea-pools");
customerData.setType(enterprise.getType());
customerData.setDemand(enterprise.getDemand());
customerData.setSpec(enterprise.getSpec());
}
// 获取并设置负责人信息
Managers managers = customerMapper.getManagerByContactId(contacts.getId());
if (managers != null) {
customerData.setManagercompany(managers.getManagercompany());
customerData.setManagerdepartment(managers.getManagerdepartment());
customerData.setOrganization(managers.getOrganization());
customerData.setProjectName(managers.getRole()); // 使用实际的role字段
customerData.setRole(managers.getRole()); // 同时设置role字段
customerData.setUserName(managers.getUserName());
customerData.setAssistant(managers.getAssistant());
} else {
// 如果没有负责人信息,使用登录用户的公司和部门信息
customerData.setManagercompany(login.getManagercompany());
customerData.setManagerdepartment(login.getManagerdepartment());
customerData.setOrganization("无");
customerData.setProjectName("无");
customerData.setRole("无");
customerData.setUserName("无");
customerData.setAssistant("无");
}
// 设置收藏产品信息
customerData.setFavorites(new ArrayList<>());
departmentSeaPool.add(customerData);
}
return departmentSeaPool;
}
/**
* 获取wechat数据源的部门公海池数据
* @param login 用户登录信息
* @return wechat数据源的部门公海池数据
*/
private List<CustomerData> getWechatDepartmentSeaPool(String role, Login login) {
List<CustomerData> departmentSeaPool = new ArrayList<>();
// 添加日志输出
System.out.println("DEBUG: getWechatDepartmentSeaPool - role: " + role);
System.out.println("DEBUG: getWechatDepartmentSeaPool - managercompany: " + login.getManagercompany());
System.out.println("DEBUG: getWechatDepartmentSeaPool - managerdepartment: " + login.getManagerdepartment());
// 获取部门公海池的用户信息
List<Users> usersList = wechatCustomerMapper.getDepartmentSeaPoolUsers(
role, login.getManagercompany(), login.getManagerdepartment());
System.out.println("DEBUG: getWechatDepartmentSeaPool - usersList size: " + (usersList != null ? usersList.size() : 0));
System.out.println("DEBUG: getWechatDepartmentSeaPool - usersList: " + usersList);
for (Users user : usersList) {
// 跳过type为manager的用户
if ("manager".equals(user.getType())) {
continue;
}
CustomerData customerData = new CustomerData();
// 设置用户基本信息
customerData.setId(user.getUserId()); // 设置客户ID
customerData.setNickName(user.getNickName());
customerData.setPhoneNumber(user.getPhoneNumber());
customerData.setType(user.getType());
customerData.setCompany(user.getCompany());
customerData.setRegion(user.getRegion());
// 明确设置部门公海池的level值
customerData.setLevel("department-sea-pools");
customerData.setDemand(user.getDemand());
customerData.setFollowup(user.getFollowup());
customerData.setNotice(user.getNotice());
customerData.setFollowup_at(user.getFollowup_at());
customerData.setCreated_at(user.getCreated_at());
customerData.setUpdated_at(user.getUpdated_at());
// 获取并设置联系人信息
UsersContacts contacts = wechatCustomerMapper.getContactsByUserId(user.getUserId());
if (contacts != null) {
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
}
// 获取并设置负责人信息
UsersManagements managements = wechatCustomerMapper.getManagementsByUserId(user.getUserId()); // 使用user.getUserId()获取关联字段
if (managements != null) {
customerData.setManagercompany(managements.getManagercompany());
customerData.setManagerdepartment(managements.getManagerdepartment());
customerData.setOrganization(managements.getOrganization());
customerData.setProjectName(managements.getRole()); // 使用role字段作为职位信息
customerData.setRole(managements.getRole()); // 同时设置role字段
customerData.setUserName(managements.getUserName());
customerData.setAssistant(managements.getAssistant());
} else {
// 如果没有负责人信息,使用登录用户的公司和部门信息
customerData.setManagercompany(login.getManagercompany());
customerData.setManagerdepartment(login.getManagerdepartment());
customerData.setOrganization("无");
customerData.setProjectName("无");
customerData.setRole("无");
customerData.setUserName("无");
customerData.setAssistant("无");
}
// 获取并设置收藏产品信息
customerData.setFavorites(getProductFavorites(user.getPhoneNumber()));
departmentSeaPool.add(customerData);
}
return departmentSeaPool;
}
/**
* 获取primary数据源的组织公海池数据
* @param login 用户登录信息
* @return primary数据源的组织公海池数据
*/
private List<CustomerData> getPrimaryOrganizationSeaPool(String role, Login login) {
List<CustomerData> organizationSeaPool = new ArrayList<>();
// 获取组织公海池的联系人信息
List<Contacts> contactsList = customerMapper.getOrganizationSeaPoolContacts(
role, login.getManagercompany(), login.getManagerdepartment(), login.getOrganization());
for (Contacts contacts : contactsList) {
CustomerData customerData = new CustomerData();
// 设置联系人基本信息
customerData.setId(contacts.getId()); // 设置客户ID
customerData.setNickName(contacts.getNickName());
customerData.setPhoneNumber(contacts.getPhoneNumber());
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
customerData.setFollowup(contacts.getFollowup());
customerData.setCreated_at(contacts.getCreated_at());
customerData.setUpdated_at(contacts.getUpdated_at());
// 获取并设置企业信息
Enterprise enterprise = customerMapper.getEnterpriseByContactId(contacts.getId());
if (enterprise != null) {
customerData.setCompany(enterprise.getCompany());
customerData.setRegion(enterprise.getRegion());
// 统一设置组织公海池的level值
customerData.setLevel("organization-sea-pools");
customerData.setType(enterprise.getType());
customerData.setDemand(enterprise.getDemand());
}
// 获取并设置负责人信息
Managers managers = customerMapper.getManagerByContactId(contacts.getId());
if (managers != null) {
customerData.setManagercompany(managers.getManagercompany());
customerData.setManagerdepartment(managers.getManagerdepartment());
customerData.setOrganization(managers.getOrganization());
customerData.setProjectName(managers.getRole()); // 使用实际的role字段
customerData.setRole(managers.getRole()); // 同时设置role字段
customerData.setUserName(managers.getUserName());
customerData.setAssistant(managers.getAssistant());
} else {
// 如果没有负责人信息,使用登录用户的公司、部门和组织信息
customerData.setManagercompany(login.getManagercompany());
customerData.setManagerdepartment(login.getManagerdepartment());
customerData.setOrganization(login.getOrganization());
customerData.setProjectName("无");
customerData.setRole("无");
customerData.setUserName("无");
customerData.setAssistant("无");
}
// 设置收藏产品信息
customerData.setFavorites(new ArrayList<>());
organizationSeaPool.add(customerData);
}
return organizationSeaPool;
}
/**
* 获取wechat数据源的组织公海池数据
* @param login 用户登录信息
* @return wechat数据源的组织公海池数据
*/
private List<CustomerData> getWechatOrganizationSeaPool(String role, Login login) {
List<CustomerData> organizationSeaPool = new ArrayList<>();
// 添加日志输出
System.out.println("DEBUG: getWechatOrganizationSeaPool - role: " + role);
System.out.println("DEBUG: getWechatOrganizationSeaPool - managercompany: " + login.getManagercompany());
System.out.println("DEBUG: getWechatOrganizationSeaPool - managerdepartment: " + login.getManagerdepartment());
System.out.println("DEBUG: getWechatOrganizationSeaPool - organization: " + login.getOrganization());
// 获取组织公海池的用户信息
List<Users> usersList = wechatCustomerMapper.getOrganizationSeaPoolUsers(
role, login.getManagercompany(), login.getManagerdepartment(), login.getOrganization());
System.out.println("DEBUG: getWechatOrganizationSeaPool - usersList size: " + (usersList != null ? usersList.size() : 0));
System.out.println("DEBUG: getWechatOrganizationSeaPool - usersList: " + usersList);
for (Users user : usersList) {
// 跳过type为manager的用户
if ("manager".equals(user.getType())) {
continue;
}
CustomerData customerData = new CustomerData();
// 设置用户基本信息
customerData.setId(user.getUserId()); // 设置客户ID
customerData.setNickName(user.getNickName());
customerData.setPhoneNumber(user.getPhoneNumber());
customerData.setType(user.getType());
customerData.setCompany(user.getCompany());
customerData.setRegion(user.getRegion());
// 明确设置组织公海池的level值
customerData.setLevel("organization-sea-pools");
customerData.setDemand(user.getDemand());
customerData.setFollowup(user.getFollowup());
customerData.setNotice(user.getNotice());
customerData.setFollowup_at(user.getFollowup_at());
customerData.setCreated_at(user.getCreated_at());
customerData.setUpdated_at(user.getUpdated_at());
// 获取并设置联系人信息
UsersContacts contacts = wechatCustomerMapper.getContactsByUserId(user.getUserId());
if (contacts == null) {
// 如果通过userId没有找到联系人信息,尝试通过电话号码获取
contacts = wechatCustomerMapper.getContactsByPhoneNumber(user.getPhoneNumber());
}
if (contacts != null) {
customerData.setWechat(contacts.getWechat());
customerData.setAccount(contacts.getAccount());
customerData.setAccountNumber(contacts.getAccountNumber());
customerData.setBank(contacts.getBank());
customerData.setAddress(contacts.getAddress());
}
// 获取并设置负责人信息
UsersManagements managements = wechatCustomerMapper.getManagementsByUserId(user.getUserId());
if (managements != null) {
customerData.setManagercompany(managements.getManagercompany());
customerData.setManagerdepartment(managements.getManagerdepartment());
customerData.setOrganization(managements.getOrganization());
customerData.setProjectName(managements.getRole()); // 使用role字段作为职位信息
customerData.setRole(managements.getRole()); // 同时设置role字段
customerData.setUserName(managements.getUserName());
customerData.setAssistant(managements.getAssistant());
} else {
// 如果没有负责人信息,使用登录用户的公司、部门和组织信息
customerData.setManagercompany(login.getManagercompany());
customerData.setManagerdepartment(login.getManagerdepartment());
customerData.setOrganization(login.getOrganization());
customerData.setProjectName("无");
customerData.setRole("无");
customerData.setUserName("无");
customerData.setAssistant("无");
}
// 获取并设置收藏产品信息
customerData.setFavorites(getProductFavorites(user.getPhoneNumber()));
organizationSeaPool.add(customerData);
}
return organizationSeaPool;
}
}