company_approval_message.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_mobile_admin/models/tables/company_approval_message"
  5. "hongze/hongze_mobile_admin/services/alarm_msg"
  6. "hongze/hongze_mobile_admin/utils"
  7. "time"
  8. )
  9. //消息来源类型,1:客户,2:合同,3:用印,4:指标替换,5:问答社区,6:问答评论,7:视频评论
  10. const (
  11. CompanyApprovalMessageSourceTypeByCompany = 1
  12. CompanyApprovalMessageSourceTypeByContract = 2
  13. CompanyApprovalMessageSourceTypeBySeal = 3
  14. CompanyApprovalMessageSourceTypeByEdbInfo = 4
  15. CompanyApprovalMessageSourceTypeByQuestion = 5
  16. CompanyApprovalMessageSourceTypeByQuestionComment = 6
  17. CompanyApprovalMessageSourceTypeByVideoComment = 7
  18. )
  19. // 1:申请消息,2:审批结果,3:消息通知
  20. const (
  21. CompanyApprovalMessageMessageTypeByApply = 1
  22. CompanyApprovalMessageMessageTypeByApprovalResult = 2
  23. CompanyApprovalMessageMessageTypeByMessage = 3
  24. )
  25. //审批状态,1:待审批,2:已审批,3:已驳回
  26. const (
  27. CompanyApprovalMessageApprovalStatusByPending = 1
  28. CompanyApprovalMessageApprovalStatusByApproved = 2
  29. CompanyApprovalMessageApprovalStatusByRejected = 3
  30. )
  31. // MessageInfo 消息主要内容
  32. type MessageInfo struct {
  33. CompanyName string `json:"company_name"`
  34. ProductId int `json:"product_id"`
  35. CompanyProductStatus string `json:"company_product_status"`
  36. Title string `json:"title"`
  37. Content string `json:"content"`
  38. UserId uint64 `json:"user_id"`
  39. UserName string `json:"user_name"`
  40. CreateTime time.Time `json:"create_time"`
  41. Extra string `json:"extra" description:"附加字段"`
  42. }
  43. // AddCompanyApprovalMessage 添加待办消息
  44. func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyApprovalId, msgType, sourceType, approvalStatus int, companyName, remark, content, mobile, messageInfo string) (err error) {
  45. defer func() {
  46. if err != nil {
  47. fmt.Println("异常提醒:"+utils.RunMode, "给用户发送消息失败,ERR:"+err.Error()+"", utils.EmailSendToUsers)
  48. //go utils.SendEmail("异常提醒:"+utils.RunMode, "给用户发送消息失败,ERR:"+err.Error()+"", utils.EmailSendToUsers)
  49. go alarm_msg.SendAlarmMsg("给用户发送消息失败,ERR:"+err.Error(), 3)
  50. }
  51. }()
  52. if msgType == 2 {
  53. company_approval_message.ModifyCompanyApprovalMessage(companyApprovalId, sourceType)
  54. }
  55. msgItem := new(company_approval_message.CompanyApprovalMessage)
  56. msgItem.CreateUserId = createUserId
  57. msgItem.ReceiveUserId = receiveUserId
  58. msgItem.MessageStatus = 0 //消息状态:0未读,1:已读,2:作废
  59. msgItem.Remark = remark
  60. msgItem.Content = content
  61. msgItem.CompanyId = companyId
  62. msgItem.CompanyName = companyName
  63. msgItem.CreateTime = time.Now()
  64. msgItem.ModifyTime = time.Now()
  65. msgItem.CompanyApprovalId = companyApprovalId
  66. msgItem.OperationStatus = 1 //消息状态:1:待审批,2:已审批
  67. msgItem.MessageType = msgType //1:申请消息,2:审批结果,3:消息通知
  68. msgItem.SourceType = sourceType //消息来源,1:客户,2:合同,3:用印
  69. msgItem.ApprovalStatus = approvalStatus //审批状态,1:待审批,2:已审批,3:已驳回
  70. msgItem.MessageInfo = messageInfo //消息主要内容,json数据
  71. err = company_approval_message.AddCompanyApprovalMessage(msgItem)
  72. if mobile != "" {
  73. //跳转地址
  74. redirectUrl := ""
  75. //微信小程序路径
  76. wxAppPath := ``
  77. //微信消息map数据
  78. wxMsgMap := make(map[int]string)
  79. switch msgType {
  80. case 1:
  81. wxMsgMap[0] = "Hi,您有新的审批单待处理"
  82. case 2:
  83. wxMsgMap[0] = "Hi,您有新的审批单已处理"
  84. case 3:
  85. wxMsgMap[0] = "Hi,有新的消息待查看"
  86. wxAppPath = "pages-todomessages/list/list?type=" + fmt.Sprint(sourceType)
  87. }
  88. //审批类型
  89. switch sourceType {
  90. case 2:
  91. wxMsgMap[1] = "合同审批"
  92. case 3:
  93. wxMsgMap[1] = "用印审批"
  94. default:
  95. wxMsgMap[1] = "客户审批"
  96. }
  97. //产生时间
  98. wxMsgMap[2] = time.Now().Format(utils.FormatDateTime)
  99. //任务描述
  100. wxMsgMap[3] = content
  101. //pages-todomessages/list/list?type=1(1:客户,2:合同,3:用印)
  102. if sourceType == 1 { //目前只有客户审批才有手机端审核页面
  103. redirectUrl = utils.TemplateCompanyApplyRedirectUrl
  104. }
  105. if wxAppPath == "" {
  106. //小程序跳转路径map;下标是:来源_消息类型
  107. wxAppPathMap := map[string]string{
  108. "1_1": "pages-approve/custome/list",
  109. "1_2": "pages-approve/custome/detail?id=" + fmt.Sprint(companyApprovalId),
  110. "2_1": "pages-approve/contract/list",
  111. "2_2": "pages-approve/contract/detail?ContractApprovalId=0&ContractId=0&ContractApprovalRecordId=" + fmt.Sprint(companyApprovalId),
  112. "3_1": "pages-approve/seal/list",
  113. "3_2": "pages-approve/seal/detail?ContractApprovalId=0&SealId=0&ContractApprovalRecordId=" + fmt.Sprint(companyApprovalId),
  114. }
  115. key := fmt.Sprint(sourceType, "_", msgType)
  116. if tmpWxAppPath, ok := wxAppPathMap[key]; ok {
  117. wxAppPath = tmpWxAppPath
  118. }
  119. }
  120. go SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath, wxMsgMap)
  121. }
  122. return
  123. }