package customer import ( "bytes" "io" "shop-api/utils" "shop-api/api/sys" "shop-api/dto" "shop-api/model" "shop-api/model/request" "shop-api/model/response" "shop-api/service" "github.com/gin-gonic/gin" ) // @Summary 获取订单数据 // @Security Bearer // @Description // @Tags 客户端-订单 // @Success 200 {object} response.OrderData "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/data [get] func GetUserOrderData(c *gin.Context) { var ( err error result response.OrderData ) userId := sys.GetUserUuid(c) result, err = service.GetUserOrderData(userId) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithDataMessage(result, "获取成功", c) } // @Summary 获取订单列表 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data query request.SearchOrderList false "data..." // @Success 200 {object} []model.OrderList "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/list [get] func GetUserOrderList(c *gin.Context) { var ( err error userID string list interface{} total int64 data request.SearchOrderList ) _ = c.ShouldBindQuery(&data) userID = sys.GetUserUuid(c) err, list, total = service.GetUserOrderList(userID, &data) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithDetailed(response.PageResult{ List: list, Total: total, Page: data.Page, PageSize: data.PageSize, }, "获取成功", c) } // @Summary 获取订单详情 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data query request.SearchOrderDetail false "data..." // @Success 200 {object} model.OrderDetail "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/detail [get] func GetUserOrderDetail(c *gin.Context) { var ( err error userID string list interface{} data request.SearchOrderDetail ) _ = c.ShouldBindQuery(&data) userID = sys.GetUserUuid(c) err, list = service.GetUserOrderDetail(userID, &data) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithDetailed(list, "获取成功", c) } func AddUserOrder(c *gin.Context) { var ( err error userID string params request.CreateOrderParams result interface{} ) _ = c.ShouldBind(¶ms) userID = sys.GetUserUuid(c) err, result = service.AddUserOrder(userID, ¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithData(result, c) } // @Summary 下单-payment // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.CreateOrderParams false "data..." // @Success 200 {object} response.Order "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/create [post] func AddUserOrder1(c *gin.Context) { var ( err error userID string device request.Device params dto.CreateOrderRequest result interface{} ) _ = c.ShouldBind(¶ms) userID = sys.GetUserUuid(c) device.OsType, device.TerminalType = utils.DetectOsType(sys.GetUA(c)) err, result = service.AddUserOrderV1(userID, &device, ¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithData(result, c) } // @Summary 修改订单状态(取消订单,确认收货订单) // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.UpdateUserOrderStatus false "data..." // @Success 200 {string} string "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/orderStatus [put] func UpdateUserOrderStatus(c *gin.Context) { var ( err error userID string data request.UpdateUserOrderStatus ) _ = c.ShouldBind(&data) userID = sys.GetUserUuid(c) err = service.UpdateUserOrderStatus(userID, &data) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithMessage("修改成功", c) } // @Summary 修改订单收货信息 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.UpdateOrderAddress false "data..." // @Success 200 {string} string "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/address [put] func UpdateOrderAddress(c *gin.Context) { var ( err error params request.UpdateOrderAddress ) _ = c.ShouldBindJSON(¶ms) userId := sys.GetUserUuid(c) if err = service.UpdateOrderAddress(userId, ¶ms); err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithMessage("修改成功", c) } // @Summary 订单支付完成页确认订单 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data query request.CheckOrderParams false "data..." // @Success 200 {string} string "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/checkOrder [get] func CheckOrder(c *gin.Context) { var ( err error userID string data request.CheckOrderParams ) err = c.ShouldBind(&data) if err != nil { response.FailWithMessage(err.Error(), c) return } userID = sys.GetUserUuid(c) err = service.CheckOrderStatus(userID, &data) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithMessage("确认完成", c) } // @Summary 删除订单 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.DeleteUserORder false "data..." // @Success 200 {string} string "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/order [delete] func DeleteUserOrder(c *gin.Context) { var ( err error userID string data request.DeleteUserORder ) c.ShouldBind(&data) userID = sys.GetUserUuid(c) err = service.DeleteUserOrderStatus(userID, &data) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithMessage("删除成功", c) } func GetPayOrderSign(c *gin.Context) { var ( err error userID string params request.SearchOrderDetail result interface{} ) _ = c.ShouldBind(¶ms) userID = sys.GetUserUuid(c) err, result = service.GetPayOrderSign(userID, ¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithData(result, c) } // @Summary 再次调起支付-payment // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.OrderPay false "data..." // @Success 200 {object} response.Order "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/orderPay [post] func GetPayOrderSign1(c *gin.Context) { var ( err error userID string device request.Device params request.OrderPay result interface{} ) _ = c.ShouldBind(¶ms) userID = sys.GetUserUuid(c) device.OsType, device.TerminalType = utils.DetectOsType(sys.GetUA(c)) err, result = service.GetPayOrderSign1(userID, &device, ¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithData(result, c) } func UserOrderMessage(c *gin.Context) { var ( err error data model.PaypalWebhookDetail body []byte ) body, err = io.ReadAll(c.Request.Body) if err != nil { // global.MG_LOG.Error("read body from request error:", zap.Any("err", err)) } else { c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) } _, _ = service.CreateWebhookRecord(body) _ = c.ShouldBind(&data) err = service.UserOrderMessage(&data) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithMessage("回调成功", c) } func PaymentCallback(c *gin.Context) { var ( err error body []byte params dto.PaybackBody ) body, err = io.ReadAll(c.Request.Body) if err != nil { // global.MG_LOG.Error("read body from request error:", zap.Any("err", err)) } else { c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) } service.CreateWebhookRecord(body) _ = c.ShouldBind(¶ms) err = service.PaypalCallback1(¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithMessage("回调成功", c) } // @Summary 获取订单商品快照 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data query request.SearchOrderDetail false "data..." // @Success 200 {object} model.OrderGoodsDetail "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/goods/snapshot [get] func GetOrderGoodsInfo(c *gin.Context) { var ( err error params request.SearchOrderDetail result model.OrderGoodsDetail ) _ = c.ShouldBindQuery(¶ms) userId := sys.GetUserUuid(c) err, result = service.GetOrderGoods(userId, ¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } else { response.OkWithDataMessage(result, "获取成功", c) return } } // @Summary 获取订单申请退款/退货详情 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data query request.IdReq false "data..." // @Success 200 {object} model.OrderPostSale "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/postSale [get] func GetOrderPostSale(c *gin.Context) { var ( err error params request.IdReq result model.OrderPostSale ) _ = c.ShouldBindQuery(¶ms) userId := sys.GetUserUuid(c) if result, err = service.GetOrderPostSale(userId, ¶ms); err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithDetailed(result, "获取成功", c) } // @Summary 订单申请退款/退货 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.PostSaleParams false "data..." // @Success 200 {string} string "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/postSale [post] func OrderPostSale(c *gin.Context) { var ( err error params request.PostSaleParams result string ) _ = c.ShouldBindJSON(¶ms) userId := sys.GetUserUuid(c) if result, err = service.OrderPostSale(userId, ¶ms); err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithData(result, c) } // @Summary 订单取消退款/退货 // @Security Bearer // @Description // @Tags 客户端-订单 // @Param data body request.IdReq false "data..." // @Success 200 {string} string "{"code": 0, "data": [...]}" // @Success 201 {string} string "{"code": 1, "message": ""}" // @Router /order/postSale [delete] func CancelOrderPostSale(c *gin.Context) { var ( err error params request.IdReq result string ) _ = c.ShouldBindJSON(¶ms) userId := sys.GetUserUuid(c) result, err = service.CancelOrderPostSale(userId, ¶ms) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithData(result, c) } // @Summary 获取支付方式列表 // @Security Bearer // @Description // @Tags 客户端-订单 // @Success 200 {array} model.PaymentMethod "{"code": 0, "data": [...]}" // @Router /global/payment-methods [get] func PaymentMethod(c *gin.Context) { var ( err error list []model.PaymentMethod ) err, list = service.GetCountryPaymentMethod(c) if err != nil { response.FailWithMessage(err.Error(), c) return } response.OkWithDetailed(list, "获取成功", c) }