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无效"))
|
ctx.AbortWithError(core.Error(http.StatusBadRequest, code.ParamBindError, "活动ID无效"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
res, err := h.welfare.GetActivity(ctx.RequestContext(), id, 0)
|
res, err := h.welfare.GetActivityAdmin(ctx.RequestContext(), id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.AbortWithError(core.Error(http.StatusBadRequest, code.GetActivityError, err.Error()))
|
ctx.AbortWithError(core.Error(http.StatusBadRequest, code.GetActivityError, err.Error()))
|
||||||
return
|
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) {
|
if userID <= 0 && item.Status == StatusActive && time.Now().Before(item.StartTime) {
|
||||||
return nil, errors.New("活动未开始")
|
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}
|
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)
|
s.fillPrizeMeta(ctx, detail.Prizes)
|
||||||
participants, _ := s.ListParticipants(ctx, id, 1, 20)
|
participants, _ := s.ListParticipants(ctx, item.ID, 1, 20)
|
||||||
if participants != nil {
|
if participants != nil {
|
||||||
detail.ParticipantCount = participants.Total
|
detail.ParticipantCount = participants.Total
|
||||||
detail.Participants = participants.List
|
detail.Participants = participants.List
|
||||||
}
|
}
|
||||||
winners, _ := s.ListWinners(ctx, id, 1, 20)
|
winners, _ := s.ListWinners(ctx, item.ID, 1, 20)
|
||||||
if winners != nil {
|
if winners != nil {
|
||||||
detail.Winners = winners.List
|
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.CurrentPaid, _ = s.sumPaidAmount(ctx, userID, start, end)
|
||||||
detail.CanJoin = isJoinWindowOpen(item, time.Now()) && detail.CurrentPaid >= item.ThresholdAmount
|
detail.CanJoin = isJoinWindowOpen(item, time.Now()) && detail.CurrentPaid >= item.ThresholdAmount
|
||||||
var count int64
|
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
|
detail.Joined = count > 0
|
||||||
}
|
}
|
||||||
return detail, nil
|
return detail, nil
|
||||||
|
|||||||
@ -24,6 +24,7 @@ type Service interface {
|
|||||||
CopyActivity(ctx context.Context, id int64, req SaveActivityRequest) (int64, error)
|
CopyActivity(ctx context.Context, id int64, req SaveActivityRequest) (int64, error)
|
||||||
ListActivities(ctx context.Context, req ListActivitiesRequest) (*ListActivitiesResponse, error)
|
ListActivities(ctx context.Context, req ListActivitiesRequest) (*ListActivitiesResponse, error)
|
||||||
GetActivity(ctx context.Context, id int64, userID int64) (*ActivityDetail, 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
|
DeleteActivity(ctx context.Context, id int64) error
|
||||||
SavePrizes(ctx context.Context, activityID int64, prizes []PrizeInput) error
|
SavePrizes(ctx context.Context, activityID int64, prizes []PrizeInput) error
|
||||||
ListParticipants(ctx context.Context, activityID int64, page int, pageSize int) (*ParticipantResponse, error)
|
ListParticipants(ctx context.Context, activityID int64, page int, pageSize int) (*ParticipantResponse, error)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user