|
|
@@ -0,0 +1,79 @@
|
|
|
+package shift
|
|
|
+
|
|
|
+import (
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+ "wails-app/internal/model/common/response"
|
|
|
+ "wails-app/internal/modules/shift/repository"
|
|
|
+ "wails-app/internal/modules/shift/service"
|
|
|
+ utils "wails-app/internal/pkg"
|
|
|
+)
|
|
|
+
|
|
|
+var shiftSvc = service.NewShiftService()
|
|
|
+
|
|
|
+type startReq struct {
|
|
|
+ StartingCash float64 `json:"starting_cash"`
|
|
|
+}
|
|
|
+
|
|
|
+type endReq struct {
|
|
|
+ ActualCash float64 `json:"actual_cash"`
|
|
|
+ Remark string `json:"remark"`
|
|
|
+}
|
|
|
+
|
|
|
+func StartShift(c *gin.Context) {
|
|
|
+ var req startReq
|
|
|
+ if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ rec, err := shiftSvc.Start(utils.GetUserID(c), req.StartingCash)
|
|
|
+ if err != nil {
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ response.OkWithData(rec, c)
|
|
|
+}
|
|
|
+
|
|
|
+func EndShift(c *gin.Context) {
|
|
|
+ var req endReq
|
|
|
+ if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ rec, err := shiftSvc.End(utils.GetUserID(c), req.ActualCash, req.Remark)
|
|
|
+ if err != nil {
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ response.OkWithData(rec, c)
|
|
|
+}
|
|
|
+
|
|
|
+func GetCurrentShift(c *gin.Context) {
|
|
|
+ rec, err := shiftSvc.GetCurrent(utils.GetUserID(c))
|
|
|
+ if err != nil {
|
|
|
+ response.OkWithData(gin.H{"has_active": false}, c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ response.OkWithData(rec, c)
|
|
|
+}
|
|
|
+
|
|
|
+func ListShifts(c *gin.Context) {
|
|
|
+ var q repository.ShiftListQuery
|
|
|
+ if err := c.ShouldBindQuery(&q); err != nil {
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list, total, err := shiftSvc.List(q, utils.GetUserID(c))
|
|
|
+ if err != nil {
|
|
|
+ response.FailWithMessage(err.Error(), c)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ response.OkWithDetailed(response.PageResult{List: list, Total: total, Page: q.Page, PageSize: q.PageSize}, "查询成功", c)
|
|
|
+}
|
|
|
+
|
|
|
+func SetupShiftRouter(router *gin.RouterGroup) {
|
|
|
+ sr := router.Group("/shift")
|
|
|
+ sr.POST("/start", StartShift)
|
|
|
+ sr.POST("/end", EndShift)
|
|
|
+ sr.GET("/current", GetCurrentShift)
|
|
|
+ sr.GET("/list", ListShifts)
|
|
|
+}
|