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
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(¶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)
|
|
}
|
|
|