xingzai 3 ani în urmă
părinte
comite
5c9d539575
3 a modificat fișierele cu 277 adăugiri și 179 ștergeri
  1. 38 25
      controllers/activity.go
  2. 5 2
      models/activity.go
  3. 234 152
      services/activity.go

+ 38 - 25
controllers/activity.go

@@ -2098,34 +2098,47 @@ func (this *ActivityCoAntroller) AskAdd() {
 		return
 	}
 
-	openIpItem, _ := models.GetUserRecordByMobile(4, "15557270714")
-	fmt.Println(openIpItem)
-	if openIpItem != nil && openIpItem.OpenId != "" {
-		//获取销售信息
-		sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "申请失败"
-			br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
+	var isSendMsg bool
+	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
+	if activityInfo.ActivityTypeId == 1 && activityInfo.ChartPermissionId != 31 {
+		if time.Now().After(resultTime.Add(-time.Minute * 15)) {
+			isSendMsg = true
+		}
+	} else {
+		if time.Now().After(resultTime.Add(-time.Minute * 60)) {
+			isSendMsg = true
+		}
+	}
+	if isSendMsg {
+		listEmail, err := models.GetAskEmail()
+		if err != nil {
+			br.Msg = "提交失败"
+			br.ErrMsg = "提交带问失败,Err:" + err.Error()
 			return
 		}
-		//applyName, applyTime, activityName, openId string, activityId int
-		services.SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RoleName+")", time.Now().Format(utils.FormatDateTime), req.Content+activityInfo.ActivityName, openIpItem.OpenId, activityInfo.ActivityId)
+		var sendMobile string
+		for _, v := range listEmail {
+			if strings.Index(activityInfo.Host, v.Name) > 0 {
+				sendMobile = v.Mobile
+			}
+		}
+		if sendMobile != "" {
+			openIpItem, _ := models.GetUserRecordByMobile(4, sendMobile)
+			if openIpItem != nil && openIpItem.OpenId != "" {
+				//获取销售信息
+				sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					br.Msg = "提交失败"
+					br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
+					return
+				}
+				if sellerItem != nil {
+					services.SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RoleName+")", time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem.OpenId, activityInfo.ActivityId)
+				}
+			}
+		}
 	}
-	//resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
-	//if activityInfo.ActivityTypeId == 1 && activityInfo.ChartPermissionId != 31 {
-	//	if time.Now().After(resultTime.Add(-time.Minute * 15)) {
-	//		openIpItem, _ := models.GetUserRecordByMobile(4, "15557270714")
-	//		if openIpItem != nil && openIpItem.OpenId != "" {
-	//			//applyName, applyTime, activityName, openId string, activityId int
-	//			services.SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+")", time.Now().Format(utils.FormatDateTime), openIpItem.OpenId,req.Content + activityInfo.ActivityName,  activityInfo.ActivityId)
-	//		}
-	//	}
-	//} else {
-	//	if time.Now().After(resultTime.Add(-time.Minute * 60)) {
-	//		br.Msg = "活动开始前1小时内无法提交问题"
-	//		return
-	//	}
-	//}
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "提交成功"

+ 5 - 2
models/activity.go

@@ -429,8 +429,10 @@ type SignupExportRep struct {
 }
 
 type ActivityMsgExportRep struct {
+	UserId      int    `description:"用户ID"`
 	RealName    string `description:"姓名"`
 	CompanyName string `description:"公司名称"`
+	CompanyId   int    `description:"公司ID"`
 	Content     string `description:"内容"`
 	CreateTime  string `description:"提交时间"`
 }
