JeeSite 4.x 开发规范、设计原则、数据库规范

2023-11-10 23:20

本文主要是介绍JeeSite 4.x 开发规范、设计原则、数据库规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、用户界面

1、设计原则

1)对齐

  • 层次结构清晰,观察 1 像素,引导视觉流向,让用户更流畅地接收信息
  • 如果页面的字段或段落较短、较散时,需要确定一个统一的视觉起点

2)多元化

  • 根据不同的用户体验,可快速进行界面色调切换
  • 点击侧边栏头像,扩大工作区域显示,可快速折叠侧边栏和顶部导航栏
  • 根据用户喜好,可折叠侧边栏,默认折叠侧边栏,取消页签模式,表单弹窗模式
  • 弹窗的表单,关闭表单后,自动刷新列表数据,保留列表查询条件
  • 列表操作体验清晰,不太实用的操作进行折叠隐藏
  • 列表查询区域隐藏,扩大列表显示区域

3)布局色彩

  • 响应式样式,12 列栅格化布局,根据屏幕大小进行自适应布局,支持平板或手机操作
  • 色彩源于『自然』的设计价值观,设计师通过对自然场景的抽象捕捉

4)导航设计

  • 在广义上,任何告知用户他在哪里,他能去什么地方以及如何到达那里的方式,都可以称之为导航
  • 支持侧边栏全部导航;或者顶部一级导航,二级以下导航在侧边栏

2、数据列表

1)列对齐方式

  • 短小字符居中,比较长的字符居左,日期居中,货币或带小数点的数字居右
  • 数值位数相等的字段,如:编码、编号:居中
  • 字典类,如:分类、类型、类别、状态:居中
  • 不规则长度,5个字符以上,名称、标题:居左
  • 日期时间:居中
  • 与货币相关的,金额、单价:居右
  • 带小数点的数字,数量、百分数:居右
  • 整数型数字,年龄,个数:居中
  • 合计,与合计列对齐方式相同

2)列显示格式

  • 与货币相关,金额或单价:保留两位小数,如无特殊要求,不加货币符号,不使用千分位符号,默认单位“元”,如果单位不是“元”,则必须在列标题或当前页标明单位,如:金额(万元)
  • 长字符列,名称、标题、备注等:当列宽不足时,用 … 号表示无法显示的字符
  • 日期:yyyy-MM-dd,日期时间:yyyy-MM-dd HH:mm,如业务无特别要求,不带秒,如需要时分秒,格式为: yyyy-MM-dd HH:mm:ss 采用24小时制
  • 列宽要适中,根据内容调整列宽大小

3)其他要求

  • 列表中存在与金额相关的列,或者与数量相关的列,根据业务要求,列表底部增加合计,如果列表是分页列表,合计默认为查询结果的合计,而不是当前页合计
  • 合计校验:明细行合计值,与合计行值相同,不要出现明细与合计的数值不对的情况
  • 汇总与明细校验:汇总值与钻取的明细合计值相同,同上
  • 根据业务要求,比较大或比较耗时的页面,第一次打开时,如没有特殊要求,默认不执行查询显示数据,需要点击查询,执行显示数据,并提示“点击查询显示数据”信息
  • 对于列与数字相关的,如:金额、数量、证件号码(如:身份证)或其它由长数字组成的字段,不能出现科学计数法格式
  • 明细行中不能存在重复记录

4)查询条件

  • 数据字典字段作为查询条件,无特殊要求,信息内容相对固定少于20行时,采用下拉选择方式,否则采用弹出对话框选择方式;有特别要求时,可以采用输入方式,进行模糊查询,除此之外,必须采用选择方式
  • 查询条件为多行时,标签需要上下两端对齐,标签单行右对齐,注意美观
  • 输入框或选择框,上下两端对齐,宽度适中

3、编辑表单

1)表单控件

  • 必填信息,必须明确区分,标签前增加红色星号,醒目显示,必填信息在保存时必须增加必填验证
  • 数值类型,必须增加数值验证
  • 日期类型,必须增加日期格式验证
  • 边界验证,录入信息的长度不得多于数据库字段长度,input标签必须包含增加maxlength属性
  • 无特殊情况,如:电话、身份证、邮箱,能用正则表达式验证的字段必须启用验证
  • 界面录入信息与列表显示信息保持一致,避免字段张冠李戴
  • 界面显示信息与数字相关的,如:金额、数量、证件号码(如:身份证)或其它由长数字组成的字段,不能出现科学计数法格式
  • 必须避免提交类型按钮多次执行,出现多条相同信息,在未成功之前,不能多次点击

2)其它要求

  • 对整个项目进行跨浏览器的测试(必须兼容IE9+、360、Chrome、Firefox浏览器)
  • 界面大小应该适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力,注意细节(观察1像素距离、列表文字对齐)
  • 必须保证在最小分辨率1024x768的可视性(不允许错版),在高分辨率下页面要自适应,不能出现标题背景空白,错位情况
  • 每一步操作,如保存、更新、审核,都要有提示,如:保存xx成功!
  • 检查界面是否有文字错误,避免出现看不懂的文字
  • 手机端或PC端图标及标题内容显示不全的,应尽量减少文字,不显示…,让文字显示全

二、数据库设计规范

1、命名规范

  • 数据库对象,如:表、列、索引、视图、存储过程、自定义函数,的命名的原则是简、短,易懂好记,有意义的英文单词、常用缩写,多个单词组成的,当长度比较大时应使用缩写,特殊情况使用拼音或首字母
  • 数据表命名:必须带有模块前缀,如财务总账:js_fin_
  • 如果命名由多个词汇组成,词汇之间加 _ 下划线,如:js_sys_office_company

