一、系统核心功能设计
1. 客户信息管理
- 字段:客户名称、联系方式、信用等级、历史交易记录
- 功能:支持客户信用评级(如A/B/C级),自动关联欠款风险预警
2. 订单与欠款关联
- 订单字段:订单号、日期、商品明细、应付金额、已付金额、欠款金额
- 逻辑:订单提交时自动计算欠款(应付-已付),生成唯一欠款ID
3. 欠款跟踪与提醒
- 状态机:未付款→部分付款→已结清
- 提醒规则:可配置逾期天数(如3天/7天/15天)触发短信/邮件提醒
4. 还款记录
- 字段:还款日期、金额、支付方式、操作人
- 关联:每次还款自动更新欠款状态,生成还款凭证
5. 报表与统计
- 欠款总额看板
- 客户欠款排名
- 逾期账款分析(按时间/客户/商品分类)
二、万象源码部署方案
1. 技术栈选择
- 后端:Spring Boot + MyBatis(快速开发,支持复杂业务逻辑)
- 前端:Vue.js + Element UI(响应式界面,适配PC/移动端)
- 数据库:MySQL(事务支持,适合财务数据)
- 部署环境:Docker容器化部署(便于扩展与维护)
2. 核心代码结构示例
```java
// 欠款实体类(简化版)
public class Debt {
private Long id;
private Long customerId;
private BigDecimal totalAmount;
private BigDecimal paidAmount;
private Date dueDate;
private String status; // 未付款/部分付款/已结清
// getters/setters...
}
// 欠款服务接口
public interface DebtService {
Debt createDebt(Order order); // 订单生成欠款
boolean recordPayment(Long debtId, BigDecimal amount); // 记录还款
List getOverdueDebts(int days); // 查询逾期欠款
}
```
3. 数据库表设计
```sql
CREATE TABLE `customer` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`credit_level` ENUM(A,B,C) DEFAULT B
);
CREATE TABLE `debt` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`customer_id` BIGINT NOT NULL,
`order_id` BIGINT NOT NULL,
`total_amount` DECIMAL(10,2) NOT NULL,
`paid_amount` DECIMAL(10,2) DEFAULT 0,
`due_date` DATE NOT NULL,
`status` ENUM(PENDING,PARTIAL,PAID) DEFAULT PENDING,
FOREIGN KEY (`customer_id`) REFERENCES `customer`(`id`)
);
```
三、关键业务逻辑实现
1. 订单生成欠款
```java
@Transactional
public Debt createDebt(Order order) {
Debt debt = new Debt();
debt.setCustomerId(order.getCustomerId());
debt.setTotalAmount(order.getTotalAmount());
debt.setDueDate(calculateDueDate(order.getDate())); // 例如:T+7天
debtRepository.save(debt);
return debt;
}
```
2. 还款处理
```java
@Transactional
public boolean recordPayment(Long debtId, BigDecimal amount) {
Debt debt = debtRepository.findById(debtId)
.orElseThrow(() -> new RuntimeException("Debt not found"));
debt.setPaidAmount(debt.getPaidAmount().add(amount));
if (debt.getPaidAmount().compareTo(debt.getTotalAmount()) >= 0) {
debt.setStatus("PAID");
}
debtRepository.save(debt);
// 生成还款记录(可扩展PaymentRecord表)
return true;
}
```
3. 逾期提醒
```java
public List getOverdueDebts(int days) {
Date cutoffDate = DateUtils.addDays(new Date(), -days);
return debtRepository.findByDueDateBeforeAndStatusNot(cutoffDate, "PAID");
}
```
四、部署与运维建议
1. 容器化部署
```yaml
docker-compose.yml示例
version: 3
services:
app:
image: openjdk:11
ports:
- "8080:8080"
volumes:
- ./target/app.jar:/app.jar
command: ["java", "-jar", "/app.jar"]
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: fruit_debt
```
2. 数据备份
- 每日自动备份MySQL数据库至云存储
- 保留最近30天的备份
3. 权限控制
- 角色:管理员(全权限)、财务(仅查看/操作欠款)、销售(仅查看客户)
五、扩展功能建议
1. 对接支付网关:集成支付宝/微信支付,实现线上还款
2. 电子合同:欠款确认单电子签名功能
3. 多仓库支持:按仓库维度统计欠款
通过以上方案,可实现水果批发系统中欠款的全生命周期管理,从订单生成到还款跟踪,确保数据清晰可追溯。实际部署时需根据业务规模调整技术参数(如数据库分表策略)。