package bundle import ( "context" "errors" "fonchain-fiee/api/bundle" "fonchain-fiee/pkg/model/login" "fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service/bundle/common" "fonchain-fiee/pkg/service/bundle/logic" bundleModel "fonchain-fiee/pkg/service/bundle/model" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" "strconv" ) func CreateBundleOrderSignature(c *gin.Context) { 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 } // 获取 用户信息 userInfo := login.GetUserInfoFromC(c) req.CustomerNum = userInfo.SubNum req.CustomerName = userInfo.Name req.CustomerID = strconv.FormatUint(userInfo.ID, 10) // 获取 套餐信息 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 // 当前 未将 签名 写入合同中 signContract, signContractErr := logic.SignContract(req.CustomerName, bundleDetail.Bundle.Contract, req.Signature) if signContractErr != nil { service.Error(c, signContractErr) return } req.SignContract = signContract req.SignedTime = common.GetBeijingTime() req.Status = bundleModel.OrderSigned res, err := service.BundleProvider.CreateOrderRecord(context.Background(), &req) if err != nil { service.Error(c, err) return } service.Success(c, res) } func UpdateBundleOrderStatusPaid(c *gin.Context) { var req bundle.OrderRecord if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, err) return } // 获取 用户信息 userInfo := login.GetUserInfoFromC(c) if req.Uuid == "" { service.Retry(c, errors.New(common.MissOrderUUID)) return } detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{ Uuid: req.Uuid, }) if detailErr != nil { service.Retry(c, detailErr) return } // 判断 是否是 本人操作 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() res, err := service.BundleProvider.UpdateOrderRecord(context.Background(), &req) if err != nil { service.Retry(c, detailErr) 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) }