2、设计规范

  • 通常情况下每张表必须有主键,对于非主键,具有唯一性质的,必须加,唯一索引
  • 每张表,每个字段都必须有正确的中文描述说明,以便快速生成数据字典
  • 业务数据表必要时冗余基础信息表的核心字段,如:部门编码、部门名称,需要成对出现在业务数据表中
  • 对于字符类型(VERCHAR)字段,确定数据值仅是数字、字母并无其它特殊字符的情况下使用VERCHAR字段,其它必须使用NVARCHAR类型,避免使用VARCHAR类型
  • 表字段的长度要统一,尤其基础数据在业务数据中的引用,如:部门编码、部门名称,在任何业务数据表中的长度务必保持一致
  • 存储过程、自定义函数、视图,以及调度,必须要有详细的注释说明
  • 统一入口,统一出口原则:相同意义的数据存储、提取,使用同一过程和方法
  • 不要盲目的加入其他索引,根据需要统一加索引

3、使用规范

  • 在指定用户下,只有项目经理具有数据表对象的设计权限,其他开发人员不得调整表结构
  • 作业调度需要有详细的登记台账(也是项目管理要求的一部分)
  • SQL书写采用:关键字大写,表名,列名小写
  • 变更数据库必须同步 erm 模型

三、平台开发规范

1、JeeSite 包的命名规范

设有公司统一报名如:com.jeesite 包,不允许直接在此包下直接建立模块,要先创建一个 modules 包。

  • 模块格式:com.jeesite.modules.模块名.分层.子模块名.功能类
    • 分层为 entity、dao、service、web、utils、config
    • 若模块下只有几个功能,没有子模块,就不需要再建立子模块了
  • Spring Boot 自动配置文件格式:com.jeesite.autoconfigure.模块名.配置类
    • 自动配置的类,在 META-INF/spring.factories 里指定
  • 通用封装包或工具类:com.jeesite.common.大类.小类.封装类

2、JeeSite 分层命名规范

Controller

操作命名备注
类名以Controller结尾,继承BaseControllerUserController
类上的映射路径${adminPath} /模块/子模块/功能${adminPath}/sys/user
自动注入属性与注入名相同,不允许注入Dao@Autowired
方法上的映射路径与方法名相同@RequestMapping
方法上的权限字符串模块名:子模块名:控制器名:功能名@RequiresPermissions
每次请求都会执行的方法get@ModelAttribute
列表页面list 
列表数据listData 
新增或编辑表单form 
新增或编辑提交地址save 
删除delete 
停用disable 
启用enable 
主键校验check开头 
导入import开头 
导出export开头 
树结构数据treeData 

四名保持命名联系: Controller类名、映射路径、方法名、视图文件名,举例如下:

操作命名备注
类名SysUserController.java系统模块可不加 sys
映射路径/sys/user/list/模块[/子模块]/功能/操作
映射方法public list() {}功能名,如列表:list,列表数据:listData,表单:form
视图文件名userList.html不要直接命名为 list.html
视图文件路径/WEB-INF/views/modules/sys/user/ 

Service

操作命名备注
类名以Service结尾继承 CrudService,TreeService,QueryService
查询一条数据get以 get 开头
插入数据insert以 insert 开头
更新数据update以 update 开头
新增或编辑save 
删除delete以 delete 开头
查询多条数据findList以 find 开头
查询多条分页findPage以 find 开头

Dao

操作命名备注
类名以Dao结尾继承 CrudDao,TreeDao,QueryDao
查询一条数据get以 get 开头
插入数据insert以 insert 开头
更新数据update以 update 开头
删除delete以 delete 开头
物理删除phyDelete 
查询多条数据 findList以 find 开头 

Entity

操作命名备注
类名根据表名以驼峰命名法转换继承 DataEntity,TreeEntity,BaseEntity
主键@Column(isPk=true)指定主键的列会自动与 getId() setId() 绑定
验证方法Hibernate Validator例如:@Length,@NotNull,查看文档
注解位置依据能写 get 方法上绝不写字段上原则 
父类中已有的属性父类中已有的属性无需定义,特殊情况除外 
非表属性的字段如查询字段,必须写清楚注释说明用途。 

3、JeeSite 视图文件规范

所有视图文件均放在:模块项目/src/main/resources/views 目录下,尽量不放在web项目下,约束如下:

命名备注
include公共视图代码块
layouts公共视图布局文件
modules功能模块视图文件,格式:/modules/模块名[/子模块]/功能页面
themes个性化主题视图文件存放路径,格式:/themes/modules/模块名[/子模块]/功能页面

4、JeeSite 静态文件规范

所有静态文件均放在:模块项目/src/main/resources/static 目录下,尽量不放在web项目下,约束如下:

命名备注
common存放公共脚本,不建议项目使用过程中修改。
modules项目相关的模块 js 和 css 文件存放位置,格式:/modules/模块名[/子模块]/静态文件
themes个性化主题视图文件存放路径,格式:/themes/modules/模块名[/子模块]/静态文件
组件文件格式:组件名/组件版本/组件文件,例如:/static/echarts/4.2/组件文件包

四、其它开发规范

主键:有意义的,有规则的数据必须采用手动编码方式,不允许使用 UUID 自动生成注解表示,方便运维,例如:组织机构编码,区域编码

转载于:https://my.oschina.net/thinkgem/blog/3029459

这篇关于JeeSite 4.x 开发规范、设计原则、数据库规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385933

相关文章

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java