package services import ( "fmt" "hongze/hongze_mobile_admin/models/tables/company_approval_message" "hongze/hongze_mobile_admin/services/alarm_msg" "hongze/hongze_mobile_admin/utils" "time" ) //消息来源类型,1:客户,2:合同,3:用印,4:指标替换,5:问答社区,6:问答评论 const ( CompanyApprovalMessageSourceTypeByCompany = 1 CompanyApprovalMessageSourceTypeByContract = 2 CompanyApprovalMessageSourceTypeBySeal = 3 CompanyApprovalMessageSourceTypeByEdbInfo = 4 CompanyApprovalMessageSourceTypeByQuestion = 5 CompanyApprovalMessageSourceTypeByQuestionComment = 6 ) // 1:申请消息,2:审批结果,3:消息通知 const ( CompanyApprovalMessageMessageTypeByApply = 1 CompanyApprovalMessageMessageTypeByApprovalResult = 2 CompanyApprovalMessageMessageTypeByMessage = 3 ) //审批状态,1:待审批,2:已审批,3:已驳回 const ( CompanyApprovalMessageApprovalStatusByPending = 1 CompanyApprovalMessageApprovalStatusByApproved = 2 CompanyApprovalMessageApprovalStatusByRejected = 3 ) // MessageInfo 消息主要内容 type MessageInfo struct { CompanyName string `json:"company_name"` ProductId int `json:"product_id"` CompanyProductStatus string `json:"company_product_status"` Title string `json:"title"` Content string `json:"content"` UserId uint64 `json:"user_id"` UserName string `json:"user_name"` CreateTime time.Time `json:"create_time"` } // AddCompanyApprovalMessage 添加待办消息 func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyApprovalId, msgType, sourceType, approvalStatus int, companyName, remark, content, mobile, messageInfo string) (err error) { defer func() { if err != nil { fmt.Println("异常提醒:"+utils.RunMode, "给用户发送消息失败,ERR:"+err.Error()+"", utils.EmailSendToUsers) //go utils.SendEmail("异常提醒:"+utils.RunMode, "给用户发送消息失败,ERR:"+err.Error()+"", utils.EmailSendToUsers) go alarm_msg.SendAlarmMsg("给用户发送消息失败,ERR:"+err.Error(), 3) } }() if msgType == 2 { company_approval_message.ModifyCompanyApprovalMessage(companyApprovalId, sourceType) } msgItem := new(company_approval_message.CompanyApprovalMessage) msgItem.CreateUserId = createUserId msgItem.ReceiveUserId = receiveUserId msgItem.MessageStatus = 0 //消息状态:0未读,1:已读,2:作废 msgItem.Remark = remark msgItem.Content = content msgItem.CompanyId = companyId msgItem.CompanyName = companyName msgItem.CreateTime = time.Now() msgItem.ModifyTime = time.Now() msgItem.CompanyApprovalId = companyApprovalId msgItem.OperationStatus = 1 //消息状态:1:待审批,2:已审批 msgItem.MessageType = msgType //1:申请消息,2:审批结果,3:消息通知 msgItem.SourceType = sourceType //消息来源,1:客户,2:合同,3:用印 msgItem.ApprovalStatus = approvalStatus //审批状态,1:待审批,2:已审批,3:已驳回 msgItem.MessageInfo = messageInfo //消息主要内容,json数据 err = company_approval_message.AddCompanyApprovalMessage(msgItem) if mobile != "" { //跳转地址 redirectUrl := "" //微信小程序路径 wxAppPath := `` //微信消息map数据 wxMsgMap := make(map[int]string) switch msgType { case 1: wxMsgMap[0] = "Hi,您有新的审批单待处理" case 2: wxMsgMap[0] = "Hi,您有新的审批单已处理" case 3: wxMsgMap[0] = "Hi,有新的消息待查看" wxAppPath = "pages-todomessages/list/list?type=" + fmt.Sprint(sourceType) } //审批类型 switch sourceType { case 2: wxMsgMap[1] = "合同审批" case 3: wxMsgMap[1] = "用印审批" default: wxMsgMap[1] = "客户审批" } //产生时间 wxMsgMap[2] = time.Now().Format(utils.FormatDateTime) //任务描述 wxMsgMap[3] = content //pages-todomessages/list/list?type=1(1:客户,2:合同,3:用印) if sourceType == 1 { //目前只有客户审批才有手机端审核页面 redirectUrl = utils.TemplateCompanyApplyRedirectUrl } if wxAppPath == "" { //小程序跳转路径map;下标是:来源_消息类型 wxAppPathMap := map[string]string{ "1_1": "pages-approve/custome/list", "1_2": "pages-approve/custome/detail?id=" + fmt.Sprint(companyApprovalId), "2_1": "pages-approve/contract/list", "2_2": "pages-approve/contract/detail?ContractApprovalId=0&ContractId=0&ContractApprovalRecordId=" + fmt.Sprint(companyApprovalId), "3_1": "pages-approve/seal/list", "3_2": "pages-approve/seal/detail?ContractApprovalId=0&SealId=0&ContractApprovalRecordId=" + fmt.Sprint(companyApprovalId), } key := fmt.Sprint(sourceType, "_", msgType) if tmpWxAppPath, ok := wxAppPathMap[key]; ok { wxAppPath = tmpWxAppPath } } go SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath, wxMsgMap) } return }