|
|
|
@ -1,13 +1,17 @@ |
|
|
|
package com.example.web.service.impl; |
|
|
|
|
|
|
|
import com.example.web.entity.CustomerApply; |
|
|
|
import com.example.web.entity.InformationTra; |
|
|
|
import com.example.web.entity.Personnel; |
|
|
|
import com.example.web.entity.UserTrace; |
|
|
|
import com.example.web.entity.Users; |
|
|
|
import com.example.web.mapper.CustomerApplyMapper; |
|
|
|
import com.example.web.mapper.PersonnelMapper; |
|
|
|
import com.example.web.mapper.UserTraceMapper; |
|
|
|
import com.example.web.mapper.UsersMapper; |
|
|
|
import com.example.web.mapper.UsersManagementsMapper; |
|
|
|
import com.example.web.service.CustomerApplyService; |
|
|
|
import com.example.web.service.InformationTraService; |
|
|
|
import com.example.web.config.DataSourceContextHolder; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
@ -35,26 +39,61 @@ public class CustomerApplyServiceImpl implements CustomerApplyService { |
|
|
|
@Autowired |
|
|
|
private UsersMapper usersMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private UserTraceMapper userTraceMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private InformationTraService informationTraService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Map<String, Object> submitApply(Map<String, Object> params) { |
|
|
|
Map<String, Object> result = new HashMap<>(); |
|
|
|
|
|
|
|
try { |
|
|
|
// 切换到wechat数据源
|
|
|
|
DataSourceContextHolder.setDataSource("wechat"); |
|
|
|
|
|
|
|
String userId = (String) params.get("userId"); |
|
|
|
String salesId = (String) params.get("salesId"); |
|
|
|
// 获取当前登录信息
|
|
|
|
String salesName = (String) params.get("salesName"); |
|
|
|
String reason = (String) params.get("reason"); |
|
|
|
String traceId = (String) params.get("traceId"); // 从前端传递的浏览记录ID
|
|
|
|
|
|
|
|
if (userId == null || salesId == null || salesName == null) { |
|
|
|
if (salesName == null || traceId == null) { |
|
|
|
result.put("success", false); |
|
|
|
result.put("message", "缺少必要参数"); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
// 检查是否已经有申请记录
|
|
|
|
// 1. 到primary数据源的personnel表里获取业务员的信息
|
|
|
|
DataSourceContextHolder.setDataSource("primary"); |
|
|
|
Personnel personnel = personnelMapper.findByName(salesName); |
|
|
|
if (personnel == null || personnel.getPhoneNumber() == null) { |
|
|
|
result.put("success", false); |
|
|
|
result.put("message", "未找到业务员信息"); |
|
|
|
return result; |
|
|
|
} |
|
|
|
String phoneNumber = personnel.getPhoneNumber(); |
|
|
|
|
|
|
|
// 2. 到wechat数据源的users表里查询业务员的userId
|
|
|
|
DataSourceContextHolder.setDataSource("wechat"); |
|
|
|
Users salesUser = usersMapper.findByPhoneNumber(phoneNumber); |
|
|
|
if (salesUser == null || salesUser.getUserId() == null) { |
|
|
|
result.put("success", false); |
|
|
|
result.put("message", "未找到业务员的用户ID"); |
|
|
|
return result; |
|
|
|
} |
|
|
|
String salesId = salesUser.getUserId(); // 业务员的ID
|
|
|
|
|
|
|
|
// 3. 到wechat数据源的usertraces表里获取相应的客户userId
|
|
|
|
UserTrace trace = userTraceMapper.findById(Integer.parseInt(traceId)); |
|
|
|
if (trace == null || trace.getUserId() == null) { |
|
|
|
result.put("success", false); |
|
|
|
result.put("message", "未找到浏览记录信息"); |
|
|
|
return result; |
|
|
|
} |
|
|
|
String userId = trace.getUserId(); // 客户的ID
|
|
|
|
|
|
|
|
// 允许自己申请自己,这是合理的测试场景
|
|
|
|
// 如果需要防止这种情况,可以在此处添加验证
|
|
|
|
|
|
|
|
// 4. 检查是否已经有申请记录
|
|
|
|
CustomerApply existingApply = customerApplyMapper.findByUserIdAndSalesId(userId, salesId); |
|
|
|
if (existingApply != null && existingApply.getStatus() == 0) { |
|
|
|
result.put("success", false); |
|
|
|
@ -62,8 +101,15 @@ public class CustomerApplyServiceImpl implements CustomerApplyService { |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
// 创建新的申请记录
|
|
|
|
CustomerApply apply = new CustomerApply(userId, salesId, salesName, reason); |
|
|
|
// 5. 获取客户的原始负责人信息
|
|
|
|
String original_manager_name = null; |
|
|
|
com.example.web.entity.UsersManagements existingManagements = usersManagementsMapper.findByUserId(userId); |
|
|
|
if (existingManagements != null) { |
|
|
|
original_manager_name = existingManagements.getUserName(); |
|
|
|
} |
|
|
|
|
|
|
|
// 6. 创建新的申请记录
|
|
|
|
CustomerApply apply = new CustomerApply(userId, salesId, salesName, original_manager_name, reason); |
|
|
|
int count = customerApplyMapper.insert(apply); |
|
|
|
|
|
|
|
if (count > 0) { |
|
|
|
@ -121,20 +167,28 @@ public class CustomerApplyServiceImpl implements CustomerApplyService { |
|
|
|
// 根据id查询完整的申请记录
|
|
|
|
CustomerApply apply = customerApplyMapper.findById(id); |
|
|
|
if (apply != null) { |
|
|
|
// 实现更新客户负责人的逻辑
|
|
|
|
// 1. 使用wechat数据源的customer_apply表里的user_id到usermanagements表里查询
|
|
|
|
com.example.web.entity.UsersManagements usersManagements = usersManagementsMapper.findByUserId(apply.getUser_id()); |
|
|
|
|
|
|
|
// 切换到primary数据源查询personnel表
|
|
|
|
// 2. 将customer_apply表里的original_manager_name的值放到primary数据源的personnel数据源里获取信息
|
|
|
|
DataSourceContextHolder.setDataSource("primary"); |
|
|
|
Personnel originalPersonnel = null; |
|
|
|
if (apply.getOriginal_manager_name() != null) { |
|
|
|
try { |
|
|
|
originalPersonnel = personnelMapper.findByName(apply.getOriginal_manager_name()); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
System.out.println("查询原始负责人信息时发生错误: " + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 从personnel表中查询业务员的详细信息
|
|
|
|
Personnel personnel = null; |
|
|
|
// 3. 从personnel表中查询业务员的详细信息
|
|
|
|
Personnel salesPersonnel = null; |
|
|
|
try { |
|
|
|
// 只通过name查询业务员信息
|
|
|
|
personnel = personnelMapper.findByName(apply.getSales_name()); |
|
|
|
salesPersonnel = personnelMapper.findByName(apply.getSales_name()); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
System.out.println("查询Personnel时发生错误: " + e.getMessage()); |
|
|
|
System.out.println("查询业务员信息时发生错误: " + e.getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
// 切换回wechat数据源
|
|
|
|
@ -144,11 +198,11 @@ public class CustomerApplyServiceImpl implements CustomerApplyService { |
|
|
|
// 更新现有记录
|
|
|
|
usersManagements.setManagerId(apply.getSales_id()); |
|
|
|
usersManagements.setUserName(apply.getSales_name()); |
|
|
|
if (personnel != null) { |
|
|
|
usersManagements.setManagercompany(personnel.getManagercompany()); |
|
|
|
usersManagements.setManagerdepartment(personnel.getManagerdepartment()); |
|
|
|
usersManagements.setOrganization(personnel.getOrganization()); |
|
|
|
usersManagements.setRole(personnel.getProjectName()); // projectName与role同值
|
|
|
|
if (salesPersonnel != null) { |
|
|
|
usersManagements.setManagercompany(salesPersonnel.getManagercompany()); |
|
|
|
usersManagements.setManagerdepartment(salesPersonnel.getManagerdepartment()); |
|
|
|
usersManagements.setOrganization(salesPersonnel.getOrganization()); |
|
|
|
usersManagements.setRole(salesPersonnel.getProjectName()); // role与projectName同值
|
|
|
|
} |
|
|
|
usersManagements.setUpdated_at(LocalDateTime.now()); |
|
|
|
usersManagementsMapper.update(usersManagements); |
|
|
|
@ -167,11 +221,11 @@ public class CustomerApplyServiceImpl implements CustomerApplyService { |
|
|
|
newUsersManagements.setUserId(apply.getUser_id()); |
|
|
|
newUsersManagements.setManagerId(apply.getSales_id()); |
|
|
|
newUsersManagements.setUserName(apply.getSales_name()); |
|
|
|
if (personnel != null) { |
|
|
|
newUsersManagements.setManagercompany(personnel.getManagercompany()); |
|
|
|
newUsersManagements.setManagerdepartment(personnel.getManagerdepartment()); |
|
|
|
newUsersManagements.setOrganization(personnel.getOrganization()); |
|
|
|
newUsersManagements.setRole(personnel.getProjectName()); // projectName与role同值
|
|
|
|
if (salesPersonnel != null) { |
|
|
|
newUsersManagements.setManagercompany(salesPersonnel.getManagercompany()); |
|
|
|
newUsersManagements.setManagerdepartment(salesPersonnel.getManagerdepartment()); |
|
|
|
newUsersManagements.setOrganization(salesPersonnel.getOrganization()); |
|
|
|
newUsersManagements.setRole(salesPersonnel.getProjectName()); // role与projectName同值
|
|
|
|
} |
|
|
|
newUsersManagements.setCreated_at(LocalDateTime.now()); |
|
|
|
newUsersManagements.setUpdated_at(LocalDateTime.now()); |
|
|
|
@ -185,6 +239,24 @@ public class CustomerApplyServiceImpl implements CustomerApplyService { |
|
|
|
System.out.println("客户ID " + apply.getUser_id() + " 在users表中不存在,无法创建usermanagements记录"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 记录分配操作
|
|
|
|
try { |
|
|
|
com.example.web.entity.InformationTra tra = new com.example.web.entity.InformationTra(); |
|
|
|
if (salesPersonnel != null) { |
|
|
|
tra.setTracompany(salesPersonnel.getManagercompany()); |
|
|
|
tra.setTradepartment(salesPersonnel.getManagerdepartment()); |
|
|
|
tra.setTraorganization(salesPersonnel.getOrganization()); |
|
|
|
tra.setTrarole(salesPersonnel.getProjectName()); |
|
|
|
} |
|
|
|
tra.setTrauserName(apply.getSales_name()); |
|
|
|
tra.setUserId(apply.getUser_id()); |
|
|
|
tra.setOperationEvent("申请通过分配客户: " + apply.getSales_name()); |
|
|
|
informationTraService.recordUserOperation(tra); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
System.out.println("记录分配操作时发生错误: " + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|