48 lines
1.8 KiB
MySQL
48 lines
1.8 KiB
MySQL
|
|
-- 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;
|