article_apply_appointment_expert.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_clpt/models"
  6. "hongze/hongze_clpt/utils"
  7. "strconv"
  8. "time"
  9. )
  10. // 约访专家的请求
  11. func AddArticleApplyAppointmentExpert(user *models.WxUserItem, articleId int) (err error) {
  12. defer func() {
  13. if err != nil {
  14. go utils.SendAlarmMsg("约访专家的请求失败"+err.Error(), 2)
  15. }
  16. }()
  17. item := new(models.CygxArticleApplyAppointmentExpert)
  18. item.UserId = user.UserId
  19. item.ArticleId = articleId
  20. item.CreateTime = time.Now()
  21. item.ModifyTime = time.Now()
  22. item.Mobile = user.Mobile
  23. item.Email = user.Email
  24. item.CompanyId = user.CompanyId
  25. item.CompanyName = user.CompanyName
  26. item.RegisterPlatform = utils.REGISTER_PLATFORM
  27. sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
  28. if err != nil && err.Error() != utils.ErrNoRow() {
  29. return
  30. }
  31. item.RealName = user.RealName
  32. if sellerItem != nil {
  33. item.SellerName = sellerItem.RealName
  34. }
  35. _, e := models.AddCygxArticleApplyAppointmentExpert(item)
  36. if e != nil {
  37. err = errors.New("AddCygxArticleApplyAppointmentExpert, Err: " + e.Error())
  38. return
  39. }
  40. return
  41. }
  42. // 用户约访专家的请求,向对应销售发送模版消息
  43. func SendArticleApplyAppointmentExpertTemplateMsg(user *models.WxUserItem, articleId int) (err error) {
  44. var msg string
  45. msg = fmt.Sprint(user, articleId)
  46. defer func() {
  47. if err != nil {
  48. go utils.SendAlarmMsg("活动带问提醒发送模版消息失败"+msg, 2)
  49. }
  50. }()
  51. //获取权益销售
  52. sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
  53. if err != nil && err.Error() != utils.ErrNoRow() {
  54. return
  55. }
  56. if sellerItem == nil {
  57. return
  58. }
  59. //文章详情
  60. detailArticle, e := models.GetArticleDetailById(articleId)
  61. if e != nil {
  62. err = errors.New("GetArticleDetailById, Err: " + e.Error())
  63. return
  64. }
  65. //销售对应的Openid
  66. openIdList, e := models.GetWxOpenIdByMobileList(sellerItem.Mobile)
  67. if e != nil {
  68. err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
  69. return
  70. }
  71. if len(openIdList) == 0 {
  72. return
  73. }
  74. openIdArr := make([]string, 0)
  75. for _, v := range openIdList {
  76. openIdArr = append(openIdArr, v.OpenId)
  77. }
  78. var keyword1 string
  79. var keyword2 string
  80. var keyword3 string
  81. var keyword4 string
  82. keyword1 = fmt.Sprint(user.RealName, "--", user.CompanyName, "(", sellerItem.RealName, ")")
  83. if user.Mobile == "" {
  84. user.Mobile = user.Email
  85. }
  86. keyword2 = user.Mobile
  87. keyword3 = time.Now().Format(utils.FormatDateTime)
  88. keyword4 = fmt.Sprint("约访专家(", detailArticle.Title, ")")
  89. var redirectUrl string
  90. redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(articleId)
  91. sendInfo := new(SendWxTemplate)
  92. sendInfo.Keyword1 = keyword1
  93. sendInfo.Keyword2 = keyword2
  94. sendInfo.Keyword3 = keyword3
  95. sendInfo.Keyword4 = keyword4
  96. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ACTIVITY_ADD
  97. sendInfo.TemplateId = utils.WxMsgTemplateIdArticleUserRemind
  98. sendInfo.RedirectUrl = redirectUrl
  99. sendInfo.RedirectTarget = 3
  100. sendInfo.Resource = strconv.Itoa(articleId)
  101. sendInfo.OpenIdArr = openIdArr
  102. err = PublicSendTemplateMsg(sendInfo)
  103. return
  104. }
  105. // 获取用户数是否约访专家的请求
  106. func GetIsApplyAppointmentExpert(user *models.WxUserItem, articleId int) (isApplyAppointmentExpert bool) {
  107. var err error
  108. defer func() {
  109. if err != nil {
  110. fmt.Println(err)
  111. go utils.SendAlarmMsg("获取用户数是否约访专家的请求失败"+err.Error(), 2)
  112. }
  113. }()
  114. var condition string
  115. var pars []interface{}
  116. condition += ` AND article_id =? AND user_id = ? `
  117. pars = append(pars, articleId, user.UserId)
  118. total, e := models.GetCygxArticleApplyAppointmentExpertCount(condition, pars)
  119. if e != nil {
  120. err = errors.New("GetCygxArticleApplyAppointmentExpertCount, Err: " + e.Error())
  121. return
  122. }
  123. fmt.Println(total)
  124. if total > 0 {
  125. isApplyAppointmentExpert = true
  126. }
  127. return
  128. }