diff --git a/api/v1/.gitkeep b/api/v1/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/api/v1/prize/prize.go b/api/v1/prize/prize.go new file mode 100644 index 0000000..de5cb14 --- /dev/null +++ b/api/v1/prize/prize.go @@ -0,0 +1,13 @@ +package prize + +type EditPrizeReq struct { + Id int `dc:"奖品id"` + Name string `v:"required#奖品名称不能为空" dc:"奖品名称"` + ImgUrl string `v:"required#奖品图片不能为空" dc:"奖品图片"` + Level int `v:"required#奖品等级不能为空" dc:"奖品等级"` + Odds float64 `v:"required#奖品抽取概率不能为空" dc:"奖品抽取概率"` +} + +type DeletePrizeReq struct { + Id int `v:"required#奖品id不能为空" dc:"奖品id"` +} diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index be95baa..0be3cbd 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -2,6 +2,7 @@ package cmd import ( "MangheGo/internal/controller/prize" + "MangheGo/internal/controller/record" "MangheGo/internal/logic/middleware" "context" @@ -20,6 +21,13 @@ var ( s.Group("/api/prize_activity", func(group *ghttp.RouterGroup) { group.Middleware(middleware.MiddlewareCORS) group.POST("/get-prize-list", prize.Prize().GetPrizeList) + group.POST("/get-records-by-jwcode", record.Record().GetRecordsByJwcode) + group.POST("/get-top-prize-records", record.Record().GetTopPrizeRecords) + }) + s.Group("/api/prize_backend", func(group *ghttp.RouterGroup) { + group.Middleware(middleware.MiddlewareCORS) + group.POST("/edit-prize", prize.Prize().EditPrize) + group.POST("/delete-prize", prize.Prize().DeletePrize) }) s.Run() return nil diff --git a/internal/controller/.gitkeep b/internal/controller/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/internal/controller/prize/prize.go b/internal/controller/prize/prize.go index b93354d..35942ec 100644 --- a/internal/controller/prize/prize.go +++ b/internal/controller/prize/prize.go @@ -1,6 +1,7 @@ package prize import ( + "MangheGo/api/v1/prize" "MangheGo/internal/model/dto" "MangheGo/internal/service" "github.com/gogf/gf/v2/net/ghttp" @@ -26,3 +27,45 @@ func (c cPrize) GetPrizeList(r *ghttp.Request) { Data: res, }) } + +func (c cPrize) EditPrize(r *ghttp.Request) { + var req *prize.EditPrizeReq + if err := r.Parse(&req); err != nil { + r.Response.WriteJsonExit(dto.Result{ + Code: 400, + Message: err.Error(), + }) + } + err := service.Prize().EditPrize(r.Context(), req) + if err != nil { + r.Response.WriteJsonExit(dto.Result{ + Code: 400, + Message: err.Error(), + }) + } + r.Response.WriteJsonExit(dto.Result{ + Code: 200, + Message: "success", + }) +} + +func (c cPrize) DeletePrize(r *ghttp.Request) { + var req *prize.DeletePrizeReq + if err := r.Parse(&req); err != nil { + r.Response.WriteJsonExit(dto.Result{ + Code: 400, + Message: err.Error(), + }) + } + err := service.Prize().DeletePrize(r.Context(), req.Id) + if err != nil { + r.Response.WriteJsonExit(dto.Result{ + Code: 400, + Message: err.Error(), + }) + } + r.Response.WriteJsonExit(dto.Result{ + Code: 200, + Message: "success", + }) +} diff --git a/internal/controller/record/record.go b/internal/controller/record/record.go new file mode 100644 index 0000000..955700d --- /dev/null +++ b/internal/controller/record/record.go @@ -0,0 +1,19 @@ +package record + +import ( + "github.com/gogf/gf/v2/net/ghttp" +) + +type cRecord struct{} + +func Record() *cRecord { + return &cRecord{} +} + +func (c cRecord) GetRecordsByJwcode(r *ghttp.Request) { + +} + +func (c cRecord) GetTopPrizeRecords(r *ghttp.Request) { + +} diff --git a/internal/logic/prize/prize.go b/internal/logic/prize/prize.go index 842a911..fdc6dfc 100644 --- a/internal/logic/prize/prize.go +++ b/internal/logic/prize/prize.go @@ -1,6 +1,9 @@ package prize import ( + "MangheGo/api/v1/prize" + "MangheGo/internal/dao" + "MangheGo/internal/model/do" "MangheGo/internal/model/entity" "MangheGo/internal/service" "context" @@ -19,5 +22,36 @@ func New() service.IPrize { } func (s *sPrize) GetPrizeList(ctx context.Context) (prizeList []*entity.Prize, err error) { + err = dao.Prize.Ctx(ctx).OrderDesc("level").Scan(&prizeList) + return +} + +func (s *sPrize) EditPrize(ctx context.Context, req *prize.EditPrizeReq) (err error) { + if req.Id == 0 { + _, err = dao.Prize.Ctx(ctx).Data(do.Prize{ + Name: req.Name, + ImgUrl: req.ImgUrl, + Level: req.Level, + Odds: req.Odds, + }).Insert() + } else { + _, err = dao.Prize.Ctx(ctx).Data(do.Prize{ + Name: req.Name, + ImgUrl: req.ImgUrl, + Level: req.Level, + Odds: req.Odds, + }).WherePri(req.Id).Update() + } + if err != nil { + return err + } + return +} + +func (s *sPrize) DeletePrize(ctx context.Context, id int) (err error) { + _, err = dao.Prize.Ctx(ctx).WherePri(id).Delete() + if err != nil { + return err + } return } diff --git a/internal/service/.gitkeep b/internal/service/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/internal/service/prize.go b/internal/service/prize.go index 748ca11..843f246 100644 --- a/internal/service/prize.go +++ b/internal/service/prize.go @@ -6,6 +6,7 @@ package service import ( + "MangheGo/api/v1/prize" "MangheGo/internal/model/entity" "context" ) @@ -13,6 +14,8 @@ import ( type ( IPrize interface { GetPrizeList(ctx context.Context) (prizeList []*entity.Prize, err error) + EditPrize(ctx context.Context, req *prize.EditPrizeReq) (err error) + DeletePrize(ctx context.Context, id int) (err error) } )