Files
template-10579/后端Controller修改提示.md
赵忠林 d928a38962 fix(credit): 修复客户跟进流程步骤验证逻辑
- 修改第2步验证逻辑,允许直接进入无需审核通过
- 将第3-7步的验证条件从提交状态改为审核状态
- 更新开发环境API基础URL配置
- 添加后端Controller审核接口实现提示
- 补充步骤功能测试指南文档
2026-03-23 00:24:35 +08:00

299 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 后端Controller修改提示词
## 🎯 需要修改的文件
`/Users/gxwebsoft/VUE/template-10579/JAVA/mp-java/src/main/java/com/gxwebsoft/credit/controller/CreditMpCustomerController.java`
## 📝 具体修改内容
### 1. 添加新的接口方法
在现有的 `CreditMpCustomerController` 类中添加以下方法:
```java
/**
* 审核跟进步骤
*/
@PostMapping("/approve-follow-step")
@OperLog(title = "审核跟进步骤", businessType = BusinessType.UPDATE)
public R<Void> approveFollowStep(@RequestBody FollowStepApprovalDTO dto) {
creditMpCustomerService.approveFollowStep(dto);
return R.ok();
}
/**
* 批量审核跟进步骤
*/
@PostMapping("/batch-approve-follow-steps")
@OperLog(title = "批量审核跟进步骤", businessType = BusinessType.UPDATE)
public R<Void> batchApproveFollowSteps(@RequestBody BatchFollowStepApprovalDTO dto) {
creditMpCustomerService.batchApproveFollowSteps(dto);
return R.ok();
}
/**
* 获取待审核的跟进步骤列表
*/
@GetMapping("/pending-approval-steps")
@OperLog(title = "获取待审核跟进步骤", businessType = BusinessType.SELECT)
public R<List<PendingApprovalStepVO>> getPendingApprovalSteps(FollowStepQueryDTO query) {
List<PendingApprovalStepVO> list = creditMpCustomerService.getPendingApprovalSteps(query);
return R.ok(list);
}
/**
* 获取客户跟进统计
*/
@GetMapping("/follow-statistics/{customerId}")
@OperLog(title = "获取客户跟进统计", businessType = BusinessType.SELECT)
public R<FollowStatisticsDTO> getFollowStatistics(@PathVariable Long customerId) {
FollowStatisticsDTO statistics = creditMpCustomerService.getFollowStatistics(customerId);
return R.ok(statistics);
}
/**
* 结束客户跟进流程
*/
@PostMapping("/end-follow-process")
@OperLog(title = "结束客户跟进流程", businessType = BusinessType.UPDATE)
public R<Void> endFollowProcess(@RequestBody EndFollowProcessDTO dto) {
creditMpCustomerService.endFollowProcess(dto.getCustomerId(), dto.getReason());
return R.ok();
}
```
### 2. 添加必要的导入
在文件顶部添加以下导入语句:
```java
import com.your.package.dto.FollowStepApprovalDTO;
import com.your.package.dto.BatchFollowStepApprovalDTO;
import com.your.package.dto.FollowStepQueryDTO;
import com.your.package.dto.PendingApprovalStepVO;
import com.your.package.dto.FollowStatisticsDTO;
import com.your.package.dto.EndFollowProcessDTO;
import com.your.package.annotation.OperLog;
import com.your.package.enums.BusinessType;
```
### 3. 需要创建的DTO类
#### FollowStepApprovalDTO.java
```java
@Data
public class FollowStepApprovalDTO {
private Long customerId;
private Integer step;
private Boolean approved;
private String remark;
}
```
#### BatchFollowStepApprovalDTO.java
```java
@Data
public class BatchFollowStepApprovalDTO {
private List<FollowStepApprovalDTO> approvals;
}
```
#### FollowStepQueryDTO.java
```java
@Data
public class FollowStepQueryDTO {
private Integer step;
private Long customerId;
private Long userId;
}
```
#### PendingApprovalStepVO.java
```java
@Data
public class PendingApprovalStepVO {
private Long customerId;
private String customerName;
private Integer step;
private String stepTitle;
private String submittedAt;
private String submittedBy;
private Object content;
}
```
#### FollowStatisticsDTO.java
```java
@Data
public class FollowStatisticsDTO {
private Integer totalSteps;
private Integer completedSteps;
private Integer currentStep;
private Double progress;
private List<FollowStepDetailDTO> stepDetails;
}
```
#### FollowStepDetailDTO.java
```java
@Data
public class FollowStepDetailDTO {
private Integer step;
private String title;
private String status; // pending, submitted, approved, rejected
private String submittedAt;
private String approvedAt;
}
```
#### EndFollowProcessDTO.java
```java
@Data
public class EndFollowProcessDTO {
private Long customerId;
private String reason;
}
```
### 4. Service层需要添加的方法
`CreditMpCustomerService` 接口中添加:
```java
/**
* 审核跟进步骤
*/
void approveFollowStep(FollowStepApprovalDTO dto);
/**
* 批量审核跟进步骤
*/
void batchApproveFollowSteps(BatchFollowStepApprovalDTO dto);
/**
* 获取待审核的跟进步骤列表
*/
List<PendingApprovalStepVO> getPendingApprovalSteps(FollowStepQueryDTO query);
/**
* 获取客户跟进统计
*/
FollowStatisticsDTO getFollowStatistics(Long customerId);
/**
* 结束客户跟进流程
*/
void endFollowProcess(Long customerId, String reason);
```
### 5. 实体类修改
`CreditMpCustomer.java` 中添加第5-7步的字段
```java
// 第5步字段
private Integer followStep5Submitted;
private String followStep5SubmittedAt;
private String followStep5Contracts;
private Integer followStep5NeedApproval;
private Integer followStep5Approved;
private String followStep5ApprovedAt;
private Long followStep5ApprovedBy;
// 第6步字段
private Integer followStep6Submitted;
private String followStep6SubmittedAt;
private String followStep6PaymentRecords;
private String followStep6ExpectedPayments;
private Integer followStep6NeedApproval;
private Integer followStep6Approved;
private String followStep6ApprovedAt;
private Long followStep6ApprovedBy;
// 第7步字段
private Integer followStep7Submitted;
private String followStep7SubmittedAt;
private String followStep7VisitRecords;
private Integer followStep7NeedApproval;
private Integer followStep7Approved;
private String followStep7ApprovedAt;
private Long followStep7ApprovedBy;
// 流程结束字段
private Integer followProcessEnded;
private String followProcessEndTime;
private String followProcessEndReason;
```
### 6. 数据库修改
执行以下SQL语句
```sql
-- 第5步字段
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_submitted TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_submitted_at VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_contracts TEXT;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_need_approval TINYINT DEFAULT 1;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_approved TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_approved_at VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_approved_by BIGINT;
-- 第6步字段
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_submitted TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_submitted_at VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_payment_records TEXT;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_expected_payments TEXT;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_need_approval TINYINT DEFAULT 1;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_approved TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_approved_at VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_approved_by BIGINT;
-- 第7步字段
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_submitted TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_submitted_at VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_visit_records TEXT;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_need_approval TINYINT DEFAULT 1;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_approved TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_approved_at VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_approved_by BIGINT;
-- 流程结束字段
ALTER TABLE credit_mp_customer ADD COLUMN follow_process_ended TINYINT DEFAULT 0;
ALTER TABLE credit_mp_customer ADD COLUMN follow_process_end_time VARCHAR(255);
ALTER TABLE credit_mp_customer ADD COLUMN follow_process_end_reason TEXT;
```
## 🔧 实施步骤
1. **数据库修改**先执行SQL脚本添加字段
2. **实体类修改**:更新 `CreditMpCustomer.java`
3. **DTO类创建**创建所有需要的DTO类
4. **Service接口**:添加方法定义
5. **Service实现**:实现具体业务逻辑
6. **Controller修改**:添加新的接口方法
7. **Mapper修改**添加必要的SQL查询
## ⚠️ 注意事项
1. **包名替换**:请将 `com.your.package` 替换为实际的包名
2. **注解检查**:确保 `@OperLog``BusinessType` 存在
3. **事务处理**:审核方法需要添加 `@Transactional` 注解
4. **权限控制**:根据需要添加权限验证注解
5. **数据验证**在Service层添加必要的数据验证逻辑
## 🧪 测试建议
1. 测试步骤提交和审核流程
2. 测试批量审核功能
3. 测试统计接口返回的数据格式
4. 测试流程结束功能
5. 验证步骤解锁逻辑是否正确
## 📋 完整的业务流程
1. 销售人员提交步骤 → 设置 `submitted=1`, `needApproval=1`
2. 管理员审核 → 设置 `approved=0/1`, 记录审核时间和审核人
3. 前端检查 `approved` 状态决定是否解锁下一步
4. 支持查看待审核列表和批量操作
5. 提供进度统计和流程管理功能