-- ---------------------------- -- C 端会员 个人中心-会员中心 相关变更(ruoyi-user 用户服务) -- -- 需求:个人中心「会员中心」页需展示「销售统计」(当月销售额/进货额/利润、销售额趋势、 -- 商品销售额比例、销售用户排行)与「我的仓库」(库存列表、低库存警示、进货、仓库记录)。 -- 变更内容: -- 1. 新增「会员销售流水表」account_sales_record,销售三栏/趋势/比例/排行由其按时间实时聚合; -- 2. 新增「会员进货单表」account_purchase_order,进货入库留痕,当月进货额由其聚合; -- 3. 新增「会员云仓变动流水表」account_warehouse_record,记录每次库存变动(进货入库等)。 -- -- 说明(按权威库 192.168.110.111 的既有结构对齐): -- account_warehouse 已有库存列,本脚本不改动该表;进货仅在其上做 stock_qty 原子自增。 -- account_user 的 9 个业务统计列本期不回填,页面数据一律由流水表实时聚合,避免双写口径不一致。 -- -- 目标库 hugray-account 由使用方预先创建(utf8mb4)。 -- 注意:库名含连字符,任何引用都必须用反引号。 -- ---------------------------- USE `hugray-account`; -- 变更 1:新增会员销售流水表(一条流水 = 一次销售事件,含销售额与利润额) CREATE TABLE IF NOT EXISTS `account_sales_record` ( `record_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '销售流水ID', `seller_id` bigint(20) NOT NULL COMMENT '销售会员ID(account_user.user_id)', `buyer_id` bigint(20) DEFAULT NULL COMMENT '购买会员ID(account_user.user_id,散客为空)', `buyer_name` varchar(64) DEFAULT NULL COMMENT '购买人昵称(销售排行展示用)', `buyer_phone` varchar(20) DEFAULT NULL COMMENT '购买人手机号(下发脱敏)', `product_name` varchar(128) DEFAULT NULL COMMENT '商品名称(比例图/排行展示用)', `qty` bigint(20) NOT NULL DEFAULT 0 COMMENT '销售数量', `amount` bigint(20) NOT NULL DEFAULT 0 COMMENT '销售额(单位:分)', `profit_amount` bigint(20) NOT NULL DEFAULT 0 COMMENT '利润额(单位:分,可为负)', `sale_time` datetime DEFAULT NULL COMMENT '销售时间(聚合口径)', `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 (`record_id`), -- 覆盖「按销售会员 + 时间区间」的聚合,避免全表扫描 KEY `idx_sales_seller_time` (`seller_id`, `sale_time`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COMMENT='会员销售流水表'; -- 变更 2:新增会员进货单表(生成进货单即增加云仓库存,下单时间即聚合口径) CREATE TABLE IF NOT EXISTS `account_purchase_order` ( `order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '进货单ID', `order_no` varchar(64) NOT NULL COMMENT '进货单号(幂等唯一)', `user_id` bigint(20) NOT NULL COMMENT '进货会员ID(account_user.user_id)', `warehouse_id` bigint(20) DEFAULT NULL COMMENT '云仓行ID(account_warehouse.id,快照)', `product_name` varchar(128) DEFAULT NULL COMMENT '商品名称(快照)', `qty` bigint(20) NOT NULL DEFAULT 0 COMMENT '进货数量', `unit_price` bigint(20) NOT NULL DEFAULT 0 COMMENT '进货单价(单位:分)', `total_amount` bigint(20) NOT NULL DEFAULT 0 COMMENT '进货金额(单位:分)= qty × unit_price', `status` char(1) DEFAULT '1' COMMENT '状态(1已入库)', `purchase_time` datetime DEFAULT NULL COMMENT '进货时间(聚合口径)', `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 (`order_id`), -- 业务幂等:进货单号全局唯一,重复入库被数据库兜底拦截 UNIQUE KEY `uk_purchase_order_no` (`order_no`), -- 覆盖「按会员 + 时间区间」的进货额聚合 KEY `idx_purchase_user_time` (`user_id`, `purchase_time`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COMMENT='会员进货单表'; -- 变更 3:新增会员云仓变动流水表(进货入库/销售出库等库存变动留痕) CREATE TABLE IF NOT EXISTS `account_warehouse_record` ( `record_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '流水ID', `user_id` bigint(20) NOT NULL COMMENT '会员ID(account_user.user_id)', `warehouse_id` bigint(20) DEFAULT NULL COMMENT '云仓行ID(account_warehouse.id)', `product_name` varchar(128) DEFAULT NULL COMMENT '商品名称(快照)', `change_type` char(1) NOT NULL COMMENT '变动类型(1进货入库 2销售出库 3库存调整)', `change_qty` bigint(20) NOT NULL DEFAULT 0 COMMENT '变动数量(入库为正,出库为负)', `after_qty` bigint(20) NOT NULL DEFAULT 0 COMMENT '变动后库存', `biz_no` varchar(64) DEFAULT NULL COMMENT '业务单号(关联进货单等)', `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 (`record_id`), -- 覆盖「按会员 + 时间倒序」的流水分页 KEY `idx_whrecord_user_time` (`user_id`, `create_time`), KEY `idx_whrecord_warehouse` (`warehouse_id`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COMMENT='会员云仓变动流水表'; -- ---------------------------- -- 回滚语句(如需回滚,按依赖倒序执行) -- ---------------------------- -- DROP TABLE IF EXISTS `account_warehouse_record`; -- DROP TABLE IF EXISTS `account_purchase_order`; -- DROP TABLE IF EXISTS `account_sales_record`;