fonchain-fiee/pkg/service/bundle/bundleOrder.go

159 lines
3.5 KiB
Go
Raw Normal View History

2025-02-20 12:55:54 +00:00
package bundle
import (
"context"
"errors"
"fonchain-fiee/api/bundle"
2025-02-21 13:09:29 +00:00
"fonchain-fiee/pkg/model/login"
2025-02-20 12:55:54 +00:00
"fonchain-fiee/pkg/service"
2025-02-21 13:09:29 +00:00
"fonchain-fiee/pkg/service/bundle/common"
2025-02-22 07:31:21 +00:00
"fonchain-fiee/pkg/service/bundle/logic"
2025-02-21 13:09:29 +00:00
bundleModel "fonchain-fiee/pkg/service/bundle/model"
2025-02-20 12:55:54 +00:00
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
2025-02-21 13:09:29 +00:00
"strconv"
2025-02-20 12:55:54 +00:00
)
2025-02-21 13:09:29 +00:00
func CreateBundleOrderSignature(c *gin.Context) {
2025-02-20 12:55:54 +00:00
var req bundle.OrderRecord
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
if req.BundleUuid == "" {
service.Error(c, errors.New(common.MissBundleUUID))
return
}
if req.Signature == "" {
service.Error(c, errors.New(common.MissOrderSignature))
return
}
// 获取 用户信息
2025-02-21 13:09:29 +00:00
userInfo := login.GetUserInfoFromC(c)
req.CustomerNum = userInfo.SubNum
req.CustomerName = userInfo.Name
req.CustomerID = strconv.FormatUint(userInfo.ID, 10)
2025-02-20 12:55:54 +00:00
// 获取 套餐信息
bundleDetailReq := &bundle.BundleDetailRequest{
Uuid: req.BundleUuid,
}
bundleDetail, detailErr := service.BundleProvider.BundleDetail(context.Background(), bundleDetailReq)
if detailErr != nil {
service.Error(c, detailErr)
return
}
req.BundleName = bundleDetail.Bundle.Name
req.Amount = bundleDetail.Bundle.Price
req.AmountType = bundleDetail.Bundle.PriceType
// 当前 未将 签名 写入合同中
2025-02-22 11:50:01 +00:00
signContract, signContractErr := logic.SignContract(req.CustomerNum, bundleDetail.Bundle.Contract, req.Signature)
2025-02-22 07:31:21 +00:00
if signContractErr != nil {
service.Error(c, signContractErr)
return
}
req.SignContract = signContract
2025-02-20 12:55:54 +00:00
req.SignedTime = common.GetBeijingTime()
2025-02-21 13:09:29 +00:00
req.Status = bundleModel.OrderSigned
2025-02-20 12:55:54 +00:00
res, err := service.BundleProvider.CreateOrderRecord(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}
2025-02-21 13:09:29 +00:00
func UpdateBundleOrderStatusPaid(c *gin.Context) {
2025-02-20 12:55:54 +00:00
var req bundle.OrderRecord
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
// 获取 用户信息
2025-02-21 13:09:29 +00:00
userInfo := login.GetUserInfoFromC(c)
if req.Uuid == "" {
2025-02-22 11:36:25 +00:00
service.Error(c, errors.New(common.MissOrderUUID))
2025-02-21 13:09:29 +00:00
return
}
detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{
Uuid: req.Uuid,
})
if detailErr != nil {
2025-02-22 11:36:25 +00:00
service.Error(c, detailErr)
2025-02-21 13:09:29 +00:00
return
}
2025-02-20 12:55:54 +00:00
// 判断 是否是 本人操作
2025-02-21 13:09:29 +00:00
if strconv.FormatUint(userInfo.ID, 10) != detail.OrderRecord.CustomerID {
service.Error(c, errors.New(common.NotMatchOrderInfo))
return
}
req.Status = bundleModel.OrderPaid
req.PayTime = common.GetBeijingTime()
2025-02-20 12:55:54 +00:00
res, err := service.BundleProvider.UpdateOrderRecord(context.Background(), &req)
if err != nil {
2025-02-21 13:09:29 +00:00
service.Retry(c, detailErr)
2025-02-20 12:55:54 +00:00
return
}
service.Success(c, res)
}
func OrderRecordsList(c *gin.Context) {
var req bundle.OrderRecordsRequest
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
// 获取 用户信息
res, err := service.BundleProvider.OrderRecordsList(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}
func OrderRecordsDetail(c *gin.Context) {
var req bundle.OrderRecordsDetailRequest
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, err)
return
}
// 获取 用户信息
res, err := service.BundleProvider.OrderRecordsDetail(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}