From c0280564584ac5a01d10adc2e2ccc3d6d31c0bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Wed, 28 Sep 2022 20:29:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor(fee):=E9=99=84=E5=8A=A0=E8=B4=B9?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=99=A8=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=90=91fiber=E7=9A=84=E8=BF=81=E7=A7=BB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/maintenance_fee.go | 157 ++++++++++++++++------------------ 1 file changed, 73 insertions(+), 84 deletions(-) diff --git a/controller/maintenance_fee.go b/controller/maintenance_fee.go index c420d0e..9249ae6 100644 --- a/controller/maintenance_fee.go +++ b/controller/maintenance_fee.go @@ -8,87 +8,78 @@ import ( "net/http" "strconv" - "github.com/gin-gonic/gin" + "github.com/gofiber/fiber/v2" "github.com/jinzhu/copier" "github.com/samber/lo" "github.com/shopspring/decimal" ) -func InitializeMaintenanceFeeController(router *gin.Engine) { - router.GET("/maintenance/fee", security.MustAuthenticated, listMaintenanceFees) - router.POST("/maintenance/fee", security.EnterpriseAuthorize, createMaintenanceFeeRecord) - router.PUT("/maintenance/fee/:mid", security.EnterpriseAuthorize, modifyMaintenanceFeeRecord) - router.PUT("/maintenance/fee/:mid/enabled", security.EnterpriseAuthorize, changeMaintenanceFeeState) - router.DELETE("/maintenance/fee/:mid", security.EnterpriseAuthorize, deleteMaintenanceFee) - router.GET("/additional/charges", security.MustAuthenticated, statAdditionalCharges) +func InitializeMaintenanceFeeController(router *fiber.App) { + router.Get("/maintenance/fee", security.MustAuthenticated, listMaintenanceFees) + router.Post("/maintenance/fee", security.EnterpriseAuthorize, createMaintenanceFeeRecord) + router.Put("/maintenance/fee/:mid", security.EnterpriseAuthorize, modifyMaintenanceFeeRecord) + router.Put("/maintenance/fee/:mid/enabled", security.EnterpriseAuthorize, changeMaintenanceFeeState) + router.Delete("/maintenance/fee/:mid", security.EnterpriseAuthorize, deleteMaintenanceFee) + router.Get("/additional/charges", security.MustAuthenticated, statAdditionalCharges) } -func ensureMaintenanceFeeBelongs(c *gin.Context, result *response.Result, requestMaintenanceFeeId string) bool { +func ensureMaintenanceFeeBelongs(c *fiber.Ctx, result *response.Result, requestMaintenanceFeeId string) (bool, error) { userSession, err := _retreiveSession(c) if err != nil { - result.Unauthorized(err.Error()) - return false + return false, result.Unauthorized(err.Error()) } sure, err := service.MaintenanceFeeService.EnsureFeeBelongs(userSession.Uid, requestMaintenanceFeeId) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return false + return false, result.Error(http.StatusInternalServerError, err.Error()) } if !sure { - result.Unauthorized("所操作维护费记录不属于当前用户。") - return false + return false, result.Unauthorized("所操作维护费记录不属于当前用户。") } - return true + return true, nil } -func listMaintenanceFees(c *gin.Context) { +func listMaintenanceFees(c *fiber.Ctx) error { result := response.NewResult(c) userSession, err := _retreiveSession(c) if err != nil { - result.Unauthorized(err.Error()) - return + return result.Unauthorized(err.Error()) } - requestPark := c.DefaultQuery("park", "") - requestPeriod := c.DefaultQuery("period", "") - requestPage, err := strconv.Atoi(c.DefaultQuery("page", "1")) + requestPark := c.Query("park") + requestPeriod := c.Query("period") + requestPage, err := strconv.Atoi(c.Query("page", "1")) if err != nil { - result.Error(http.StatusInternalServerError, "不能解析给定的参数[page]。") - return + return result.Error(http.StatusInternalServerError, "不能解析给定的参数[page]。") } if len(requestPark) > 0 { if userSession.Type == model.USER_TYPE_ENT { - if !ensureParkBelongs(c, result, requestPark) { - result.Unauthorized("只能访问属于自己的园区。") - return + if ensure, err := ensureParkBelongs(c, &result, requestPark); !ensure { + return err } } fees, total, err := service.MaintenanceFeeService.ListMaintenanceFees([]string{requestPark}, requestPeriod, requestPage) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Json( + return result.Json( http.StatusOK, "已获取指定园区下的维护费记录", response.NewPagedResponse(requestPage, total).ToMap(), - gin.H{"fees": fees}, + fiber.Map{"fees": fees}, ) } else { parkIds, err := service.ParkService.AllParkIds(userSession.Uid) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } fees, total, err := service.MaintenanceFeeService.ListMaintenanceFees(parkIds, requestPeriod, requestPage) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Json( + return result.Json( http.StatusOK, "已获取指定用户下的所有维护费记录。", response.NewPagedResponse(requestPage, total).ToMap(), - gin.H{"fees": fees}, + fiber.Map{"fees": fees}, ) } } @@ -101,21 +92,22 @@ type _FeeCreationFormData struct { Memo *string `json:"memo" form:"memo"` } -func createMaintenanceFeeRecord(c *gin.Context) { +func createMaintenanceFeeRecord(c *fiber.Ctx) error { result := response.NewResult(c) formData := new(_FeeCreationFormData) - c.BindJSON(formData) - if !ensureParkBelongs(c, result, formData.ParkId) { - return + if err := c.BodyParser(formData); err != nil { + return result.UnableToParse("无法解析提交的数据。") + } + if ensure, err := ensureParkBelongs(c, &result, formData.ParkId); !ensure { + return err } newMaintenanceFee := &model.MaintenanceFee{} copier.Copy(newMaintenanceFee, formData) err := service.MaintenanceFeeService.CreateMaintenanceFeeRecord(*newMaintenanceFee) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Created("新维护费记录已经创建。") + return result.Created("新维护费记录已经创建。") } type _FeeModificationFormData struct { @@ -123,91 +115,88 @@ type _FeeModificationFormData struct { Memo *string `json:"memo" form:"memo"` } -func modifyMaintenanceFeeRecord(c *gin.Context) { +func modifyMaintenanceFeeRecord(c *fiber.Ctx) error { result := response.NewResult(c) - requestFee := c.Param("mid") + requestFee := c.Params("mid") formData := new(_FeeModificationFormData) - c.BindJSON(formData) - if !ensureMaintenanceFeeBelongs(c, result, requestFee) { - return + if err := c.BodyParser(formData); err != nil { + return result.UnableToParse("无法解析提交的数据。") + } + if ensure, err := ensureMaintenanceFeeBelongs(c, &result, requestFee); !ensure { + return err } newFeeState := new(model.MaintenanceFee) copier.Copy(newFeeState, formData) newFeeState.Id = requestFee err := service.MaintenanceFeeService.ModifyMaintenanceFee(*newFeeState) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Updated("指定维护费条目已更新。") + return result.Updated("指定维护费条目已更新。") } type _FeeStateFormData struct { Enabled bool `json:"enabled" form:"enabled"` } -func changeMaintenanceFeeState(c *gin.Context) { +func changeMaintenanceFeeState(c *fiber.Ctx) error { result := response.NewResult(c) - requestFee := c.Param("mid") + requestFee := c.Params("mid") formData := new(_FeeStateFormData) - c.BindJSON(formData) - if !ensureMaintenanceFeeBelongs(c, result, requestFee) { - return + if err := c.BodyParser(formData); err != nil { + return result.UnableToParse("无法解析提交的数据。") + } + if ensure, err := ensureMaintenanceFeeBelongs(c, &result, requestFee); !ensure { + return err } err := service.MaintenanceFeeService.ChangeMaintenanceFeeState(requestFee, formData.Enabled) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Updated("指定维护费条目状态已更新。") + return result.Updated("指定维护费条目状态已更新。") } -func deleteMaintenanceFee(c *gin.Context) { +func deleteMaintenanceFee(c *fiber.Ctx) error { result := response.NewResult(c) - requestFee := c.Param("mid") - if !ensureMaintenanceFeeBelongs(c, result, requestFee) { - return + requestFee := c.Params("mid") + if ensure, err := ensureMaintenanceFeeBelongs(c, &result, requestFee); !ensure { + return err } err := service.MaintenanceFeeService.DeleteMaintenanceFee(requestFee) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Deleted("指定维护费条目已删除。") + return result.Deleted("指定维护费条目已删除。") } -func statAdditionalCharges(c *gin.Context) { +func statAdditionalCharges(c *fiber.Ctx) error { result := response.NewResult(c) session, err := _retreiveSession(c) if err != nil { - result.Unauthorized(err.Error()) - return + return result.Unauthorized(err.Error()) } requestUser := lo. If(session.Type == model.USER_TYPE_ENT, session.Uid). - Else(c.DefaultQuery("user", "")) - requestPark := c.DefaultQuery("park", "") + Else(c.Query("user")) + requestPark := c.Query("park") if len(requestPark) > 0 && session.Type == model.USER_TYPE_ENT { - if !ensureParkBelongs(c, result, requestPark) { - result.Unauthorized("不能获取不属于自己的园区。") - return + if ensure, err := ensureParkBelongs(c, &result, requestPark); !ensure { + return err } } - period := c.DefaultQuery("period", "") - keyword := c.DefaultQuery("keyword", "") - requestPage, err := strconv.Atoi(c.DefaultQuery("page", "1")) + period := c.Query("period", "") + keyword := c.Query("keyword", "") + requestPage, err := strconv.Atoi(c.Query("page", "1")) if err != nil { - result.Error(http.StatusInternalServerError, "不能解析给定的参数[page]。") - return + return result.Error(http.StatusInternalServerError, "不能解析给定的参数[page]。") } fees, total, err := service.MaintenanceFeeService.QueryAdditionalCharges(requestUser, requestPark, period, keyword, requestPage) if err != nil { - result.Error(http.StatusInternalServerError, err.Error()) - return + return result.Error(http.StatusInternalServerError, err.Error()) } - result.Success( + return result.Success( "已经成功获取到物业附加费的统计记录。", response.NewPagedResponse(requestPage, total).ToMap(), - gin.H{"charges": fees}, + fiber.Map{"charges": fees}, ) }