From 1672f84d3c99fa183ae47734f52ea3d9576dbddb Mon Sep 17 00:00:00 2001 From: zhangsan <646228430@qq.com> Date: Wed, 16 Jul 2025 17:11:00 +0800 Subject: [PATCH] =?UTF-8?q?7.16=20=E5=B0=8F=E5=95=86=E5=9C=BAUI=E4=B8=8E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/sql/0716group_buying_sys.sql | 282 ++++++++++++++++++ .../sql => sql-back}/0715group_buying_sys.sql | 0 .../whut/api/dto/GoodsMarketResponseDTO.java | 2 + .../TradeSettlementOrderService.java | 3 +- .../trigger/http/MarketIndexController.java | 7 + .../trigger/http/MarketTradeController.java | 4 +- 6 files changed, 294 insertions(+), 4 deletions(-) create mode 100644 docs/dev-ops/mysql/sql/0716group_buying_sys.sql rename docs/dev-ops/{mysql/sql => sql-back}/0715group_buying_sys.sql (100%) diff --git a/docs/dev-ops/mysql/sql/0716group_buying_sys.sql b/docs/dev-ops/mysql/sql/0716group_buying_sys.sql new file mode 100644 index 0000000..525211a --- /dev/null +++ b/docs/dev-ops/mysql/sql/0716group_buying_sys.sql @@ -0,0 +1,282 @@ +/* + Navicat Premium Data Transfer + + Source Server : group_buy_local + Source Server Type : MySQL + Source Server Version : 80042 + Source Host : localhost:13306 + Source Schema : group_buying_sys + + Target Server Type : MySQL + Target Server Version : 80042 + File Encoding : 65001 + + Date: 16/07/2025 17:09:09 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for crowd_tags +-- ---------------------------- +DROP TABLE IF EXISTS `crowd_tags`; +CREATE TABLE `crowd_tags` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `tag_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '人群ID', + `tag_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '人群名称', + `tag_desc` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '人群描述', + `statistics` int NOT NULL COMMENT '人群标签统计量', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_tag_id`(`tag_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '人群标签' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of crowd_tags +-- ---------------------------- +INSERT INTO `crowd_tags` VALUES (1, 'RQ_KJHKL98UU78H66554GFDV', '潜在消费用户', '潜在消费用户', 28, '2025-06-26 09:12:22', '2025-06-28 11:02:00'); + +-- ---------------------------- +-- Table structure for crowd_tags_detail +-- ---------------------------- +DROP TABLE IF EXISTS `crowd_tags_detail`; +CREATE TABLE `crowd_tags_detail` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `tag_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '人群ID', + `user_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_tag_user`(`tag_id` ASC, `user_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '人群标签明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of crowd_tags_detail +-- ---------------------------- +INSERT INTO `crowd_tags_detail` VALUES (20, 'RQ_KJHKL98UU78H66554GFDV', 'zy123', '2025-06-28 10:53:23', '2025-06-28 10:53:23'); +INSERT INTO `crowd_tags_detail` VALUES (21, 'RQ_KJHKL98UU78H66554GFDV', 'smile', '2025-06-28 10:53:23', '2025-06-28 10:53:23'); + +-- ---------------------------- +-- Table structure for crowd_tags_job +-- ---------------------------- +DROP TABLE IF EXISTS `crowd_tags_job`; +CREATE TABLE `crowd_tags_job` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `tag_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '标签ID', + `batch_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '批次ID', + `tag_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '标签类型(参与量、消费金额)', + `tag_rule` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '标签规则(限定类型 N次)', + `stat_start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '统计数据,开始时间', + `stat_end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '统计数据,结束时间', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态;0初始、1计划(进入执行阶段)、2重置、3完成', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_batch_id`(`batch_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '人群标签任务' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of crowd_tags_job +-- ---------------------------- +INSERT INTO `crowd_tags_job` VALUES (1, 'RQ_KJHKL98UU78H66554GFDV', '10001', 0, '100', '2025-06-26 09:13:31', '2025-06-26 09:13:31', 0, '2025-06-26 09:13:31', '2025-06-26 09:13:31'); + +-- ---------------------------- +-- Table structure for group_buy_activity +-- ---------------------------- +DROP TABLE IF EXISTS `group_buy_activity`; +CREATE TABLE `group_buy_activity` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增', + `activity_id` bigint NOT NULL COMMENT '活动ID', + `activity_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '活动名称', + `discount_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '折扣ID', + `group_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '拼团方式(0自动成团、1达成目标拼团)', + `take_limit_count` int NOT NULL DEFAULT 1 COMMENT '拼团次数限制', + `target` int NOT NULL DEFAULT 1 COMMENT '拼团目标', + `valid_time` int NOT NULL DEFAULT 15 COMMENT '拼团时长(分钟)', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '活动状态(0创建、1生效、2过期、3废弃)', + `start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '活动开始时间', + `end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '活动结束时间', + `tag_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人群标签规则标识', + `tag_scope` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人群标签规则范围(多选;1可见限制、2参与限制)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_activity_id`(`activity_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '拼团活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of group_buy_activity +-- ---------------------------- +INSERT INTO `group_buy_activity` VALUES (1, 100123, '测试活动', '25120207', 0, 1, 3, 60, 1, '2025-06-19 10:19:40', '2025-07-31 10:19:40', 'RQ_KJHKL98UU78H66554GFDV', '1,2', '2025-06-19 10:19:40', '2025-07-03 18:25:55'); +INSERT INTO `group_buy_activity` VALUES (2, 100124, '测试活动2', '25120207', 0, 1, 1, 60, 1, '2025-07-05 13:39:52', '2025-09-28 13:39:34', 'RQ_KJHKL98UU78H66554GFDV', '1,2', '2025-07-05 13:39:52', '2025-07-05 13:40:06'); + +-- ---------------------------- +-- Table structure for group_buy_discount +-- ---------------------------- +DROP TABLE IF EXISTS `group_buy_discount`; +CREATE TABLE `group_buy_discount` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `discount_id` int NOT NULL COMMENT '折扣ID', + `discount_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '折扣标题', + `discount_desc` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '折扣描述', + `discount_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '折扣类型(0:base、1:tag)', + `market_plan` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'ZJ' COMMENT '营销优惠计划(ZJ:直减、MJ:满减、ZK:折扣、N元购)', + `market_expr` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '营销优惠表达式', + `tag_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人群标签,特定优惠限定', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_discount_id`(`discount_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '折扣配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of group_buy_discount +-- ---------------------------- +INSERT INTO `group_buy_discount` VALUES (1, 25120207, '直减优惠20元', '直减优惠20元', 0, 'ZJ', '20', NULL, '2025-06-25 14:02:13', '2025-06-25 14:02:13'); +INSERT INTO `group_buy_discount` VALUES (2, 25120208, '满减优惠100-10元', '满减优惠100-10元', 0, 'MJ', '100,10', NULL, '2025-06-25 14:02:13', '2025-06-25 14:02:13'); +INSERT INTO `group_buy_discount` VALUES (4, 25120209, '折扣优惠8折', '折扣优惠8折', 0, 'ZK', '0.8', NULL, '2025-06-25 14:02:13', '2025-06-25 14:02:13'); +INSERT INTO `group_buy_discount` VALUES (5, 25120210, 'N元购买优惠', 'N元购买优惠', 0, 'N', '1.99', NULL, '2025-06-25 14:02:13', '2025-06-25 14:02:13'); + +-- ---------------------------- +-- Table structure for group_buy_order +-- ---------------------------- +DROP TABLE IF EXISTS `group_buy_order`; +CREATE TABLE `group_buy_order` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `team_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '拼单组队ID', + `activity_id` bigint NOT NULL COMMENT '活动ID', + `source` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '渠道', + `channel` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源', + `original_price` decimal(8, 2) NOT NULL COMMENT '原始价格', + `deduction_price` decimal(8, 2) NOT NULL COMMENT '折扣金额', + `pay_price` decimal(8, 2) NOT NULL COMMENT '支付价格', + `target_count` int NOT NULL COMMENT '目标数量', + `complete_count` int NOT NULL COMMENT '完成数量', + `lock_count` int NOT NULL COMMENT '锁单数量', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态(0-拼单中、1-完成、2-失败)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `valid_start_time` datetime NOT NULL COMMENT '拼团开始时间', + `valid_end_time` datetime NOT NULL COMMENT '拼团结束时间', + `notify_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '回调地址', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_team_id`(`team_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 38 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '拼团订单表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of group_buy_order +-- ---------------------------- +INSERT INTO `group_buy_order` VALUES (39, '90728964', 100123, 's01', 'c01', 100.00, 20.00, 80.00, 3, 3, 3, 1, '2025-07-16 15:53:11', '2025-07-16 16:44:47', '2025-07-16 15:53:11', '2025-07-16 16:53:11', 'http://127.0.0.1:8092/api/v1/alipay/group_buy_notify'); +INSERT INTO `group_buy_order` VALUES (40, '06767878', 100123, 's01', 'c01', 100.00, 20.00, 80.00, 3, 1, 1, 0, '2025-07-16 16:28:58', '2025-07-16 16:30:28', '2025-07-16 16:28:59', '2025-07-16 17:28:59', 'http://127.0.0.1:8092/api/v1/alipay/group_buy_notify'); + +-- ---------------------------- +-- Table structure for group_buy_order_list +-- ---------------------------- +DROP TABLE IF EXISTS `group_buy_order_list`; +CREATE TABLE `group_buy_order_list` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID', + `team_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '拼单组队ID', + `order_id` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '订单ID', + `activity_id` bigint NOT NULL COMMENT '活动ID', + `start_time` datetime NOT NULL COMMENT '活动开始时间', + `end_time` datetime NOT NULL COMMENT '活动结束时间', + `goods_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品ID', + `source` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '渠道', + `channel` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源', + `original_price` decimal(8, 2) NOT NULL COMMENT '原始价格', + `deduction_price` decimal(8, 2) NOT NULL COMMENT '折扣金额', + `pay_price` decimal(8, 2) NOT NULL COMMENT '支付金额', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态;0初始锁定、1消费完成', + `out_trade_no` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '外部交易单号-确保外部调用唯一幂等', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `biz_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '业务唯一ID', + `out_trade_time` datetime NULL DEFAULT NULL COMMENT '外部交易时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_order_id`(`order_id` ASC) USING BTREE, + INDEX `idx_user_id_activity_id`(`user_id` ASC, `activity_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '拼团订单明细表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of group_buy_order_list +-- ---------------------------- +INSERT INTO `group_buy_order_list` VALUES (32, 'opEtBvq6go0co-HQC5DSHkKfkdds', '90728964', '011683879336', 100123, '2025-06-19 10:19:40', '2025-07-31 10:19:40', '9890001', 's01', 'c01', 100.00, 20.00, 80.00, 1, '498873906342', '2025-07-16 15:53:11', '2025-07-16 15:54:03', '100123_opEtBvq6go0co-HQC5DSHkKfkdds_1', '2025-07-16 15:53:45'); +INSERT INTO `group_buy_order_list` VALUES (33, 'smile01', '06767878', '321092812726', 100123, '2025-06-19 10:19:40', '2025-07-31 10:19:40', '9890001', 's01', 'c01', 100.00, 20.00, 80.00, 1, '369511405849', '2025-07-16 16:28:58', '2025-07-16 16:30:28', '100123_smile01_1', '2025-07-16 16:30:09'); +INSERT INTO `group_buy_order_list` VALUES (34, 'smile02', '90728964', '429837663500', 100123, '2025-06-19 10:19:40', '2025-07-31 10:19:40', '9890001', 's01', 'c01', 100.00, 20.00, 80.00, 1, '541129857040', '2025-07-16 16:36:49', '2025-07-16 16:38:05', '100123_smile02_1', '2025-07-16 16:37:49'); +INSERT INTO `group_buy_order_list` VALUES (35, 'smile04', '90728964', '136894291651', 100123, '2025-06-19 10:19:40', '2025-07-31 10:19:40', '9890001', 's01', 'c01', 100.00, 20.00, 80.00, 1, '381698719384', '2025-07-16 16:43:46', '2025-07-16 16:44:47', '100123_smile04_1', '2025-07-16 16:44:30'); + +-- ---------------------------- +-- Table structure for notify_task +-- ---------------------------- +DROP TABLE IF EXISTS `notify_task`; +CREATE TABLE `notify_task` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `activity_id` bigint NOT NULL COMMENT '活动ID', + `team_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '拼单组队ID', + `notify_url` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '回调接口', + `notify_count` int NOT NULL COMMENT '回调次数', + `notify_status` tinyint(1) NOT NULL COMMENT '回调状态【0初始、1完成、2重试、3失败】', + `parameter_json` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '参数对象', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_team_id`(`team_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notify_task +-- ---------------------------- +INSERT INTO `notify_task` VALUES (1, 100123, '26432069', '暂无', 1, 1, '{\"teamId\":\"26432069\",\"outTradeNoList\":[\"052609289877\",\"621314246005\",\"192426946598\"]}', '2025-07-02 19:34:43', '2025-07-05 13:30:30'); +INSERT INTO `notify_task` VALUES (2, 100124, '43505978', 'http://127.0.0.1:8091/api/v1/test/group_buy_notify', 1, 1, '{\"teamId\":\"43505978\",\"outTradeNoList\":[\"451247062978\"]}', '2025-07-05 13:46:16', '2025-07-05 13:46:16'); +INSERT INTO `notify_task` VALUES (3, 100123, '22067945', 'http://127.0.0.1:8091/api/v1/alipay/group_buy_notify', 0, 0, '{\"teamId\":\"22067945\",\"outTradeNoList\":[\"189161046421\",\"543529395708\",\"495689282887\"]}', '2025-07-15 17:40:08', '2025-07-15 17:40:08'); +INSERT INTO `notify_task` VALUES (4, 100123, '44886443', 'http://127.0.0.1:8091/api/v1/alipay/group_buy_notify', 0, 0, '{\"teamId\":\"44886443\",\"outTradeNoList\":[\"689104897943\",\"237071306081\",\"775328030517\"]}', '2025-07-15 18:08:58', '2025-07-15 18:08:58'); +INSERT INTO `notify_task` VALUES (5, 100123, '71752028', 'http://127.0.0.1:8092/api/v1/alipay/group_buy_notify', 1, 1, '{\"teamId\":\"71752028\",\"outTradeNoList\":[\"376456387082\",\"503529040337\",\"274640446882\"]}', '2025-07-16 13:58:39', '2025-07-16 13:58:40'); +INSERT INTO `notify_task` VALUES (6, 100123, '90728964', 'http://127.0.0.1:8092/api/v1/alipay/group_buy_notify', 1, 1, '{\"teamId\":\"90728964\",\"outTradeNoList\":[\"498873906342\",\"541129857040\",\"381698719384\"]}', '2025-07-16 16:44:47', '2025-07-16 16:44:47'); + +-- ---------------------------- +-- Table structure for sc_sku_activity +-- ---------------------------- +DROP TABLE IF EXISTS `sc_sku_activity`; +CREATE TABLE `sc_sku_activity` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `source` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '渠道', + `channel` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源', + `activity_id` bigint NOT NULL COMMENT '活动ID', + `goods_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_sc_goodsid`(`source` ASC, `channel` ASC, `goods_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '渠道商品活动配置关联表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sc_sku_activity +-- ---------------------------- +INSERT INTO `sc_sku_activity` VALUES (1, 's01', 'c01', 100123, '9890001', '2025-06-26 17:15:54', '2025-06-26 17:15:54'); + +-- ---------------------------- +-- Table structure for sku +-- ---------------------------- +DROP TABLE IF EXISTS `sku`; +CREATE TABLE `sku` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `source` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '渠道', + `channel` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '来源', + `goods_id` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品ID', + `goods_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品名称', + `original_price` decimal(10, 2) NOT NULL COMMENT '商品价格', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uq_goods_id`(`goods_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sku +-- ---------------------------- +INSERT INTO `sku` VALUES (1, 's01', 'c01', '9890001', '《手写MyBatis:渐进式源码实践》', 100.00, '2025-06-22 11:10:06', '2025-06-22 11:10:06'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/docs/dev-ops/mysql/sql/0715group_buying_sys.sql b/docs/dev-ops/sql-back/0715group_buying_sys.sql similarity index 100% rename from docs/dev-ops/mysql/sql/0715group_buying_sys.sql rename to docs/dev-ops/sql-back/0715group_buying_sys.sql diff --git a/group-buying-sys-api/src/main/java/edu/whut/api/dto/GoodsMarketResponseDTO.java b/group-buying-sys-api/src/main/java/edu/whut/api/dto/GoodsMarketResponseDTO.java index e0e12a6..2b7094f 100644 --- a/group-buying-sys-api/src/main/java/edu/whut/api/dto/GoodsMarketResponseDTO.java +++ b/group-buying-sys-api/src/main/java/edu/whut/api/dto/GoodsMarketResponseDTO.java @@ -19,6 +19,8 @@ import java.util.concurrent.TimeUnit; @NoArgsConstructor public class GoodsMarketResponseDTO { + // 活动ID + private Long activityId; // 商品信息 private Goods goods; // 组队信息(1个个人的置顶、2个随机的「获取10个,随机取2个」) diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/settlement/TradeSettlementOrderService.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/settlement/TradeSettlementOrderService.java index 7f4018e..ef7e152 100644 --- a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/settlement/TradeSettlementOrderService.java +++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/settlement/TradeSettlementOrderService.java @@ -59,7 +59,8 @@ public class TradeSettlementOrderService implements ITradeSettlementOrderService // 4. 更新数据库,拼团交易结算 boolean isNotify =repository.settlementMarketPayOrder(groupBuyTeamSettlementAggregate); - // 5. 拼团成功后自动进行组队回调处理 - 处理失败也会有定时任务补偿,通过这样的方式,可以减轻任务调度,提高时效性 + // 5. isNotify为true-> 付款人数达到target,即拼团成功,执行回调任务 + // 处理失败也会有定时任务补偿,通过这样的方式,可以减轻任务调度,提高时效性 if (isNotify) { Map notifyResultMap = execSettlementNotifyJob(teamId); log.info("回调通知 拼团成功 result:{}", JSON.toJSONString(notifyResultMap)); diff --git a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java index b66d116..f107e9b 100644 --- a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java +++ b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java @@ -8,6 +8,7 @@ import edu.whut.api.response.Response; import edu.whut.domain.activity.model.entity.MarketProductEntity; import edu.whut.domain.activity.model.entity.TrialBalanceEntity; import edu.whut.domain.activity.model.entity.UserGroupBuyOrderDetailEntity; +import edu.whut.domain.activity.model.valobj.GroupBuyActivityDiscountVO; import edu.whut.domain.activity.model.valobj.TeamStatisticVO; import edu.whut.domain.activity.service.IIndexGroupBuyMarketService; import edu.whut.types.enums.ResponseCode; @@ -48,10 +49,15 @@ public class MarketIndexController implements IMarketIndexService { try { // —— 2. 优惠试算 —— MarketProductEntity product = new MarketProductEntity(); + + BeanUtils.copyProperties(req, product); //获得当前用户所得的优惠信息 TrialBalanceEntity trial = indexGroupBuyMarketService.indexMarketTrial(product); + GroupBuyActivityDiscountVO groupBuyActivityDiscountVO = trial.getGroupBuyActivityDiscountVO(); + Long activityId = groupBuyActivityDiscountVO.getActivityId(); + // —— 3. 构建 Goods 子对象 —— GoodsMarketResponseDTO.Goods goods = new GoodsMarketResponseDTO.Goods(); BeanUtils.copyProperties(trial, goods); @@ -81,6 +87,7 @@ public class MarketIndexController implements IMarketIndexService { // —— 6. 返回组装 —— GoodsMarketResponseDTO body = GoodsMarketResponseDTO.builder() + .activityId(activityId) .goods(goods) .teamList(teams) .teamStatistic(stat) diff --git a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java index ddcee61..01d9ad3 100644 --- a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java +++ b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketTradeController.java @@ -61,7 +61,6 @@ public class MarketTradeController implements IMarketTradeService { @Override public Response lockMarketPayOrder(@RequestBody LockMarketPayOrderRequestDTO lockMarketPayOrderRequestDTO) { try { - log.info("zy called"); /* ---------- 1. 基础参数提取与校验 ---------- */ String userId = lockMarketPayOrderRequestDTO.getUserId(); String source = lockMarketPayOrderRequestDTO.getSource(); @@ -183,8 +182,7 @@ public class MarketTradeController implements IMarketTradeService { @Override public Response settlementMarketPayOrder( @RequestBody SettlementMarketPayOrderRequestDTO requestDTO) { - log.info("营销交易组队结算开始: userId={} outTradeNo={}", - requestDTO.getUserId(), requestDTO.getOutTradeNo()); + log.info("营销交易组队结算开始: requestDTO={}", JSON.toJSONString(requestDTO)); // —— 1. 参数校验 —— if (StringUtils.isAnyBlank(requestDTO.getUserId(), requestDTO.getSource(), requestDTO.getChannel(), requestDTO.getOutTradeNo())