forked from free-lancers/electricity_bill_calc_service
		
	enhance(fee):改进维护费归属判断逻辑,同时完成维护费部分接口的测试。
This commit is contained in:
		| @@ -25,6 +25,7 @@ func InitializeMaintenanceFeeController(router *gin.Engine) { | |||||||
|  |  | ||||||
| 	MaintenanceFeeController.Router.GET("/maintenance/fee", security.EnterpriseAuthorize, listMaintenanceFees) | 	MaintenanceFeeController.Router.GET("/maintenance/fee", security.EnterpriseAuthorize, listMaintenanceFees) | ||||||
| 	MaintenanceFeeController.Router.POST("/maintenance/fee", security.EnterpriseAuthorize, createMaintenanceFeeRecord) | 	MaintenanceFeeController.Router.POST("/maintenance/fee", security.EnterpriseAuthorize, createMaintenanceFeeRecord) | ||||||
|  | 	MaintenanceFeeController.Router.PUT("/maintenance/fee/:mid", security.EnterpriseAuthorize, modifyMaintenanceFeeRecord) | ||||||
| } | } | ||||||
|  |  | ||||||
| func listMaintenanceFees(c *gin.Context) { | func listMaintenanceFees(c *gin.Context) { | ||||||
| @@ -70,7 +71,7 @@ type _FeeCreationFormData struct { | |||||||
| 	ParkId string          `json:"parkId" form:"parkId"` | 	ParkId string          `json:"parkId" form:"parkId"` | ||||||
| 	Name   string          `json:"name" form:"name"` | 	Name   string          `json:"name" form:"name"` | ||||||
| 	Fee    decimal.Decimal `json:"fee" form:"fee"` | 	Fee    decimal.Decimal `json:"fee" form:"fee"` | ||||||
| 	Memo   string          `json:"memo" form:"memo"` | 	Memo   *string         `json:"memo" form:"memo"` | ||||||
| } | } | ||||||
|  |  | ||||||
| func createMaintenanceFeeRecord(c *gin.Context) { | func createMaintenanceFeeRecord(c *gin.Context) { | ||||||
| @@ -100,3 +101,37 @@ func createMaintenanceFeeRecord(c *gin.Context) { | |||||||
| 	} | 	} | ||||||
| 	result.Created("新维护费记录已经创建。") | 	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("指定维护费条目已更新。") | ||||||
|  | } | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ func Router() *gin.Engine { | |||||||
| 	controller.InitializeRegionController(router) | 	controller.InitializeRegionController(router) | ||||||
| 	controller.InitializeChargesController(router) | 	controller.InitializeChargesController(router) | ||||||
| 	controller.InitializeParkController(router) | 	controller.InitializeParkController(router) | ||||||
|  | 	controller.InitializeMaintenanceFeeController(router) | ||||||
|  |  | ||||||
| 	return router | 	return router | ||||||
| } | } | ||||||
|   | |||||||
| @@ -30,6 +30,7 @@ func (_MaintenanceFeeService) ListMaintenanceFees(pid []string) ([]model.Mainten | |||||||
|  |  | ||||||
| func (_MaintenanceFeeService) CreateMaintenanceFeeRecord(fee model.MaintenanceFee) error { | func (_MaintenanceFeeService) CreateMaintenanceFeeRecord(fee model.MaintenanceFee) error { | ||||||
| 	fee.Id = uuid.New().String() | 	fee.Id = uuid.New().String() | ||||||
|  | 	fee.Enabled = true | ||||||
| 	_, err := global.DBConn.Insert(fee) | 	_, err := global.DBConn.Insert(fee) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -72,3 +73,25 @@ func (_MaintenanceFeeService) DeleteMaintenanceFee(fid string) error { | |||||||
| 	} | 	} | ||||||
| 	return nil | 	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 | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user