20260706_redesign.sql 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  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. -- 花店注册付费开通:xhApply 扩展字段
  352. ALTER TABLE `xhApply`
  353. ADD COLUMN `inviteCode` varchar(32) NOT NULL DEFAULT '' COMMENT '注册时填写的邀请码' AFTER `status`,
  354. ADD COLUMN `hdDiscountAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '邀请优惠金额' AFTER `inviteCode`,
  355. ADD COLUMN `inviteCommissionAmount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '邀请人佣金快照' AFTER `hdDiscountAmount`;
  356. ALTER TABLE `xhRenew`
  357. ADD COLUMN `ptStyle` tinyint(4) NOT NULL DEFAULT '2' COMMENT '所属平台 1花店 2供货商 请查看dict.php',