diff --git a/controller/maintenance_fee.go b/controller/maintenance_fee.go index 7122c61..a689c42 100644 --- a/controller/maintenance_fee.go +++ b/controller/maintenance_fee.go @@ -26,6 +26,8 @@ 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) + MaintenanceFeeController.Router.PUT("/maintenance/fee/:mid/enabled", security.EnterpriseAuthorize, changeMaintenanceFeeState) + MaintenanceFeeController.Router.DELETE("/maintenance/fee/:mid", security.EnterpriseAuthorize, deleteMaintenanceFee) } func listMaintenanceFees(c *gin.Context) { @@ -133,5 +135,61 @@ func modifyMaintenanceFeeRecord(c *gin.Context) { result.Error(http.StatusInternalServerError, err.Error()) return } - result.Success("指定维护费条目已更新。") + result.Updated("指定维护费条目已更新。") +} + +type _FeeStateFormData struct { + Enabled bool `json:"enabled" form:"enabled"` +} + +func changeMaintenanceFeeState(c *gin.Context) { + result := response.NewResult(c) + requestFee := c.Param("mid") + formData := new(_FeeStateFormData) + 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 + } + err = service.MaintenanceFeeService.ChangeMaintenanceFeeState(requestFee, formData.Enabled) + if err != nil { + result.Error(http.StatusInternalServerError, err.Error()) + return + } + result.Updated("指定维护费条目状态已更新。") +} + +func deleteMaintenanceFee(c *gin.Context) { + result := response.NewResult(c) + requestFee := c.Param("mid") + 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 + } + err = service.MaintenanceFeeService.DeleteMaintenanceFee(requestFee) + if err != nil { + result.Error(http.StatusInternalServerError, err.Error()) + return + } + result.Deleted("指定维护费条目已删除。") } diff --git a/service/maintenance_fee.go b/service/maintenance_fee.go index 35fa96d..6100307 100644 --- a/service/maintenance_fee.go +++ b/service/maintenance_fee.go @@ -63,7 +63,7 @@ func (_MaintenanceFeeService) ChangeMaintenanceFeeState(fid string, state bool) } func (_MaintenanceFeeService) DeleteMaintenanceFee(fid string) error { - rows, err := global.DBConn.ID(fid).Delete(new(model.MaintenanceFee)) + rows, err := global.DBConn.ID(fid).NoAutoCondition().Delete(new(model.MaintenanceFee)) if err != nil { if rows == 0 { return exceptions.NewNotFoundError("未能找到匹配的维护费记录。") @@ -82,7 +82,7 @@ func (_MaintenanceFeeService) EnsureFeeBelongs(uid, mid string) (bool, error) { return false, err } if len(fee) == 0 { - return false, nil + return false, exceptions.NewNotFoundError("指定维护费条目未找到。") } var park = make([]model.Park, 0) err = global.DBConn. @@ -91,7 +91,7 @@ func (_MaintenanceFeeService) EnsureFeeBelongs(uid, mid string) (bool, error) { return false, err } if len(park) == 0 { - return false, nil + return false, exceptions.NewNotFoundError("指定维护费所属园区未找到。") } return park[0].UserId == uid, nil }