package controller import ( "electricity_bill_calc/logger" "electricity_bill_calc/response" "electricity_bill_calc/security" "electricity_bill_calc/service" "errors" "github.com/gofiber/fiber/v2" "go.uber.org/zap" "net/http" ) var GmLog = logger.Named("Handler", "GM") func InitializeGmController(router *fiber.App) { router.Delete("/gm/tenement", security.SingularityAuthorize, deleteTenement) router.Delete("/gm/park", security.SingularityAuthorize, deletePark) router.Delete("/gm/report", security.SingularityAuthorize, DeleteEnterprise) router.Delete("/gm/tenement/meter",security.SingularityAuthorize, deleteTenementMeterRelations) } //用于将参数转化为切片 func getQueryValues(c *fiber.Ctx, paramName string) []string { values := c.Request().URI().QueryArgs().PeekMulti(paramName) result := make([]string, len(values)) for i, v := range values { result[i] = string(v) } return result } func deleteTenement(c *fiber.Ctx) error { park := c.Query("park", "") tenements := getQueryValues(c, "tenements") result := response.NewResult(c) GmLog.Info("[天神模式]删除指定园区中的商户", zap.String("park", park), zap.Strings("tenements", tenements)) err := service.GMService.DeleteTenements(park, tenements) if err != nil { GmLog.Error("[天神模式]删除指定园区中的商户失败", zap.Error(err)) return result.Error(500, err.Error()) } return result.Success("指定商户已经删除。") } func deletePark(c *fiber.Ctx) error { parks := getQueryValues(c, "parks") result := response.NewResult(c) GmLog.Info("[天神模式]删除指定园区", zap.Strings("parks", parks)) if len(parks) < 0 { GmLog.Info("[天神模式]用户未指派园区参数或者未指定需要删除的园区。") return result.Error(http.StatusBadRequest, error.Error(errors.New("必须至少指定一个需要删除的园区!"))) } err := service.GMService.DeleteParks(parks) if err != nil { GmLog.Error("[天神模式]删除指定园区失败", zap.Error(err)) return result.Error(500, err.Error()) } return result.Success("指定园区已经删除。") } func deleteReports(c *fiber.Ctx) error { pid := c.Query("park") reports := getQueryValues(c, "reports") result := response.NewResult(c) GmLog.Info("[天神模式]删除符合条件的报表。", zap.Strings("reports", reports)) err := service.GMService.DeleteReports(pid, reports) if err != nil { GmLog.Error("[天神模式]删除指定园区中的报表失败。", zap.Error(err)) return result.Error(500, err.Error()) } return result.Success("指定报表已经删除。") } func DeleteEnterprise(c *fiber.Ctx) error { return nil } func deleteTenementMeterRelations(c *fiber.Ctx) error { result := response.NewResult(c) parkId := c.Query("park") tId := getQueryValues(c,"tenements") metersId := getQueryValues(c, "meters") GmLog.Info("删除指定园区中的商户与表计的关联关系", zap.String("park id", parkId)) if err := service.GMService.DeleteTenementMeterRelations(parkId, tId, metersId); err != nil { meterLog.Error("无法删除指定园区中的商户与表计的关联关系", zap.Error(err)) return result.NotAccept(err.Error()) } return result.Success("删除成功") }