# 服务模块说明 ## 服务说明 本服务模块的ORM升级为Mybatis-Plus,entity/mapper/service/impl/xml统一使用工具类(CodeGenerator)自动生成。 为保证代码的可扩展性,原则上在生成的类里,不添加自定义代码,防止数据库表更新重新生成造成类文件被覆盖。 ## 数据库说明 每张表必须包含create_time、create_by、update_time、update_by字段,在添加和更新时,这几个字段会自动填充数值,无需人为处理。 - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `create_by` bigint(20) DEFAULT NULL COMMENT '创建人', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - `update_by` bigint(20) DEFAULT NULL COMMENT '更新人' ### 表设计注意点: 1. 业务表设计,存储引擎统一InnoDB、字符集统一:utf8mb4、核对:utf8mb4_general_ci。特殊情况可基于实际需求设定。 2. 表的主键id,类型统一为bigint(20),需指定主键 和 非空,不可设置自增;代码生成时默认id使用Mybatis-Plus自带雪花算法生成19为数字; 3. 状态字段(只存在两种状态),字段类型为tinyint(1),Mybatis将此类型会自动转换为Boolean性,0为false,非0为true。字段命名避免使用status等Mysql等关键词,可用state等。 4. 类型字段(存在两种以上),字段类型为tinyint(3),此类型取值范围0~127。 5. 逻辑删除字段,原则上每张表都应该存在此字段,实际以需要为准。字段命名:is_deleted, 字段类型:tinyint(1)。 6. 表设计指定字段类型, 按需最小原则。 - 能用tinyint不用smallint,能用smallint不用int,能用int不用bigint。 - 针对字符型,若存储字段值为固定长度,则使用char并指定长度,如:sex、mobile等。 7. 表设计字段的类型长度,按需设置、最小原则。如:varchar型,原则上够用即可,考虑实际情况,可适当大一些,但长字符型或非特殊情况,避免超过255。 8. 非特殊情况,避免使用text、mediumtext、mediumint、mediumblob、longtext、longblob。 - 存储长字符型数据尽量用varchar,长度最好控制在2000及以内。 注意:utf-8型varchar最大长度21845。 - 若业务需求必须使用text、mediumtext、mediumint、mediumblob、longtext、longblob等,列表数据查询不可查询该类型字段。 ## 服务开发说明 1. 开发过程中,最大可能使用Mybatis-Plus生成方法,减少或避免使用自定义方法和自定义Sql,保证服务高可维护性和效率。 2. 对不频繁变动、需要关联的冷数据,可在自己设计表里冗余 或 服务缓存,避免关联Sql和跨服务频繁调用。 3. 跨服务模块之间的数据库表,不允许使用关联Sql查询,可用服务RPC远程调用,在业务代码里进行数据封装和逻辑处理。 4. 每个Controller需默认继承AbstractController,继承后将自动拥有参数检查、当前登录着信息。 - 直接使用paramCheck,可检查判断参数; - 可使用 getCurrentUserId() 直接获取当前登录用户的userId; - 可使用 getCurrentUserName() 直接获取当前登录用户的 userName;