39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package services
|
|
|
|
import (
|
|
"github.com/ahmetb/go-linq/v3"
|
|
"qteam/app/constants/common"
|
|
"qteam/app/constants/errorcode"
|
|
"qteam/app/http/entities/front"
|
|
"qteam/app/models/activitymodel"
|
|
"qteam/app/models/productmodel"
|
|
"strings"
|
|
)
|
|
|
|
func ActivityDetailService(id int) (code int, data front.ActivityResponse) {
|
|
var err error
|
|
var activity activitymodel.Activity
|
|
code = errorcode.NotFound
|
|
has, err := activitymodel.GetInstance().GetDb().Get(&activity)
|
|
if has {
|
|
data = activity.ToDomain()
|
|
product := []productmodel.Product{}
|
|
productIds := strings.Split(activity.ProductIds, ",")
|
|
if count, err := productmodel.GetInstance().GetDb().Where("status = ?", common.STATUSABLED).In("id", productIds).FindAndCount(&product); err == nil {
|
|
code = handErr(err)
|
|
if count > 0 {
|
|
linq.From(product).SelectT(func(in productmodel.Product) (d front.ProductResponse) {
|
|
d.ResponseFromDb(in)
|
|
return
|
|
}).ToSlice(&data.Product)
|
|
}
|
|
} else {
|
|
data.Product = make([]front.ProductResponse, 0)
|
|
}
|
|
}
|
|
if err != nil {
|
|
code = handErr(err)
|
|
}
|
|
return errorcode.Success, data
|
|
}
|