supplier_invoice.go 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package db
  2. import (
  3. "context"
  4. "github.com/sirupsen/logrus"
  5. "youngee_b_api/model/gorm_model"
  6. )
  7. // CreateSupplierInvoice 创建服务商发票
  8. func CreateSupplierInvoice(ctx context.Context, req *gorm_model.YounggeeSupplierInvoice) error {
  9. db := GetWriteDB(ctx)
  10. err := db.Create(&req).Error
  11. if err != nil {
  12. return err
  13. }
  14. return nil
  15. }
  16. // UpdateSupplierInvoice 更新服务商发票
  17. func UpdateSupplierInvoice(ctx context.Context, req *gorm_model.YounggeeSupplierInvoice) error {
  18. db := GetWriteDB(ctx)
  19. whereCondition := gorm_model.YounggeeSupplierInvoice{InvoiceId: req.InvoiceId}
  20. err := db.Model(&gorm_model.YounggeeSupplierInvoice{}).Where(whereCondition).Updates(req).Error
  21. if err != nil {
  22. return err
  23. }
  24. return nil
  25. }
  26. // GetIncomeIdsByInvoiceId 根据invoice_id取得income_ids
  27. func GetIncomeIdsByInvoiceId(ctx context.Context, invoiceId int) (string, error) {
  28. db := GetWriteDB(ctx)
  29. var invoiceInfo *gorm_model.YounggeeSupplierInvoice
  30. err := db.Model(gorm_model.YounggeeSupplierInvoice{}).Where("invoice_id = ?", invoiceId).Find(&invoiceInfo).Error
  31. if err != nil {
  32. logrus.WithContext(ctx).Errorf("[GetSProjectDetail] error query mysql, err:%+v", err)
  33. return "", err
  34. }
  35. return invoiceInfo.IncomeIds, nil
  36. }
  37. // GetInvoiceListBySupplierId 根据invoice_status和supplier_id获取发票信息列表
  38. func GetInvoiceListBySupplierId(ctx context.Context, supplierId int, invoiceStatus int, withdrawStatus int, pageSize int32, pageNum int32) ([]*gorm_model.YounggeeSupplierInvoice, int64, error) {
  39. db := GetWriteDB(ctx)
  40. // 1. 基础查询:服务商ID和发票状态
  41. db = db.Debug().Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? and invoice_status = ?", supplierId, invoiceStatus)
  42. // 2. 如果withdrawStatus不为0,则添加该条件
  43. if withdrawStatus != 0 {
  44. db = db.Where("withdraw_status = ?", withdrawStatus)
  45. }
  46. // 3. 查询总数
  47. var total int64
  48. if err := db.Count(&total).Error; err != nil {
  49. logrus.WithContext(ctx).Errorf("[GetInvoiceListBySupplierId] error query mysql total, err:%+v", err)
  50. return nil, 0, err
  51. }
  52. // 4. 分页查询数据
  53. var invoiceList []*gorm_model.YounggeeSupplierInvoice
  54. limit := pageSize
  55. offset := pageSize * pageNum // 假设pageNum从0开始
  56. err := db.Order("invoice_id desc").Limit(int(limit)).Offset(int(offset)).Find(&invoiceList).Error
  57. if err != nil {
  58. logrus.WithContext(ctx).Errorf("[GetInvoiceListBySupplierId] error query mysql data, err:%+v", err)
  59. return nil, 0, err
  60. }
  61. return invoiceList, total, nil
  62. }
  63. // GetInvoiceCountBySupplierId 根据条件统计发票数量(不返回具体数据,不分页)
  64. func GetInvoiceCountBySupplierId(ctx context.Context, supplierId int, invoiceStatus int, withdrawStatus int) (int64, error) {
  65. db := GetWriteDB(ctx)
  66. // 1. 基础查询:服务商ID和发票状态
  67. db = db.Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? AND invoice_status = ?", supplierId, invoiceStatus)
  68. // 2. 如果withdrawStatus不为0,则添加该条件
  69. if withdrawStatus != 0 {
  70. db = db.Where("withdraw_status = ?", withdrawStatus)
  71. }
  72. // 3. 只查询总数(不查询具体数据)
  73. var count int64
  74. if err := db.Count(&count).Error; err != nil {
  75. logrus.WithContext(ctx).Errorf("[GetInvoiceCountBySupplierId] error query count, err:%+v", err)
  76. return 0, err
  77. }
  78. return count, nil
  79. }