Skip to content

AI编写Java项目 ​

借助ChatGPT从零开发一款应用软件 ​

项目需求 ​

假如你是一位Java架构师,而我是一个新人,我希望你能协助我去开发一款程序,接下来我会给你一份需求文档,你先熟悉一下,待会我需要你帮助我做一些事情,我再介绍一下我的开发环境,我的电脑操作系统是Mac,也安装好了MySQL数据库、JDK和IDEA。我已经做好研发准备了,你准备好了吗?
该系统包含公司内所有员工信息的数据库,以及与该员工相关的其他数据,比如:工作时间卡数据等。该系统可以用来为每位员工支付薪水。且该系统必须按照指定的方法准时的为员工支付正确数额的薪水。同时,最终为员工支付的薪水中应该扣除各种应有的扣款。

- 一些员工是钟点工。在这部分员工的数据库记录中,有一个字段用来记录他们每小时的薪水。他们每天都需要提交工作时间卡,该工作时间卡记录了他们的工作日期和工作时长。如果他们每天工作超过8小时,那么超出8小时的时长将按正常时薪的1.5倍支付薪水。每周五会对这部分员工支付薪水。
- 一些员工以固定月薪支付薪水。每月的最后一天会为这部分员工支付薪水。在这部分员工的数据库记录中,有一个字段用来记录他们的月薪为多少。
- 还有一些员工从事销售类的工作,那么将根据他们的销售情况为他们支付佣金。他们需要提交销售凭证,其中需记录销售时间和金额。在他们的数据库记录中,有一个字段用来记录他们的佣金率。每两周的周五会为他们支付佣金。
- 员工可以自由选择薪水的支付方式。他们可以选择把薪水支票邮寄到他们指定的地址;可以把薪水支票暂时保管在出纳人员那里随时支取;也可以选择将薪水直接存入他们指定的银行账户。
- 一些员工是公司的工会人员。在他们的数据库记录中有一个字段记录了他们每周应付的会费,同时他们的会费会从他们的薪水中扣除。此外,工会也可能会不时地评估个别工会成员的服务费。这些服务费是由工会每周提交的,必须从相应员工的下一笔薪水中扣除。
- 薪水支付系统会在每个工作日运行一次,并在当天向需要支付薪水的员工支付薪水。薪水支付系统内记录了员工的薪水发放日期,因此,薪水支付系统将计算从为员工最后一次支付薪水到指定日期之间所需支付的薪水。
根据我提供的需求文档,总结关键点,并提供一些建议来帮助设计和实现这个系统

创建数据库 ​

我希望你按照业内数据库建模规范和最佳实践给我写一份数据库建模表格文档,包含表名、列名、数据类型、约束条件、描述、枚举值(用数字代替),ID不是自增,使用雪花ID算法生成,标准字段:create_time、update_time、deleted
你刚因为回复长度限制问题中断了,我需要你继续回答
第一步工作我们已经完成了,我在电脑上已经安装好了MySQL8,在进行表结构设计时,需要考虑到查询性能以及数据的规模和增长趋势,以确保系统能够承受未来的数据访问负载,并且相关的字段comment注释、表comment注释、需要建立索引的也需要加上。然后建表语句和索引语句告诉我
第一步工作我们已经完成了,我在电脑上已经安装好了MySQL8,请按照前面生成的数据库文档进行表结构设计,在进行表结构设计时,需要考虑到查询性能以及数据的规模和增长趋势,以确保系统能够承受未来的数据访问负载,并且相关的字段comment注释、表comment注释、需要建立索引的也需要加上。然后建表语句和索引语句告诉我
你刚因为回复长度限制问题中断了,我需要你从`union_membership`继续返回我建表语句

生成数据库测试数据 ​

我需要员工表。每张表5条左右的测试数据,覆盖了每个字段的情况,特殊字段符合中文风格要求。每条SQL语句都可以直接执行,以插入测试数据。
你刚因为回复长度限制问题中断了,我需要你继续回答

curd接口 ​

