feat: support merchant team roles and permissions

This commit is contained in:
yml2213
2026-08-13 11:41:34 +08:00
parent 6c98fa557e
commit a4791decb0
21 changed files with 969 additions and 201 deletions
+41 -1
View File
@@ -19,10 +19,50 @@ func NewDashboardHandler(svc *service.FulfillmentService) *DashboardHandler {
}
func (h *DashboardHandler) Dashboard(c *gin.Context) {
stats, err := h.svc.Dashboard(middleware.GetMerchantID(c), middleware.GetRole(c) == model.RoleAdmin)
isAdmin := middleware.GetRole(c) == model.RoleAdmin
stats, err := h.svc.Dashboard(middleware.GetMerchantID(c), isAdmin)
if err != nil {
response.ServerError(c, err.Error())
return
}
if !isAdmin {
permissions := middleware.GetMerchantPermissions(c)
if _, ok := permissions[model.PermissionProductsManage]; !ok {
stats.CatalogProductCount = 0
stats.ProductCount = 0
stats.ActiveProductCount = 0
}
if _, ok := permissions[model.PermissionMembersManage]; !ok {
stats.UserCount = 0
}
if _, ok := permissions[model.PermissionOrdersManage]; !ok {
stats.OrderCount = 0
stats.TodayOrderCount = 0
stats.PaidOrderCount = 0
stats.DeliveringOrderCount = 0
stats.DeliveredOrderCount = 0
stats.ShipFailedOrderCount = 0
stats.CancelledOrderCount = 0
}
if _, ok := permissions[model.PermissionWalletView]; !ok {
stats.TotalSales = 0
stats.TodaySales = 0
stats.TotalFees = 0
stats.TodayFees = 0
}
if _, ok := permissions[model.PermissionWalletView]; !ok {
stats.WalletAvailableBalance = 0
stats.WalletFrozenBalance = 0
}
if _, ok := permissions[model.PermissionAPIManage]; !ok {
stats.APIClientCount = 0
stats.ActiveAPIClientCount = 0
}
if _, ok := permissions[model.PermissionCallbacksManage]; !ok {
stats.CallbackSubscriptionCount = 0
stats.PendingCallbackCount = 0
stats.FailedCallbackCount = 0
}
}
response.OK(c, stats)
}