133 lines
4.9 KiB
Go
133 lines
4.9 KiB
Go
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, deleteReports)
|
|
router.Delete("/gm/tenement/meter", security.SingularityAuthorize, deleteTenementMeterRelations)
|
|
router.Delete("/gm/enterprise", security.SingularityAuthorize, deleteEnterprise)
|
|
router.Delete("/gm/meter/pooling", security.SingularityAuthorize, deleteMeterPoolingRelations)
|
|
router.Delete("gm/meter", security.SingularityAuthorize, deleteMeters)
|
|
}
|
|
|
|
//用于将参数转化为切片
|
|
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 {
|
|
uid := c.Query("uid")
|
|
result := response.NewResult(c)
|
|
GmLog.Info("[天神模式]删除指定企业用户", zap.String("uid", uid))
|
|
|
|
err := service.GMService.DeleteEnterprises(uid)
|
|
if err != nil {
|
|
GmLog.Error("[天神模式]删除指定企业用户失败", zap.Error(err))
|
|
return result.Error(500, "删除指定企业用户失败。")
|
|
}
|
|
return result.Success("指定企业用户已经删除。")
|
|
}
|
|
|
|
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("删除成功")
|
|
}
|
|
|
|
func deleteMeterPoolingRelations(c *fiber.Ctx) error {
|
|
result := response.NewResult(c)
|
|
parkId := c.Query("park")
|
|
mId := getQueryValues(c, "meters")
|
|
GmLog.Info("[天神模式]删除指定园区中的表计公摊关系", zap.String("park id", parkId))
|
|
if err := service.GMService.DeleteMeterPooling(parkId, mId); err != nil {
|
|
meterLog.Error("[天神模式]删除指定园区中的表计公摊关系失败", zap.Error(err))
|
|
return result.Error(500, "删除指定园区中的表计公摊关系失败。")
|
|
}
|
|
return result.Success("指定表计公摊关系已经删除。")
|
|
|
|
}
|
|
|
|
func deleteMeters(c *fiber.Ctx) error {
|
|
result := response.NewResult(c)
|
|
parkId := c.Query("park")
|
|
mId := getQueryValues(c, "meters")
|
|
GmLog.Info("[天神模式]删除指定园区中的表计", zap.String("park id", parkId))
|
|
if err := service.GMService.DeleteMeters(parkId, mId); err != nil {
|
|
meterLog.Error("[天神模式]删除指定园区中的表计失败", zap.Error(err))
|
|
return result.Error(500, "删除指定园区中的表计失败。")
|
|
}
|
|
return result.Success("指定表计已经删除。")
|
|
}
|