Java简易客户关系管理系统

功能模块(客户信息管理、销售管理和售后服务)来展示一个完整的代码实现。涵盖了数据库设计、实体类、数据访问层(Repository)、服务层(Service)和控制层(Controller)。

### 1. 数据库设计

#### 客户信息管理

```sql
CREATE TABLE customer (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    contact_number VARCHAR(20)
);

CREATE TABLE contact_person (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    customer_id BIGINT NOT NULL,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100),
    phone_number VARCHAR(20),
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);
```

#### 销售管理

```sql
CREATE TABLE sales_lead (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    lead_name VARCHAR(100) NOT NULL,
    description TEXT,
    customer_id BIGINT,
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);

CREATE TABLE sales_opportunity (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    customer_id BIGINT,
    opportunity_name VARCHAR(100) NOT NULL,
    estimated_value DECIMAL(10, 2),
    close_date TIMESTAMP,
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);
```

#### 售后服务

```sql
CREATE TABLE complaint (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    customer_id BIGINT,
    description TEXT,
    complaint_date TIMESTAMP,
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);

CREATE TABLE service_ticket (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    customer_id BIGINT,
    description TEXT,
    ticket_date TIMESTAMP,
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);
```

### 2. 实体类

#### 客户信息管理

```java
@Entity
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    @Column(name = "contact_number")
    private String contactNumber;
    // getters and setters
}

@Entity
public class ContactPerson {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "customer_id")
    private Long customerId;
    private String name;
    private String email;
    @Column(name = "phone_number")
    private String phoneNumber;
    // getters and setters
}
```

#### 销售管理

```java
@Entity
public class SalesLead {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String leadName;
    private String description;
    @Column(name = "customer_id")
    private Long customerId;
    // getters and setters
}

@Entity
public class SalesOpportunity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "customer_id")
    private Long customerId;
    private String opportunityName;
    private BigDecimal estimatedValue;
    private LocalDateTime closeDate;
    // getters and setters
}
```

#### 售后服务

```java
@Entity
public class Complaint {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "customer_id")
    private Long customerId;
    private String description;
    private LocalDateTime complaintDate;
    // getters and setters
}

@Entity
public class ServiceTicket {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "customer_id")
    private Long customerId;
    private String description;
    private LocalDateTime ticketDate;
    // getters and setters
}
```

### 3. 数据访问层(Repository)

#### 客户信息管理

```java
public interface CustomerRepository extends JpaRepository<Customer, Long> {
    // custom queries if needed
}

public interface ContactPersonRepository extends JpaRepository<ContactPerson, Long> {
    List<ContactPerson> findByCustomerId(Long customerId);
    // other custom queries if needed
}
```

#### 销售管理

```java
public interface SalesLeadRepository extends JpaRepository<SalesLead, Long> {
    // custom queries if needed
}

public interface SalesOpportunityRepository extends JpaRepository<SalesOpportunity, Long> {
    // custom queries if needed
}
```

#### 售后服务

```java
public interface ComplaintRepository extends JpaRepository<Complaint, Long> {
    // custom queries if needed
}

public interface ServiceTicketRepository extends JpaRepository<ServiceTicket, Long> {
    // custom queries if needed
}
```

### 4. 服务层(Service)

#### 客户信息管理

```java
@Service
public class CustomerService {
    @Autowired
    private CustomerRepository customerRepository;

    public Customer addCustomer(Customer customer) {
        return customerRepository.save(customer);
    }

    public List<Customer> getAllCustomers() {
        return customerRepository.findAll();
    }

    // other methods as per business requirements
}

@Service
public class ContactPersonService {
    @Autowired
    private ContactPersonRepository contactPersonRepository;

    public ContactPerson addContactPerson(ContactPerson contactPerson) {
        return contactPersonRepository.save(contactPerson);
    }

    public List<ContactPerson> getContactPersonsByCustomerId(Long customerId) {
        return contactPersonRepository.findByCustomerId(customerId);
    }

    // other methods as per business requirements
}
```

#### 销售管理

