# bcss **Repository Path**: bs_10/bcss ## Basic Information - **Project Name**: bcss - **Description**: 智能客服系统后端服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-09 - **Last Updated**: 2025-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bcss 系统说明与开发指引 #### 介绍 智能客服系统后端服务 ## 开发指引 #### 层级结构 > - `/script` 脚本文件目录,初始化脚本放在 `/script` 下。其余按迭代归档,例如 `/script/r250731` 存放 `2025-07-31` 迭代包含的所有脚本内容 > > - `com.benshou.bcss.common` 公共目录,不仅本项目可以用到,其他项目也可以使用的代码,放在此目录下 > - `com.benshou.bcss` 本系统所有代码均要在此目录下 > `com.benshou.bcss.config` bcss 的 spring 配置类 > `com.benshou.bcss.controller` Controller > `com.benshou.bcss.controller.req` > > - 其余目录按公共标准执行 推荐:网状目录结构在前期按功能类型归档,后期按功能模块归档。例如:在前期,AService 与 BSerive 均属于 Service,故放在同一目录 `/service` 下;后期,A 相关的服务已经发展壮大,可以单独将 A 的相关文件按文件结构统一剥离出去,形如: `/A/serivce/AService.java` & `/service/BService.java` 。 #### build.gradle `build.gradle.kts` 使用 Gradle 作为项目管理组建,并使用 Kotlin DSL。 Spring 版本管理,集成在 plugins 中: ``` plugins { alias(libs.plugins.spring.boot) } ``` `libs.` 的写法使用了 Gradle 高版本带的 `.toml` 文件解析功能。其源文件在 `/gradle/libs.versions.toml` (不要修改目录以及文件名)。包含 3 个部分。 ``` # 声明版本 [versions] kotlin = "2.2.0" ``` ``` # 插件依赖定义(只是声明依赖,build.gradle 中才是启用依赖) [plugins] java = { id = "java" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } ``` ``` # 项目依赖定义(只是声明依赖,build.gradle 中才是启用依赖) [libraries] # d spring-web = { module = "org.springframework.boot:spring-boot-starter-web" } guava = { module = "com.google.guava:guava", version.ref = "guava" } ``` 声明后可以在 `build.gradle` 中引用使用。 #### Lombok ##### lombok.config 配置文件,用于影响 lombok 的代码生成行为。当前目录下以及后代目录下有效(子孙目录可以目录下添加新的 `lombok.config` 来覆写祖先配置,影响范围也是覆写目录以及后代目录)。 根目录配置: ``` lombok.accessors.chain = true # lombok 生成的 log 对象,名称为 logger lombok.log.fieldName = logger # lombok 生成的代码会添加注解标注是由 lombok 生成 @LombokGenerated lombok.addLombokGeneratedAnnotation = true # 默认 @EqualsAndHashCode(callSuper=true) lombok.equalsAndHashCode.callSuper = CALL # @NonNull 代码检查抛出的异常修改为 IllegalArgumentException lombok.nonNull.exceptionType = IllegalArgumentException ``` 详解: `lombok.accessors.chain = true ` 表示 `setter` 方法调用后会返回自身。此配置用于适配 TEA 代码风格,形如: ```java var user = new User() .setUserNo(1) .setUserType("ADMIN"); ``` 此设置用于简化调用。本系统默认遵循 Java Bean 规范,即 getter/setter/is 。如果需要自定义效果,需要在目标目录下添加一个 `lombok.config` 文件进行覆写。 #### settings.gradle 项目名与项目结构定义: ``` rootProject.name = "bcss" ``` #### BaseEntity 实体类基类 几乎所有的数据库实体类,都需要继承 `com.benshou.bcss.common.db.BaseEntity` ##### MySQL 建表模板 ```mysql CREATE TABLE `who_what` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `created_by` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '创建者', `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '更新者', `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `version` int(11) NOT NULL DEFAULT '1' COMMENT '乐观锁版本号', `is_deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已删除', `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户唯一标识', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='主体_属性'; ``` > created_by/updated_by:0-未知 1-系统