20260706_redesign.sql 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. -- ouyang 2026-7-17 10:11:34
  2. ALTER TABLE xhHd
  3. add COLUMN `homeRule` tinyint(4) NOT NULL DEFAULT '0' COMMENT '上门遵循规则 0遵循总设置 1遵循自定义' after `updateTime`;
  4. ALTER TABLE xhCustom
  5. add COLUMN `homeRule` tinyint(4) NOT NULL DEFAULT '0' COMMENT '上门遵循规则 0遵循总设置 1遵循自定义' after `updateTime`;
  6. -- ouyang 2026-7-17 11:31:52 用户地址列表
  7. -- 注意现有的用户收货地址要同步过来
  8. CREATE TABLE `xhUserAddress` (
  9. `id` bigint(11) NOT NULL AUTO_INCREMENT,
  10. `userId` int(11) NOT NULL DEFAULT '0' COMMENT '用户id',
  11. `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '收货人',
  12. `phone` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '手机号',
  13. `lat` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '纬度',
  14. `long` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '经度',
  15. `province` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '省',
  16. `city` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '市',
  17. `dist` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '区县',
  18. `address` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '街道地址',
  19. `floor` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '楼号门牌号',
  20. `fullAddress` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '完整地址',
  21. `showAddress` varchar(900) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '地图接口显示的完整地址',
  22. `default` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否默认地址',
  23. `tag` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标签',
  24. `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  25. `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  26. PRIMARY KEY (`id`) USING BTREE,
  27. KEY `idx_userId` (`userId`) USING BTREE
  28. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户地址列表';
  29. -- ouyang 2026-7-20 15:27:39
  30. CREATE TABLE `xhPsExplain` (
  31. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  32. `methodId` int(11) NOT NULL COMMENT '关联 PsMethod.id',
  33. `explain` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '说明文字,最多50字',
  34. `color` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '颜色:1黑 2红 3蓝',
  35. `fontWeight` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '字重:1常规 2加粗',
  36. `sort` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '显示顺序,越小越靠前',
  37. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  38. PRIMARY KEY (`id`),
  39. KEY `idx_method_sort` (`methodId`,`sort`)
  40. ) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='花店配送方式说明条目';
  41. CREATE TABLE `xhPsMethod` (
  42. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  43. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  44. `mainId` int(11) NOT NULL DEFAULT '0' COMMENT 'mainId',
  45. `style` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'sendType 0送货 1自取 2跑腿 3物流 4快递 transType 0德邦 1顺丰 2冷链 3航空 4送货 5自取',
  46. `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '名称',
  47. `originName` char(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '原名',
  48. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1启用 0禁用',
  49. `sort` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '显示顺序',
  50. `minAmount` decimal(10,2) DEFAULT '0.00' COMMENT '最低消费金额,0表示没有要求',
  51. `minNum` smallint(5) DEFAULT '0' COMMENT '最低消费数量,0表示没有要求',
  52. `unMeet` tinyint(3) unsigned DEFAULT '0' COMMENT '不满条件,0收运费 1收包装费 2不能下单',
  53. `unMeetFee` decimal(10,2) DEFAULT '0.00' COMMENT '运费(送货) / 包装费(快递)',
  54. `startKm` decimal(8,2) DEFAULT '0.00' COMMENT '起步公里数',
  55. `startPrice` decimal(10,2) DEFAULT '0.00' COMMENT '起步公里内价格(元)',
  56. `perKmPrice` decimal(10,2) DEFAULT '0.00' COMMENT '超出起步每公里加价(元)',
  57. `changeRate` decimal(6,2) DEFAULT '0.00' COMMENT '临时涨价百分比,负数为降价',
  58. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  59. `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  60. PRIMARY KEY (`id`),
  61. UNIQUE KEY `uk_main_type` (`mainId`,`style`)
  62. ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='花店送货方式配置表';
  63. CREATE TABLE `xhPsReduceRule` (
  64. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  65. `methodId` int(11) NOT NULL COMMENT '关联 PsMethod.id',
  66. `meetNum` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '满数量',
  67. `meetAmount` decimal(10,2) NOT NULL COMMENT '满金额',
  68. `freeKm` decimal(8,2) NOT NULL COMMENT 'X公里内免配送费',
  69. `sort` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '规则排序,越小越靠前',
  70. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  71. PRIMARY KEY (`id`),
  72. KEY `idx_method_sort` (`methodId`,`sort`)
  73. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='花店送货方式,跑腿,花材,满减规则';
  74. -- ouyang 2026-7-22 17:13:06
  75. -- =============================================================================
  76. -- 分销功能 — 数据库建表脚本(hdApp)
  77. -- =============================================================================
  78. SET NAMES utf8mb4;
  79. SET SESSION lock_wait_timeout = 10;
  80. -- -----------------------------------------------------------------------------
  81. -- 1. 分销用户表(id = xhCustom.id,非自增)
  82. -- -----------------------------------------------------------------------------
  83. CREATE TABLE IF NOT EXISTS `xhDistributionUser` (
  84. `id` bigint(20) unsigned NOT NULL COMMENT '主键,与 xhCustom.id 一致',
  85. `customId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '客户ID, xhCustom id',
  86. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  87. `inviterId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '邀请人 xhCustom.id,0无',
  88. `inviteTime` datetime DEFAULT NULL COMMENT '邀请时间',
  89. `inviteCount` int(11) NOT NULL DEFAULT '0' COMMENT '拉新数量',
  90. `orderCount` int(11) NOT NULL DEFAULT '0' COMMENT '本人获佣订单数',
  91. `orderAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '本人获佣订单金额(计佣基数合计)',
  92. `pendingCommission` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '待结算提成(已付款未分佣)',
  93. `settledCommission` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '已结算提成(已分佣)',
  94. `totalCommission` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '累计提成(待结算+已结算)',
  95. `totalDeposit` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '累计存入金额',
  96. `availDeposit` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '可存入分红余额(已结算未存入)',
  97. `upOrderCount` int(11) NOT NULL DEFAULT '0' COMMENT '为上级贡献订单数(本人下单产生)',
  98. `upOrderAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '为上级贡献订单金额(计佣基数合计)',
  99. `upCommissionAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '为上级贡献提成金额';
  100. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1正常 0禁用',
  101. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  102. `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  103. PRIMARY KEY (`id`),
  104. KEY `idx_shop` (`shopId`),
  105. KEY `idx_inviter` (`shopId`, `inviterId`),
  106. KEY `idx_customId` (`customId`)
  107. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分销用户统计表';
  108. -- -----------------------------------------------------------------------------
  109. -- 1.1 客户与分销员绑定(按时间递减计佣必填;inviteTime 是邀请成为分销员,bindTime 是客户绑定关系)
  110. -- -----------------------------------------------------------------------------
  111. CREATE TABLE IF NOT EXISTS `xhDistributionCustomerBind` (
  112. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  113. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  114. `hdId` int(11) NOT NULL DEFAULT '0' COMMENT '花店ID',
  115. `buyerId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '下单客户 xhCustom.id',
  116. `distId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '绑定分销员 xhCustom.id',
  117. `bindTime` datetime NOT NULL COMMENT '绑定时间(递减计佣起点)',
  118. `bindSource` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1邀请 2扫码 3首单 4后台',
  119. `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1有效 0失效',
  120. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  121. `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  122. PRIMARY KEY (`id`),
  123. UNIQUE KEY `uk_shop_buyer` (`shopId`, `buyerId`),
  124. KEY `idx_dist` (`shopId`, `distId`, `bindTime`),
  125. KEY `idx_buyer` (`buyerId`)
  126. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户与分销员绑定';
  127. -- -----------------------------------------------------------------------------
  128. -- 2. 分销规则(图2 固定比例 / 图3 按时间递减)
  129. -- -----------------------------------------------------------------------------
  130. CREATE TABLE IF NOT EXISTS `xhDistributionRule` (
  131. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  132. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  133. `mainId` int(11) NOT NULL DEFAULT '0' COMMENT 'mainId',
  134. `status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '分销功能 0关 1开',
  135. `settleDays` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '订单完成后 N 天结算',
  136. `bonusType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1固定比例 2按时间递减',
  137. `bonusRate` decimal(6,2) NOT NULL DEFAULT '0.00' COMMENT '固定比例%(bonusType=1)',
  138. `durationType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '分红时长 1不限 2限制',
  139. `durationDays` int(11) NOT NULL DEFAULT '0' COMMENT '限制天数(durationType=2)',
  140. `timeStartType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '计时起点 1绑定时间',
  141. `productScope` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1全部 2指定商品 3指定分类',
  142. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  143. `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  144. PRIMARY KEY (`id`),
  145. UNIQUE KEY `uk_shop` (`shopId`),
  146. KEY `idx_mainId` (`mainId`)
  147. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分销规则';
  148. -- -----------------------------------------------------------------------------
  149. -- 2.1 时间递减阶梯
  150. -- -----------------------------------------------------------------------------
  151. CREATE TABLE IF NOT EXISTS `xhDistributionRuleTier` (
  152. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  153. `ruleId` int(11) NOT NULL DEFAULT '0' COMMENT 'xhDistributionRule.id',
  154. `minDays` int(11) NOT NULL DEFAULT '0' COMMENT '起始天数(含)',
  155. `maxDays` int(11) NOT NULL DEFAULT '0' COMMENT '结束天数(含);0=及以上',
  156. `bonusRate` decimal(6,2) NOT NULL DEFAULT '0.00' COMMENT '佣金比例%',
  157. `sort` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '排序',
  158. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  159. PRIMARY KEY (`id`),
  160. KEY `idx_rule_sort` (`ruleId`, `sort`)
  161. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分销规则阶梯';
  162. -- -----------------------------------------------------------------------------
  163. -- 2.2 指定商品/分类(productScope=2/3 时使用,若仅做「全部商品」可暂不建)
  164. -- -----------------------------------------------------------------------------
  165. CREATE TABLE IF NOT EXISTS `xhDistributionRuleScope` (
  166. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  167. `ruleId` int(11) NOT NULL DEFAULT '0' COMMENT 'xhDistributionRule.id',
  168. `scopeType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1商品 2分类',
  169. `targetId` int(11) NOT NULL DEFAULT '0' COMMENT 'goodsId 或 categoryId',
  170. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  171. PRIMARY KEY (`id`),
  172. UNIQUE KEY `uk_rule_target` (`ruleId`, `scopeType`, `targetId`),
  173. KEY `idx_rule` (`ruleId`)
  174. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分销规则商品范围';
  175. -- -----------------------------------------------------------------------------
  176. -- 3. 订单分销记录(图4/5)
  177. -- -----------------------------------------------------------------------------
  178. CREATE TABLE IF NOT EXISTS `xhDistributionOrder` (
  179. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  180. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  181. `hdId` int(11) NOT NULL DEFAULT '0' COMMENT '花店ID',
  182. `orderId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '订单ID',
  183. `orderSn` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',
  184. `buyerId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '下单客户 xhCustom.id',
  185. `buyerName` varchar(80) NOT NULL DEFAULT '' COMMENT '下单客户名(快照)',
  186. `distId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '获佣分销员 xhCustom.id',
  187. `distName` varchar(80) NOT NULL DEFAULT '' COMMENT '获佣人名(快照)',
  188. `orderAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '订单商品金额',
  189. `payAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '实付(含运费)',
  190. `sendCost` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '运费',
  191. `commissionBase` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '计佣基数=实付-运费',
  192. `commissionRate` decimal(6,2) NOT NULL DEFAULT '0.00' COMMENT '佣金比例%(快照)',
  193. `commissionAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '佣金金额',
  194. `bonusType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1固定 2递减(快照)',
  195. `bindTime` datetime DEFAULT NULL COMMENT '绑定时间(快照)',
  196. `bindDays` int(11) NOT NULL DEFAULT '0' COMMENT '下单距绑定天数(快照)',
  197. `settleStatus` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '0待结算 1已结算 2已失效',
  198. `orderTime` datetime DEFAULT NULL COMMENT '下单时间',
  199. `payTime` datetime DEFAULT NULL COMMENT '付款时间',
  200. `finishTime` datetime DEFAULT NULL COMMENT '订单完成时间',
  201. `settleTime` datetime DEFAULT NULL COMMENT '分佣时间',
  202. `invalidTime` datetime DEFAULT NULL COMMENT '失效时间',
  203. `invalidReason` varchar(255) NOT NULL DEFAULT '' COMMENT '失效原因',
  204. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  205. `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  206. PRIMARY KEY (`id`),
  207. UNIQUE KEY `uk_order_dist` (`orderId`, `distId`),
  208. KEY `idx_shop_settle` (`shopId`, `settleStatus`, `orderTime`),
  209. KEY `idx_dist_settle` (`distId`, `settleStatus`, `settleTime`),
  210. KEY `idx_orderSn` (`orderSn`),
  211. KEY `idx_buyer` (`buyerId`)
  212. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单分销记录';
  213. -- -----------------------------------------------------------------------------
  214. -- 4. 分销流水(图6)
  215. -- -----------------------------------------------------------------------------
  216. CREATE TABLE IF NOT EXISTS `xhDistributionFlow` (
  217. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  218. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  219. `hdId` int(11) NOT NULL DEFAULT '0' COMMENT '花店ID',
  220. `xhCustomId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '分销员 xhCustom.id',
  221. `flowType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1订单分红 2分红存入 3退款扣回',
  222. `amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '变动金额;分红+ 存入/扣回-',
  223. `availAfter` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '变动后可存分红余额',
  224. `refType` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '1分销订单 2存入日志',
  225. `refId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '关联业务ID',
  226. `refSn` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号/存入编号',
  227. `buyerName` varchar(80) NOT NULL DEFAULT '' COMMENT '下单客户(flowType=1)',
  228. `flowStatus` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1待结算 2已结算 3存入成功 4已扣回',
  229. `flowTime` datetime NOT NULL COMMENT '业务时间',
  230. `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
  231. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  232. PRIMARY KEY (`id`),
  233. KEY `idx_custom_time` (`xhCustomId`, `flowTime`),
  234. KEY `idx_shop_type_time` (`shopId`, `flowType`, `flowTime`),
  235. KEY `idx_ref` (`refType`, `refId`)
  236. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分销流水';
  237. -- -----------------------------------------------------------------------------
  238. -- 5. 分红存入日志(图7)
  239. -- -----------------------------------------------------------------------------
  240. CREATE TABLE IF NOT EXISTS `xhDistributionDepositLog` (
  241. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  242. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
  243. `hdId` int(11) NOT NULL DEFAULT '0' COMMENT '花店ID',
  244. `xhCustomId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '客户 xhCustom.id',
  245. `depositSn` varchar(32) NOT NULL DEFAULT '' COMMENT '存入编号',
  246. `depositAmount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '存入金额',
  247. `beforeAvail` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '存入前可存分红',
  248. `afterAvail` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '存入后可存分红',
  249. `balanceChangeId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'xhCustomBalanceChange.id',
  250. `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
  251. `addTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '存入时间',
  252. PRIMARY KEY (`id`),
  253. UNIQUE KEY `uk_depositSn` (`depositSn`),
  254. KEY `idx_custom_time` (`xhCustomId`, `addTime`),
  255. KEY `idx_shop_time` (`shopId`, `addTime`)
  256. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分红存入日志';
  257. -- =============================================================================
  258. -- 分销功能脚本结束
  259. -- =============================================================================
  260. -- 新增订单完成时间 ouyang 2026-7-24 18:18:01
  261. ALTER TABLE `xhOrder`
  262. ADD COLUMN `successTime` datetime NULL DEFAULT '0000-00-00 00:00:00' COMMENT '订单完成时间' AFTER `settleTime`;
  263. -- # 分销延迟结算定时任务 ouyang 2026-7-24 18:27:52
  264. -- 0 * * * * cd /path/to/huahuibao && php yii distribution/settle-due --limit=100
  265. -- -----------------------------------------------------------------------------
  266. -- 1. xhMain 增加钱包余额
  267. -- -----------------------------------------------------------------------------
  268. ALTER TABLE `xhMain`
  269. ADD COLUMN `walletBalance` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '钱包余额' AFTER `balance`;
  270. -- -----------------------------------------------------------------------------
  271. -- 2. 中央钱包变动记录
  272. -- -----------------------------------------------------------------------------
  273. CREATE TABLE IF NOT EXISTS `xhMainWalletChange` (
  274. `id` int(11) NOT NULL AUTO_INCREMENT,
  275. `relateId` int(11) NOT NULL DEFAULT '0' COMMENT '关联订单id',
  276. `ptStyle` tinyint(4) NOT NULL DEFAULT '1' COMMENT '平台类型 查看dict.php表',
  277. `capitalType` tinyint(4) NOT NULL DEFAULT '0' COMMENT '流水类型',
  278. `amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '变动金额',
  279. `balance` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '当前钱包余额',
  280. `io` tinyint(4) NOT NULL DEFAULT '0' COMMENT '类型 0减少 1增加',
  281. `payWay` tinyint(4) NOT NULL DEFAULT '0' COMMENT '支付方式',
  282. `fromType` tinyint(4) NOT NULL DEFAULT '1' COMMENT '来源 查看dict.php',
  283. `event` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '事项',
  284. `mainId` int(11) NOT NULL DEFAULT '0' COMMENT '中央id',
  285. `remark` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',
  286. `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  287. `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  288. PRIMARY KEY (`id`) USING BTREE,
  289. KEY `idx_mainId_addTime` (`mainId`, `addTime`) USING BTREE,
  290. KEY `idx_relateId` (`relateId`) USING BTREE
  291. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='中央钱包变动记录';
  292. -- -----------------------------------------------------------------------------
  293. -- 门店邀请(批发 / 花店)
  294. -- -----------------------------------------------------------------------------
  295. CREATE TABLE IF NOT EXISTS `xhMainInvite` (
  296. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  297. `mainId` int(11) NOT NULL DEFAULT '0' COMMENT '本店中央 id(xhMain.id)',
  298. `inviteCode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '本店唯一邀请码',
  299. `totalCommission` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '累计佣金(本店作为邀请人)',
  300. `ableCommission` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '可提现佣金',
  301. `inviteCount` int(11) NOT NULL DEFAULT '0' COMMENT '累计邀请数量(本店作为邀请人)',
  302. `commissionAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '分佣金额(规则配置)',
  303. `hdDiscountAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '花店优惠金额(规则配置)',
  304. `inviterId` int(11) NOT NULL DEFAULT '0' COMMENT '邀请人 xhMain.id,0 表示无',
  305. `inviteTime` datetime DEFAULT NULL COMMENT '本店被邀请绑定时间',
  306. `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  307. `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  308. PRIMARY KEY (`id`) USING BTREE,
  309. UNIQUE KEY `uk_inviteCode` (`inviteCode`) USING BTREE,
  310. UNIQUE KEY `uk_mainId` (`mainId`) USING BTREE,
  311. KEY `idx_inviterId` (`inviterId`) USING BTREE
  312. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='门店邀请(批发/花店)';
  313. -- -----------------------------------------------------------------------------
  314. -- 门店邀请佣金分成明细
  315. -- -----------------------------------------------------------------------------
  316. CREATE TABLE IF NOT EXISTS `xhMainInviteCommission` (
  317. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  318. `commissionSn` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '分佣单号(如 FY202607210001)',
  319. `inviterMainId` int(11) NOT NULL DEFAULT '0' COMMENT '获佣人中央 id(批发商 xhMain.id)',
  320. `pfShopId` int(11) NOT NULL DEFAULT '0' COMMENT '批发店shopId',
  321. `pfShopName` varchar(100) NOT NULL DEFAULT '0' COMMENT '批发店名称',
  322. `lsShopId` int(11) NOT NULL DEFAULT '0' COMMENT '零售店shopId',
  323. `lsShopName` varchar(100) NOT NULL DEFAULT '0' COMMENT '批发店名称',
  324. `inviterShopName` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '获佣人门店名(快照)',
  325. `inviteeMainId` int(11) NOT NULL DEFAULT '0' COMMENT '受邀花店中央 id(xhMain.id)',
  326. `inviteeShopName` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '受邀花店名(快照)',
  327. `inviteeMobile` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '受邀人手机号(快照)',
  328. `inviteCode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '邀请码(快照)',
  329. `memberType` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员类型,见 dict.php',
  330. `memberTypeName` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '会员类型名(快照,如年度会员)',
  331. `amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '原价',
  332. `memberPayAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '实付金额',
  333. `commissionAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '分成金额(获佣人)',
  334. `hdDiscountAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '优惠金额',
  335. `settleStatus` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '结算状态 0待结算 1已结算 2已失效',
  336. `relateOrderId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '关联会员/订单 id(业务定稿后写入)',
  337. `payWay` tinyint(4) NOT NULL DEFAULT '0' COMMENT '支付方式 0微信 1支付宝 2余额',
  338. `payTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '付款时间,确认时间',
  339. `settleTime` datetime DEFAULT NULL COMMENT '结算时间',
  340. `invalidTime` datetime DEFAULT NULL COMMENT '失效时间',
  341. `invalidReason` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '失效原因',
  342. `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  343. `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  344. PRIMARY KEY (`id`) USING BTREE,
  345. UNIQUE KEY `uk_commissionSn` (`commissionSn`) USING BTREE,
  346. KEY `idx_inviter_settle_occur` (`inviterMainId`, `settleStatus`, `occurTime`) USING BTREE,
  347. KEY `idx_invitee_occur` (`inviteeShopId`, `occurTime`) USING BTREE,
  348. KEY `idx_inviteCode` (`inviteCode`) USING BTREE,
  349. KEY `idx_relateOrderId` (`relateOrderId`) USING BTREE
  350. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='门店邀请记录';
  351. CREATE TABLE IF NOT EXISTS `xhMainInviteFlow` (
  352. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  353. `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '邀请人 xhMain.id',
  354. `flowType` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT '1邀请获佣 2存入余额 3退款扣回',
  355. `amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '变动金额:获佣为正,存入/扣回为负',
  356. `ableAfter` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '变动后可提现佣金',
  357. `refType` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT '1=xhMainInviteCommission 2=xhMainWalletChange',
  358. `refId` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '关联业务 id',
  359. `refSn` varchar(32) NOT NULL DEFAULT '' COMMENT '分佣单号 FY… / 存入编号 CR…',
  360. `inviteeShopName` varchar(80) NOT NULL DEFAULT '' COMMENT '受邀花店名快照 flowType=1',
  361. `inviteeMobile` varchar(20) NOT NULL DEFAULT '' COMMENT '受邀手机号快照',
  362. `lsShopId` int(11) NOT NULL DEFAULT 0 COMMENT '零售店 shopId',
  363. `baseAmount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '会员实付或存余额金额',
  364. `flowTime` datetime NOT NULL COMMENT '业务时间',
  365. `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
  366. `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  367. PRIMARY KEY (`id`),
  368. KEY `idx_main_flowTime` (`mainId`, `flowTime`),
  369. KEY `idx_ref` (`refType`, `refId`)
  370. ) COMMENT='邀请佣金变动流水';
  371. -- 花店注册付费开通:xhApply 扩展字段
  372. ALTER TABLE `xhApply`
  373. ADD COLUMN `inviteCode` varchar(32) NOT NULL DEFAULT '' COMMENT '注册时填写的邀请码' AFTER `status`,
  374. ADD COLUMN `hdDiscountAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '邀请优惠金额' AFTER `inviteCode`,
  375. ADD COLUMN `inviteCommissionAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '邀请人佣金快照' AFTER `hdDiscountAmount`;
  376. ALTER TABLE `xhRenew`
  377. ADD COLUMN `ptStyle` tinyint(4) NOT NULL DEFAULT '2' COMMENT '所属平台 1花店 2供货商 请查看dict.php';
  378. -- xhShopExt 表添加客服电话与微信二维码
  379. ALTER TABLE xhShopExt
  380. ADD COLUMN serviceMobile varchar(20) NOT NULL DEFAULT '' COMMENT '客服电话' AFTER rechargeRemark,
  381. ADD COLUMN serviceWx varchar(300) NOT NULL DEFAULT '' COMMENT '客服微信二维码' AFTER serviceMobile;
  382. CREATE TABLE IF NOT EXISTS `xhMainWalletRecharge` (
  383. `id` int(11) NOT NULL AUTO_INCREMENT,
  384. `orderSn` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '充值单号',
  385. `mainId` int(11) NOT NULL DEFAULT '0' COMMENT '中央 id',
  386. `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店 id',
  387. `amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额',
  388. `payStatus` tinyint(4) NOT NULL DEFAULT '0' COMMENT '支付状态 0未付 1已付',
  389. `payWay` tinyint(4) NOT NULL DEFAULT '0' COMMENT '支付方式',
  390. `returnCode` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '微信 transaction_id',
  391. `remark` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',
  392. `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  393. `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  394. PRIMARY KEY (`id`) USING BTREE,
  395. UNIQUE KEY `uk_orderSn` (`orderSn`) USING BTREE,
  396. KEY `idx_mainId_addTime` (`mainId`, `addTime`) USING BTREE
  397. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='中央钱包微信充值订单';