package plant import ( "sundynix-go/global" "sundynix-go/model/commom/response" "sundynix-go/model/plant/request" "sundynix-go/utils/auth" "github.com/gin-gonic/gin" "go.uber.org/zap" ) type ExchangeApi struct{} // ==================== 管理端 API ==================== // CreateItem 创建兑换商品 // @Tags 兑换中心-管理 // @Summary 创建兑换商品 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeItemCreateReq true "创建兑换商品" // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" // @Router /exchange/item/create [post] func (a *ExchangeApi) CreateItem(c *gin.Context) { var req request.ExchangeItemCreateReq if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } if err := exchangeService.CreateItem(req); err != nil { global.Logger.Error("创建兑换商品失败", zap.Error(err)) response.FailWithMsg("创建失败", c) return } response.OkWithMsg("创建成功", c) } // UpdateItem 更新兑换商品 // @Tags 兑换中心-管理 // @Summary 更新兑换商品 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeItemUpdateReq true "更新兑换商品" // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" // @Router /exchange/item/update [post] func (a *ExchangeApi) UpdateItem(c *gin.Context) { var req request.ExchangeItemUpdateReq if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } if err := exchangeService.UpdateItem(req); err != nil { global.Logger.Error("更新兑换商品失败", zap.Error(err)) response.FailWithMsg("更新失败", c) return } response.OkWithMsg("更新成功", c) } // DeleteItem 删除兑换商品 // @Tags 兑换中心-管理 // @Summary 删除兑换商品 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeItemCreateReq true "删除兑换商品" // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" // @Router /exchange/item/delete [post] func (a *ExchangeApi) DeleteItem(c *gin.Context) { var req struct { Id string `json:"id" binding:"required"` } if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } if err := exchangeService.DeleteItem(req.Id); err != nil { global.Logger.Error("删除兑换商品失败", zap.Error(err)) response.FailWithMsg("删除失败", c) return } response.OkWithMsg("删除成功", c) } // AdminItemList 管理端商品列表 // @Tags 兑换中心-管理 // @Summary 管理端商品列表 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeItemListReq true "分页获取商品列表" // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" // @Router /exchange/item/list [post] func (a *ExchangeApi) AdminItemList(c *gin.Context) { var req request.ExchangeItemListReq if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } list, total, err := exchangeService.AdminItemList(req) if err != nil { global.Logger.Error("获取商品列表失败", zap.Error(err)) response.FailWithMsg("获取失败", c) return } response.OkWithData(response.PageResult{ List: list, Total: total, Page: req.Current, PageSize: req.PageSize, }, c) } // AdminOrderList 管理端订单列表 // @Tags 兑换中心-管理 // @Summary 管理端订单列表 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeOrderListReq true "分页获取订单列表" // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" // @Router /exchange/order/list [post] func (a *ExchangeApi) AdminOrderList(c *gin.Context) { var req request.ExchangeOrderListReq if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } list, total, err := exchangeService.AdminOrderList(req) if err != nil { global.Logger.Error("获取订单列表失败", zap.Error(err)) response.FailWithMsg("获取失败", c) return } response.OkWithData(response.PageResult{ List: list, Total: total, Page: req.Current, PageSize: req.PageSize, }, c) } // UpdateOrderStatus 更新订单状态 // @Tags 兑换中心-管理 // @Summary 更新订单状态 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeOrderUpdateReq true "更新订单状态" // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" // @Router /exchange/order/update [post] func (a *ExchangeApi) UpdateOrderStatus(c *gin.Context) { var req request.ExchangeOrderUpdateReq if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } if err := exchangeService.UpdateOrderStatus(req); err != nil { global.Logger.Error("更新订单状态失败", zap.Error(err)) response.FailWithMsg(err.Error(), c) return } response.OkWithMsg("更新成功", c) } // ==================== 用户端 API ==================== // UserItemList 用户端商品列表 // @Tags 兑换中心-用户 // @Summary 用户端商品列表 // @Security BearerAuth // @Produce application/json // @Param current query int false "页码" // @Param pageSize query int false "每页大小" // @Param type query string false "商品类型" // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" // @Router /exchange/list [get] func (a *ExchangeApi) UserItemList(c *gin.Context) { var req request.ExchangeItemListReq if err := c.ShouldBindQuery(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } list, total, err := exchangeService.UserItemList(req) if err != nil { global.Logger.Error("获取商品列表失败", zap.Error(err)) response.FailWithMsg("获取失败", c) return } response.OkWithData(response.PageResult{ List: list, Total: total, Page: req.Current, PageSize: req.PageSize, }, c) } // UserItemDetail 商品详情 // @Tags 兑换中心-用户 // @Summary 商品详情 // @Security BearerAuth // @Produce application/json // @Param id query string true "商品ID" // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" // @Router /exchange/detail [get] func (a *ExchangeApi) UserItemDetail(c *gin.Context) { itemId := c.Query("id") if itemId == "" { response.FailWithMsg("参数错误", c) return } item, err := exchangeService.UserItemDetail(itemId) if err != nil { response.FailWithMsg("商品不存在", c) return } response.OkWithData(item, c) } // UserExchange 用户发起兑换 // @Tags 兑换中心-用户 // @Summary 发起兑换 // @Security BearerAuth // @accept application/json // @Produce application/json // @Param data body request.ExchangeReq true "兑换请求" // @Success 200 {string} string "{"success":true,"data":{},"msg":"兑换成功"}" // @Router /exchange/redeem [post] func (a *ExchangeApi) UserExchange(c *gin.Context) { var req request.ExchangeReq if err := c.ShouldBindJSON(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } userId := auth.GetUserId(c) if err := exchangeService.UserExchange(req, userId); err != nil { response.FailWithMsg(err.Error(), c) return } response.OkWithMsg("兑换成功", c) } // UserOrderList 用户订单列表 // @Tags 兑换中心-用户 // @Summary 用户兑换记录 // @Security BearerAuth // @Produce application/json // @Param current query int false "页码" // @Param pageSize query int false "每页大小" // @Param status query int false "订单状态" // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" // @Router /exchange/orders [get] func (a *ExchangeApi) UserOrderList(c *gin.Context) { var req request.ExchangeOrderListReq if err := c.ShouldBindQuery(&req); err != nil { response.FailWithMsg("请求参数错误", c) return } userId := auth.GetUserId(c) list, total, err := exchangeService.UserOrderList(req, userId) if err != nil { global.Logger.Error("获取订单列表失败", zap.Error(err)) response.FailWithMsg("获取失败", c) return } response.OkWithData(response.PageResult{ List: list, Total: total, Page: req.Current, PageSize: req.PageSize, }, c) }