company_approval_message.go 8.9 KB

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