userhealthprofileservice.go 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package service
  2. import (
  3. "errors"
  4. "sws_xcx/models"
  5. "time"
  6. "github.com/jinzhu/gorm"
  7. )
  8. type HealthProfileService struct {
  9. rdb *gorm.DB
  10. wdb *gorm.DB
  11. }
  12. func NewUserHealthProfileService() *HealthProfileService {
  13. p := &models.UserHealthProfile{}
  14. return &HealthProfileService{
  15. rdb: readDb.Model(p),
  16. wdb: writeDb.Model(p),
  17. }
  18. }
  19. func (s *HealthProfileService) GetUserHealthProfileByUserId(userId uint64) (*models.UserHealthProfile, error) {
  20. p := &models.UserHealthProfile{}
  21. err := s.rdb.Find(p, "user_id = ?", userId).Error
  22. if err == gorm.ErrRecordNotFound {
  23. err = nil
  24. }
  25. return p, err
  26. }
  27. func (s *HealthProfileService) Get(id uint64) (models.UserHealthProfile, error) {
  28. p := &models.UserHealthProfile{}
  29. err := s.rdb.First(p, id).Error
  30. if err == gorm.ErrRecordNotFound {
  31. err = nil
  32. }
  33. return *p, err
  34. }
  35. func (s *HealthProfileService) SavePatientInfo(userId uint64, realName string, idCard string, regPhone string) error {
  36. p, err := s.GetUserHealthProfileByUserId(userId)
  37. if err != nil {
  38. return err
  39. }
  40. if p == nil {
  41. p = &models.UserHealthProfile{}
  42. }
  43. p.UserId = userId
  44. p.RealName = realName
  45. p.InpatientRegPhone = regPhone
  46. p.IdCard = idCard
  47. if p.Id == 0 {
  48. return s.wdb.Create(p).Error
  49. }
  50. return s.wdb.Model(p).Update(p).Error
  51. }
  52. func (s *HealthProfileService) SaveHealthProfile(userId uint64, req models.SaveHealthProfileReq) error {
  53. p, err := s.GetUserHealthProfileByUserId(userId)
  54. if err != nil {
  55. return err
  56. }
  57. if p == nil {
  58. p = &models.UserHealthProfile{}
  59. }
  60. p.UserId = userId
  61. t := &models.Time{}
  62. var n time.Time
  63. if req.Birthday != "" {
  64. n, err = t.Parse(req.Birthday)
  65. if err != nil {
  66. return errors.New("Birthday参数格式不正确")
  67. }
  68. p.Birthday = n
  69. }
  70. p.BloodType = req.BloodType
  71. if req.CreatineTime != "" {
  72. n, err = t.Parse(req.CreatineTime)
  73. if err != nil {
  74. return errors.New("CreatineTime参数格式不正确")
  75. }
  76. p.CreatineTime = n
  77. }
  78. p.Creatinine = req.Creatinine
  79. p.CreatinineUnit = req.CreatinineUnit
  80. p.Gender = req.Gender
  81. p.Height = req.Height
  82. p.IllnessState = req.IllnessState
  83. p.RenalFunctionStatus = req.RenalFunctionStatus
  84. p.UrineProtein = req.UrineProtein
  85. p.UrineProtein24h = req.UrineProtein24h
  86. if req.UrineProtein24hTime != "" {
  87. n, err = t.Parse(req.UrineProtein24hTime)
  88. if err != nil {
  89. return errors.New("UrineProtein24hTime参数格式不正确")
  90. }
  91. p.UrineProtein24hTime = n
  92. }
  93. p.UrineProtein24hUnit = req.UrineProtein24hUnit
  94. if req.UrineProteinTime != "" {
  95. n, err = t.Parse(req.UrineProteinTime)
  96. if err != nil {
  97. return errors.New("UrineProteinTime参数格式不正确")
  98. }
  99. p.UrineProteinTime = n
  100. }
  101. p.UrineProteinUnit = req.UrineProteinUnit
  102. p.Weight = req.Weight
  103. if p.Id == 0 {
  104. return s.wdb.Create(p).Error
  105. }
  106. return s.wdb.Model(p).Update(p).Error
  107. }
  108. func (s *HealthProfileService) Save(p *models.UserHealthProfile) error {
  109. return s.wdb.Save(p).Error
  110. }