按照前面生成的表结构来分析,如果需要你设计一份标准的基于RESTful接口文档,每一个接口都需要进行分析和论证必要性和设计合理性。预计你会出多少个接口?
要求:返回OpenAPI规范JSON格式,描述信息需要中文,有些情况需要分页,考虑数据边界值。接口:添加员工
要求:返回OpenAPI规范JSON格式,描述信息需要中文,有些情况需要分页,考虑数据边界值。接口:获取员工列表
按照前面生成的表结构来分析,如果需要你设计一份标准的基于RESTful接口文档,每一个接口都需要进行分析和论证必要性和设计合理性。预计你会出多少个接口?
要求:返回OpenAPI规范JSON格式,描述信息需要中文,有些情况需要分页,考虑数据边界值。我需要你前面给出员工接口的需求文档,你写完发我

去 https://app.apifox.com/

后端配置 ​

接下来我们就进入开发环节,我希望的技术栈是Java8+SpringBoot+MyBatisPlus+Lombok的方式进行开发,你可以一步一步教我如何搭建一个项目吗?
我需要lombok的Pom依赖代码
我需要mysql8驱动的Pom依赖代码

建实体类 ​

基于前面你生成的4张数据库表结构,接下来我们建实体类,我要求:import语句、lombok、字段注释、类注释都需要
你刚因为回复长度限制问题中断了,我需要你继续回答
基于前面你生成的4个实体类,接下来我们建Mapper层接口,要求继承MyBatisPlus的BaseMapper类,但是不需要写任何接口
你给的Mapper层代码没有注入Spring
在Spring中注入Mapper层代码,有全局的方案吗?

实现类和接口设计 ​

基于前面的需求文档,接下来我们开始进行业务功能设计,要求:利用面向对象的设计原则和设计模式,确保业务功能的实现既健壮又易于维护,先不用告诉我代码实现
按照你设计的业务功能,我现在需要EmployerService的接口类和实现类,要求:结合MyBatis-Plus实现,核心业务功能和关键字必须要加上适当的注释
少了一个查询员工列表(支持分页)的接口方法
按照你设计的业务功能,我现在需要PaymentService的接口类和实现类,要求: 结合MyBatis-Plus实现,核心业务功能必须加上适当的注释,需要实现计算员工薪水(支持钟点工、月薪员工、销售员) ,需要实现支付员工薪水(支持邮寄支票、暂存支票、银行账户支付)
在PaymentServicelmpl当中calculateSalary的方法,我没有所属的三个子类,我也并不想创建,我想直接在里面进行计算
在PaymentServiceImpl实现类中getWorkedHours、getTotalSales找不到报错,我需要你给我实现出来
你给我了具体的方法,但是你并没有实现出来,我需要你根据TimeCardMapper、SalesReceiptMapper帮我写出具体的实现规则,我需要你结合之前设计的实体类和Mapper进行实现
getTotalWorkedHours要进行修改,钟点工是每周支付一次最近一周的薪水而不是全部薪水,而销售类员工则是按照每月最后一天支付一次当月的销售额的提成。所以SQL需要进行调整
# 之前方法他没写 要提醒他
结合前面的业务需求和已完成的代码,我需要结合SpringBoot创建一个定时任务执行,要求:核心业务代码需要添加必要的注释,每天运行一次、周五支付钟点工薪水、每月最后一天支付月薪员工薪水、每月最后一天支付销售员佣金,需要结合PaymentServiceImpl中calculateSalary和paySalary方法实现,添加具体的实现代码
在paymentService当中getEmployees()并没有,它应该在EmployeeService,所以需要你修改一下
在EmployeeService当中getEmployees()方法不存在,我需要你实现出来

项目运行 ​

当我启动SpringBoot服务时出现一个错误:文档根元素 "mapper" 必须匹配 DOCTYPE 根 "null"。

单元测试 ​

基于前面实现的EmployeeService,接下来我们要为所有方法进行单元测试用例的编写,要求:核心代码需要加上适当的中文注释,结合spring-boot-starter-test实现。我需要EmployeeService类中所有的方法写出可测试的单例,并不是一个Demo
# 由于后面补一个方法 他忘了
你这边缺少了一个单例测试方法listEmployees(Page<Employee> page),我需要你补充回答
基于前面实现的PaymentService,接下来我们要为所有方法进行单元测试用例的编写,要求:核心代码需要加上适当的中文注释,结合spring-boot-starter-test实现。我需要PaymentService类中所有的方法写出可测试的单例,并不是一个Demo
基于前面实现的ScheduledTasks,接下来我们要为所有方法进行单元测试用例的编写,要求:核心代码需要加上适当的中文注释,结合spring-boot-starter-test实现。我需要ScheduledTasks类中所有的方法写出可测试的单例,并不是一个Demo

​