package service_event import ( "context" "nixcn-cms/data" "nixcn-cms/internal/exception" "nixcn-cms/service/shared" "strconv" "github.com/google/uuid" ) type JoinedEventListData struct { Limit *string `json:"limit"` Offset *string `json:"offset"` } type JoinedEventListPayload struct { Context context.Context UserId uuid.UUID Data *JoinedEventListData } type JoinedEventListResult struct { Common shared.CommonResult Data *[]data.EventIndexDoc `json:"event_list"` } func (self *EventServiceImpl) GetJoinedEvent(payload *JoinedEventListPayload) (result *JoinedEventListResult) { var limit string if payload.Data.Limit == nil || *payload.Data.Limit == "" { limit = "20" } else { limit = *payload.Data.Limit } var offset string if payload.Data.Offset == nil || *payload.Data.Offset == "" { exc := new(exception.Builder). SetStatus(exception.StatusUser). SetService(exception.ServiceEvent). SetEndpoint(exception.EndpointEventServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonErrorInvalidInput). SetError(nil). Throw(payload.Context) return &JoinedEventListResult{ Common: shared.CommonResult{ HttpCode: 400, Exception: exc, }, } } else { offset = *payload.Data.Offset } limitNum, err := strconv.Atoi(limit) if err != nil { exc := new(exception.Builder). SetStatus(exception.StatusUser). SetService(exception.ServiceEvent). SetEndpoint(exception.EndpointEventServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonErrorInvalidInput). SetError(err). Throw(payload.Context) return &JoinedEventListResult{ Common: shared.CommonResult{HttpCode: 400, Exception: exc}, } } offsetNum, err := strconv.Atoi(offset) if err != nil { exc := new(exception.Builder). SetStatus(exception.StatusUser). SetService(exception.ServiceEvent). SetEndpoint(exception.EndpointEventServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonErrorInvalidInput). SetError(err). Throw(payload.Context) return &JoinedEventListResult{ Common: shared.CommonResult{HttpCode: 400, Exception: exc}, } } eventList, err := new(data.Event). GetEventsByUserId(payload.Context, payload.UserId, int64(limitNum), int64(offsetNum)) if err != nil { exc := new(exception.Builder). SetStatus(exception.StatusServer). SetService(exception.ServiceEvent). SetEndpoint(exception.EndpointEventServiceList). SetType(exception.TypeSpecific). SetOriginal(exception.EventListDatabaseFailed). SetError(err). Throw(payload.Context) return &JoinedEventListResult{ Common: shared.CommonResult{ HttpCode: 500, Exception: exc, }, } } if eventList != nil { for i := range *eventList { (*eventList)[i].IsJoined = true } } successExc := new(exception.Builder). SetStatus(exception.StatusSuccess). SetService(exception.ServiceEvent). SetEndpoint(exception.EndpointEventServiceList). SetType(exception.TypeCommon). SetOriginal(exception.CommonSuccess). Throw(payload.Context) return &JoinedEventListResult{ Common: shared.CommonResult{ HttpCode: 200, Exception: successExc, }, Data: eventList, } }