cygx_yanxuan_special.go 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. // 研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息
  12. func SendWxMsgSpecialFollow(specialId int) (err error) {
  13. var msg string
  14. defer func() {
  15. if err != nil {
  16. go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
  17. go utils.SendAlarmMsg(fmt.Sprint("研选专栏有新内容审核通过时,给关注此专栏的客户发送模板消息失败", specialId, ", specialId"), 2)
  18. utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
  19. }
  20. }()
  21. var first string
  22. var keyword1 string
  23. var keyword2 string
  24. var keyword3 string
  25. var keyword4 string
  26. var remark string
  27. followers, e := models.GetYanxuanSpecialFollowUserById(specialId)
  28. if e != nil {
  29. err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
  30. return
  31. }
  32. specialItem, e := models.GetYanxuanSpecialItemById(specialId)
  33. if e != nil {
  34. err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
  35. return
  36. }
  37. var allInUserId string
  38. for _, v := range followers {
  39. allInUserId += strconv.Itoa(v) + ","
  40. }
  41. allInUserId = strings.TrimRight(allInUserId, ",")
  42. userList, err := models.GetWxUserListByUserIds(allInUserId)
  43. if err != nil && err.Error() != utils.ErrNoRow() {
  44. return err
  45. }
  46. mobile := ``
  47. for _, v := range userList {
  48. mobile += v.Mobile + ","
  49. }
  50. mobile = strings.TrimRight(mobile, ",")
  51. openIdList, e := models.GetWxOpenIdByMobileList(mobile)
  52. if e != nil {
  53. err = errors.New("GetSellerByAdminId, Err: " + e.Error())
  54. return
  55. }
  56. //first =
  57. keyword1 = "研选专栏:" + specialItem.SpecialName
  58. keyword2 = "发布了新内容,点击查看详情"
  59. keyword3 = "-"
  60. //keyword4 = "【" + activityInfo.ResearchTheme + "】已有10人预报名"
  61. openIdArr := make([]string, 0)
  62. for _, v := range openIdList {
  63. openIdArr = append(openIdArr, v.OpenId)
  64. }
  65. redirectUrl := ""
  66. if utils.RunMode == "release" {
  67. redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_DETAIL + strconv.Itoa(specialId)
  68. }
  69. sendInfo := new(SendWxTemplate)
  70. sendInfo.First = first
  71. sendInfo.Keyword1 = keyword1
  72. sendInfo.Keyword2 = keyword2
  73. sendInfo.Keyword3 = keyword3
  74. sendInfo.Keyword4 = keyword4
  75. sendInfo.Remark = remark
  76. sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
  77. sendInfo.RedirectUrl = redirectUrl
  78. sendInfo.RedirectTarget = 3
  79. sendInfo.Resource = strconv.Itoa(specialId)
  80. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
  81. sendInfo.OpenIdArr = openIdArr
  82. err = PublicSendTemplateMsg(sendInfo)
  83. if err != nil {
  84. return
  85. }
  86. return
  87. }
  88. // SendReviewTemplateMsgAdmin 提交审核时给王芳,汪洋发消息
  89. func SendReviewTemplateMsgAdmin(specialId int) (err error) {
  90. defer func() {
  91. if err != nil {
  92. go utils.SendAlarmMsg("处理试用申请给王芳,汪洋发消息失败, ErrMsg: "+err.Error(), 3)
  93. }
  94. }()
  95. var configCode string
  96. //如果是研选的就推送给汪洋跟王芳,否则就推送给王芳
  97. configCode = utils.TPL_MSG_WANG_FANG_WANG_YANG
  98. cnf, e := models.GetConfigByCode(configCode)
  99. if e != nil {
  100. err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
  101. return
  102. }
  103. openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue)
  104. if e != nil && e.Error() != utils.ErrNoRow() {
  105. err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
  106. return err
  107. }
  108. specialItem, e := models.GetYanxuanSpecialItemById(specialId)
  109. if e != nil {
  110. err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
  111. return
  112. }
  113. user, e := models.GetWxUserItemByUserId(specialItem.UserId)
  114. if e != nil && e.Error() != utils.ErrNoRow() {
  115. err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
  116. return err
  117. }
  118. var keyword1 string
  119. var keyword2 string
  120. var keyword3 string
  121. var keyword4 string
  122. var remark string
  123. keyword1 = specialItem.RealName + "【" + user.CompanyName + "】"
  124. keyword2 = user.Mobile
  125. keyword3 = time.Now().Format(utils.FormatDateTime)
  126. keyword4 = "研选专栏提交了内容待审核"
  127. openIdArr := make([]string, 0)
  128. for _, v := range openIdList {
  129. openIdArr = append(openIdArr, v.OpenId)
  130. }
  131. redirectUrl := ""
  132. if utils.RunMode == "release" {
  133. redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL + strconv.Itoa(specialId)
  134. }
  135. sendInfo := new(SendWxTemplate)
  136. sendInfo.Keyword1 = keyword1
  137. sendInfo.Keyword2 = keyword2
  138. sendInfo.Keyword3 = keyword3
  139. sendInfo.Keyword4 = keyword4
  140. sendInfo.Remark = remark
  141. sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
  142. sendInfo.RedirectUrl = redirectUrl
  143. sendInfo.RedirectTarget = 3
  144. sendInfo.Resource = strconv.Itoa(specialId)
  145. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
  146. sendInfo.OpenIdArr = openIdArr
  147. err = PublicSendTemplateMsg(sendInfo)
  148. if err != nil {
  149. return
  150. }
  151. return
  152. }
  153. // 研选专栏审核完成时,给提交人发送模板消息
  154. func SendWxMsgSpecialAuthor(specialId, status int) (err error) {
  155. var msg string
  156. defer func() {
  157. if err != nil {
  158. go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
  159. go utils.SendAlarmMsg(fmt.Sprint("研选专栏审核完成时,给提交人发送模板消息", specialId, ", specialId"), 2)
  160. utils.FileLog.Info("发送模版消息失败,Err:%s", err.Error())
  161. }
  162. }()
  163. var first string
  164. var keyword1 string
  165. var keyword2 string
  166. var keyword3 string
  167. var keyword4 string
  168. var remark string
  169. var redirectUrl string
  170. specialItem, e := models.GetYanxuanSpecialItemById(specialId)
  171. if e != nil {
  172. err = errors.New("GetYanxuanSpecialFollowUserById, Err: " + e.Error())
  173. return
  174. }
  175. user, e := models.GetWxUserItemByUserId(specialItem.UserId)
  176. if e != nil && e.Error() != utils.ErrNoRow() {
  177. err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
  178. return err
  179. }
  180. openIdList, err := models.GetUserRecordListByMobile(4, user.Mobile)
  181. if err != nil && err.Error() != utils.ErrNoRow() {
  182. return err
  183. }
  184. //first =
  185. keyword1 = "研选专栏内容审核"
  186. if status == 1 {
  187. keyword2 = "已通过审核,点击查看详情"
  188. if utils.RunMode == "release" {
  189. redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_DETAIL + strconv.Itoa(specialId)
  190. }
  191. } else {
  192. keyword2 = "未通过审核,点击查看驳回原因"
  193. if utils.RunMode == "release" {
  194. redirectUrl = utils.WX_MSG_PATH_YX_SPECIAL_CENTER
  195. }
  196. }
  197. keyword3 = "-"
  198. //keyword4 = "【" + activityInfo.ResearchTheme + "】已有10人预报名"
  199. openIdArr := make([]string, 0)
  200. for _, v := range openIdList {
  201. openIdArr = append(openIdArr, v.OpenId)
  202. }
  203. sendInfo := new(SendWxTemplate)
  204. sendInfo.First = first
  205. sendInfo.Keyword1 = keyword1
  206. sendInfo.Keyword2 = keyword2
  207. sendInfo.Keyword3 = keyword3
  208. sendInfo.Keyword4 = keyword4
  209. sendInfo.Remark = remark
  210. sendInfo.TemplateId = utils.WxMsgTemplateIdAskMsgXzs
  211. sendInfo.RedirectUrl = redirectUrl
  212. sendInfo.RedirectTarget = 3
  213. sendInfo.Resource = strconv.Itoa(specialId)
  214. sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
  215. sendInfo.OpenIdArr = openIdArr
  216. err = PublicSendTemplateMsg(sendInfo)
  217. if err != nil {
  218. return
  219. }
  220. return
  221. }
  222. //func init() {
  223. // UpdateYanxuanSpecialResourceData(185)
  224. //}
  225. // 更新研选专栏 写入首页最新 cygx_resource_data 表
  226. func UpdateYanxuanSpecialResourceData(sourceId int) {
  227. var err error
  228. defer func() {
  229. if err != nil {
  230. go utils.SendAlarmMsg(fmt.Sprint("更新研选专栏失败ourceId: ", sourceId), 2)
  231. }
  232. }()
  233. var source = utils.CYGX_OBJ_YANXUANSPECIAL
  234. var condition string
  235. var pars []interface{}
  236. condition = ` AND status = 3 AND id = ? `
  237. pars = append(pars, sourceId)
  238. total, e := models.GetCygxYanxuanSpecialCount(condition, pars)
  239. if e != nil {
  240. err = errors.New("GetCygxYanxuanSpecialCount, Err: " + e.Error())
  241. return
  242. }
  243. //如果取消发布了就做删除处理
  244. if total == 0 {
  245. e = models.DeleteResourceData(sourceId, source)
  246. if e != nil {
  247. err = errors.New("DeleteResourceData, Err: " + e.Error())
  248. return
  249. }
  250. } else {
  251. //判断是否存在,如果不存在就新增,存在就更新
  252. totalData, e := models.GetCygxReportSelectionBySourceAndId(sourceId, source)
  253. if e != nil {
  254. err = errors.New("GetCygxReportSelectionBySourceAndId, Err: " + e.Error())
  255. return
  256. }
  257. publishDate := time.Now().Format(utils.FormatDateTime)
  258. item := new(models.CygxResourceData)
  259. item.SourceId = sourceId
  260. item.Source = source
  261. item.PublishDate = publishDate
  262. item.CreateTime = time.Now()
  263. if totalData == 0 {
  264. _, e := models.AddCygxResourceData(item)
  265. if e != nil {
  266. err = errors.New("AddCygxResourceData, Err: " + e.Error())
  267. return
  268. }
  269. } else {
  270. e = models.UpdateResourceDataByItem(item)
  271. if e != nil {
  272. err = errors.New("UpdateResourceDataByItem, Err: " + e.Error())
  273. return
  274. }
  275. }
  276. }
  277. return
  278. }