update Order History
This commit is contained in:
parent
5ef14f3043
commit
105bda67a3
@ -13,6 +13,7 @@ type Context interface {
|
|||||||
|
|
||||||
RequestedBy() int64
|
RequestedBy() int64
|
||||||
IsSuperAdmin() bool
|
IsSuperAdmin() bool
|
||||||
|
IsAdmin() bool
|
||||||
IsCasheer() bool
|
IsCasheer() bool
|
||||||
GetPartnerID() *int64
|
GetPartnerID() *int64
|
||||||
GetSiteID() *int64
|
GetSiteID() *int64
|
||||||
@ -36,6 +37,10 @@ func (m *MyContextImpl) IsSuperAdmin() bool {
|
|||||||
return m.roleID == int(role.SuperAdmin)
|
return m.roleID == int(role.SuperAdmin)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MyContextImpl) IsAdmin() bool {
|
||||||
|
return m.roleID == int(role.SuperAdmin) || m.roleID == int(role.Admin)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MyContextImpl) IsCasheer() bool {
|
func (m *MyContextImpl) IsCasheer() bool {
|
||||||
return m.roleID == int(role.Casheer)
|
return m.roleID == int(role.Casheer)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -100,8 +100,10 @@ type HistoryOrderDB struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type HistoryOrderSearch struct {
|
type HistoryOrderSearch struct {
|
||||||
Limit int
|
PartnerID *int64
|
||||||
Offset int
|
IsAdmin bool
|
||||||
|
Limit int
|
||||||
|
Offset int
|
||||||
}
|
}
|
||||||
|
|
||||||
type HistoryOrderList []*HistoryOrderDB
|
type HistoryOrderList []*HistoryOrderDB
|
||||||
|
|||||||
@ -2,12 +2,12 @@ package order
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"furtuna-be/internal/common/errors"
|
"furtuna-be/internal/common/errors"
|
||||||
|
"furtuna-be/internal/common/mycontext"
|
||||||
"furtuna-be/internal/entity"
|
"furtuna-be/internal/entity"
|
||||||
"furtuna-be/internal/handlers/request"
|
"furtuna-be/internal/handlers/request"
|
||||||
"furtuna-be/internal/handlers/response"
|
"furtuna-be/internal/handlers/response"
|
||||||
"furtuna-be/internal/services"
|
"furtuna-be/internal/services"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@ -171,23 +171,14 @@ func (h *Handler) toHistoryOrderResponse(resp *entity.HistoryOrder) response.His
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) GetAllHistoryOrders(c *gin.Context) {
|
func (h *Handler) GetAllHistoryOrders(c *gin.Context) {
|
||||||
tokenString := c.GetHeader("Authorization")
|
|
||||||
|
|
||||||
if tokenString == "" {
|
|
||||||
c.JSON(http.StatusUnauthorized, gin.H{"error": "Authorization header is required"})
|
|
||||||
c.Abort()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
tokenString = strings.TrimPrefix(tokenString, "Bearer ")
|
|
||||||
|
|
||||||
var req request.HistoryOrderParam
|
var req request.HistoryOrderParam
|
||||||
if err := c.ShouldBindQuery(&req); err != nil {
|
if err := c.ShouldBindQuery(&req); err != nil {
|
||||||
response.ErrorWrapper(c, errors.ErrorBadRequest)
|
response.ErrorWrapper(c, errors.ErrorBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
orders, total, err := h.service.GetAllHistoryOrders(c.Request.Context(), tokenString, req.ToEntity())
|
ctx := mycontext.NewContext(c.Request.Context())
|
||||||
|
orders, total, err := h.service.GetAllHistoryOrders(ctx, req.ToEntity(ctx))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.ErrorWrapper(c, err)
|
response.ErrorWrapper(c, err)
|
||||||
return
|
return
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package request
|
package request
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"furtuna-be/internal/common/mycontext"
|
||||||
"furtuna-be/internal/constants/transaction"
|
"furtuna-be/internal/constants/transaction"
|
||||||
"furtuna-be/internal/entity"
|
"furtuna-be/internal/entity"
|
||||||
)
|
)
|
||||||
@ -12,14 +13,16 @@ type Order struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type HistoryOrderParam struct {
|
type HistoryOrderParam struct {
|
||||||
Limit int `form:"limit" json:"limit" example:"10"`
|
Limit int `form:"limit" json:"limit" example:"10"`
|
||||||
Offset int `form:"offset" json:"offset" example:"0"`
|
Offset int `form:"offset" json:"offset" example:"0"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *HistoryOrderParam) ToEntity() entity.HistoryOrderSearch {
|
func (o *HistoryOrderParam) ToEntity(ctx mycontext.Context) entity.HistoryOrderSearch {
|
||||||
return entity.HistoryOrderSearch{
|
return entity.HistoryOrderSearch{
|
||||||
Limit: o.Limit,
|
PartnerID: ctx.GetPartnerID(),
|
||||||
Offset: o.Offset,
|
IsAdmin: ctx.IsAdmin(),
|
||||||
|
Limit: o.Limit,
|
||||||
|
Offset: o.Offset,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -83,7 +83,7 @@ func (r *OrderRepository) Update(ctx context.Context, order *entity.Order) (*ent
|
|||||||
return order, nil
|
return order, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, claims entity.JWTAuthClaims, req entity.HistoryOrderSearch) (entity.HistoryOrderList, int, error) {
|
func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.HistoryOrderSearch) (entity.HistoryOrderList, int, error) {
|
||||||
var orders []*entity.HistoryOrderDB
|
var orders []*entity.HistoryOrderDB
|
||||||
var total int64
|
var total int64
|
||||||
|
|
||||||
@ -94,8 +94,8 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, claims entity
|
|||||||
Joins("left join partners on orders.partner_id = partners.id").
|
Joins("left join partners on orders.partner_id = partners.id").
|
||||||
Joins("left join sites on partners.id = sites.partner_id")
|
Joins("left join sites on partners.id = sites.partner_id")
|
||||||
|
|
||||||
if claims.Role == 3 {
|
if !req.IsAdmin {
|
||||||
query = query.Where("orders.partner_id = ?", claims.PartnerID)
|
query = query.Where("orders.partner_id = ?", req.PartnerID)
|
||||||
}
|
}
|
||||||
|
|
||||||
query = query.Group("orders.id, users.name, sites.name, orders.created_at, orders.payment_type, orders.status")
|
query = query.Group("orders.id, users.name, sites.name, orders.created_at, orders.payment_type, orders.status")
|
||||||
|
|||||||
@ -130,7 +130,7 @@ type Order interface {
|
|||||||
FindByID(ctx context.Context, id int64) (*entity.Order, error)
|
FindByID(ctx context.Context, id int64) (*entity.Order, error)
|
||||||
Update(ctx context.Context, order *entity.Order) (*entity.Order, error)
|
Update(ctx context.Context, order *entity.Order) (*entity.Order, error)
|
||||||
SetOrderStatus(ctx context.Context, db *gorm.DB, orderID int64, status string) error
|
SetOrderStatus(ctx context.Context, db *gorm.DB, orderID int64, status string) error
|
||||||
GetAllHystoryOrders(ctx context.Context, claims entity.JWTAuthClaims, req entity.HistoryOrderSearch) (entity.HistoryOrderList, int, error)
|
GetAllHystoryOrders(ctx context.Context, req entity.HistoryOrderSearch) (entity.HistoryOrderList, int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type OSSRepository interface {
|
type OSSRepository interface {
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"furtuna-be/internal/common/logger"
|
"furtuna-be/internal/common/logger"
|
||||||
|
"furtuna-be/internal/common/mycontext"
|
||||||
order2 "furtuna-be/internal/constants/order"
|
order2 "furtuna-be/internal/constants/order"
|
||||||
"furtuna-be/internal/entity"
|
"furtuna-be/internal/entity"
|
||||||
"furtuna-be/internal/repository"
|
"furtuna-be/internal/repository"
|
||||||
@ -297,15 +298,8 @@ func (s *OrderService) updateWalletBalance(ctx context.Context, tx *gorm.DB, par
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *OrderService) GetAllHistoryOrders(ctx context.Context, tokenString string, req entity.HistoryOrderSearch) ([]*entity.HistoryOrder, int, error) {
|
func (s *OrderService) GetAllHistoryOrders(ctx mycontext.Context, req entity.HistoryOrderSearch) ([]*entity.HistoryOrder, int, error) {
|
||||||
claims, err := s.crypt.ParseAndValidateJWT(tokenString)
|
historyOrders, total, err := s.repo.GetAllHystoryOrders(ctx, req)
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logger.ContextLogger(ctx).Error("error when get data token", zap.Error(err))
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
historyOrders, total, err := s.repo.GetAllHystoryOrders(ctx, *claims, req)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.ContextLogger(ctx).Error("error when get all history orders", zap.Error(err))
|
logger.ContextLogger(ctx).Error("error when get all history orders", zap.Error(err))
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
|
|||||||
@ -42,8 +42,8 @@ func NewServiceManagerImpl(cfg *config.Config, repo *repository.RepoManagerImpl)
|
|||||||
BranchSvc: branch.NewBranchService(repo.Branch),
|
BranchSvc: branch.NewBranchService(repo.Branch),
|
||||||
StudioSvc: studio.NewStudioService(repo.Studio),
|
StudioSvc: studio.NewStudioService(repo.Studio),
|
||||||
ProductSvc: product.NewProductService(repo.Product),
|
ProductSvc: product.NewProductService(repo.Product),
|
||||||
OrderSvc: order.NewOrderService(repo.Order, repo.Product, repo.Crypto, repo.Midtrans, repo.Payment, repo.Trx, repo.Wallet),
|
OrderSvc: order.NewOrderService(repo.Order, repo.Product, repo.Crypto, repo.Midtrans, repo.Payment, repo.Trx, repo.Wallet),
|
||||||
OSSSvc: oss.NewOSSService(repo.OSS),
|
OSSSvc: oss.NewOSSService(repo.OSS),
|
||||||
PartnerSvc: partner.NewPartnerService(
|
PartnerSvc: partner.NewPartnerService(
|
||||||
repo.Partner, users.NewUserService(repo.User, repo.Branch), repo.Trx, repo.Wallet),
|
repo.Partner, users.NewUserService(repo.User, repo.Branch), repo.Trx, repo.Wallet),
|
||||||
SiteSvc: site.NewSiteService(repo.Site),
|
SiteSvc: site.NewSiteService(repo.Site),
|
||||||
@ -101,7 +101,7 @@ type Order interface {
|
|||||||
CreateOrder(ctx context.Context, req *entity.OrderRequest) (*entity.OrderResponse, error)
|
CreateOrder(ctx context.Context, req *entity.OrderRequest) (*entity.OrderResponse, error)
|
||||||
Execute(ctx context.Context, req *entity.OrderExecuteRequest) (*entity.ExecuteOrderResponse, error)
|
Execute(ctx context.Context, req *entity.OrderExecuteRequest) (*entity.ExecuteOrderResponse, error)
|
||||||
ProcessCallback(ctx context.Context, req *entity.CallbackRequest) error
|
ProcessCallback(ctx context.Context, req *entity.CallbackRequest) error
|
||||||
GetAllHistoryOrders(ctx context.Context, tokenString string, req entity.HistoryOrderSearch) ([]*entity.HistoryOrder, int, error)
|
GetAllHistoryOrders(ctx mycontext.Context, req entity.HistoryOrderSearch) ([]*entity.HistoryOrder, int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type OSSService interface {
|
type OSSService interface {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user