financial_analyst.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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,position,investment_certificate,professional_certificate"
  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. Position string `gorm:"column:position"`
  23. InvestmentCertificate string `gorm:"column:investment_certificate"`
  24. ProfessionalCertificate string `gorm:"column:professional_certificate"`
  25. Introduction string `gorm:"column:introduction"`
  26. Status AnalystStatus `gorm:"column:status"`
  27. Deleted bool `gorm:"column:deleted"`
  28. CreatedTime time.Time `gorm:"column:created_time;type:timestamps;comment:创建时间"`
  29. UpdatedTime time.Time `gorm:"column:updated_time;type:timestamps;comment:更新时间"`
  30. }
  31. func BatchInsertOrUpdate(list []CrmFinancialAnalyst) (err error) {
  32. db := models.Main()
  33. OnConflictFunc := clause.OnConflict{
  34. Columns: []clause.Column{{Name: "eta_id"}},
  35. DoUpdates: clause.AssignmentColumns([]string{"name", "status", "deleted"}),
  36. }
  37. // 执行批量插入或更新操作
  38. err = db.Clauses(OnConflictFunc).Create(&list).Error
  39. return
  40. }
  41. func (fa *CrmFinancialAnalyst) BeforeCreate(db *gorm.DB) (err error) {
  42. fa.CreatedTime = time.Now()
  43. return
  44. }
  45. func GetAnalystById(id int) (analyst CrmFinancialAnalyst, err error) {
  46. db := models.Main()
  47. err = db.Select(columns).Where("id = ?", id).First(&analyst).Error
  48. return
  49. }
  50. func GetAnalystByName(name string) (analyst CrmFinancialAnalyst, err error) {
  51. db := models.Main()
  52. err = db.Select(columns).Where("name = ?", name).First(&analyst).Error
  53. return
  54. }
  55. func GetCount() (total int64, latestId int64) {
  56. db := models.Main()
  57. err := db.Model(&CrmFinancialAnalyst{}).Select("count(*) count").Where("deleted = ? and investment_certificate !=''", false).Scan(&total).Error
  58. if err != nil {
  59. logger.Error("查询研究员列表失败,%v", err)
  60. return 0, 0
  61. }
  62. err = db.Model(&CrmFinancialAnalyst{}).Select("MAX(id) id").Where("deleted = ? and investment_certificate !=''", false).Scan(&latestId).Error
  63. if err != nil {
  64. logger.Error("查询研究员列表失败,%v", err)
  65. return 0, 0
  66. }
  67. return
  68. }
  69. func GetAnalystList(latestId int64, offset int, limit int) (analysts []CrmFinancialAnalyst, err error) {
  70. if latestId < 0 {
  71. err = errors.New("非法的id参数")
  72. logger.Error("非法的id参数:%d", latestId)
  73. return
  74. }
  75. if limit <= 0 {
  76. err = errors.New("非法的limit参数")
  77. logger.Error("非法的limit参数:%d", limit)
  78. }
  79. db := models.Main()
  80. err = db.Select(columns).Where(" id<= ? ", latestId).Where("deleted = ? and investment_certificate !=''", false).Order("created_time desc").Offset(offset).Limit(limit).Find(&analysts).Error
  81. return
  82. }