增加单位功能

This commit is contained in:
2026-09-14 00:09:58 +08:00
parent a8c09c1db5
commit 6f106e43af
22 changed files with 1473 additions and 128 deletions
+30
View File
@@ -79,6 +79,7 @@ func Init(_ string) {
new(TenantCrmProject),
new(TenantCrmProduct),
new(TenantCrmProductCategory),
new(TenantCrmUnit),
new(TenantCrmFollow),
new(TenantCrmAttach),
new(TenantCrmEntityContact),
@@ -154,6 +155,7 @@ func Init(_ string) {
EnsureCrmPaybackTable()
EnsureCrmPaybackRecordTable()
EnsureCrmProductDevColumns()
EnsureCrmUnitTable()
}
// EnsureCrmPaybackTable 回款计划表建表(CREATE TABLE IF NOT EXISTS,可重复执行;
@@ -305,6 +307,34 @@ func EnsureCrmProjectDocColumn() {
_, _ = Orm.Raw(sql).Exec()
}
// EnsureCrmUnitTable 计量单位表建表(CREATE TABLE IF NOT EXISTS,可重复执行;
// 建表失败(如表已存在但结构不一致)时静默忽略,可用 docs/sql/create_backend_crm_unit.sql 手动修复)。
// 默认单位由控制器在租户首次访问单位列表时写入(需要 tenant_id,无法在启动时预置)。
func EnsureCrmUnitTable() {
sql := `CREATE TABLE IF NOT EXISTS yz_backend_crm_unit (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键ID',
tenant_id varchar(64) NOT NULL COMMENT '租户ID',
name varchar(20) NOT NULL COMMENT '单位名称,如:套 / 台 / 个',
code varchar(50) NOT NULL DEFAULT '' COMMENT '单位编码(选填),如:SET / PCS',
sort int(11) NOT NULL DEFAULT '0' COMMENT '排序(升序,小的在前)',
status tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:1启用 / 0停用',
remark varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
create_user_id varchar(64) NOT NULL DEFAULT '' COMMENT '创建人用户ID',
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
delete_time datetime DEFAULT NULL COMMENT '删除时间(软删除)',
PRIMARY KEY (id),
UNIQUE KEY uk_tenant_name (tenant_id,name),
KEY idx_tenant_id (tenant_id),
KEY idx_status (tenant_id,status),
KEY idx_delete_time (delete_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户CRM计量单位表'`
if _, err := Orm.Raw(sql).Exec(); err != nil {
// 表已存在或执行失败时忽略(完整表结构见 docs/sql/create_backend_crm_unit.sql)
return
}
}
// EnsureCrmProductDevColumns 补齐产品表的软件开发字段(line_type / dev_unit_price / dev_tree);
// 表不存在或列已存在时忽略错误,可用 docs/sql/alter_backend_crm_product_dev_columns.sql 手动修复。
func EnsureCrmProductDevColumns() {