You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

436 lines
11 KiB

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(&params)
userID = sys.GetUserUuid(c)
err, result = service.AddUserOrder(userID, &params)
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(&params)
userID = sys.GetUserUuid(c)
device.OsType, device.TerminalType = utils.DetectOsType(sys.GetUA(c))
err, result = service.AddUserOrderV1(userID, &device, &params)
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(&params)
userId := sys.GetUserUuid(c)
if err = service.UpdateOrderAddress(userId, &params); 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(&params)
userID = sys.GetUserUuid(c)
err, result = service.GetPayOrderSign(userID, &params)
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(&params)
userID = sys.GetUserUuid(c)
device.OsType, device.TerminalType = utils.DetectOsType(sys.GetUA(c))
err, result = service.GetPayOrderSign1(userID, &device, &params)
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(&params)
err = service.PaypalCallback1(&params)
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(&params)
userId := sys.GetUserUuid(c)
err, result = service.GetOrderGoods(userId, &params)
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(&params)
userId := sys.GetUserUuid(c)
if result, err = service.GetOrderPostSale(userId, &params); 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(&params)
userId := sys.GetUserUuid(c)
if result, err = service.OrderPostSale(userId, &params); 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(&params)
userId := sys.GetUserUuid(c)
result, err = service.CancelOrderPostSale(userId, &params)
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)
}