@@ -90,7 +90,16 @@ func loadSubscribePromoMap(ctx context.Context, svcCtx *svc.ServiceContext, subs
|
||||
|
||||
func querySubscribePromoCandidates(ctx context.Context, svcCtx *svc.ServiceContext, subscribeIDs []int64, loggedIn bool) ([]subscribePromoCandidate, error) {
|
||||
var candidates []subscribePromoCandidate
|
||||
query := svcCtx.DB.WithContext(ctx).
|
||||
err := subscribePromoCandidatesQuery(ctx, svcCtx.DB, subscribeIDs, loggedIn).
|
||||
Scan(&candidates).Error
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "query subscribe promo candidates failed: %v", err)
|
||||
}
|
||||
return candidates, nil
|
||||
}
|
||||
|
||||
func subscribePromoCandidatesQuery(ctx context.Context, db *gorm.DB, subscribeIDs []int64, loggedIn bool) *gorm.DB {
|
||||
query := db.WithContext(ctx).
|
||||
Table("subscribe_promo AS sp").
|
||||
Select("sp.subscribe_id, sp.quantity, sp.promo_price, pr.name AS rule_name, pr.type AS rule_type, pr.params, pr.start_time, pr.end_time").
|
||||
Joins("JOIN promo_rule AS pr ON pr.id = sp.promo_rule_id AND pr.deleted_at IS NULL").
|
||||
@@ -98,16 +107,11 @@ func querySubscribePromoCandidates(ctx context.Context, svcCtx *svc.ServiceConte
|
||||
if !loggedIn {
|
||||
query = query.Where("pr.type = ?", promoRuleTypeCampaign)
|
||||
}
|
||||
err := query.
|
||||
return query.
|
||||
Order("sp.subscribe_id ASC").
|
||||
Order("sp.quantity ASC").
|
||||
Order("pr.priority DESC").
|
||||
Order("pr.id ASC").
|
||||
Scan(&candidates).Error
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "query subscribe promo candidates failed: %v", err)
|
||||
}
|
||||
return candidates, nil
|
||||
Order("pr.id ASC")
|
||||
}
|
||||
|
||||
func (c subscribePromoCandidate) isActive(now time.Time) bool {
|
||||
|
||||
Reference in New Issue
Block a user