48 lines
1.8 KiB
PL/PgSQL
48 lines
1.8 KiB
PL/PgSQL
-- 2026-07-02 商机业绩归属地与数据授权区域范围升级脚本
|
||
--
|
||
-- 本次升级内容:
|
||
-- 1. 为 crm_opportunity 增加 project_ownership_location 字段。
|
||
-- 2. 将已有业绩归属地文本值尽量规范为 cnarea.level = 1 的 area_code。
|
||
-- 3. 为 sys_user_data_scope_user 增加商机业绩归属地授权范围字段。
|
||
-- 4. 旧授权默认保持“全部归属地”,不会收窄已有可见范围。
|
||
|
||
begin;
|
||
|
||
alter table if exists crm_opportunity
|
||
add column if not exists project_ownership_location varchar(100);
|
||
|
||
comment on column crm_opportunity.project_ownership_location is '业绩归属地编码,对应 cnarea.area_code';
|
||
|
||
do $$
|
||
begin
|
||
if to_regclass('public.cnarea') is not null then
|
||
update crm_opportunity o
|
||
set project_ownership_location = c.area_code
|
||
from cnarea c
|
||
where c.level = 1
|
||
and coalesce(nullif(btrim(o.project_ownership_location), ''), '') <> ''
|
||
and (
|
||
o.project_ownership_location = c.short_name
|
||
or o.project_ownership_location = c.name
|
||
)
|
||
and o.project_ownership_location is distinct from c.area_code;
|
||
end if;
|
||
end $$;
|
||
|
||
alter table if exists sys_user_data_scope_user
|
||
add column if not exists area_scope_type varchar(20) not null default 'ALL';
|
||
|
||
alter table if exists sys_user_data_scope_user
|
||
add column if not exists area_codes varchar(100)[] not null default '{}'::varchar[];
|
||
|
||
update sys_user_data_scope_user
|
||
set area_scope_type = 'ALL',
|
||
area_codes = '{}'::varchar[]
|
||
where area_scope_type is null
|
||
or area_scope_type = '';
|
||
|
||
comment on column sys_user_data_scope_user.area_scope_type is '商机业绩归属地范围:ALL全部归属地/CUSTOM指定归属地';
|
||
comment on column sys_user_data_scope_user.area_codes is '指定可见的商机业绩归属地编码列表,对应 cnarea.area_code';
|
||
|
||
commit;
|