@@ -546,8 +548,9 @@ func UPdateActivityMsgToSendFile(activityId int) (err error) {
 }
 
 type AskEmailRep struct {
-	Name  string `description:"姓名"`
-	Email string `description:"邮箱"`
+	Name   string `description:"姓名"`
+	Email  string `description:"邮箱"`
+	Mobile string `description:"手机号"`
 }
 
 func GetAskEmail() (item []*AskEmailRep, err error) {

+ 234 - 152
services/activity.go

@@ -407,7 +407,7 @@ func GetHavePower(activityInfo *models.ActivityDetail, permissionStr, companyDet
 //研选系列专家电话会,会前1小时将问题列表发送给邮箱
 func SendEmailFileForAskMsgResearch(cont context.Context) (err error) {
 	var msg string
-	var touser string
+	//var touser string
 	defer func() {
 		if err != nil {
 			fmt.Println("err:", err)
@@ -435,6 +435,96 @@ func SendEmailFileForAskMsgResearch(cont context.Context) (err error) {
 		msg = "发送附件模版消息失败 Err:" + err.Error()
 		return
 	}
+	//for _, v := range listActivity {
+	//	activityInfo, _ := models.GetAddActivityInfoById(v.ActivityId)
+	//	if activityInfo == nil {
+	//		msg = "活动不存在,Err:activityId:" + strconv.Itoa(v.ActivityId)
+	//		return
+	//	}
+	//	list, errFile := models.GetActivityMsgExport(v.ActivityId)
+	//	if errFile != nil {
+	//		msg = "获取失败,Err:" + errFile.Error()
+	//		return
+	//	}
+	//	//创建excel
+	//	dir, errFile := os.Executable()
+	//	exPath := filepath.Dir(dir)
+	//	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
+	//	xlsxFile := xlsx.NewFile()
+	//	if errFile != nil {
+	//		msg = "生成文件失败Err:" + errFile.Error()
+	//		return
+	//	}
+	//	style := xlsx.NewStyle()
+	//	alignment := xlsx.Alignment{
+	//		Horizontal: "center",
+	//		Vertical:   "center",
+	//		WrapText:   true,
+	//	}
+	//	style.Alignment = alignment
+	//	style.ApplyAlignment = true
+	//	sheet, errFile := xlsxFile.AddSheet("外呼名单")
+	//	if errFile != nil {
+	//		msg = "新增Sheet失败,Err:" + errFile.Error()
+	//		return
+	//	}
+	//	//设置宽度
+	//	_ = sheet.SetColWidth(1, 1, 30)
+	//	_ = sheet.SetColWidth(2, 2, 60)
+	//	//标头
+	//	rowTitle := sheet.AddRow()
+	//	cellA := rowTitle.AddCell()
+	//	cellA.Value = "姓名"
+	//	cellB := rowTitle.AddCell()
+	//	cellB.Value = "公司名称"
+	//	cellC := rowTitle.AddCell()
+	//	cellC.Value = "问题"
+	//	cellD := rowTitle.AddCell()
+	//	cellD.Value = "提交时间"
+	//
+	//	for _, item := range list {
+	//		row := sheet.AddRow()
+	//		cellA := row.AddCell()
+	//		cellA.Value = item.RealName
+	//		cellB := row.AddCell()
+	//		cellB.Value = item.CompanyName
+	//		cellC := row.AddCell()
+	//		cellC.Value = item.Content
+	//		cellD := row.AddCell()
+	//		cellD.Value = item.CreateTime
+	//	}
+	//	errFile = xlsxFile.Save(downLoadnFilePath)
+	//	if errFile != nil {
+	//		msg = "保存文件失败Err:" + errFile.Error()
+	//		return
+	//	}
+	//	title := activityInfo.ActivityName + "-活动带问"
+	//	content := "活动带问详情"
+	//	fileName := downLoadnFilePath
+	//	if utils.RunMode == "release" {
+	//		touser = "cxzhang@hzinsights.com;ywang@hzinsights.com;tshen@hzinsights.com"
+	//	} else {
+	//		touser = "cxzhang@hzinsights.com;jhwang@hzinsights.com;tshen@hzinsights.com"
+	//	}
+	//	sendResult := utils.SendEmailByHongze(title, content, touser, fileName, title+".xlsx")
+	//	if sendResult {
+	//		errFile = models.UPdateActivityMsgToSendFile(v.ActivityId)
+	//		if errFile != nil {
+	//			msg = "获取失败,Err:" + errFile.Error()
+	//			return
+	//		}
+	//		os.Remove(downLoadnFilePath)
+	//	} else {
+	//		go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.RunMode), msg+";Err:"+activityInfo.ActivityName, utils.EmailSendToUsers)
+	//		utils.FileLog.Info("发送附件模版消息失败,Err:%s", activityInfo.ActivityName)
+	//	}
+	//}
+
+	listEmail, err := models.GetAskEmail()
+	if err != nil {
+		return
+	}
+
 	for _, v := range listActivity {
 		activityInfo, _ := models.GetAddActivityInfoById(v.ActivityId)
 		if activityInfo == nil {
@@ -446,77 +536,29 @@ func SendEmailFileForAskMsgResearch(cont context.Context) (err error) {
 			msg = "获取失败,Err:" + errFile.Error()
 			return
 		}
-		//创建excel
-		dir, errFile := os.Executable()
-		exPath := filepath.Dir(dir)
-		downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
-		xlsxFile := xlsx.NewFile()
-		if errFile != nil {
-			msg = "生成文件失败Err:" + errFile.Error()
-			return
-		}
-		style := xlsx.NewStyle()
-		alignment := xlsx.Alignment{
-			Horizontal: "center",
-			Vertical:   "center",
-			WrapText:   true,
-		}
-		style.Alignment = alignment
-		style.ApplyAlignment = true
-		sheet, errFile := xlsxFile.AddSheet("外呼名单")
-		if errFile != nil {
-			msg = "新增Sheet失败,Err:" + errFile.Error()
-			return
-		}
-		//设置宽度
-		_ = sheet.SetColWidth(1, 1, 30)
-		_ = sheet.SetColWidth(2, 2, 60)
-		//标头
-		rowTitle := sheet.AddRow()
-		cellA := rowTitle.AddCell()
-		cellA.Value = "姓名"
-		cellB := rowTitle.AddCell()
-		cellB.Value = "公司名称"
-		cellC := rowTitle.AddCell()
-		cellC.Value = "问题"
-		cellD := rowTitle.AddCell()
-		cellD.Value = "提交时间"
 
-		for _, item := range list {
-			row := sheet.AddRow()
-			cellA := row.AddCell()
-			cellA.Value = item.RealName
-			cellB := row.AddCell()
-			cellB.Value = item.CompanyName
-			cellC := row.AddCell()
-			cellC.Value = item.Content
-			cellD := row.AddCell()
-			cellD.Value = item.CreateTime
-		}
-		errFile = xlsxFile.Save(downLoadnFilePath)
-		if errFile != nil {
-			msg = "保存文件失败Err:" + errFile.Error()
-			return
-		}
-		title := activityInfo.ActivityName + "-活动带问"
-		content := "活动带问详情"
-		fileName := downLoadnFilePath
-		if utils.RunMode == "release" {
-			touser = "cxzhang@hzinsights.com;ywang@hzinsights.com;tshen@hzinsights.com"
-		} else {
-			touser = "cxzhang@hzinsights.com;jhwang@hzinsights.com;tshen@hzinsights.com"
-		}
-		sendResult := utils.SendEmailByHongze(title, content, touser, fileName, title+".xlsx")
-		if sendResult {
-			errFile = models.UPdateActivityMsgToSendFile(v.ActivityId)
-			if errFile != nil {
-				msg = "获取失败,Err:" + errFile.Error()
-				return
+		for _, v2 := range list {
+			user, err := models.GetUserDetailByUserId(v2.UserId)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				return err
+			}
+			var sendMobile string
+			for _, vEmail := range listEmail {
+				if strings.Index(activityInfo.Host, vEmail.Name) > 0 {
+					sendMobile = vEmail.Mobile
+				}
+			}
+			openIpItem, _ := models.GetUserRecordByMobile(4, sendMobile)
+			if openIpItem != nil && openIpItem.OpenId != "" {
+				//获取销售信息
+				sellerItem, err := models.GetSellerByCompanyIdCheckFicc(v2.CompanyId, 2)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					return err
+				}
+				if sellerItem != nil {
+					SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RoleName+")", time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem.OpenId, activityInfo.ActivityId)
+				}
 			}
-			os.Remove(downLoadnFilePath)
-		} else {
-			go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.RunMode), msg+";Err:"+activityInfo.ActivityName, utils.EmailSendToUsers)
-			utils.FileLog.Info("发送附件模版消息失败,Err:%s", activityInfo.ActivityName)
 		}
 	}
 	return
@@ -525,7 +567,7 @@ func SendEmailFileForAskMsgResearch(cont context.Context) (err error) {
 //非研选系列专家电话会,根据主持人姓名,会前15分钟将问题列表发送给至该主持人对应邮箱
 func SendEmailFileForAskMsg(cont context.Context) (err error) {
 	var msg string
-	var touser string
+	//var touser string
 	defer func() {
 		if err != nil {
 			go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
@@ -556,6 +598,100 @@ func SendEmailFileForAskMsg(cont context.Context) (err error) {
 		msg = "获取失败,Err:" + errEmail.Error()
 		return
 	}
+	//for _, v := range listActivity {
+	//	activityInfo, _ := models.GetAddActivityInfoById(v.ActivityId)
+	//	if activityInfo == nil {
+	//		msg = "活动不存在,Err:activityId:" + strconv.Itoa(v.ActivityId)
+	//		return
+	//	}
+	//	list, errFile := models.GetActivityMsgExport(v.ActivityId)
+	//	if errFile != nil {
+	//		msg = "获取失败,Err:" + errFile.Error()
+	//		return
+	//	}
+	//	for _, v := range listEmail {
+	//		if strings.Index(activityInfo.Host, v.Name) > 0 {
+	//			touser += v.Email + ";"
+	//		}
+	//	}
+	//	if touser == "" {
+	//		msg = "没有对应的邮箱"
+	//		return
+	//	}
+	//	if utils.RunMode == "release" {
+	//		touser += "tshen@hzinsights.com;cxzhang@hzinsights.com"
+	//	} else {
+	//		touser = "tshen@hzinsights.com;cxzhang@hzinsights.com"
+	//	}
+	//
+	//	//创建excel
+	//	dir, errFile := os.Executable()
+	//	exPath := filepath.Dir(dir)
+	//	downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
+	//	xlsxFile := xlsx.NewFile()
+	//	if errFile != nil {
+	//		msg = "生成文件失败Err:" + errFile.Error()
+	//		return
+	//	}
+	//	style := xlsx.NewStyle()
+	//	alignment := xlsx.Alignment{
+	//		Horizontal: "center",
+	//		Vertical:   "center",
+	//		WrapText:   true,
+	//	}
+	//	style.Alignment = alignment
+	//	style.ApplyAlignment = true
+	//	sheet, errFile := xlsxFile.AddSheet("外呼名单")
+	//	if errFile != nil {
+	//		msg = "新增Sheet失败,Err:" + errFile.Error()
+	//		return
+	//	}
+	//	//设置宽度
+	//	_ = sheet.SetColWidth(1, 1, 30)
+	//	_ = sheet.SetColWidth(2, 2, 60)
+	//	//标头
+	//	rowTitle := sheet.AddRow()
+	//	cellA := rowTitle.AddCell()
+	//	cellA.Value = "姓名"
+	//	cellB := rowTitle.AddCell()
+	//	cellB.Value = "公司名称"
+	//	cellC := rowTitle.AddCell()
+	//	cellC.Value = "问题"
+	//	cellD := rowTitle.AddCell()
+	//	cellD.Value = "提交时间"
+	//	for _, item := range list {
+	//		row := sheet.AddRow()
+	//		cellA := row.AddCell()
+	//		cellA.Value = item.RealName
+	//		cellB := row.AddCell()
+	//		cellB.Value = item.CompanyName
+	//		cellC := row.AddCell()
+	//		cellC.Value = item.Content
+	//		cellD := row.AddCell()
+	//		cellD.Value = item.CreateTime
+	//	}
+	//	errFile = xlsxFile.Save(downLoadnFilePath)
+	//	if errFile != nil {
+	//		msg = "保存文件失败Err:" + errFile.Error()
+	//		return
+	//	}
+	//	title := activityInfo.ActivityName + "-活动带问"
+	//	content := "活动带问详情"
+	//	fileName := downLoadnFilePath
+	//	sendResult := utils.SendEmailByHongze(title, content, touser, fileName, title+".xlsx")
+	//	if sendResult {
+	//		errFile = models.UPdateActivityMsgToSendFile(v.ActivityId)
+	//		if errFile != nil {
+	//			msg = "获取失败,Err:" + errFile.Error()
+	//			return
+	//		}
+	//		os.Remove(downLoadnFilePath)
+	//	} else {
+	//		go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), msg+";Err:"+activityInfo.ActivityName, utils.EmailSendToUsers)
+	//		utils.FileLog.Info("发送附件模版消息失败,Err:%s", activityInfo.ActivityName)
+	//	}
+	//}
+
 	for _, v := range listActivity {
 		activityInfo, _ := models.GetAddActivityInfoById(v.ActivityId)
 		if activityInfo == nil {
@@ -567,86 +703,29 @@ func SendEmailFileForAskMsg(cont context.Context) (err error) {
 			msg = "获取失败,Err:" + errFile.Error()
 			return
 		}
-		for _, v := range listEmail {
-			if strings.Index(activityInfo.Host, v.Name) > 0 {
-				touser += v.Email + ";"
-			}
-		}
-		if touser == "" {
-			msg = "没有对应的邮箱"
-			return
-		}
-		if utils.RunMode == "release" {
-			touser += "tshen@hzinsights.com;cxzhang@hzinsights.com"
-		} else {
-			touser = "tshen@hzinsights.com;cxzhang@hzinsights.com"
-		}
 
-		//创建excel
-		dir, errFile := os.Executable()
-		exPath := filepath.Dir(dir)
-		downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + utils.GetRandDigit(5) + ".xlsx"
-		xlsxFile := xlsx.NewFile()
-		if errFile != nil {
-			msg = "生成文件失败Err:" + errFile.Error()
-			return
-		}
-		style := xlsx.NewStyle()
-		alignment := xlsx.Alignment{
-			Horizontal: "center",
-			Vertical:   "center",
-			WrapText:   true,
-		}
-		style.Alignment = alignment
-		style.ApplyAlignment = true
-		sheet, errFile := xlsxFile.AddSheet("外呼名单")
-		if errFile != nil {
-			msg = "新增Sheet失败,Err:" + errFile.Error()
-			return
-		}
-		//设置宽度
-		_ = sheet.SetColWidth(1, 1, 30)
-		_ = sheet.SetColWidth(2, 2, 60)
-		//标头
-		rowTitle := sheet.AddRow()
-		cellA := rowTitle.AddCell()
-		cellA.Value = "姓名"
-		cellB := rowTitle.AddCell()
-		cellB.Value = "公司名称"
-		cellC := rowTitle.AddCell()
-		cellC.Value = "问题"
-		cellD := rowTitle.AddCell()
-		cellD.Value = "提交时间"
-		for _, item := range list {
-			row := sheet.AddRow()
-			cellA := row.AddCell()
-			cellA.Value = item.RealName
-			cellB := row.AddCell()
-			cellB.Value = item.CompanyName
-			cellC := row.AddCell()
-			cellC.Value = item.Content
-			cellD := row.AddCell()
-			cellD.Value = item.CreateTime
-		}
-		errFile = xlsxFile.Save(downLoadnFilePath)
-		if errFile != nil {
-			msg = "保存文件失败Err:" + errFile.Error()
-			return
-		}
-		title := activityInfo.ActivityName + "-活动带问"
-		content := "活动带问详情"
-		fileName := downLoadnFilePath
-		sendResult := utils.SendEmailByHongze(title, content, touser, fileName, title+".xlsx")
-		if sendResult {
-			errFile = models.UPdateActivityMsgToSendFile(v.ActivityId)
-			if errFile != nil {
-				msg = "获取失败,Err:" + errFile.Error()
-				return
+		for _, v2 := range list {
+			user, err := models.GetUserDetailByUserId(v2.UserId)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				return err
+			}
+			var sendMobile string
+			for _, vEmail := range listEmail {
+				if strings.Index(activityInfo.Host, vEmail.Name) > 0 {
+					sendMobile = vEmail.Mobile
+				}
+			}
+			openIpItem, _ := models.GetUserRecordByMobile(4, sendMobile)
+			if openIpItem != nil && openIpItem.OpenId != "" {
+				//获取销售信息
+				sellerItem, err := models.GetSellerByCompanyIdCheckFicc(v2.CompanyId, 2)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					return err
+				}
+				if sellerItem != nil {
+					SendActivityAskApplyTemplateMsg(user.RealName+"——"+user.CompanyName+"(所属销售:"+sellerItem.RoleName+")", time.Now().Format(utils.FormatDateTime), v2.Content, activityInfo.ActivityName, openIpItem.OpenId, activityInfo.ActivityId)
+				}
 			}
-			os.Remove(downLoadnFilePath)
-		} else {
-			go utils.SendEmail("发送附件模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), msg+";Err:"+activityInfo.ActivityName, utils.EmailSendToUsers)
-			utils.FileLog.Info("发送附件模版消息失败,Err:%s", activityInfo.ActivityName)
 		}
 	}
 	return
@@ -883,7 +962,7 @@ func AddCygxActivityRestrictSignupByAdmin(activityId int) (err error) {
 }
 
 //活动带问提醒
-func SendActivityAskApplyTemplateMsg(applyName, applyTime, activityName, openId string, activityId int) (err error) {
+func SendActivityAskApplyTemplateMsg(applyName, applyTime, askContent, activityName, openId string, activityId int) (err error) {
 	var msg string
 	defer func() {
 		if err != nil {
@@ -922,17 +1001,20 @@ func SendActivityAskApplyTemplateMsg(applyName, applyTime, activityName, openId
 	sendMap := make(map[string]interface{})
 	sendData := make(map[string]interface{})
 
-	first := "查研观向有一条新的权限申请,请及时处理。"
+	first := "有新的客户提问"
 	keyword1 := applyName
 	keyword2 := "-"
 	keyword3 := applyTime
-	keyword4 := activityName
+	keyword4 := askContent
+	remark := activityName
 	fontColor := "#D9001B"
 	sendData["first"] = map[string]interface{}{"value": first, "color": fontColor}
 	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": fontColor}
 	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": fontColor}
 	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": fontColor}
 	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
+	sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": fontColor}
+	sendData["remark"] = map[string]interface{}{"value": remark, "color": fontColor}
 	if utils.RunMode == "release" {
 		sendMap["template_id"] = utils.WxMsgTemplateIdApplyXzs
 	} else {