批量更新功能
This commit is contained in:
@@ -63,16 +63,37 @@ var crmDefaultUnits = []struct {
|
||||
|
||||
// crmEnsureDefaultUnits 租户首次使用(从未有过任何单位记录,含已软删除的)时写入默认单位。
|
||||
// 用户手动清空后不再自动补,避免越删越有;需要恢复时用「恢复默认单位」接口。
|
||||
// 已有记录时顺带修复存量默认单位的 is_default 标记(历史数据升级)。
|
||||
func crmEnsureDefaultUnits(tenantID string) {
|
||||
if models.Orm == nil || strings.TrimSpace(tenantID) == "" {
|
||||
return
|
||||
}
|
||||
cnt, err := models.Orm.QueryTable(new(models.TenantCrmUnit)).
|
||||
Filter("tenant_id", tenantID).Count()
|
||||
if err != nil || cnt > 0 {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
crmInsertDefaultUnits(tenantID, nil)
|
||||
if cnt == 0 {
|
||||
crmInsertDefaultUnits(tenantID, nil)
|
||||
return
|
||||
}
|
||||
crmMarkDefaultUnits(tenantID)
|
||||
}
|
||||
|
||||
// crmMarkDefaultUnits 将默认清单中已存在的存量单位标记为 is_default=1(历史数据升级自修复,
|
||||
// 避免早期写入的默认单位因未打标而被误编辑/删除)。
|
||||
func crmMarkDefaultUnits(tenantID string) {
|
||||
names := make([]string, 0, len(crmDefaultUnits))
|
||||
for _, u := range crmDefaultUnits {
|
||||
names = append(names, u.Name)
|
||||
}
|
||||
if len(names) == 0 {
|
||||
return
|
||||
}
|
||||
_, _ = models.Orm.QueryTable(new(models.TenantCrmUnit)).
|
||||
Filter("tenant_id", tenantID).
|
||||
Filter("name__in", names).
|
||||
Update(orm.Params{"is_default": 1})
|
||||
}
|
||||
|
||||
// crmInsertDefaultUnits 写入默认单位,跳过已存在的名称(existing 为已存在单位名集合)。
|
||||
@@ -90,6 +111,7 @@ func crmInsertDefaultUnits(tenantID string, existing map[string]bool) int {
|
||||
Code: u.Code,
|
||||
Sort: i + 1,
|
||||
Status: 1,
|
||||
IsDefault: 1, // 系统默认单位:不可编辑、不可删除
|
||||
CreateTime: now,
|
||||
UpdateTime: now,
|
||||
}
|
||||
@@ -129,7 +151,7 @@ func crmInitDefaultUnits(tenantID string) int {
|
||||
}
|
||||
if id, ok := deleted[u.Name]; ok {
|
||||
if _, err := models.Orm.Raw("UPDATE "+table+
|
||||
" SET delete_time = NULL, status = 1, sort = ?, update_time = ? WHERE id = ?",
|
||||
" SET delete_time = NULL, status = 1, is_default = 1, sort = ?, update_time = ? WHERE id = ?",
|
||||
i+1, now, id).Exec(); err == nil {
|
||||
existing[u.Name] = true
|
||||
added++
|
||||
@@ -142,6 +164,7 @@ func crmInitDefaultUnits(tenantID string) int {
|
||||
Code: u.Code,
|
||||
Sort: i + 1,
|
||||
Status: 1,
|
||||
IsDefault: 1, // 系统默认单位:不可编辑、不可删除
|
||||
CreateTime: now,
|
||||
UpdateTime: now,
|
||||
}
|
||||
@@ -359,6 +382,11 @@ func (c *BackendCrmUnitController) Update() {
|
||||
pipelineErr(&c.Controller, 404, 404, "单位未找到")
|
||||
return
|
||||
}
|
||||
// 系统默认单位只读:不可编辑
|
||||
if row.IsDefault == 1 {
|
||||
pipelineErr(&c.Controller, 400, 400, "系统默认单位不可编辑")
|
||||
return
|
||||
}
|
||||
status := p.Status
|
||||
if status != 0 && status != 1 {
|
||||
status = row.Status
|
||||
@@ -416,6 +444,11 @@ func (c *BackendCrmUnitController) Delete() {
|
||||
pipelineErr(&c.Controller, 404, 404, "单位未找到")
|
||||
return
|
||||
}
|
||||
// 系统默认单位只读:不可删除
|
||||
if row.IsDefault == 1 {
|
||||
pipelineErr(&c.Controller, 400, 400, "系统默认单位不可删除")
|
||||
return
|
||||
}
|
||||
now := time.Now()
|
||||
_, err = models.Orm.QueryTable(new(models.TenantCrmUnit)).
|
||||
Filter("id", id).Filter("tenant_id", tenantID).
|
||||
|
||||
Reference in New Issue
Block a user