package db import ( "context" "github.com/sirupsen/logrus" "youngee_b_api/model/gorm_model" ) // CreateSupplierInvoice 创建服务商发票 func CreateSupplierInvoice(ctx context.Context, req *gorm_model.YounggeeSupplierInvoice) error { db := GetWriteDB(ctx) err := db.Create(&req).Error if err != nil { return err } return nil } // UpdateSupplierInvoice 更新服务商发票 func UpdateSupplierInvoice(ctx context.Context, req *gorm_model.YounggeeSupplierInvoice) error { db := GetWriteDB(ctx) whereCondition := gorm_model.YounggeeSupplierInvoice{InvoiceId: req.InvoiceId} err := db.Model(&gorm_model.YounggeeSupplierInvoice{}).Where(whereCondition).Updates(req).Error if err != nil { return err } return nil } // GetIncomeIdsByInvoiceId 根据invoice_id取得income_ids func GetIncomeIdsByInvoiceId(ctx context.Context, invoiceId int) (string, error) { db := GetWriteDB(ctx) var invoiceInfo *gorm_model.YounggeeSupplierInvoice err := db.Model(gorm_model.YounggeeSupplierInvoice{}).Where("invoice_id = ?", invoiceId).Find(&invoiceInfo).Error if err != nil { logrus.WithContext(ctx).Errorf("[GetSProjectDetail] error query mysql, err:%+v", err) return "", err } return invoiceInfo.IncomeIds, nil } // GetInvoiceListBySupplierId 根据invoice_status和supplier_id获取发票信息列表 func GetInvoiceListBySupplierId(ctx context.Context, supplierId int, invoiceStatus int, withdrawStatus int, pageSize int32, pageNum int32) ([]*gorm_model.YounggeeSupplierInvoice, int64, error) { db := GetWriteDB(ctx) // 1. 基础查询:服务商ID和发票状态 db = db.Debug().Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? and invoice_status = ?", supplierId, invoiceStatus) // 2. 如果withdrawStatus不为0,则添加该条件 if withdrawStatus != 0 { db = db.Where("withdraw_status = ?", withdrawStatus) } // 3. 查询总数 var total int64 if err := db.Count(&total).Error; err != nil { logrus.WithContext(ctx).Errorf("[GetInvoiceListBySupplierId] error query mysql total, err:%+v", err) return nil, 0, err } // 4. 分页查询数据 var invoiceList []*gorm_model.YounggeeSupplierInvoice limit := pageSize offset := pageSize * pageNum // 假设pageNum从0开始 err := db.Order("invoice_id desc").Limit(int(limit)).Offset(int(offset)).Find(&invoiceList).Error if err != nil { logrus.WithContext(ctx).Errorf("[GetInvoiceListBySupplierId] error query mysql data, err:%+v", err) return nil, 0, err } return invoiceList, total, nil } // GetInvoiceCountBySupplierId 根据条件统计发票数量(不返回具体数据,不分页) func GetInvoiceCountBySupplierId(ctx context.Context, supplierId int, invoiceStatus int, withdrawStatus int) (int64, error) { db := GetWriteDB(ctx) // 1. 基础查询:服务商ID和发票状态 db = db.Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? AND invoice_status = ?", supplierId, invoiceStatus) // 2. 如果withdrawStatus不为0,则添加该条件 if withdrawStatus != 0 { db = db.Where("withdraw_status = ?", withdrawStatus) } // 3. 只查询总数(不查询具体数据) var count int64 if err := db.Count(&count).Error; err != nil { logrus.WithContext(ctx).Errorf("[GetInvoiceCountBySupplierId] error query count, err:%+v", err) return 0, err } return count, nil }