scrm-go

member_service.go 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package member_service
  2. import (
  3. "SCRM/models"
  4. "SCRM/service"
  5. "strings"
  6. "time"
  7. "github.com/jinzhu/gorm"
  8. )
  9. func GetMemberList(orgID, page, limit, level, source, tag, startTime, endTime int64, isStartTime, isEndTime bool, searchKey string) (members []*Members, total int64, err error) {
  10. db := service.UserReadDB().Table("sgj_user_customer as c").Where("c.status=1")
  11. if orgID > 0 {
  12. db = db.Where("c.user_org_id=?", orgID)
  13. }
  14. if source > 0 {
  15. db = db.Where("c.sources=?", source)
  16. }
  17. if isStartTime {
  18. db = db.Where("c.created_time>=?", startTime)
  19. }
  20. if isEndTime {
  21. db = db.Where("c.created_time<=?", endTime)
  22. }
  23. if len(searchKey) > 0 {
  24. searchKey = "%" + searchKey + "%"
  25. db = db.Where("c.name LIKE ? OR c.mobile LIKE ? ", searchKey, searchKey)
  26. }
  27. if level > 0 {
  28. db = db.Joins("JOIN sgj_user_user_card as uc ON uc.customer_id = c.id and uc.user_org_id = ? and uc.status=1 and uc.card_id=? ", orgID, level)
  29. }
  30. if tag > 0 {
  31. db = db.Joins("JOIN sgj_user_tag_links as ut ON ut.user_link_id = c.id and ut.user_org_id = ? and ut.status=1 and ut.tag_id=? ", orgID, tag)
  32. }
  33. offset := (page - 1) * limit
  34. err = db.Count(&total).Order("c.created_time desc").Offset(offset).Limit(limit).
  35. Preload("Tags", func(db *gorm.DB) *gorm.DB {
  36. return db.Where("sgj_user_tag_links.user_org_id=? and sgj_user_tags.user_org_id=? and sgj_user_tags.status=1 and sgj_user_tag_links.status=1", orgID, orgID).Order("sgj_user_tag_links.id desc")
  37. }).
  38. Preload("UserCard", func(db *gorm.DB) *gorm.DB {
  39. return db.Where("user_org_id=? and status=1", orgID)
  40. }).
  41. Preload("UserCard.Card", "user_org_id=? and status=1", orgID).
  42. Preload("Illness", "user_org_id=? and status=1", orgID).
  43. Select("c.id, c.user_org_id, c.user_id, c.mobile, c.name, c.gender, c.province_id, c.city_id, c.address, c.birthday, c.treat_type, c.relationship, c.illness_id, c.wechat_openid, c.membership, c.sources, c.status, c.created_time, c.updated_time, c.avatar, c.wechat_unionid, c.remark, c.medical_diagnose, c.yz_uid, c.ill_date, c.district_id").Find(&members).Error
  44. if err != nil {
  45. return
  46. }
  47. if len(members) > 0 {
  48. for _, member := range members {
  49. member.Avatar = strings.Replace(member.Avatar, "http://7xkofe.com1.z0.glb.clouddn.com", "https://images.shengws.com", 1)
  50. }
  51. }
  52. return
  53. }
  54. func GetCustomerByMobile(orgID int64, mobile string) (*models.UserCustomer, error) {
  55. var customer models.UserCustomer
  56. var err error
  57. err = service.UserReadDB().Where("user_org_id=? and mobile=? and status=1", orgID, mobile).Find(&customer).Error
  58. if err == gorm.ErrRecordNotFound {
  59. return nil, nil
  60. }
  61. if err != nil {
  62. return nil, err
  63. }
  64. return &customer, nil
  65. }
  66. func GetUserByMobile(mobile string) (*models.User, error) {
  67. var user models.User
  68. var err error
  69. err = service.UserReadDB().Where("mobile=?", mobile).Find(&user).Error
  70. if err == gorm.ErrRecordNotFound {
  71. return nil, nil
  72. }
  73. if err != nil {
  74. return nil, err
  75. }
  76. return &user, nil
  77. }
  78. func GetOnlyMemberByID(orgID, id int64) (*Members, error) {
  79. var member Members
  80. var err error
  81. err = service.UserReadDB().Where("id =? and user_org_id=? and status=1", id, orgID).Find(&member).Error
  82. if err == gorm.ErrRecordNotFound {
  83. return nil, nil
  84. }
  85. if err != nil {
  86. return nil, err
  87. }
  88. return &member, nil
  89. }
  90. func CreateMember(member *Members) (err error) {
  91. err = service.UserWriteDB().Create(member).Error
  92. return
  93. }
  94. func EditMember(member *Members) (err error) {
  95. err = service.UserWriteDB().Save(member).Error
  96. return
  97. }
  98. func CreateMemberWithUser(member *Members, user *models.User) (err error) {
  99. tx := service.UserWriteDB().Begin()
  100. err = tx.Create(user).Error
  101. if err != nil {
  102. tx.Rollback()
  103. return
  104. }
  105. member.UserId = user.ID
  106. err = tx.Create(member).Error
  107. if err != nil {
  108. tx.Rollback()
  109. return
  110. }
  111. tx.Commit()
  112. return
  113. }
  114. func DeleteMembers(orgID int64, ids []int64) (err error) {
  115. if len(ids) == 1 {
  116. err = service.UserWriteDB().Model(&models.UserCustomer{}).Where("id =? and user_org_id =?", ids[0], orgID).Update(map[string]interface{}{"Status": 0, "UpdatedTime": time.Now().Unix()}).Error
  117. } else {
  118. err = service.UserWriteDB().Model(&models.UserCustomer{}).Where("id IN (?) and user_org_id =?", ids, orgID).Update(map[string]interface{}{"Status": 0, "UpdatedTime": time.Now().Unix()}).Error
  119. }
  120. return
  121. }
  122. func FindCustomerInfoByOpenid(orgID int64, openid string) (*models.UserCustomer, error) {
  123. var cusotmer models.UserCustomer
  124. err := service.UserReadDB().Where("user_org_id = ? and wechat_openid =? and status=1", orgID, openid).First(&cusotmer).Error
  125. if err == gorm.ErrRecordNotFound {
  126. return nil, nil
  127. }
  128. if err != nil {
  129. return nil, err
  130. }
  131. return &cusotmer, nil
  132. }