[天神模式]删除指定商户完成
This commit is contained in:
parent
5866882c2d
commit
1099a7c335
40
controller/god_mode.go
Normal file
40
controller/god_mode.go
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"electricity_bill_calc/logger"
|
||||||
|
"electricity_bill_calc/response"
|
||||||
|
"electricity_bill_calc/service"
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
var GmLog = logger.Named("Handler", "GM")
|
||||||
|
|
||||||
|
func InitializeGmController(router *fiber.App) {
|
||||||
|
router.Delete("/gm/tenement", DeleteTenement)
|
||||||
|
}
|
||||||
|
|
||||||
|
//用于将参数转化为切片
|
||||||
|
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("指定商户已经删除。")
|
||||||
|
}
|
70
repository/god_mode.go
Normal file
70
repository/god_mode.go
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
package repository
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"electricity_bill_calc/logger"
|
||||||
|
"fmt"
|
||||||
|
"github.com/doug-martin/goqu/v9"
|
||||||
|
"github.com/jackc/pgx/v5"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
type _GMRepository struct {
|
||||||
|
log *zap.Logger
|
||||||
|
ds goqu.DialectWrapper
|
||||||
|
}
|
||||||
|
|
||||||
|
var GMRepository = &_GMRepository{
|
||||||
|
log: logger.Named("Repository", "GM"),
|
||||||
|
ds: goqu.Dialect("postgres"),
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gm _GMRepository) DeleteMeterBinding(ctx context.Context, tx pgx.Tx, pid string, tenements []string, meterCodes ...[]string) error {
|
||||||
|
DeleteQuery := gm.ds.From(goqu.T("tenement_meter")).
|
||||||
|
Where(goqu.I("park_id").Eq(pid)).
|
||||||
|
Delete()
|
||||||
|
|
||||||
|
if len(tenements) > 0 {
|
||||||
|
DeleteQuery = DeleteQuery.
|
||||||
|
Where(goqu.I("tenement_id").In(tenements))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(meterCodes) > 0 {
|
||||||
|
DeleteQuery = DeleteQuery.
|
||||||
|
Where(goqu.I("meter_id").In(meterCodes))
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteQuerySql, DeleteQueryArgs, _ := DeleteQuery.ToSQL()
|
||||||
|
|
||||||
|
|
||||||
|
_, err := tx.Exec(ctx, DeleteQuerySql, DeleteQueryArgs...)
|
||||||
|
if err != nil {
|
||||||
|
gm.log.Error("数据库在删除tenement_meter表数据中出错", zap.Error(err))
|
||||||
|
tx.Rollback(ctx)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gm _GMRepository) DeleteTenements(ctx context.Context, tx pgx.Tx, pid string, tenements []string) error {
|
||||||
|
DeleteTenements := gm.ds.
|
||||||
|
From("tenement").
|
||||||
|
Where(goqu.I("park_id").Eq(pid)).
|
||||||
|
Delete()
|
||||||
|
|
||||||
|
fmt.Println(len(tenements))
|
||||||
|
if len(tenements) > 0 {
|
||||||
|
DeleteTenements = DeleteTenements.
|
||||||
|
Where(goqu.I("id").In(tenements))
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteTenementsSql, DeleteTenementsArgs, _ := DeleteTenements.ToSQL()
|
||||||
|
|
||||||
|
_, err := tx.Exec(ctx, DeleteTenementsSql, DeleteTenementsArgs...)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback(ctx)
|
||||||
|
gm.log.Error("删除商户信息出错",zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -57,6 +57,7 @@ func App() *fiber.App {
|
||||||
controller.InitializeWithdrawHandlers(app) // 公示撤回
|
controller.InitializeWithdrawHandlers(app) // 公示撤回
|
||||||
controller.InitializeFoundationHandlers(app) // 基础数据
|
controller.InitializeFoundationHandlers(app) // 基础数据
|
||||||
controller.InitializeStatisticsController(app) // 首页信息
|
controller.InitializeStatisticsController(app) // 首页信息
|
||||||
|
controller.InitializeGmController(app) // 天神模式
|
||||||
|
|
||||||
return app
|
return app
|
||||||
}
|
}
|
||||||
|
|
46
service/god_mode.go
Normal file
46
service/god_mode.go
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"electricity_bill_calc/global"
|
||||||
|
"electricity_bill_calc/logger"
|
||||||
|
"electricity_bill_calc/repository"
|
||||||
|
"fmt"
|
||||||
|
"github.com/doug-martin/goqu/v9"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
type _GMService struct {
|
||||||
|
l *zap.Logger
|
||||||
|
gm goqu.DialectWrapper
|
||||||
|
}
|
||||||
|
|
||||||
|
var GMService = _GMService{
|
||||||
|
logger.Named("Service", "GM"),
|
||||||
|
goqu.Dialect("postgres"),
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gm _GMService) DeleteTenements(pid string, tenements []string) error {
|
||||||
|
var err error
|
||||||
|
ctx, cancel := global.TimeoutContext()
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
tx, err := global.DB.Begin(ctx)
|
||||||
|
if err != nil {
|
||||||
|
gm.l.Error("未能启动数据库事务", zap.Error(err))
|
||||||
|
return fmt.Errorf("未能启动数据库事务,%w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = repository.GMRepository.DeleteMeterBinding(ctx, tx, pid, tenements)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback(ctx)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = repository.GMRepository.DeleteTenements(ctx, tx, pid, tenements)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback(ctx)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
tx.Commit(ctx)
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user