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
-- ----------------------------
-- 平台设置:平台级参数(单行配置)
--
-- 目标库 hugray(**系统库**)——与协议配置同一个判断:平台参数全平台只有一份,
-- 与具体会员无关,属系统级配置,故落系统库、后端放 ruoyi-system(菜单 2220 已在系统管理下)。
-- 表是新建,用 CREATE TABLE IF NOT EXISTS,脚本可重复执行。
--
-- 【单行表:一行承载全部平台级参数】
-- 全表只维护一行(setting_id = 1):读走 order by setting_id asc limit 1,
-- 写走 insert ... on duplicate key update setting_id = 1。由此:
--   - 没有历史行、没有 status/del_flag —— 「改」就是覆盖,用户已确认不保留修改历史;
--   - **不插种子行**:没保存过之前 GET 返回 null,页面渲染成空表单(与原型的空白状态一致),
--     第一次保存时由 upsert 建行;行被误删也会在下一次保存时自动重建。
--
-- 【为什么不用原生 sys_config(键值表)】
--   sys_config 是 config_value varchar(500) 的键值表,**原生对数字零约束**——数字校验照样得自己写,
--   一点没省;6 个字段要拆成 6 行,前后端各维护一份 key→字段 映射;
--   且它会出现在原生「参数设置」页里,等于给「未支付订单取消时间」这类业务关键时限
--   开出第二条无约束的编辑路径。故新建本表:字段带类型、带注释、可校验。
--
-- 【数值列用 bigint 而非 int】口径是「非负整数、不限上限」,
--   int 遇到超大输入会在写库时抛 500,bigint 让校验口径与存储能力一致。
--   4 个数值列都可空:NULL 表示「未设置」,与用户明确填的 0 区分开(0 是有意义的值)。
--
-- 【谁消费这些时限】**目前没有消费方**:订单/交易服务还不存在(ruoyi-modules 里没有 trade/order 模块,
--   前端 trade/* 全是占位页,hugray-order 库存在但零张表)。将来由交易服务经 ruoyi-system 的接口读取,
--   不要把参数复制进订单库。
-- ----------------------------
 
USE `hugray`;
 
-- ---------- 1. sys_platform_setting:平台设置(单行) ----------
CREATE TABLE IF NOT EXISTS `sys_platform_setting` (
  `setting_id`            bigint       NOT NULL      COMMENT '主键,固定为 1(全表只保留一行)',
  `city_hotline`          varchar(64)  DEFAULT NULL  COMMENT '城市招商热线(纯文本,不校验格式)',
  `partner_recruit`       varchar(255) DEFAULT NULL  COMMENT '合伙人招募(纯文本,可能填电话/微信号/一段话)',
  `unpaid_cancel_minutes` bigint       DEFAULT NULL  COMMENT '未支付订单取消时间(分钟)',
  `auto_receive_days`     bigint       DEFAULT NULL  COMMENT '发货后自动确认收货时间(天)',
  `aftersale_days`        bigint       DEFAULT NULL  COMMENT '收货后售后时间(天)',
  `delivery_cycle_days`   bigint       DEFAULT NULL  COMMENT '平台发货周期(天)',
  `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(255) DEFAULT NULL  COMMENT '备注',
  PRIMARY KEY (`setting_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台设置(单行配置:一行承载全部平台级参数,无历史版本)';
 
-- ---------- 2. 结果核对 ----------
SELECT `table_name`, `engine`, `table_comment`
FROM `information_schema`.`tables`
WHERE `table_schema` = 'hugray' AND `table_name` = 'sys_platform_setting';
 
SELECT `column_name`, `column_type`, `is_nullable`, `column_key`, `column_default`, `column_comment`
FROM `information_schema`.`columns`
WHERE `table_schema` = 'hugray' AND `table_name` = 'sys_platform_setting'
ORDER BY `ordinal_position`;
 
SELECT `index_name`, `seq_in_index`, `column_name`, `non_unique`
FROM `information_schema`.`statistics`
WHERE `table_schema` = 'hugray' AND `table_name` = 'sys_platform_setting'
ORDER BY `index_name`, `seq_in_index`;
 
-- 应当为 0:本脚本刻意不插种子行,第一次保存时才由 upsert 建行
SELECT COUNT(1) AS `应有0行` FROM `sys_platform_setting`;