Merge remote-tracking branch 'origin/develop' into develop
commit
75f2b207a4
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.business.bo;
|
||||||
|
|
||||||
|
import com.mzt.logapi.starter.annotation.DiffLogField;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商机跟进信息 Update Req BO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CrmBusinessUpdateFollowUpReqBO {
|
||||||
|
|
||||||
|
@Schema(description = "商机编号", example = "3167")
|
||||||
|
@NotNull(message = "商机编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "最后跟进时间")
|
||||||
|
@DiffLogField(name = "最后跟进时间")
|
||||||
|
@NotNull(message = "最后跟进时间不能为空")
|
||||||
|
private LocalDateTime contactLastTime;
|
||||||
|
|
||||||
|
@Schema(description = "下次联系时间")
|
||||||
|
@DiffLogField(name = "下次联系时间")
|
||||||
|
@NotNull(message = "下次联系时间不能为空")
|
||||||
|
private LocalDateTime contactNextTime;
|
||||||
|
|
||||||
|
@Schema(description = "最后更进内容")
|
||||||
|
@DiffLogField(name = "最后更进内容")
|
||||||
|
@NotNull(message = "最后更进内容不能为空")
|
||||||
|
private String contactLastContent;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.clue.bo;
|
||||||
|
|
||||||
|
import com.mzt.logapi.starter.annotation.DiffLogField;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 线索跟进信息 Update Req BO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CrmClueUpdateFollowUpReqBO {
|
||||||
|
|
||||||
|
@Schema(description = "线索编号", example = "3167")
|
||||||
|
@NotNull(message = "线索编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "最后跟进时间")
|
||||||
|
@DiffLogField(name = "最后跟进时间")
|
||||||
|
@NotNull(message = "最后跟进时间不能为空")
|
||||||
|
private LocalDateTime contactLastTime;
|
||||||
|
|
||||||
|
@Schema(description = "下次联系时间")
|
||||||
|
@DiffLogField(name = "下次联系时间")
|
||||||
|
@NotNull(message = "下次联系时间不能为空")
|
||||||
|
private LocalDateTime contactNextTime;
|
||||||
|
|
||||||
|
@Schema(description = "最后更进内容")
|
||||||
|
@DiffLogField(name = "最后更进内容")
|
||||||
|
@NotNull(message = "最后更进内容不能为空")
|
||||||
|
private String contactLastContent;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.contact.bo;
|
||||||
|
|
||||||
|
import com.mzt.logapi.starter.annotation.DiffLogField;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系人跟进信息 Update Req BO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CrmContactUpdateFollowUpReqBO {
|
||||||
|
|
||||||
|
@Schema(description = "联系人编号", example = "3167")
|
||||||
|
@NotNull(message = "联系人编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "最后跟进时间")
|
||||||
|
@DiffLogField(name = "最后跟进时间")
|
||||||
|
@NotNull(message = "最后跟进时间不能为空")
|
||||||
|
private LocalDateTime contactLastTime;
|
||||||
|
|
||||||
|
@Schema(description = "下次联系时间")
|
||||||
|
@DiffLogField(name = "下次联系时间")
|
||||||
|
@NotNull(message = "下次联系时间不能为空")
|
||||||
|
private LocalDateTime contactNextTime;
|
||||||
|
|
||||||
|
@Schema(description = "最后更进内容")
|
||||||
|
@DiffLogField(name = "最后更进内容")
|
||||||
|
@NotNull(message = "最后更进内容不能为空")
|
||||||
|
private String contactLastContent;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.contract.bo;
|
||||||
|
|
||||||
|
import com.mzt.logapi.starter.annotation.DiffLogField;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同跟进信息 Update Req BO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CrmContractUpdateFollowUpReqBO {
|
||||||
|
|
||||||
|
@Schema(description = "合同编号", example = "3167")
|
||||||
|
@NotNull(message = "合同编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "最后跟进时间")
|
||||||
|
@DiffLogField(name = "最后跟进时间")
|
||||||
|
@NotNull(message = "最后跟进时间不能为空")
|
||||||
|
private LocalDateTime contactLastTime;
|
||||||
|
|
||||||
|
@Schema(description = "下次联系时间")
|
||||||
|
@DiffLogField(name = "下次联系时间")
|
||||||
|
@NotNull(message = "下次联系时间不能为空")
|
||||||
|
private LocalDateTime contactNextTime;
|
||||||
|
|
||||||
|
@Schema(description = "最后更进内容")
|
||||||
|
@DiffLogField(name = "最后更进内容")
|
||||||
|
@NotNull(message = "最后更进内容不能为空")
|
||||||
|
private String contactLastContent;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.customer.bo;
|
||||||
|
|
||||||
|
import com.mzt.logapi.starter.annotation.DiffLogField;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进信息 Update Req BO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CrmCustomerUpdateFollowUpReqBO {
|
||||||
|
|
||||||
|
@Schema(description = "主键", example = "3167")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "最后跟进时间")
|
||||||
|
@DiffLogField(name = "最后跟进时间")
|
||||||
|
private LocalDateTime contactLastTime;
|
||||||
|
|
||||||
|
@Schema(description = "下次联系时间")
|
||||||
|
@DiffLogField(name = "下次联系时间")
|
||||||
|
private LocalDateTime contactNextTime;
|
||||||
|
|
||||||
|
@Schema(description = "最后更进内容")
|
||||||
|
@DiffLogField(name = "最后更进内容")
|
||||||
|
private String contactLastContent;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.followup.handle;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.business.CrmBusinessService;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.business.bo.CrmBusinessUpdateFollowUpReqBO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 商机的 {@link CrmFollowUpHandler} 实现类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class CrmBusinessFollowUpHandler implements CrmFollowUpHandler {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CrmBusinessService businessService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CrmFollowUpRecordDO followUpRecord, LocalDateTime now) {
|
||||||
|
if (ObjUtil.notEqual(CrmBizTypeEnum.CRM_BUSINESS.getType(), followUpRecord.getBizType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新商机跟进信息
|
||||||
|
CrmBusinessUpdateFollowUpReqBO businessUpdateFollowUpReqBO = new CrmBusinessUpdateFollowUpReqBO();
|
||||||
|
businessUpdateFollowUpReqBO.setId(followUpRecord.getBizId()).setContactNextTime(followUpRecord.getNextTime())
|
||||||
|
.setContactLastTime(now).setContactLastContent(followUpRecord.getContent());
|
||||||
|
businessService.updateContactFollowUpBatch(Collections.singletonList(businessUpdateFollowUpReqBO));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.followup.handle;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.clue.CrmClueService;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.clue.bo.CrmClueUpdateFollowUpReqBO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 线索的 {@link CrmFollowUpHandler} 实现类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class CrmClueFollowUpHandler implements CrmFollowUpHandler {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CrmClueService clueService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CrmFollowUpRecordDO followUpRecord, LocalDateTime now) {
|
||||||
|
if (ObjUtil.notEqual(CrmBizTypeEnum.CRM_LEADS.getType(), followUpRecord.getBizType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新线索跟进信息
|
||||||
|
CrmClueUpdateFollowUpReqBO clueUpdateFollowUpReqBO = new CrmClueUpdateFollowUpReqBO();
|
||||||
|
clueUpdateFollowUpReqBO.setId(followUpRecord.getBizId()).setContactNextTime(followUpRecord.getNextTime())
|
||||||
|
.setContactLastTime(now).setContactLastContent(followUpRecord.getContent());
|
||||||
|
clueService.updateClueFollowUp(clueUpdateFollowUpReqBO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.followup.handle;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.contact.CrmContactService;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.contact.bo.CrmContactUpdateFollowUpReqBO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 联系人的 {@link CrmFollowUpHandler} 实现类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class CrmContactFollowUpHandler implements CrmFollowUpHandler {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CrmContactService contactService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CrmFollowUpRecordDO followUpRecord, LocalDateTime now) {
|
||||||
|
if (ObjUtil.notEqual(CrmBizTypeEnum.CRM_CONTACT.getType(), followUpRecord.getBizType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新联系人跟进信息
|
||||||
|
CrmContactUpdateFollowUpReqBO contactUpdateFollowUpReqBO = new CrmContactUpdateFollowUpReqBO();
|
||||||
|
contactUpdateFollowUpReqBO.setId(followUpRecord.getBizId()).setContactNextTime(followUpRecord.getNextTime())
|
||||||
|
.setContactLastTime(now).setContactLastContent(followUpRecord.getContent());
|
||||||
|
contactService.updateContactFollowUpBatch(Collections.singletonList(contactUpdateFollowUpReqBO));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.followup.handle;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.contract.bo.CrmContractUpdateFollowUpReqBO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 合同的 {@link CrmFollowUpHandler} 实现类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class CrmContractFollowUpHandler implements CrmFollowUpHandler {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CrmContractService contractService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CrmFollowUpRecordDO followUpRecord, LocalDateTime now) {
|
||||||
|
if (ObjUtil.notEqual(CrmBizTypeEnum.CRM_CONTRACT.getType(), followUpRecord.getBizType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新合同跟进信息
|
||||||
|
CrmContractUpdateFollowUpReqBO contractUpdateFollowUpReqBO = new CrmContractUpdateFollowUpReqBO();
|
||||||
|
contractUpdateFollowUpReqBO.setId(followUpRecord.getBizId()).setContactNextTime(followUpRecord.getNextTime())
|
||||||
|
.setContactLastTime(now).setContactLastContent(followUpRecord.getContent());
|
||||||
|
contractService.updateContractFollowUp(contractUpdateFollowUpReqBO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.followup.handle;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
|
||||||
|
import cn.iocoder.yudao.module.crm.service.customer.bo.CrmCustomerUpdateFollowUpReqBO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 客户的 {@link CrmFollowUpHandler} 实现类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class CrmCustomerFollowUpHandler implements CrmFollowUpHandler {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CrmCustomerService customerService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CrmFollowUpRecordDO followUpRecord, LocalDateTime now) {
|
||||||
|
if (ObjUtil.notEqual(CrmBizTypeEnum.CRM_CUSTOMER.getType(), followUpRecord.getBizType())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新客户跟进信息
|
||||||
|
CrmCustomerUpdateFollowUpReqBO customerUpdateFollowUpReqBO = new CrmCustomerUpdateFollowUpReqBO();
|
||||||
|
customerUpdateFollowUpReqBO.setId(followUpRecord.getBizId()).setContactNextTime(followUpRecord.getNextTime())
|
||||||
|
.setContactLastTime(now).setContactLastContent(followUpRecord.getContent());
|
||||||
|
customerService.updateCustomerFollowUp(customerUpdateFollowUpReqBO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.service.followup.handle;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.followup.CrmFollowUpRecordDO;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 跟进信息处理器 handler 接口
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
public interface CrmFollowUpHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行更新
|
||||||
|
*
|
||||||
|
* @param followUpRecord 跟进记录
|
||||||
|
* @param now 跟进时间
|
||||||
|
*/
|
||||||
|
void execute(CrmFollowUpRecordDO followUpRecord, LocalDateTime now);
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue