From c3e6ede59c3dc5f03b96bb9e883094d5aee8edd9 Mon Sep 17 00:00:00 2001 From: cjy Date: Wed, 7 Jan 2026 13:06:52 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=8C=87=E6=B4=BE=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=9F=A5=E8=AF=A2=20user=5Fid=20=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E6=8E=89=E8=BD=AF=E5=88=A0=E9=99=A4=E7=9A=84=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/taskDao.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/internal/dao/taskDao.go b/internal/dao/taskDao.go index 2e5ff99..d0c066c 100644 --- a/internal/dao/taskDao.go +++ b/internal/dao/taskDao.go @@ -1165,15 +1165,18 @@ func AssignTask(req *TaskAssignRequest, progressTaskCount int, completeTaskCount if userID == 0 && req.SubNum != "" { // 使用子查询获取每个 customer_id 最新订单记录的 customer_id // 逻辑:找到 customer_num 匹配且 created_at 为该 customer_id 最大值的记录 + // 关联user表过滤软删除的用户 var o struct{ CustomerID string } - subQuery := app.ModuleClients.BundleDB.Table("bundle_order_records"). - Select("customer_id, MAX(created_at) AS max_created_time"). - Where("deleted_at IS NULL AND status = 2"). - Group("customer_id") + subQuery := app.ModuleClients.BundleDB.Table("bundle_order_records bor"). + Select("bor.customer_id, MAX(bor.created_at) AS max_created_time"). + Joins("INNER JOIN `micro-account`.`user` u ON u.id = bor.customer_id AND u.deleted_at = 0"). + Where("bor.deleted_at IS NULL AND bor.status = 2"). + Group("bor.customer_id") _ = app.ModuleClients.BundleDB.Table("bundle_order_records bor1"). Select("bor1.customer_id"). Joins("INNER JOIN (?) bor2 ON bor1.customer_id = bor2.customer_id AND bor1.created_at = bor2.max_created_time", subQuery). + Joins("INNER JOIN `micro-account`.`user` u ON u.id = bor1.customer_id AND u.deleted_at = 0"). Where("bor1.deleted_at IS NULL AND bor1.status = 2"). Where("bor1.customer_num COLLATE utf8mb4_general_ci = ? COLLATE utf8mb4_general_ci", req.SubNum). Limit(1). @@ -1442,15 +1445,18 @@ func BatchAssignTasks(items []*BatchAssignItem) error { CustomerID string `gorm:"column:customer_id"` } // 使用子查询获取每个 customer_num 对应的最新订单的 customer_id - subQuery := app.ModuleClients.BundleDB.Table("bundle_order_records"). - Select("customer_id, customer_num, MAX(created_at) AS max_created_time"). - Where("deleted_at IS NULL AND status = 2"). - Where("customer_num COLLATE utf8mb4_general_ci IN ?", missingSubNums). - Group("customer_id, customer_num") + // 关联user表过滤软删除的用户 + subQuery := app.ModuleClients.BundleDB.Table("bundle_order_records bor"). + Select("bor.customer_id, bor.customer_num, MAX(bor.created_at) AS max_created_time"). + Joins("INNER JOIN `micro-account`.`user` u ON u.id = bor.customer_id AND u.deleted_at = 0"). + Where("bor.deleted_at IS NULL AND bor.status = 2"). + Where("bor.customer_num COLLATE utf8mb4_general_ci IN ?", missingSubNums). + Group("bor.customer_id, bor.customer_num") _ = app.ModuleClients.BundleDB.Table("bundle_order_records bor1"). Select("bor1.customer_num, bor1.customer_id"). Joins("INNER JOIN (?) bor2 ON bor1.customer_id = bor2.customer_id AND bor1.created_at = bor2.max_created_time", subQuery). + Joins("INNER JOIN `micro-account`.`user` u ON u.id = bor1.customer_id AND u.deleted_at = 0"). Where("bor1.deleted_at IS NULL AND bor1.status = 2"). Where("bor1.customer_num COLLATE utf8mb4_general_ci IN ?", missingSubNums). Scan(&orderRows).Error