2024-03-25 库存修改.sql 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. 注意,请把这几行注释掉执行sql,写这行的目的是进行必要的说明:
  2. 1. 本次更新会将库存从数据库中移除,并使用redis进行存储。
  3. 2. 这里的redis是持久化的,所以需要先部署好mall4j-aof-redis。这里的reids与mall4d-bbc中的redis是不同的两个,所以需要重新配置,并且是需要挂载持久化的。
  4. 3. 把库存放在redis进行持久化存储,是为了减少数据库压力,提高性能。所以这个redis是持久化的,不能随便删除挂载的文件,否则会导致数据丢失。
  5. 库存初始化步骤:
  6. 1.根据`mall4d-bbc`项目中提供的部署模板,部署持久化redis(mall4j-aof-redis)
  7. 2.执行以下sql, 重新配置各个服务的redis并重启服务
  8. 3.到xxl-job的控制台执行一次`初始化商品库存`的定时任务,执行后即可删除该定时任务
  9. # 修改菜单
  10. INSERT INTO `tz_shop_menu`(`menu_id`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `hidden`) VALUES
  11. (742, 221, '', '', 0, '', 0, 0),
  12. (743, 742, 'stock/stowage/warehouse-manage/index', '', 1, '', 0, 0),
  13. (744, 742, 'stock/stowage/transfer-order/index', '', 1, '', 2, 0),
  14. (745, 742, 'stock/stowage/transfer-order-create/index', '', 1, '', 3, 1);
  15. INSERT INTO `tz_shop_menu_lang`(`menu_id`, `lang`, `name`) VALUES
  16. (742, 0, '仓库门店'),
  17. (743, 0, '仓库管理'),
  18. (744, 0, '调拨订单'),
  19. (745, 0, '新建调拨订单');
  20. UPDATE `tz_shop_menu` SET `order_num` = 1 WHERE `menu_id` = 222;
  21. UPDATE `tz_shop_menu` SET `order_num` = 2 WHERE `menu_id` = 237;
  22. UPDATE `tz_shop_menu` SET `order_num` = 3 WHERE `menu_id` = 225;
  23. UPDATE `tz_shop_menu` SET `order_num` = 4 WHERE `menu_id` = 229;
  24. UPDATE `tz_shop_menu` SET `order_num` = 5 WHERE `menu_id` = 259;
  25. UPDATE `tz_shop_menu` SET `parent_id` = 742, `url` = 'stock/stowage/admin-station/index', `order_num` = 1 WHERE `menu_id` = 38;
  26. # 添加库存管理表
  27. CREATE TABLE `tz_stock_point_sku` (
  28. `stock_point_sku_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '库存商品关联skuid',
  29. `stock_point_id` bigint NOT NULL COMMENT '库存点id',
  30. `stock_point_type` tinyint NOT NULL COMMENT '库存点类型 1仓库 2门店',
  31. `prod_id` bigint DEFAULT NULL COMMENT 'prod_id',
  32. `sku_id` bigint DEFAULT NULL COMMENT 'skuid',
  33. `status` tinyint DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
  34. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  35. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  36. `type` tinyint DEFAULT '1' COMMENT '仓库类型(0默认仓库,1区域仓库)',
  37. `stock_mode` tinyint DEFAULT NULL COMMENT '库存模式 1共享总部库存 2独立销售库存',
  38. PRIMARY KEY (`stock_point_sku_id`),
  39. KEY `idx_stock_point_id` (`stock_point_id`) USING BTREE,
  40. KEY `idx_prod_id` (`prod_id`) USING BTREE,
  41. KEY `idx_sku_id` (`sku_id`) USING BTREE
  42. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  43. # 新增仓库表
  44. CREATE TABLE `tz_warehouse` (
  45. `warehouse_id` bigint NOT NULL COMMENT '仓库id',
  46. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
  47. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  48. `shop_id` bigint DEFAULT NULL COMMENT '店铺id',
  49. `warehouse_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '仓库名称',
  50. `type` tinyint DEFAULT NULL COMMENT '仓库类型(0默认仓库,1区域仓库)',
  51. `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '仓库地址',
  52. `manage` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理人',
  53. `phone` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理电话',
  54. `sys_type` tinyint DEFAULT NULL COMMENT '系统类型',
  55. `province_id` bigint DEFAULT NULL COMMENT '省ID',
  56. `province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '省',
  57. `city_id` bigint DEFAULT NULL COMMENT '城市ID',
  58. `city` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '城市',
  59. `area_id` bigint DEFAULT NULL COMMENT '区ID',
  60. `area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '区',
  61. PRIMARY KEY (`warehouse_id`),
  62. KEY `shop_id` (`shop_id`) USING BTREE,
  63. KEY `idx_province_id` (`province_id`) USING BTREE,
  64. KEY `idx_city_id` (`city_id`) USING BTREE,
  65. KEY `idx_area_id` (`area_id`) USING BTREE,
  66. KEY `idx_warehouse_id` (`warehouse_id`) USING BTREE
  67. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  68. INSERT INTO `tz_warehouse` (`warehouse_id`,`shop_id`, `warehouse_name`, `type`, `address`, `manage`, `phone`, `sys_type`, `province_id`, `province`, `city_id`, `city`, `area_id`, `area`)
  69. VALUES
  70. (300000000000000,0,'默认仓库',0,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL),
  71. (300000000001000,1,'默认仓库',0,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL);
  72. # 为旧门店数据创建门店仓库
  73. INSERT INTO `tz_warehouse` ( `warehouse_id`, `shop_id`, `sys_type`, `type`, `warehouse_name`, `phone`, `province_id`, `province`, `city_id`, `city`, `area_id`, `area`, `address` )
  74. (
  75. SELECT
  76. station_id warehouse_id,
  77. station_id shop_id,
  78. '3' sys_type,
  79. '1' type,
  80. station_name warehouse_name,
  81. phone,
  82. province_id,
  83. province,
  84. city_id,
  85. city,
  86. area_id,
  87. area,
  88. addr address
  89. FROM
  90. `tz_station`);
  91. CREATE TABLE `tz_warehouse_area` (
  92. `warehouse_area_id` bigint NOT NULL AUTO_INCREMENT,
  93. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
  94. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  95. `warehouse_id` bigint DEFAULT NULL COMMENT '仓库id',
  96. `area_id` bigint DEFAULT NULL COMMENT '城市id',
  97. PRIMARY KEY (`warehouse_area_id`) USING BTREE,
  98. KEY `idx_warehouse_id` (`warehouse_id`) USING BTREE,
  99. KEY `idx_city_id` (`area_id`) USING BTREE
  100. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='仓库项和供货城市关联信息';
  101. INSERT INTO `tz_leaf_alloc`(`biz_tag`, `max_id`, `step`, `update_time`, `description`) VALUES
  102. ('mall4j-stock-point', 1000, 1000, '2023-12-15 17:28:15', '库存点id'),
  103. ('mall4j-allot-order', 1000, 1000, '2023-12-15 17:28:15', '调拨订单id');
  104. # 所有门店添加库存模式,并统一为共享总部库存
  105. ALTER TABLE `tz_station`
  106. ADD COLUMN `stock_mode` tinyint DEFAULT NULL COMMENT '库存模式 1共享总部库存 2独立销售库存';
  107. update tz_station set stock_mode = 1;
  108. ALTER TABLE `tz_seckill`
  109. ADD COLUMN `replenish` int DEFAULT NULL COMMENT '补充库存 0不补充 1补充';
  110. CREATE TABLE `tz_seckill_stock_point_sku` (
  111. `seckill_stock_point_sku_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '库存商品关联skuid',
  112. `stock_point_id` bigint NOT NULL COMMENT '库存点id',
  113. `stock_point_type` tinyint NOT NULL COMMENT '库存点类型 1仓库 2门店',
  114. `sku_id` bigint DEFAULT NULL COMMENT 'sku_id',
  115. `seckill_sku_id` bigint DEFAULT NULL COMMENT '秒杀活动skuid',
  116. `status` tinyint DEFAULT '0' COMMENT '状态 1:enable, 0:disable, -1:deleted',
  117. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  118. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  119. `type` tinyint DEFAULT NULL COMMENT '仓库类型(0默认仓库,1区域仓库)',
  120. `seckill_origin_stocks` int DEFAULT NULL COMMENT '秒杀库存点原始库存',
  121. `stock_mode` tinyint DEFAULT NULL COMMENT '库存模式 1共享总部库存 2独立销售库存',
  122. PRIMARY KEY (`seckill_stock_point_sku_id`),
  123. KEY `idx_stock_point_id` (`stock_point_id`) USING BTREE,
  124. KEY `idx_sku_id` (`sku_id`) USING BTREE,
  125. KEY `idx_seckill_sku_id` (`seckill_sku_id`) USING BTREE
  126. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  127. # 商品组合商品相关字段
  128. ALTER TABLE `tz_prod`
  129. MODIFY `mold` tinyint NOT NULL COMMENT '商品类别 0.实物商品 1.虚拟商品 2.组合商品',
  130. ADD COLUMN `is_all_entity` INT DEFAULT NULL COMMENT '是否为全部实物商品的组合商品 1.是 0.否';
  131. ALTER TABLE `tz_sku` ADD COLUMN `stock_warning_status` tinyint NOT NULL DEFAULT '1' COMMENT '库存预警状态 2:库存充足 1:库存预警';
  132. CREATE TABLE `tz_sku_combo` (
  133. `sku_id` bigint NOT NULL COMMENT '规格id',
  134. `combo_sku_id` bigint NOT NULL COMMENT '组合的skuid',
  135. `combo_prod_id` bigint NOT NULL COMMENT '组合的spuid',
  136. `combo_count` int NOT NULL COMMENT '组合数量',
  137. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  138. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  139. PRIMARY KEY (`sku_id`,`combo_sku_id`),
  140. KEY `idx_spu_id` (`combo_prod_id`)
  141. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='规格组合商品关联表';
  142. ALTER TABLE `tz_order`
  143. ADD COLUMN main_order_number BIGINT NOT NULL DEFAULT '0' COMMENT '主单号,在组合/套餐商品拆单时会存在' AFTER `is_refund`,
  144. ADD KEY `idx_main_order_number` (`main_order_number`);
  145. ALTER TABLE `tz_order_item`
  146. ADD COLUMN `activity_id` bigint DEFAULT NULL COMMENT '活动id',
  147. ADD COLUMN `mold` tinyint NOT NULL COMMENT '商品类别 0.实物商品 1.虚拟商品 2.组合商品',
  148. ADD COLUMN `stock_point_id` bigint DEFAULT NULL COMMENT '库存点id',
  149. ADD COLUMN `activity_type` tinyint DEFAULT '0' COMMENT '活动类型 具体类型参考枚举类:OrderActivityType',
  150. ADD KEY `idx_activity_id` (`activity_id`);
  151. # 新增调拨订单
  152. CREATE TABLE `tz_allot_order` (
  153. `allot_order_id` BIGINT ( 0 ) NOT NULL COMMENT '调拨订单id',
  154. `out_warehouse_id` BIGINT ( 0 ) NULL DEFAULT NULL COMMENT '调出点仓库id',
  155. `out_stock_point_type` INT ( 0 ) NULL DEFAULT NULL COMMENT '调出点库存点类型(1:仓库, 2:门店)',
  156. `in_warehouse_id` BIGINT ( 0 ) NULL DEFAULT NULL COMMENT '调入点仓库id',
  157. `in_stock_point_type` INT ( 0 ) NULL DEFAULT NULL COMMENT '调入点库存点类型(1:仓库, 2:门店)',
  158. `dvy_company_id` BIGINT ( 0 ) NULL DEFAULT NULL COMMENT '物流公司id',
  159. `dvy_type` INT ( 0 ) NULL DEFAULT NULL COMMENT '物流方式(1:快递, 3:无需快递)',
  160. `dvy_order_number` VARCHAR ( 20 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '物流单号',
  161. `status` INT ( 0 ) NULL DEFAULT NULL COMMENT '状态(0:作废, 1:待入库, 2:部分入库, 3:已完成)',
  162. `total_allot_count` INT ( 0 ) NULL DEFAULT NULL COMMENT '总调拨数量',
  163. `remark` VARCHAR ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
  164. `shop_id` BIGINT ( 0 ) NULL COMMENT '店铺id',
  165. `sys_type` INT ( 1 ) NULL COMMENT '系统类型',
  166. `create_time` datetime ( 0 ) NULL DEFAULT NULL COMMENT '创建时间',
  167. `update_time` datetime ( 0 ) NULL DEFAULT NULL COMMENT '更新时间',
  168. PRIMARY KEY ( `allot_order_id` ) USING BTREE,
  169. KEY `idx_out_warehouse_id` (`out_warehouse_id`),
  170. KEY `idx_in_warehouse_id` (`in_warehouse_id`),
  171. KEY `idx_dvy_company_id` (`dvy_company_id`),
  172. KEY `idx_shop_id` (`shop_id`)
  173. );
  174. # 新增调拨订单项
  175. CREATE TABLE `tz_allot_order_item` (
  176. `allot_order_item_id` BIGINT NOT NULL COMMENT '调拨订单商品id',
  177. `allot_order_id` BIGINT NULL COMMENT '调拨订单id',
  178. `spu_id` BIGINT NULL COMMENT '商品spuId',
  179. `sku_id` BIGINT NULL COMMENT '商品skuId',
  180. `allot_count` INT ( 255 ) NULL COMMENT '调拨数量',
  181. `allot_in_count` INT ( 255 ) NULL COMMENT '调拨入库数量',
  182. `create_time` datetime NULL COMMENT '创建时间',
  183. `update_time` datetime NULL COMMENT '创建时间',
  184. PRIMARY KEY ( `allot_order_item_id` ),
  185. KEY `idx_allot_order_id` (`allot_order_id`),
  186. KEY `idx_spu` (`spu_id`, `sku_id`)
  187. );
  188. # 库存流水字段补充
  189. ALTER TABLE `tz_stock_bill_log`
  190. ADD COLUMN `stock_point_id` bigint(0) NULL COMMENT '库存点Id' AFTER `maker_mobile`,
  191. ADD COLUMN `stock_point_type` tinyint(1) NULL COMMENT '库存点类型(1:仓库, 2:门店)' AFTER `stock_point_id`,
  192. ADD KEY `idx_stock_point_id` (`stock_point_id`);
  193. # 采购订单字段补充
  194. ALTER TABLE `tz_purchase_order`
  195. ADD COLUMN `warehouse_id` bigint(0) NULL COMMENT '仓库id' AFTER `employee_id`,
  196. ADD COLUMN `stock_point_type` tinyint(1) NULL COMMENT '库存点类型(1:仓库, 2:门店)' AFTER `warehouse_id`,
  197. ADD KEY `idx_warehouse_id` (`warehouse_id`);
  198. # 实物盘点字段补充
  199. ALTER TABLE `tz_take_stock`
  200. ADD COLUMN `warehouse_id` bigint(0) NULL COMMENT '仓库id' AFTER `maker_mobile`,
  201. ADD COLUMN `stock_point_type` tinyint(1) NULL COMMENT '库存点类型(1:仓库, 2:门店)' AFTER `warehouse_id`,
  202. ADD KEY `idx_warehouse_id` (`warehouse_id`);
  203. # 移除多余的菜单 1046和1047是无用的的路径分析子菜单
  204. delete from tz_sys_menu_lang where menu_id in (1046,1047);
  205. delete from tz_sys_menu where menu_id in (1046,1047);
  206. INSERT INTO `tz_leaf_alloc` (`biz_tag`, `max_id`, `step`, `description`)
  207. VALUES
  208. ("mall4j-purchases-order", 1, 100, "采购订单编号"),
  209. ("mall4j-ent-pay-order-no", 1, 100, "分销提现商家转账订单号"),
  210. ("mall4j-distribution-card-no", 1000000000000, 100, "分销员卡号"),
  211. ("mall4j-distribution-ticket", 1000000000000, 100, "分销商品二维码"),
  212. ("mall4j-seckill-order-path", 1000000000000, 100, "秒杀订单路径");
  213. # 补全旧的赠品订单项数据
  214. UPDATE `tz_order_item` SET activity_type = 5, activity_id = giveaway_order_item_id WHERE giveaway_order_item_id IS NOT NULL AND giveaway_order_item_id > 0;
  215. # 添加定时任务后只需要执行一次,将旧的商品数据转换
  216. insert into `xxl_job`.`xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`,
  217. `schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`,
  218. `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`,
  219. `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`,
  220. `child_jobid`, `trigger_status`, `trigger_last_time`, `trigger_next_time`)
  221. values
  222. (48,2, '初始化商品库存', '2024-03-06 10:07:30', '2024-03-06 10:07:30', 'admin', '', 'CRON',
  223. '0 0/30 * * * ?', 'DO_NOTHING', 'FIRST', 'intiStock', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN',
  224. '', 'GLUE代码初始化', '2023-12-25 10:07:30', '', 0, 0, 0),
  225. (49,2, '退款订单库存处理', '2024-03-06 10:07:30', '2024-03-06 10:07:30', 'admin', '', 'CRON',
  226. '0 0/5 * * * ?', 'DO_NOTHING', 'FIRST', 'refundOrderStock', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN',
  227. '', 'GLUE代码初始化', '2023-12-25 10:07:30', '', 1, 0, 0),
  228. (50,2, '恢复商品sku库存', '2024-03-06 10:07:30', '2024-03-06 10:07:30', 'admin', '', 'CRON',
  229. '0 0/30 * * * ?', 'DO_NOTHING', 'FIRST', 'restoreStock', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN',
  230. '', 'GLUE代码初始化', '2023-12-25 10:07:30', '', 0, 0, 0)
  231. ;
  232. delete from `xxl_job`.`xxl_job_info` where executor_handler in ('hotStockPlacement', 'coldStockPlacement')