scrm-go

member_service.go 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package member_service
  2. import (
  3. "SCRM/models"
  4. "SCRM/service"
  5. "strings"
  6. "github.com/jinzhu/gorm"
  7. )
  8. func GetMemberList(orgID, page, limit, level, source, tag, startTime, endTime int64, isStartTime, isEndTime bool, searchKey string) (members []*Members, total int64, err error) {
  9. db := service.UserReadDB().Table("sgj_user_customer as c").Where("c.status=1")
  10. if orgID > 0 {
  11. db = db.Where("c.user_org_id=?", orgID)
  12. }
  13. if source > 0 {
  14. db = db.Where("c.sources=?", source)
  15. }
  16. if isStartTime {
  17. db = db.Where("c.created_time>=?", startTime)
  18. }
  19. if isEndTime {
  20. db = db.Where("c.created_time<=?", endTime)
  21. }
  22. if len(searchKey) > 0 {
  23. searchKey = "%" + searchKey + "%"
  24. db = db.Where("c.name LIKE ? OR c.mobile LIKE ? ", searchKey, searchKey)
  25. }
  26. if level > 0 {
  27. 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)
  28. }
  29. if tag > 0 {
  30. 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)
  31. }
  32. offset := (page - 1) * limit
  33. err = db.Count(&total).Order("c.created_time desc").Offset(offset).Limit(limit).
  34. Preload("Tags", func(db *gorm.DB) *gorm.DB {
  35. 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")
  36. }).
  37. Preload("UserCard", func(db *gorm.DB) *gorm.DB {
  38. return db.Where("user_org_id=? and status=1", orgID)
  39. }).
  40. Preload("UserCard.Card", "user_org_id=? and status=1", orgID).
  41. 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
  42. if err != nil {
  43. return
  44. }
  45. if len(members) > 0 {
  46. for _, member := range members {
  47. member.Avatar = strings.Replace(member.Avatar, "http://7xkofe.com1.z0.glb.clouddn.com", "https://images.shengws.com", 1)
  48. }
  49. }
  50. return
  51. }
  52. func GetCustomerByMobile(orgID int64, mobile string) (*models.UserCustomer, error) {
  53. var customer models.UserCustomer
  54. var err error
  55. err = service.UserReadDB().Where("user_org_id=? and mobile=? and status=1", orgID, mobile).Find(&customer).Error
  56. if err == gorm.ErrRecordNotFound {
  57. return nil, nil
  58. }
  59. if err != nil {
  60. return nil, err
  61. }
  62. return &customer, nil
  63. }
  64. func GetUserByMobile(mobile string) (*models.User, error) {
  65. var user models.User
  66. var err error
  67. err = service.UserReadDB().Where("mobile=?", mobile).Find(&user).Error
  68. if err == gorm.ErrRecordNotFound {
  69. return nil, nil
  70. }
  71. if err != nil {
  72. return nil, err
  73. }
  74. return &user, nil
  75. }
  76. func CreateMember(member *Members) (err error) {
  77. err = service.UserWriteDB().Create(member).Error
  78. return
  79. }
  80. func CreateMemberWithUser(member *Members, user *models.User) (err error) {
  81. tx := service.UserWriteDB().Begin()
  82. err = tx.Create(user).Error
  83. if err != nil {
  84. tx.Rollback()
  85. return
  86. }
  87. member.UserId = user.ID
  88. err = tx.Create(member).Error
  89. if err != nil {
  90. tx.Rollback()
  91. return
  92. }
  93. tx.Commit()
  94. return
  95. }