```java
@Service
public class SalesService {
    @Autowired
    private SalesLeadRepository salesLeadRepository;
    @Autowired
    private SalesOpportunityRepository salesOpportunityRepository;

    public SalesLead addSalesLead(SalesLead salesLead) {
        return salesLeadRepository.save(salesLead);
    }

    public SalesOpportunity addSalesOpportunity(SalesOpportunity salesOpportunity) {
        return salesOpportunityRepository.save(salesOpportunity);
    }

    // other methods as per business requirements
}
```

#### 售后服务

```java
@Service
public class ServiceService {
    @Autowired
    private ComplaintRepository complaintRepository;
    @Autowired
    private ServiceTicketRepository serviceTicketRepository;

    public Complaint addComplaint(Complaint complaint) {
        return complaintRepository.save(complaint);
    }

    public ServiceTicket addServiceTicket(ServiceTicket serviceTicket) {
        return serviceTicketRepository.save(serviceTicket);
    }

    // other methods as per business requirements
}
```

### 5. 控制层(Controller)

#### 客户信息管理

```java
@RestController
@RequestMapping("/api/customers")
public class CustomerController {
    @Autowired
    private CustomerService customerService;

    @PostMapping("/add")
    public ResponseEntity<Customer> addCustomer(@RequestBody Customer customer) {
        Customer newCustomer = customerService.addCustomer(customer);
        return new ResponseEntity<>(newCustomer, HttpStatus.CREATED);
    }

    @GetMapping("/all")
    public ResponseEntity<List<Customer>> getAllCustomers() {
        List<Customer> customers = customerService.getAllCustomers();
        return new ResponseEntity<>(customers, HttpStatus.OK);
    }

    // other endpoints for update, delete, search, etc.
}

@RestController
@RequestMapping("/api/contact-persons")
public class ContactPersonController {
    @Autowired
    private ContactPersonService contactPersonService;

    @PostMapping("/add")
    public ResponseEntity<ContactPerson> addContactPerson(@RequestBody ContactPerson contactPerson) {
        ContactPerson newContactPerson = contactPersonService.addContactPerson(contactPerson);
        return new ResponseEntity<>(newContactPerson, HttpStatus.CREATED);
    }

    @GetMapping("/customer/{customerId}")
    public ResponseEntity<List<ContactPerson>> getContactPersonsByCustomerId(@PathVariable Long customerId) {
        List<ContactPerson> contactPersons = contactPersonService.getContactPersonsByCustomerId(customerId);
        return new ResponseEntity<>(contactPersons, HttpStatus.OK);
    }

    // other endpoints for update, delete, search, etc.
}
```

#### 销售管理

```java
@RestController
@RequestMapping("/api/sales")
public class SalesController {
    @Autowired
    private SalesService salesService;

    @PostMapping("/lead/add")
    public ResponseEntity<SalesLead> addSalesLead(@RequestBody SalesLead salesLead) {
        SalesLead newSalesLead = salesService.addSalesLead(salesLead);
        return new ResponseEntity<>(newSalesLead, HttpStatus.CREATED);
    }

    @PostMapping("/opportunity/add")
    public ResponseEntity<SalesOpportunity> addSalesOpportunity(@RequestBody SalesOpportunity salesOpportunity) {
        SalesOpportunity newSalesOpportunity = salesService.addSalesOpportunity(salesOpportunity);
        return new ResponseEntity<>(newSalesOpportunity, HttpStatus.CREATED);
    }

    // other endpoints for update, delete, search, etc.
}
```

#### 售后服务

```java
@RestController
@RequestMapping("/api/service")
public class ServiceController {
    @Autowired
    private ServiceService serviceService;

    @PostMapping("/complaint/add")
    public ResponseEntity<Complaint> addComplaint(@RequestBody Complaint complaint) {
        Complaint newComplaint = serviceService.addComplaint(complaint);
        return new ResponseEntity<>(newComplaint, HttpStatus.CREATED);
    }

    @PostMapping("/ticket/add")
    public ResponseEntity<ServiceTicket> addServiceTicket(@RequestBody ServiceTicket serviceTicket) {
        ServiceTicket newServiceTicket = serviceService.addServiceTicket(serviceTicket);
        return new ResponseEntity<>(newServiceTicket, HttpStatus.CREATED);
    }

    // other endpoints for update, delete, search, etc.
}
```


各个功能模块的实现,包括客户信息管理、销售管理和售后服务。每个模块都有对应的数据库设计、实体类定义、数据访问层、服务层和控制层的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值