diff --git a/controller/maintenance_fee.go b/controller/maintenance_fee.go index 310108e..7122c61 100644 --- a/controller/maintenance_fee.go +++ b/controller/maintenance_fee.go @@ -25,6 +25,7 @@ func InitializeMaintenanceFeeController(router *gin.Engine) { MaintenanceFeeController.Router.GET("/maintenance/fee", security.EnterpriseAuthorize, listMaintenanceFees) MaintenanceFeeController.Router.POST("/maintenance/fee", security.EnterpriseAuthorize, createMaintenanceFeeRecord) + MaintenanceFeeController.Router.PUT("/maintenance/fee/:mid", security.EnterpriseAuthorize, modifyMaintenanceFeeRecord) } func listMaintenanceFees(c *gin.Context) { @@ -70,7 +71,7 @@ type _FeeCreationFormData struct { ParkId string `json:"parkId" form:"parkId"` Name string `json:"name" form:"name"` Fee decimal.Decimal `json:"fee" form:"fee"` - Memo string `json:"memo" form:"memo"` + Memo *string `json:"memo" form:"memo"` } func createMaintenanceFeeRecord(c *gin.Context) { @@ -100,3 +101,37 @@ func createMaintenanceFeeRecord(c *gin.Context) { } result.Created("新维护费记录已经创建。") } + +type _FeeModificationFormData struct { + Fee decimal.Decimal `json:"fee" form:"fee"` + Memo *string `json:"memo" form:"memo"` +} + +func modifyMaintenanceFeeRecord(c *gin.Context) { + result := response.NewResult(c) + requestFee := c.Param("mid") + formData := new(_FeeModificationFormData) + c.BindJSON(formData) + userSession, err := _retreiveSession(c) + if err != nil { + result.Unauthorized(err.Error()) + return + } + sure, err := service.MaintenanceFeeService.EnsureFeeBelongs(userSession.Uid, requestFee) + if err != nil { + result.Error(http.StatusInternalServerError, err.Error()) + return + } + if !sure { + result.Unauthorized("所操作维护费记录不属于当前用户。") + return + } + newFeeState := new(model.MaintenanceFee) + copier.Copy(newFeeState, formData) + err = service.MaintenanceFeeService.ModifyMaintenanceFee(*newFeeState) + if err != nil { + result.Error(http.StatusInternalServerError, err.Error()) + return + } + result.Success("指定维护费条目已更新。") +} diff --git a/router/router.go b/router/router.go index 6a0502c..5d09163 100644 --- a/router/router.go +++ b/router/router.go @@ -19,6 +19,7 @@ func Router() *gin.Engine { controller.InitializeRegionController(router) controller.InitializeChargesController(router) controller.InitializeParkController(router) + controller.InitializeMaintenanceFeeController(router) return router } diff --git a/service/maintenance_fee.go b/service/maintenance_fee.go index 4a74498..35fa96d 100644 --- a/service/maintenance_fee.go +++ b/service/maintenance_fee.go @@ -30,6 +30,7 @@ func (_MaintenanceFeeService) ListMaintenanceFees(pid []string) ([]model.Mainten func (_MaintenanceFeeService) CreateMaintenanceFeeRecord(fee model.MaintenanceFee) error { fee.Id = uuid.New().String() + fee.Enabled = true _, err := global.DBConn.Insert(fee) if err != nil { return err @@ -72,3 +73,25 @@ func (_MaintenanceFeeService) DeleteMaintenanceFee(fid string) error { } return nil } + +func (_MaintenanceFeeService) EnsureFeeBelongs(uid, mid string) (bool, error) { + var fee = make([]model.MaintenanceFee, 0) + err := global.DBConn. + ID(mid).Limit(1).Find(&fee) + if err != nil { + return false, err + } + if len(fee) == 0 { + return false, nil + } + var park = make([]model.Park, 0) + err = global.DBConn. + ID(fee[0].ParkId).Limit(1).Find(&park) + if err != nil { + return false, err + } + if len(park) == 0 { + return false, nil + } + return park[0].UserId == uid, nil +}