zjk
10 小时以前 8ea6a7dd1fcdbd4e22c564ed63a5a8023510161a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
-- ----------------------------
-- 城市公司档案模块:城市主数据 + 城市公司档案
--
-- 目标库 hugray-account(库名含连字符,任何引用都必须用反引号)。
-- 两张表都是新建,故用 CREATE TABLE IF NOT EXISTS,脚本可重复执行。
-- 演示数据另见 hugray_city_company_demo_20261012.sql。
--
-- 【与 account_user.city 的关系——改城市数据前必读】
-- 会员表的 city 存的是城市名称文本,本次只把「城市筛选下拉的数据源」换成 account_city,
-- 会员表不动、存量数据不迁移。因此 account_city.city_name 必须与 account_user.city 的存量文本
-- 逐字对齐(存「杭州」而不是「杭州市」),否则会员列表按城市筛选会筛不出人。
-- 城市名按「全国唯一」处理:会员表只存市名,同名的两个城市会让筛选口径产生歧义。
--
-- 【枚举取值】沿用本库约定,直接存值、不建 sys_dict_type,前端维护同名常量:
--   状态 status        :0正常  1禁用
--   删除标志 del_flag  :0存在  2删除
-- ----------------------------
 
USE `hugray-account`;
 
-- ---------- 1. account_city:城市主数据 ----------
-- province 只作展示与录入(新增时省市二级联动选择),筛选与业务关联一律走 city_name。
-- 不加 UNIQUE(city_name):逻辑删除的残留行会永久占用唯一键,「同名至多一条」只能应用层保证
-- (与 account_certification、account_user.username 同一个坑)。
CREATE TABLE IF NOT EXISTS `account_city` (
  `id`          bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '城市编号',
  `province`    varchar(32)  NOT NULL DEFAULT ''      COMMENT '所属省份(二级联动选择所得,存全称,如「广东省」)',
  `city_name`   varchar(32)  NOT NULL                 COMMENT '城市名称(与 account_user.city 的存量文本逐字对齐)',
  `sort_no`     int(11)      DEFAULT 0                COMMENT '排序(升序,越小越靠前)',
  `status`      char(1)      DEFAULT '0'              COMMENT '状态(0正常 1禁用)',
  `del_flag`    char(1)      DEFAULT '0'              COMMENT '删除标志(0存在 2删除)',
  `create_by`   varchar(64)  DEFAULT ''               COMMENT '创建者',
  `create_time` datetime     DEFAULT NULL             COMMENT '创建时间',
  `update_by`   varchar(64)  DEFAULT ''               COMMENT '更新者',
  `update_time` datetime     DEFAULT NULL             COMMENT '更新时间',
  `remark`      varchar(500) DEFAULT NULL             COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_account_city_name` (`city_name`),
  KEY `idx_account_city_status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COMMENT='城市主数据表(会员列表城市筛选与城市公司档案共用)';
 
-- ---------- 2. account_city_company:城市公司档案 ----------
-- 一个城市至多一条档案(1:1)。同城市重复建档由服务层拦,不加 UNIQUE(city_id):
-- 同上,逻辑删除的残留行会占死唯一键。
-- 档案编号是自增 id,起始 33140000 对齐原型里的 8 位编号观感(业务上无特殊含义)。
-- user_id 指向被绑定的会员(限 L4,见服务层校验);联系人/手机号是档案自己的字段,
-- 不冗余到 account_certification——同一家公司换联系人时不该动会员的认证资料。
CREATE TABLE IF NOT EXISTS `account_city_company` (
  `id`            bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '档案编号',
  `city_id`       bigint(20)   NOT NULL                COMMENT '所属城市(account_city.id)',
  `company_name`  varchar(128) NOT NULL                COMMENT '公司名称',
  `user_id`       bigint(20)   NOT NULL                COMMENT '关联用户账号(account_user.user_id,限 L4 会员)',
  `contact_name`  varchar(64)  NOT NULL                COMMENT '联系人',
  `contact_phone` varchar(20)  NOT NULL                COMMENT '联系电话',
  `status`        char(1)      DEFAULT '0'             COMMENT '状态(0正常 1禁用)',
  `del_flag`      char(1)      DEFAULT '0'             COMMENT '删除标志(0存在 2删除)',
  `create_by`     varchar(64)  DEFAULT ''              COMMENT '创建者',
  `create_time`   datetime     DEFAULT NULL            COMMENT '创建时间',
  `update_by`     varchar(64)  DEFAULT ''              COMMENT '更新者',
  `update_time`   datetime     DEFAULT NULL            COMMENT '更新时间',
  `remark`        varchar(500) DEFAULT NULL            COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_city_company_city` (`city_id`),
  KEY `idx_city_company_user` (`user_id`),
  KEY `idx_city_company_status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=33140000 DEFAULT CHARSET=utf8mb4 COMMENT='城市公司档案表(一个城市一条)';
 
-- ---------- 3. 结果核对 ----------
SELECT `table_name`, `table_comment` FROM `information_schema`.`tables`
WHERE `table_schema` = 'hugray-account' AND `table_name` IN ('account_city', 'account_city_company');
SELECT `table_name`, `column_name`, `column_type`, `column_comment`
FROM `information_schema`.`columns`
WHERE `table_schema` = 'hugray-account' AND `table_name` IN ('account_city', 'account_city_company')
ORDER BY `table_name`, `ordinal_position`;