diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index b709490ad..fa5ff7cca 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1483,14 +1483,33 @@ func GetPriceDefendOrder(db *DaoDB, vendorOrderID string, storeIDs, skuIDs, issu } func GetCoupons(db *DaoDB, couponType int, couponStatuss, storeIDs []int, keyword string) (coupons []*model.Coupons, err error) { + sqlParams := []interface{}{} sql := ` + SELECT * + FROM coupons + WHERE 1 = 1 AND is_all = ? + ` + sqlParams = append(sqlParams, model.YES) + if couponType != 0 { + sql += " AND coupon_type = ?" + sqlParams = append(sqlParams, couponType) + } + if keyword != "" { + sql += " AND (name LIKE ? OR desc LIKE ?)" + sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%") + } + if len(couponStatuss) > 0 { + sql += " AND coupon_status IN (" + GenQuestionMarks(len(couponStatuss)) + ")" + sqlParams = append(sqlParams, couponStatuss) + } + sql += + `UNION SELECT DISTINCT a.* FROM coupons a LEFT JOIN store_coupons b ON a.id = b.coupon_id AND b.deleted_at = ? - LEFT JOIN coupons c ON a.id = c.id AND c.is_all = ? WHERE 1 = 1 ` - sqlParams := []interface{}{utils.DefaultTimeValue, model.YES} + sqlParams = append(sqlParams, utils.DefaultTimeValue) if couponType != 0 { sql += " AND a.coupon_type = ?" sqlParams = append(sqlParams, couponType)