financial_analyst.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package financial_analyst
  2. import (
  3. "errors"
  4. logger "eta/eta_mini_ht_api/common/component/log"
  5. "eta/eta_mini_ht_api/models"
  6. "gorm.io/gorm"
  7. "gorm.io/gorm/clause"
  8. "time"
  9. )
  10. type AnalystStatus string
  11. const (
  12. AnalystStatusEnabled AnalystStatus = "enabled"
  13. AnalystStatusDisabled AnalystStatus = "disabled"
  14. columns = "id,eta_id,name,head_img_url,introduction"
  15. )
  16. type CrmFinancialAnalyst struct {
  17. Id int `gorm:"primaryKey;autoIncrement;column:id;comment:主键"`
  18. ETAId int `gorm:"column:eta_id"`
  19. HTId int `gorm:"column:ht_id"`
  20. Name string `gorm:"column:name"`
  21. HeadImgURL string `gorm:"column:head_img_url"`
  22. Introduction string `gorm:"column:introduction"`
  23. Status AnalystStatus `gorm:"column:status"`
  24. Deleted bool `gorm:"column:deleted"`
  25. CreatedTime time.Time `gorm:"column:created_time;type:timestamps;comment:创建时间"`
  26. UpdatedTime time.Time `gorm:"column:updated_time;type:timestamps;comment:更新时间"`
  27. }
  28. func BatchInsertOrUpdate(list []CrmFinancialAnalyst) (err error) {
  29. db := models.Main()
  30. OnConflictFunc := clause.OnConflict{
  31. Columns: []clause.Column{{Name: "eta_id"}},
  32. DoUpdates: clause.AssignmentColumns([]string{"name", "status", "deleted"}),
  33. }
  34. // 执行批量插入或更新操作
  35. err = db.Clauses(OnConflictFunc).Create(&list).Error
  36. return
  37. }
  38. func (fa *CrmFinancialAnalyst) BeforeCreate(db *gorm.DB) (err error) {
  39. fa.CreatedTime = time.Now()
  40. return
  41. }
  42. func GetAnalystById(id int) (analyst CrmFinancialAnalyst, err error) {
  43. db := models.Main()
  44. err = db.Select(columns).Where("id = ?", id).First(&analyst).Error
  45. return
  46. }
  47. func GetAnalystByName(name string) (analyst CrmFinancialAnalyst, err error) {
  48. db := models.Main()
  49. err = db.Select(columns).Where("name = ?", name).First(&analyst).Error
  50. return
  51. }
  52. func GetCount() (total int64, latestId int64) {
  53. db := models.Main()
  54. err := db.Model(&CrmFinancialAnalyst{}).Select("count(*) count").Order("id asc").Scan(&total).Error
  55. if err != nil {
  56. logger.Error("查询研究员列表失败,%v", err)
  57. return 0, 0
  58. }
  59. err = db.Model(&CrmFinancialAnalyst{}).Select("MAX(id) id").Scan(&latestId).Order("id asc").Error
  60. if err != nil {
  61. logger.Error("查询研究员列表失败,%v", err)
  62. return 0, 0
  63. }
  64. return
  65. }
  66. func GetAnalystList(latestId int64, offset int, limit int) (analysts []CrmFinancialAnalyst, err error) {
  67. if latestId < 0 {
  68. err = errors.New("非法的id参数")
  69. logger.Error("非法的id参数:%d", latestId)
  70. return
  71. }
  72. if limit <= 0 {
  73. err = errors.New("非法的limit参数")
  74. logger.Error("非法的limit参数:%d", limit)
  75. }
  76. db := models.Main()
  77. err = db.Select(columns).Where(" id<= ? ", latestId).Order("created_time desc").Offset(offset).Limit(limit).Find(&analysts).Error
  78. return
  79. }