fix(activity): 允许后台编辑未开始的福利活动
中文说明:新增后台专用福利活动详情查询,后台编辑未开始活动时不再复用前台的未开始拦截逻辑,避免后台打开编辑弹窗提示“活动未开始”。
This commit is contained in:
parent
b3fcec569a
commit
6127dc1a35
@ -111,7 +111,7 @@ func (h *handler) GetWelfareActivity() core.HandlerFunc {
|
||||
ctx.AbortWithError(core.Error(http.StatusBadRequest, code.ParamBindError, "活动ID无效"))
|
||||
return
|
||||
}
|
||||
res, err := h.welfare.GetActivity(ctx.RequestContext(), id, 0)
|
||||
res, err := h.welfare.GetActivityAdmin(ctx.RequestContext(), id)
|
||||
if err != nil {
|
||||
ctx.AbortWithError(core.Error(http.StatusBadRequest, code.GetActivityError, err.Error()))
|
||||
return
|
||||
|
||||
@ -164,15 +164,27 @@ func (s *service) GetActivity(ctx context.Context, id int64, userID int64) (*Act
|
||||
if userID <= 0 && item.Status == StatusActive && time.Now().Before(item.StartTime) {
|
||||
return nil, errors.New("活动未开始")
|
||||
}
|
||||
return s.buildActivityDetail(ctx, item, userID)
|
||||
}
|
||||
|
||||
func (s *service) GetActivityAdmin(ctx context.Context, id int64) (*ActivityDetail, error) {
|
||||
var item Activity
|
||||
if err := s.repo.GetDbR().WithContext(ctx).Where("id = ? AND deleted_at IS NULL", id).First(&item).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.buildActivityDetail(ctx, item, 0)
|
||||
}
|
||||
|
||||
func (s *service) buildActivityDetail(ctx context.Context, item Activity, userID int64) (*ActivityDetail, error) {
|
||||
detail := &ActivityDetail{Activity: item}
|
||||
s.repo.GetDbR().WithContext(ctx).Where("activity_id = ?", id).Order("sort ASC, id ASC").Find(&detail.Prizes)
|
||||
s.repo.GetDbR().WithContext(ctx).Where("activity_id = ?", item.ID).Order("sort ASC, id ASC").Find(&detail.Prizes)
|
||||
s.fillPrizeMeta(ctx, detail.Prizes)
|
||||
participants, _ := s.ListParticipants(ctx, id, 1, 20)
|
||||
participants, _ := s.ListParticipants(ctx, item.ID, 1, 20)
|
||||
if participants != nil {
|
||||
detail.ParticipantCount = participants.Total
|
||||
detail.Participants = participants.List
|
||||
}
|
||||
winners, _ := s.ListWinners(ctx, id, 1, 20)
|
||||
winners, _ := s.ListWinners(ctx, item.ID, 1, 20)
|
||||
if winners != nil {
|
||||
detail.Winners = winners.List
|
||||
}
|
||||
@ -181,7 +193,7 @@ func (s *service) GetActivity(ctx context.Context, id int64, userID int64) (*Act
|
||||
detail.CurrentPaid, _ = s.sumPaidAmount(ctx, userID, start, end)
|
||||
detail.CanJoin = isJoinWindowOpen(item, time.Now()) && detail.CurrentPaid >= item.ThresholdAmount
|
||||
var count int64
|
||||
s.repo.GetDbR().WithContext(ctx).Model(&Participant{}).Where("activity_id = ? AND user_id = ? AND period_key = ?", id, userID, period).Count(&count)
|
||||
s.repo.GetDbR().WithContext(ctx).Model(&Participant{}).Where("activity_id = ? AND user_id = ? AND period_key = ?", item.ID, userID, period).Count(&count)
|
||||
detail.Joined = count > 0
|
||||
}
|
||||
return detail, nil
|
||||
|
||||
@ -24,6 +24,7 @@ type Service interface {
|
||||
CopyActivity(ctx context.Context, id int64, req SaveActivityRequest) (int64, error)
|
||||
ListActivities(ctx context.Context, req ListActivitiesRequest) (*ListActivitiesResponse, error)
|
||||
GetActivity(ctx context.Context, id int64, userID int64) (*ActivityDetail, error)
|
||||
GetActivityAdmin(ctx context.Context, id int64) (*ActivityDetail, error)
|
||||
DeleteActivity(ctx context.Context, id int64) error
|
||||
SavePrizes(ctx context.Context, activityID int64, prizes []PrizeInput) error
|
||||
ListParticipants(ctx context.Context, activityID int64, page int, pageSize int) (*ParticipantResponse, error)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user