temp goroutine

This commit is contained in:
Hamed Xamani 2024-12-03 17:53:54 +03:30
parent 5359a0746f
commit e0c8408c35
1 changed files with 31 additions and 15 deletions

View File

@ -3,7 +3,9 @@ package adminkindboxhandler
import (
"net/http"
parambenefactor "git.gocasts.ir/ebhomengo/niki/param/admin/benefactor"
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
paramrefertime "git.gocasts.ir/ebhomengo/niki/param/admin/refer_time"
arrayfunc "git.gocasts.ir/ebhomengo/niki/pkg/array_func"
httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg"
queryparam "git.gocasts.ir/ebhomengo/niki/pkg/query_param"
@ -44,6 +46,10 @@ import (
// @Router /admins/kindboxes [get].
func (h Handler) GetAll(c echo.Context) error {
var req param.KindBoxGetAllRequest
bnfChan := make(chan map[uint]parambenefactor.Data)
deliverRtChan := make(chan map[uint]paramrefertime.Data)
rerunRtChan := make(chan map[uint]paramrefertime.Data)
errChan := make(chan error)
if bErr := c.Bind(&req); bErr != nil {
return echo.NewHTTPError(http.StatusBadRequest)
@ -63,25 +69,35 @@ func (h Handler) GetAll(c echo.Context) error {
return echo.NewHTTPError(code, msg)
}
go func() {
defer close(bnfChan)
benefactors, err := h.adminBenefactorAggSvc.GetByIDs(c.Request().Context(), getBenefactorIDs(kindBoxes.Data))
bnfChan <- benefactors
errChan <- err
}()
benefactors, bErr := h.adminBenefactorAggSvc.GetByIDs(c.Request().Context(), getBenefactorIDs(kindBoxes.Data))
if bErr != nil {
msg, code := httpmsg.Error(sErr)
go func() {
defer close(rerunRtChan)
deliverReferTime, err := h.referTimeAggSvc.GetReferTimeByIDs(c.Request().Context(), getDeliverReferTimeIDs(kindBoxes.Data))
deliverRtChan <- deliverReferTime
errChan <- err
}()
return echo.NewHTTPError(code, msg)
}
go func() {
defer close(deliverRtChan)
returnReferTime, err := h.referTimeAggSvc.GetReferTimeByIDs(c.Request().Context(), getReturnReferTimeIDs(kindBoxes.Data))
rerunRtChan <- returnReferTime
errChan <- err
}()
deliverReferTime, dRErr := h.referTimeAggSvc.GetReferTimeByIDs(c.Request().Context(), getDeliverReferTimeIDs(kindBoxes.Data))
if dRErr != nil {
msg, code := httpmsg.Error(dRErr)
return echo.NewHTTPError(code, msg)
}
returnReferTime, rRErr := h.referTimeAggSvc.GetReferTimeByIDs(c.Request().Context(), getReturnReferTimeIDs(kindBoxes.Data))
if rRErr != nil {
msg, code := httpmsg.Error(rRErr)
benefactors := <-bnfChan
deliverReferTime := <-rerunRtChan
returnReferTime := <-deliverRtChan
if err, ok := <-errChan; ok {
defer close(errChan)
} else {
msg, code := httpmsg.Error(err)
return echo.NewHTTPError(code, msg)
}