company_approval_message.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_mobile_admin/models"
  5. "hongze/hongze_mobile_admin/models/tables/admin"
  6. "hongze/hongze_mobile_admin/models/tables/company_approval_message"
  7. "hongze/hongze_mobile_admin/models/tables/company_contract"
  8. "hongze/hongze_mobile_admin/models/tables/company_product"
  9. "hongze/hongze_mobile_admin/models/tables/cygx_config"
  10. "hongze/hongze_mobile_admin/services/alarm_msg"
  11. "hongze/hongze_mobile_admin/utils"
  12. "strings"
  13. "time"
  14. "errors"
  15. )
  16. //消息来源类型,1:客户,2:合同,3:用印,4:指标替换,5:问答社区,6:问答评论,7:视频评论,8:线上路演评论
  17. const (
  18. CompanyApprovalMessageSourceTypeByCompany = 1
  19. CompanyApprovalMessageSourceTypeByContract = 2
  20. CompanyApprovalMessageSourceTypeBySeal = 3
  21. CompanyApprovalMessageSourceTypeByEdbInfo = 4
  22. CompanyApprovalMessageSourceTypeByQuestion = 5
  23. CompanyApprovalMessageSourceTypeByQuestionComment = 6
  24. CompanyApprovalMessageSourceTypeByVideoComment = 7
  25. CompanyApprovalMessageSourceTypeByRoadVideoComment = 8
  26. )
  27. // 1:申请消息,2:审批结果,3:消息通知
  28. const (
  29. CompanyApprovalMessageMessageTypeByApply = 1
  30. CompanyApprovalMessageMessageTypeByApprovalResult = 2
  31. CompanyApprovalMessageMessageTypeByMessage = 3
  32. )
  33. //审批状态,1:待审批,2:已审批,3:已驳回
  34. const (
  35. CompanyApprovalMessageApprovalStatusByPending = 1
  36. CompanyApprovalMessageApprovalStatusByApproved = 2
  37. CompanyApprovalMessageApprovalStatusByRejected = 3
  38. )
  39. // MessageInfo 消息主要内容
  40. type MessageInfo struct {
  41. CompanyName string `json:"company_name"`
  42. ProductId int `json:"product_id"`
  43. CompanyProductStatus string `json:"company_product_status"`
  44. Title string `json:"title"`
  45. Content string `json:"content"`
  46. UserId uint64 `json:"user_id"`
  47. UserName string `json:"user_name"`
  48. CreateTime time.Time `json:"create_time"`
  49. Extra string `json:"extra" description:"附加字段"`
  50. MessageSource string `json:"message_source" description:"消息来源:问答社区/视频社区/线上路演"`
  51. }
  52. // AddCompanyApprovalMessage 添加待办消息
  53. func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyApprovalId, msgType, sourceType, approvalStatus int, companyName, remark, content, mobile, messageInfo string) (err error) {
  54. defer func() {
  55. if err != nil {
  56. fmt.Println("异常提醒:"+utils.RunMode, "给用户发送消息失败,ERR:"+err.Error()+"", utils.EmailSendToUsers)
  57. //go utils.SendEmail("异常提醒:"+utils.RunMode, "给用户发送消息失败,ERR:"+err.Error()+"", utils.EmailSendToUsers)
  58. go alarm_msg.SendAlarmMsg("给用户发送消息失败,ERR:"+err.Error(), 3)
  59. }
  60. }()
  61. if msgType == 2 {
  62. company_approval_message.ModifyCompanyApprovalMessage(companyApprovalId, sourceType)
  63. }
  64. msgItem := new(company_approval_message.CompanyApprovalMessage)
  65. msgItem.CreateUserId = createUserId
  66. msgItem.ReceiveUserId = receiveUserId
  67. msgItem.MessageStatus = 0 //消息状态:0未读,1:已读,2:作废
  68. msgItem.Remark = remark
  69. msgItem.Content = content
  70. msgItem.CompanyId = companyId
  71. msgItem.CompanyName = companyName
  72. msgItem.CreateTime = time.Now()
  73. msgItem.ModifyTime = time.Now()
  74. msgItem.CompanyApprovalId = companyApprovalId
  75. msgItem.OperationStatus = 1 //消息状态:1:待审批,2:已审批
  76. msgItem.MessageType = msgType //1:申请消息,2:审批结果,3:消息通知
  77. msgItem.SourceType = sourceType //消息来源,1:客户,2:合同,3:用印
  78. msgItem.ApprovalStatus = approvalStatus //审批状态,1:待审批,2:已审批,3:已驳回
  79. msgItem.MessageInfo = messageInfo //消息主要内容,json数据
  80. err = company_approval_message.AddCompanyApprovalMessage(msgItem)
  81. if mobile != "" {
  82. //跳转地址
  83. redirectUrl := ""
  84. //微信小程序路径
  85. wxAppPath := ``
  86. //微信消息map数据
  87. wxMsgMap := make(map[int]string)
  88. switch msgType {
  89. case 1:
  90. wxMsgMap[0] = "Hi,您有新的审批单待处理"
  91. case 2:
  92. wxMsgMap[0] = "Hi,您有新的审批单已处理"
  93. case 3:
  94. wxMsgMap[0] = "Hi,有新的消息待查看"
  95. wxAppPath = "pages-todomessages/list/list?type=" + fmt.Sprint(sourceType)
  96. }
  97. //审批类型
  98. switch sourceType {
  99. case 2:
  100. wxMsgMap[1] = "合同审批"
  101. case 3:
  102. wxMsgMap[1] = "用印审批"
  103. default:
  104. wxMsgMap[1] = "客户审批"
  105. }
  106. //产生时间
  107. wxMsgMap[2] = time.Now().Format(utils.FormatDateTime)
  108. //任务描述
  109. wxMsgMap[3] = content
  110. //pages-todomessages/list/list?type=1(1:客户,2:合同,3:用印)
  111. if sourceType == 1 { //目前只有客户审批才有手机端审核页面
  112. redirectUrl = utils.TemplateCompanyApplyRedirectUrl
  113. }
  114. if wxAppPath == "" {
  115. //小程序跳转路径map;下标是:来源_消息类型
  116. wxAppPathMap := map[string]string{
  117. "1_1": "pages-approve/custome/list",
  118. "1_2": "pages-approve/custome/detail?id=" + fmt.Sprint(companyApprovalId),
  119. "2_1": "pages-approve/contract/list",
  120. "2_2": "pages-approve/contract/detail?ContractApprovalId=0&ContractId=0&ContractApprovalRecordId=" + fmt.Sprint(companyApprovalId),
  121. "3_1": "pages-approve/seal/list",
  122. "3_2": "pages-approve/seal/detail?ContractApprovalId=0&SealId=0&ContractApprovalRecordId=" + fmt.Sprint(companyApprovalId),
  123. }
  124. key := fmt.Sprint(sourceType, "_", msgType)
  125. if tmpWxAppPath, ok := wxAppPathMap[key]; ok {
  126. wxAppPath = tmpWxAppPath
  127. }
  128. }
  129. go SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath, wxMsgMap)
  130. }
  131. return
  132. }
  133. // AddCompanyApprovalMessageRai 权益销售客户申请转正后,消息群发给所有销售
  134. func AddCompanyApprovalMessageRai(companyId , companyContractId int, applyRealName, companyName string) (err error) {
  135. defer func() {
  136. if err != nil {
  137. fmt.Println("err:", err)
  138. go alarm_msg.SendAlarmMsg("权益销售客户申请转正后,消息群发给所有销售,Err:"+err.Error()+fmt.Sprint("companyId:",companyId,"companyContractId:",companyContractId,"applyRealName:",applyRealName,"companyName:",companyName), 3)
  139. }
  140. }()
  141. companyProduct, err := company_product.GetCompanyProductByCompanyIdAndProductId(companyId, 2)
  142. if err != nil {
  143. return
  144. }
  145. if companyProduct == nil {
  146. return
  147. }
  148. contractDetail, err := company_contract.GetCompanyContractDetail(companyId, 2, companyContractId)
  149. if err != nil {
  150. return
  151. }
  152. var first, keyword1, keyword2, keyword3, keyword4 string
  153. keyword1 = applyRealName + "已签约" + companyName
  154. keyword2 = time.Now().Format(utils.FormatDate)
  155. keyword3 = contractDetail.StartDate
  156. adminList, err := admin.GetSysuserRaiList()
  157. if err != nil {
  158. return
  159. }
  160. var mobiles string
  161. for _, v := range adminList {
  162. mobiles += "'" + v.Mobile + "'" + ","
  163. }
  164. mobiles = strings.TrimRight(mobiles, ",")
  165. openIdList, err := models.GetUserRecordListByMobile(4, mobiles)
  166. if err != nil && err.Error() != utils.ErrNoRow() {
  167. return err
  168. }
  169. go SendWxMsgWithRaiSell(first, keyword1, keyword2, keyword3, keyword4, openIdList)
  170. return
  171. }
  172. // AddCompanyApprovalMessageWangYang 客户研选行业转正时(王芳审批通过),模板消息提醒汪洋
  173. func AddCompanyApprovalMessageWangYang(companyId , companyContractId int, applyRealName, companyName string) (err error) {
  174. defer func() {
  175. if err != nil {
  176. go alarm_msg.SendAlarmMsg("客户研选行业转正时(王芳审批通过),模板消息提醒汪洋,Err:"+err.Error()+fmt.Sprint("companyId:",companyId,"companyContractId:",companyContractId,"applyRealName:",applyRealName,"companyName:",companyName), 3)
  177. }
  178. }()
  179. //如果是研选的就推送给汪洋
  180. count, e := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, companyContractId, utils.CHART_PERMISSION_ID_YANXUAN)
  181. if e != nil {
  182. err = errors.New("GetCompanyContractPermissionCheckByContractId, Err: " + e.Error())
  183. return
  184. }
  185. if count == 0 {
  186. return
  187. }
  188. var keyword1, keyword2, keyword3, keyword4 string
  189. keyword1 = companyName + "(" + applyRealName+")"
  190. keyword2 = "买方研选转正"
  191. var mobiles string
  192. cnf, e := cygx_config.GetConfigByCode(utils.TPL_MSG_WANG_YANG)
  193. if e != nil {
  194. err = errors.New("GetConfigByCode, Err: " + e.Error())
  195. return
  196. }
  197. mobiles = cnf.ConfigValue
  198. openIdList, err := models.GetUserRecordListByMobile(4, mobiles)
  199. if err != nil && err.Error() != utils.ErrNoRow() {
  200. return err
  201. }
  202. go SendWxMsgWithRaiWangYang(keyword1, keyword2, keyword3, keyword4, openIdList)
  203. return
  204. }