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