61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package mysql
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"errors"
|
|
|
|
"hyapp/pkg/appcode"
|
|
taskdomain "hyapp/services/activity-service/internal/domain/task"
|
|
)
|
|
|
|
func (r *Repository) GetActiveTaskRewardAssetType(ctx context.Context, nowMS int64) (string, bool, error) {
|
|
row := r.db.QueryRowContext(ctx, `
|
|
SELECT reward_asset_type
|
|
FROM task_reward_policy_instances
|
|
WHERE app_code = ? AND status = 'active'
|
|
ORDER BY published_at_ms DESC, instance_code DESC
|
|
LIMIT 1`,
|
|
appcode.FromContext(ctx),
|
|
)
|
|
var assetType string
|
|
if err := row.Scan(&assetType); err != nil {
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
return "", false, nil
|
|
}
|
|
return "", false, err
|
|
}
|
|
return assetType, true, nil
|
|
}
|
|
|
|
func (r *Repository) PublishTaskRewardPolicy(ctx context.Context, command taskdomain.RewardPolicyCommand, nowMS int64) error {
|
|
_, err := r.db.ExecContext(ctx, `
|
|
INSERT INTO task_reward_policy_instances (
|
|
app_code, instance_code, template_code, template_version, status,
|
|
reward_asset_type, rule_json, published_by_admin_id, published_at_ms,
|
|
created_at_ms, updated_at_ms
|
|
) VALUES (?, ?, ?, ?, ?, ?, CAST(? AS JSON), ?, ?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE
|
|
template_code = VALUES(template_code),
|
|
template_version = VALUES(template_version),
|
|
status = VALUES(status),
|
|
reward_asset_type = VALUES(reward_asset_type),
|
|
rule_json = VALUES(rule_json),
|
|
published_by_admin_id = VALUES(published_by_admin_id),
|
|
published_at_ms = VALUES(published_at_ms),
|
|
updated_at_ms = VALUES(updated_at_ms)`,
|
|
appcode.FromContext(ctx),
|
|
command.InstanceCode,
|
|
command.TemplateCode,
|
|
command.TemplateVersion,
|
|
command.Status,
|
|
command.RewardAssetType,
|
|
command.RuleJSON,
|
|
command.OperatorAdminID,
|
|
command.PublishedAtMS,
|
|
nowMS,
|
|
nowMS,
|
|
)
|
|
return err
|
|
}
|