再阅读之前,请您一定要 看完 搭建项目 和 熟悉java项目结构
# 一、项目需求
# 1.1、了解需求
功能概述: 中后台管理系统中,要有管理公司信息的功能,主要包含公司信息、银行账户、发票资料等,这些信息供有需要的业务使用。
- 需求1:管理公司基本信息,包含:企业名称、Logo、地区、营业执照、联系人 等等,可以 增删拆改
- 需求2:管理公司的银行账户,包含:银行信息、账户名称、账号、类型等,可以 增删拆改
- 需求3:管理公司的发票信息,包含:开票抬头、纳税号、银行账户、开户行、备注等,可以 增删拆改
- 需求4:对于公司信息、银行信息、发票信息 任何的修改,都有记录 数据变动记录;
# 1.2、需求原型
![]() | ![]() | ![]() | ![]() |
公司列表 | 公司添加修改 | 变动记录2 | 变动记录2 |
![]() | ![]() | ![]() | ![]() |
银行列表 | 银行添加修改 | 发票列表 | 发票添加修改 |
# 二、数据库设计
根据需求和原型,我们分析出来,从业务逻辑上,是一个公司对应多个银行信息、多个发票信息,对于每个字段的关键改动,记录变更前后的数据。
# 2.1、表设计
表设计如下:
t_oa_enterprise 企业基础信息表
t_oa_bank 企业银行表
t_oa_invoice 企业发票表
t_data_tracer 数据变动记录表
2
3
4
具体可以打开smart_admin_v2
数据库查看对应的表结构
# 2.2、表关联
从需求中:一个公司对应多个银行信息、多个发票信息,所以在 t_oa_bank
和t_oa_invoice
表中都存在 enterpriseId : 企业id字段
用于实现关联。
# 三、编写Java代码
# 3.1、 分包
从需求中,我们了解到:企业、银行、发票 这三个需求都属于业务范畴,所以我们可以写到 sa-admin
项目的module/business
包;而数据变动记录,我们思考了下,肯定将来还会有其他的需求需要使用,于是我们决定将“变动”记录写到sa-common
项目中的module/support
包,用于“支撑Support”其他业务。
即:
- 公司、银行、发票 ->
sa-admin
:module/business/*
包 - 数据变更记录 ->
sa-common
:module/support/datatracer
包
# 3.2、定义Class
创建公司、银行、发票
和 数据变更记录
包结构:
![]() | ![]() |
公司、银行、发票 | 数据变更记录 |
创建完package
包结构以后,我们就可以编写mvc
代码了,即 传说中的:controller、Service、Manager、Dao、Mapper、Domin文件了
;
# 3.4、定义javabean
根据java规范 V2 ,我们定义如下javabean:
/domain/
|---entity 数据库对应子包
|---|---EnterpriseEntity.java 企业实体类
|---form 表单子包
|---|---EnterpriseCreateForm.java 增加企业表单
|---|---EnterpriseQueryForm.java 查询企业列表表单
|---|---EnterpriseUpdateForm.java 更新企业表单
|---vo 返回前端对象子包
|---|---EnterpriseVO.java 企业列表对象
2
3
4
5
6
7
8
9
# 3.5、定义常量
在需求中,我们了解到 “企业类型” 字段为枚举变量,所以创建常量子包和常量类:
net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum
具体内容:
public enum EnterpriseTypeEnum implements BaseEnum {
NORMAL(1, "有限企业"),
FOREIGN(2, "外资企业");
private Integer value;
private String desc;
EnterpriseTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@Override
public Integer getValue() {
return value;
}
@Override
public String getDesc() {
return desc;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 3.6、编写增删查改
开始编写具体的增删查改了,需要注意的有如下:
- 接口定义,按照要求:controller规范
- 此类业务比较简单不需要拆分service service规范
- dao传入常量,具体见dao规范
更详细的代码请研读sa-admin
项目中的net.lab1024.sa.admin.module.business.oa
的代码。
在线阅读代码 (opens new window)
# 四、总结
- 第一步:分析需求
- 第二步:创建表结构
- 第三步:拆分需求属于 业务类,还是 支撑类,业务类写到
sa-common
项目的module包
,支撑类写到sa-common
项目的moudle包
- 第四步:按照java规范 编写 mvc三层或者四层代码了
以上,你get到了吗 ?
# ※→ 联系我们
1024创新实验室-主任:卓大 (opens new window),混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
1024创新实验室(老家河南) (opens new window) 致力于成为中原领先、国内一流的技术团队,以技术创新为驱动,合作各类项目(软件外包、技术顾问、培训等等)。
![]() | ![]() | ![]() |
加 主任 “卓大” 微信 拉你入群,一起学习 | 关注 “小镇程序员” 分享代码与生活、技术与赚钱 | 请 “1024创新实验室” 喝咖啡 支持我们的开源与分享 |