This commit is contained in:
孙肖扬 2025-06-26 17:33:08 +08:00
commit 8fe858aa03
6 changed files with 613 additions and 555 deletions

View File

@ -112,3 +112,8 @@ func (b *BundleProvider) OnlyAddValueListByOrderNo(_ context.Context, req *bundl
func (b *BundleProvider) UpdateReconciliationStatusBySerialNumber(_ context.Context, req *bundle.UpdateStatusAndPayTimeBySerialNumber) (res *bundle.CommonResponse, err error) { func (b *BundleProvider) UpdateReconciliationStatusBySerialNumber(_ context.Context, req *bundle.UpdateStatusAndPayTimeBySerialNumber) (res *bundle.CommonResponse, err error) {
return logic.UpdateReconciliationStatusBySerialNumber(req) return logic.UpdateReconciliationStatusBySerialNumber(req)
} }
// 删除订单
func (b *BundleProvider) DeleteValueAddService(_ context.Context, req *bundle.DeleteValueAddServiceRequest) (res *bundle.CommonResponse, err error) {
return logic.DeleteValueAddService(req)
}

View File

@ -273,7 +273,10 @@ func OrderRecordDetail(req *bundle.OrderRecordsDetailRequest) (res *bundle.Order
if req.BundleUUID != "" { if req.BundleUUID != "" {
query = query.Where("bundle_uuid = ?", req.BundleUUID) query = query.Where("bundle_uuid = ?", req.BundleUUID)
} }
err = query.Order("expiration_time desc").First(&orderRecord).Error if req.Status != 0 {
query = query.Where("status = ?", req.Status)
}
err = query.Order("created_at desc").First(&orderRecord).Error
if err != nil { if err != nil {
return res, commonErr.ReturnError(err, msg.ErrorGetOrderInfo, "获取订单信息失败: ") return res, commonErr.ReturnError(err, msg.ErrorGetOrderInfo, "获取订单信息失败: ")
} }
@ -464,6 +467,7 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
} }
for _, record := range records { for _, record := range records {
customerID, _ := strconv.ParseInt(record.CustomerID, 10, 64) customerID, _ := strconv.ParseInt(record.CustomerID, 10, 64)
orderItem := &bundle.OrderBundleRecordInfo{ orderItem := &bundle.OrderBundleRecordInfo{
OrderNo: record.OrderNo, OrderNo: record.OrderNo,
BundleName: record.BundleName, BundleName: record.BundleName,
@ -475,28 +479,20 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
CustomerId: customerID, CustomerId: customerID,
} }
// 构建子订单 map按 orderAddNo 聚合 // 聚合子订单
addMap := make(map[string]*bundle.OrderAddBundleRecordInfo) addMap := make(map[string]*bundle.OrderAddBundleRecordInfo)
for _, sub := range record.BundleOrderValueAdd { for _, sub := range record.BundleOrderValueAdd {
orderAddNo := sub.OrderNo orderAddNo := sub.OrderNo
amount := float32(sub.Amount)
// SettlementAmount 规则
settlementAmount := float32(sub.Amount)
if sub.OrderNo == record.OrderNo {
settlementAmount = record.TotalAmount
}
if existing, ok := addMap[orderAddNo]; ok { if existing, ok := addMap[orderAddNo]; ok {
existing.Amount += float32(sub.Amount) existing.Amount += amount
existing.SettlementAmount += settlementAmount
} else { } else {
addMap[orderAddNo] = &bundle.OrderAddBundleRecordInfo{ addMap[orderAddNo] = &bundle.OrderAddBundleRecordInfo{
OrderAddNo: orderAddNo, OrderAddNo: orderAddNo,
Amount: float32(sub.Amount), Amount: amount,
SettlementAmount: settlementAmount,
CurrencyType: int32(sub.CurrencyType), CurrencyType: int32(sub.CurrencyType),
//HandlingFee: float32(sub.HandlingFee),
//ExchangeRate: float32(sub.ExchangeRate),
OrderAddCreateAt: sub.CreatedAt.Format("2006-01-02 15:04:05"), OrderAddCreateAt: sub.CreatedAt.Format("2006-01-02 15:04:05"),
AddPayStatus: int32(sub.PaymentStatus), AddPayStatus: int32(sub.PaymentStatus),
Contract: sub.SignContract, Contract: sub.SignContract,
@ -507,10 +503,16 @@ func OrderRecordsListV2(req *bundle.OrderRecordsRequestV2) (res *bundle.OrderRec
} }
} }
// 将聚合后的子订单添加到主订单返回结构中 // 设置 SettlementAmount 并追加到主订单中
for _, v := range addMap { for orderAddNo, addInfo := range addMap {
orderItem.AddBundleInfo = append(orderItem.AddBundleInfo, v) if orderAddNo == record.OrderNo {
addInfo.SettlementAmount = record.TotalAmount
} else {
addInfo.SettlementAmount = addInfo.Amount
} }
orderItem.AddBundleInfo = append(orderItem.AddBundleInfo, addInfo)
}
res.BundleInfo = append(res.BundleInfo, orderItem) res.BundleInfo = append(res.BundleInfo, orderItem)
} }
res.Total = int32(count) res.Total = int32(count)
@ -540,6 +542,7 @@ func OrderListByOrderNo(req *bundle.OrderInfoByOrderNoRequest) (*bundle.OrderInf
Type: int32(addOrder[0].Source), Type: int32(addOrder[0].Source),
UserId: uint64(userID), UserId: uint64(userID),
OrderUUID: addOrder[0].OrderUUID, OrderUUID: addOrder[0].OrderUUID,
UserName: addOrder[0].CustomerName,
} }
for _, item := range addOrder { for _, item := range addOrder {
switch item.ServiceType { switch item.ServiceType {
@ -583,7 +586,10 @@ func GetReconciliationList(req *bundle.GetReconciliationListReq) (*bundle.GetRec
modelObj = modelObj.Where("pay_channel = ?", req.PayChannel) modelObj = modelObj.Where("pay_channel = ?", req.PayChannel)
} }
if req.BundleOrderOn != "" { if req.BundleOrderOn != "" {
modelObj = modelObj.Where("order_no like ?", "%"+req.BundleOrderOn+"%") modelObj = modelObj.Where("bundle_order_on like ?", "%"+req.BundleOrderOn+"%")
}
if req.BundleAddOrderOn != "" {
modelObj = modelObj.Where("bundle_add_order_on like ?", "%"+req.BundleAddOrderOn+"%")
} }
if req.CreatedStart != "" && req.CreatedEnd != "" { if req.CreatedStart != "" && req.CreatedEnd != "" {
modelObj = modelObj.Where("created_at between ? and ?", req.CreatedStart, req.CreatedEnd) modelObj = modelObj.Where("created_at between ? and ?", req.CreatedStart, req.CreatedEnd)
@ -602,7 +608,7 @@ func GetReconciliationList(req *bundle.GetReconciliationListReq) (*bundle.GetRec
return res, nil return res, nil
} }
offset := (req.Page - 1) * req.PageSize offset := (req.Page - 1) * req.PageSize
if err := modelObj.Offset(int(offset)).Limit(int(req.PageSize)).Find(&records).Error; err != nil { if err := modelObj.Offset(int(offset)).Limit(int(req.PageSize)).Order("created_at desc").Find(&records).Error; err != nil {
return nil, fmt.Errorf("查询记录失败: %v", err) return nil, fmt.Errorf("查询记录失败: %v", err)
} }
@ -714,3 +720,43 @@ func UpdateReconciliationStatusBySerialNumber(req *bundle.UpdateStatusAndPayTime
// 返回成功响应 // 返回成功响应
return &bundle.CommonResponse{Msg: "更新成功"}, nil return &bundle.CommonResponse{Msg: "更新成功"}, nil
} }
func DeleteValueAddService(req *bundle.DeleteValueAddServiceRequest) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
var paidServices []*model.BundleOrderValueAdd
if err = app.ModuleClients.BundleDB.Model(&model.BundleOrderValueAdd{}).
Where("order_no = ? AND payment_status = 2 and customer_id = ?", req.OrderNo, req.UserID).
Find(&paidServices).Error; err != nil {
res.Msg = msg.ErrorUpdateOrderInfo
return res, commonErr.ReturnError(err, msg.ErrorUpdateOrderInfo, "查询增值服务支付状态失败: ")
}
if len(paidServices) > 0 {
res.Msg = "订单已支付,无法删除"
return res, nil
}
if err = app.ModuleClients.BundleDB.Where("order_no = ?", req.OrderNo).
Delete(&model.BundleOrderValueAdd{}).Error; err != nil {
res.Msg = msg.ErrorDeleteOrderInfo
return res, commonErr.ReturnError(err, msg.ErrorDeleteOrderInfo, "删除增值服务失败: ")
}
var order model.BundleOrderRecords
if err = app.ModuleClients.BundleDB.Model(&model.BundleOrderRecords{}).
Where("order_no = ? and customer_id = ?", req.OrderNo, req.UserID).
First(&order).Error; err != nil {
if !errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
} else if order.PayType == 2 {
res.Msg = "订单已支付,无法删除"
return res, nil
}
if err = app.ModuleClients.BundleDB.Where("order_no = ?", order.OrderNo).
Delete(&model.BundleOrderRecords{}).Error; err != nil {
res.Msg = msg.ErrorDeleteOrderInfo
return res, commonErr.ReturnError(err, msg.ErrorDeleteOrderInfo, "删除套餐订单服务失败: ")
}
res.Msg = msg.SuccessDeletedOrderInfo
return res, nil
}

View File

@ -156,3 +156,8 @@ func UpdateReconciliationStatusBySerialNumber(req *bundle.UpdateStatusAndPayTime
res, err = dao.UpdateReconciliationStatusBySerialNumber(req) res, err = dao.UpdateReconciliationStatusBySerialNumber(req)
return return
} }
func DeleteValueAddService(req *bundle.DeleteValueAddServiceRequest) (res *bundle.CommonResponse, err error) {
res = new(bundle.CommonResponse)
res, err = dao.DeleteValueAddService(req)
return
}

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-triple. DO NOT EDIT. // Code generated by protoc-gen-go-triple. DO NOT EDIT.
// versions: // versions:
// - protoc-gen-go-triple v1.0.8 // - protoc-gen-go-triple v1.0.8
// - protoc v3.20.3 // - protoc v4.24.0--rc1
// source: pb/bundle.proto // source: pb/bundle.proto
package bundle package bundle

View File

@ -52,7 +52,9 @@ const (
SuccessCreateOrderInfo = "创建订单信息成功" SuccessCreateOrderInfo = "创建订单信息成功"
ErrorUpdateOrderInfo = "更新订单信息失败" ErrorUpdateOrderInfo = "更新订单信息失败"
ErrorDeleteOrderInfo = "删除增值服务失败"
SuccessUpdateOrderInfo = "更新订单信息成功" SuccessUpdateOrderInfo = "更新订单信息成功"
SuccessDeletedOrderInfo = "删除订单信息成功"
ErrorGetOrderInfo = "获取订单信息失败" ErrorGetOrderInfo = "获取订单信息失败"