dailyExpenses.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package dao
  2. import (
  3. "github.com/shopspring/decimal"
  4. "gorm.io/gorm"
  5. "server/global"
  6. )
  7. type DailyExpenses struct {
  8. global.GVA_MODEL
  9. Name string `json:"name" form:"name" gorm:"comment:名称"`
  10. Genre int `json:"genre" form:"genre" gorm:"comment:费用类型"`
  11. ExpensesGenre ExpensesGenre `json:"expensesGenre" form:"expensesGenre" gorm:"foreignKey:Genre;references:id;"`
  12. Applicant string `json:"applicant" form:"applicant" gorm:"comment:申请人"`
  13. ApplicationTime string `json:"applicationTime" form:"applicationTime" gorm:"comment:申请日期"`
  14. Charge int `json:"charge" form:"charge" gorm:"comment:负责人"`
  15. User SysUser `json:"user" form:"user" gorm:"foreignKey:Charge;references:id;"`
  16. TotalAmount decimal.Decimal `json:"totalAmount" form:"totalAmount" gorm:"type:decimal(10,2);comment:总金额"`
  17. DailyFeeDetails []DailyFeeDetails `json:"dailyFeeDetails" form:"dailyFeeDetails" gorm:"-"`
  18. }
  19. func (DailyExpenses) TableName() string {
  20. return "daily_expenses"
  21. }
  22. // TODO:日常费用查询
  23. // QueryDailyExpensesList 查询日常费用列表
  24. func QueryDailyExpensesList(limit, offset, genre int, name, time string) (dailyExpenses []DailyExpenses, total int64, err error) {
  25. // 创建db
  26. db := global.GVA_DB.Model(&DailyExpenses{})
  27. // 如果有条件搜索 下方会自动创建搜索语句
  28. if genre != 0 {
  29. db = db.Where("genre = ?", genre)
  30. }
  31. if name != "" {
  32. db = db.Where("name LIKE ?", "%"+name+"%")
  33. }
  34. if time != "" {
  35. db = db.Where("DATE_FORMAT(application_time, '%Y-%m-%d') = ?", time)
  36. }
  37. err = db.Count(&total).Error
  38. if err != nil {
  39. return
  40. }
  41. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("ExpensesGenre").Preload("User").Find(&dailyExpenses).Error
  42. return dailyExpenses, total, err
  43. }
  44. // QueryDailyExpenses 查询日常费用详情
  45. func QueryDailyExpenses(id int) (dailyExpenses DailyExpenses, err error) {
  46. err = global.GVA_DB.Model(&DailyExpenses{}).Where("id = ?", id).Preload("ExpensesGenre").Preload("User").First(&dailyExpenses).Error
  47. return dailyExpenses, err
  48. }
  49. // TODO:日常费用新增
  50. // CreateDailyExpenses 新增日常费用
  51. func (de DailyExpenses) CreateDailyExpenses() error {
  52. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  53. txErr := tx.Create(&de).Error
  54. if txErr != nil {
  55. return txErr
  56. }
  57. for _, dailyFeeDetail := range de.DailyFeeDetails {
  58. dailyFeeDetail.DailyFeeId = de.ID
  59. txErr := tx.Create(&dailyFeeDetail).Error
  60. if txErr != nil {
  61. return txErr
  62. }
  63. }
  64. return txErr
  65. })
  66. }
  67. // TODO:日常费用修改
  68. // UpdateDailyExpenses 修改日常费用
  69. func (de DailyExpenses) UpdateDailyExpenses() error {
  70. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  71. txErr := tx.Unscoped().Where("daily_fee_id = ?", de.ID).Delete(&DailyFeeDetails{}).Error
  72. if txErr != nil {
  73. return txErr
  74. }
  75. txErr = tx.Model(&de).Updates(&de).Error
  76. if txErr != nil {
  77. return txErr
  78. }
  79. for _, dailyFeeDetail := range de.DailyFeeDetails {
  80. txErr := tx.Create(&dailyFeeDetail).Error
  81. if txErr != nil {
  82. return txErr
  83. }
  84. }
  85. return txErr
  86. })
  87. }
  88. // TODO:日常费用删除
  89. func (de DailyExpenses) DeleteDailyExpenses() error {
  90. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  91. txErr := tx.Unscoped().Where("daily_fee_id = ?", de.ID).Delete(&DailyFeeDetails{}).Error
  92. if txErr != nil {
  93. return txErr
  94. }
  95. txErr = tx.Unscoped().Delete(&de).Error
  96. if txErr != nil {
  97. return txErr
  98. }
  99. return txErr
  100. })
  101. }