Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hongze_cygx into debug

xingzai 9 months ago
parent
commit
98bdb2e1c4

+ 2 - 24
controllers/activity.go

@@ -647,21 +647,6 @@ func (this *ActivityCoAntroller) SignupAdd() {
 	if activityInfo.IsYidongConduct && activityInfo.IsCanOutboundCall == 0 {
 	if activityInfo.IsYidongConduct && activityInfo.IsCanOutboundCall == 0 {
 		signupType = 4
 		signupType = 4
 	}
 	}
-	//SignupStatus "报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
-	//HasPermission "1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
-
-	//var userType int
-	//userType, _, err = services.GetUserType(user.CompanyId)
-	//if err != nil {
-	//	br.Msg = "获取信息失败!"
-	//	br.ErrMsg = "获取失败,Err:" + err.Error()
-	//	return
-	//}
-	//if userType == 1 && strings.Contains(activityInfo.ChartPermissionName, "研选") {
-	//	br.Msg = "您暂无查看该活动权限"
-	//	br.ErrMsg = "被分享客户不可见,永续客户无法查看研选行业"
-	//	return
-	//}
 	item := new(models.CygxActivitySignup)
 	item := new(models.CygxActivitySignup)
 
 
 	// 判断是否属于研选类型的活动
 	// 判断是否属于研选类型的活动
@@ -768,15 +753,6 @@ func (this *ActivityCoAntroller) SignupAdd() {
 				resp.SignupStatus = "Success"
 				resp.SignupStatus = "Success"
 				resp.HasPermission = hasPermission
 				resp.HasPermission = hasPermission
 				resp.ActivityId = activityId
 				resp.ActivityId = activityId
-				//total, err = models.GetUserMeetingReminderCount(user.UserId)
-				//if err != nil {
-				//	br.Msg = "获取信息失败"
-				//	br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
-				//	return
-				//}
-				//if total == 0 {
-				//	resp.GoFollow = true
-				//}
 				br.Ret = 200
 				br.Ret = 200
 				br.Success = true
 				br.Success = true
 				br.Msg = "操作成功"
 				br.Msg = "操作成功"
@@ -1052,6 +1028,7 @@ func (this *ActivityCoAntroller) SignupCancel() {
 	// 如果是买方研选下的专家沙龙,同时推给内容组四人
 	// 如果是买方研选下的专家沙龙,同时推给内容组四人
 	if activityInfo.ActivityTypeId == 5 {
 	if activityInfo.ActivityTypeId == 5 {
 		go services.SendActivitieCancelSignTemplateMsg(user, activityInfo)
 		go services.SendActivitieCancelSignTemplateMsg(user, activityInfo)
+		go services.SendActivitieCancelSignCategoryTemplateMsg(user, activityInfo)
 	}
 	}
 
 
 	go services.SendResearchActivitiesTemplateMsg(user, activityInfo, "取消报名") //公司线下调研活动客户报名后给建会人,所属销售推送模板信息
 	go services.SendResearchActivitiesTemplateMsg(user, activityInfo, "取消报名") //公司线下调研活动客户报名后给建会人,所属销售推送模板信息
@@ -1607,6 +1584,7 @@ func (this *ActivityCoAntroller) AskAdd() {
 			if openIpItem != nil && openIpItem.OpenId != "" {
 			if openIpItem != nil && openIpItem.OpenId != "" {
 				services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "提问:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo, int(msgId))
 				services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName+"("+sellerItem.RealName+")", "提问:"+activityInfo.ActivityName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo, int(msgId))
 			}
 			}
+			go services.SendWxCategoryMsgWithAsk(user, activityInfo, content, int(msgId))
 		}
 		}
 	}
 	}
 
 

+ 2 - 1
controllers/report.go

@@ -3686,7 +3686,8 @@ func (this *ReportController) CommentAdd() {
 		return
 		return
 	}
 	}
 
 
-	services.SendCommentWxTemplateMsg(req, user, articleInfo, int(msgId))
+	go services.SendCommentWxTemplateMsg(req, user, articleInfo, int(msgId))
+	go services.SendCommentWxTemplateMsgByYxCategory(req, user, articleInfo, int(msgId)) // 发送用户留言提醒(研选公众号类目模版消息)
 	br.Ret = 200
 	br.Ret = 200
 	br.Success = true
 	br.Success = true
 	br.Msg = "提交成功"
 	br.Msg = "提交成功"

+ 17 - 10
controllers/user.go

@@ -933,6 +933,8 @@ func (this *UserController) ApplyTryOut() {
 	detailId := req.DetailId
 	detailId := req.DetailId
 	sourceId = detailId
 	sourceId = detailId
 	source = tryType
 	source = tryType
+	redirectUrl := ""
+	redirectUrlYx := ""
 	var isResearch bool // 是否属于研选
 	var isResearch bool // 是否属于研选
 	if tryType == "Article" {
 	if tryType == "Article" {
 		detail, err := models.GetArticleDetailById(detailId)
 		detail, err := models.GetArticleDetailById(detailId)
@@ -945,6 +947,8 @@ func (this *UserController) ApplyTryOut() {
 		if detail.ArticleTypeId > 0 {
 		if detail.ArticleTypeId > 0 {
 			isResearch = true
 			isResearch = true
 		}
 		}
+		redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(detailId)
+		redirectUrlYx = utils.WX_MSG_PATH_YX_ARTICLE_DETAIL + strconv.Itoa(detailId)
 	} else if tryType == "Activity" {
 	} else if tryType == "Activity" {
 		detail, err := models.GetAddActivityInfoById(detailId)
 		detail, err := models.GetAddActivityInfoById(detailId)
 		if err != nil {
 		if err != nil {
@@ -956,6 +960,8 @@ func (this *UserController) ApplyTryOut() {
 		if strings.Contains(detail.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
 		if strings.Contains(detail.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
 			isResearch = true
 			isResearch = true
 		}
 		}
+		redirectUrl = utils.WX_MSG_PATH_ARTICLE_DETAIL + strconv.Itoa(detailId)
+		redirectUrlYx = utils.WX_MSG_PATH_YX_ARTICLE_DETAIL + strconv.Itoa(detailId)
 	} else if tryType == "MicroAudio" {
 	} else if tryType == "MicroAudio" {
 		// 微路演音频
 		// 微路演音频
 		microAudio, e := models.GetCygxActivityVoiceById(detailId)
 		microAudio, e := models.GetCygxActivityVoiceById(detailId)
@@ -1208,9 +1214,9 @@ func (this *UserController) ApplyTryOut() {
 			CompanyIdType = 1
 			CompanyIdType = 1
 			applyMethod = "潜在客户"
 			applyMethod = "潜在客户"
 		}
 		}
-		if detailId > 0 {
-			applyMethod = applyMethod + "," + title
-		}
+		//if detailId > 0 {
+		//	applyMethod = applyMethod + "," + title
+		//}
 	}
 	}
 	item := new(models.CygxApplyRecord)
 	item := new(models.CygxApplyRecord)
 	item.UserId = user.UserId
 	item.UserId = user.UserId
@@ -1237,14 +1243,15 @@ func (this *UserController) ApplyTryOut() {
 		br.ErrMsg = "申请失败,Err:" + err.Error()
 		br.ErrMsg = "申请失败,Err:" + err.Error()
 		return
 		return
 	}
 	}
-	if sellerItem == nil {
-		go services.SendPermissionApplyTemplateMsgAdmin(req, mobile, applyMethod, isResearch)
-	} else {
-		openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
-		if openIpItem != nil && openIpItem.OpenId != "" {
-			go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, openIpItem)
-		}
+
+	if isResearch {
+		//如果是研选的报告走研选的类目模版消息
+		go services.SendPermissionApplyTemplateMsgAdminByYxCategory(req, user.CompanyId, mobile, applyMethod, redirectUrlYx)
+	}
+	if detailId > 0 {
+		applyMethod = applyMethod + "," + title
 	}
 	}
+	go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, redirectUrl, user) //权限申请模板消息推送
 	//添加成功后,设置5分钟缓存,不允许重复添加
 	//添加成功后,设置5分钟缓存,不允许重复添加
 	//utils.Rc.SetNX(cacheKey, user.Mobile, time.Second*60)
 	//utils.Rc.SetNX(cacheKey, user.Mobile, time.Second*60)
 
 

+ 4 - 1
services/activity.go

@@ -2143,9 +2143,12 @@ func ActivityUserRemind(user *models.WxUserItem, activityDetail *models.Activity
 		return
 		return
 	}
 	}
 	// 如果是买方研选下的专家沙龙,同时推给内容组四人
 	// 如果是买方研选下的专家沙龙,同时推给内容组四人
-	if activityDetail.ActivityTypeId == 5 {
+
+	if activityDetail.ActivityTypeId == 5 && activityDetail.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
 		go SendNeiRongZuActivitieSignTemplateMsg(user, activityDetail)
 		go SendNeiRongZuActivitieSignTemplateMsg(user, activityDetail)
+		go SendNeiRongZuActivitieSignCategoryTemplateMsg(user, activityDetail)
 	}
 	}
+
 	//获取销售手机号
 	//获取销售手机号
 	sellerItemQy, e := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
 	sellerItemQy, e := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 	if e != nil && e.Error() != utils.ErrNoRow() {

+ 2 - 4
services/article.go

@@ -744,8 +744,7 @@ func UpdateArticleByRedis() (err error) {
 func HandleArticleListByApi(artcleId int) (err error) {
 func HandleArticleListByApi(artcleId int) (err error) {
 	defer func() {
 	defer func() {
 		if err != nil {
 		if err != nil {
-			go utils.SendAlarmMsg("处理同步策略平台数据失败"+"GetArticleListByApi ErrMsg:"+err.Error()+"artcleId:"+strconv.Itoa(artcleId), 2)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error()+"artcleId:"+strconv.Itoa(artcleId), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg("处理同步过来的文章失败"+"HandleArticleListByApi ErrMsg:"+err.Error()+"artcleId:"+strconv.Itoa(artcleId), 2)
 		}
 		}
 	}()
 	}()
 	var clueApiUrl string
 	var clueApiUrl string
@@ -1274,8 +1273,7 @@ func DoArticleOnenIdWxTemplateMsg(articleId int) (err error) {
 	var msg string
 	var msg string
 	defer func() {
 	defer func() {
 		if err != nil {
 		if err != nil {
-			go utils.SendAlarmMsg("处理同步策略平台数据失败"+"GetArticleListByApi ErrMsg:"+err.Error(), 2)
-			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go utils.SendAlarmMsg("过滤策略平台报告,研选报告重复推送,以及权限勾选的推送失败 DoArticleOnenIdWxTemplateMsg  ErrMsg:"+err.Error(), 2)
 			fmt.Println(err)
 			fmt.Println(err)
 		}
 		}
 		if msg != "" {
 		if msg != "" {

+ 8 - 8
services/task.go

@@ -144,14 +144,14 @@ func Task() {
 		sendMfyxActivityBeginMsg := task.NewTask("sendMfyxActivityBeginMsg", "0 */5 6-23 * * *", SendMfyxActivityBeginMsg) //会议前60分钟的提醒
 		sendMfyxActivityBeginMsg := task.NewTask("sendMfyxActivityBeginMsg", "0 */5 6-23 * * *", SendMfyxActivityBeginMsg) //会议前60分钟的提醒
 		task.AddTask("sendMfyxActivityBeginMsg", sendMfyxActivityBeginMsg)
 		task.AddTask("sendMfyxActivityBeginMsg", sendMfyxActivityBeginMsg)
 
 
-		cancelCygxOrder := task.NewTask("CancelCygxOrder", "0 */1 * * * *", CancelCygxOrder)
-		task.AddTask("十分钟内未付款的订单自动取消", cancelCygxOrder) //十分钟内未付款的订单自动取消
-
-		getQueryOrderByOutTradeNoTask := task.NewTask("getQueryOrderByOutTradeNoTask", "0 */1 * * * *", GetQueryOrderByOutTradeNoTask)
-		task.AddTask("定时任务主动获取订单支付状态", getQueryOrderByOutTradeNoTask) //定时任务主动获取订单支付状态
-
-		handleOrderRefundHandleask := task.NewTask("HandleOrderRefundHandleask", "0 */1 * * * *", HandleOrderRefundHandleask)
-		task.AddTask("定时任务处理退款回调", handleOrderRefundHandleask) //定时任务处理退款回调
+		//cancelCygxOrder := task.NewTask("CancelCygxOrder", "0 */1 * * * *", CancelCygxOrder)
+		//task.AddTask("十分钟内未付款的订单自动取消", cancelCygxOrder) //十分钟内未付款的订单自动取消
+		//
+		//getQueryOrderByOutTradeNoTask := task.NewTask("getQueryOrderByOutTradeNoTask", "0 */1 * * * *", GetQueryOrderByOutTradeNoTask)
+		//task.AddTask("定时任务主动获取订单支付状态", getQueryOrderByOutTradeNoTask) //定时任务主动获取订单支付状态
+		//
+		//handleOrderRefundHandleask := task.NewTask("HandleOrderRefundHandleask", "0 */1 * * * *", HandleOrderRefundHandleask)
+		//task.AddTask("定时任务处理退款回调", handleOrderRefundHandleask) //定时任务处理退款回调
 	}
 	}
 
 
 	//if utils.RunMode != "release" {
 	//if utils.RunMode != "release" {

+ 0 - 38
services/user.go

@@ -1093,41 +1093,3 @@ func UpdateCygxSubscribe(uid int, unionId string) (err error) {
 	}
 	}
 	return
 	return
 }
 }
-
-// SendPermissionApplyTemplateMsgAdmin 处理试用申请给王芳,汪洋发消息
-func SendPermissionApplyTemplateMsgAdmin(req models.ApplyTryReq, usermobile, applyMethod string, isResearch bool) (err error) {
-	defer func() {
-		if err != nil {
-			go utils.SendAlarmMsg("处理试用申请给王芳,汪洋发消息失败, ErrMsg: "+err.Error(), 3)
-		}
-	}()
-	var configCode string
-	//如果是研选的就推送给汪洋跟王芳,否则就推送给王芳
-	if isResearch {
-		configCode = utils.TPL_MSG_WANG_YANG
-	} else {
-		configCode = utils.TPL_MSG
-	}
-	cnf, e := models.GetConfigByCode(configCode)
-	if e != nil {
-		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
-		return
-	}
-	openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue)
-	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
-		return err
-	}
-
-	for _, v := range openIdList {
-		go SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, usermobile, applyMethod, v)
-	}
-
-	//openIpItem, e := models.GetUserRecordByMobile(4, cnf.ConfigValue)
-	//if e != nil {
-	//	err = errors.New("GetUserRecordByMobile, Err: " + e.Error() + cnf.ConfigValue)
-	//	return
-	//}
-
-	return
-}

+ 34 - 35
services/user_permission.go

@@ -118,6 +118,40 @@ func GetUserRaiPermissionYanXuanInfo(user *models.WxUserItem) (hasPermission int
 	return
 	return
 }
 }
 
 
+// 获取权益销售姓名
+func GetSellerName(user *models.WxUserItem) (sellerName string, sellerId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("获取权益销售姓名失败 GetSellerName, err:", err.Error()), 2)
+		}
+	}()
+	companyId := user.CompanyId
+	//潜在客户没有销售
+	if user.CompanyId <= 1 {
+		return
+	}
+	//权益客户
+	raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
+	if e != nil {
+		err = errors.New("GetCompanyProductCount, Err: " + e.Error())
+		return
+	}
+	//仅开通FICC的客户不展示销售姓名
+	if raiCount == 0 {
+		return
+	}
+	sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
+	if e != nil {
+		err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
+		return
+	}
+	sellerName = sealldetail.RealName
+	sellerId = sealldetail.AdminId
+	return
+}
+
 // 用户详情页获取用户权限状态  https://hzstatic.hzinsights.com/static/images/202402/20240205/LpE6dspJCLzfQoCoE8SFMDiLuxXk.png(状态码说明)这一期先不改2024-05-24。
 // 用户详情页获取用户权限状态  https://hzstatic.hzinsights.com/static/images/202402/20240205/LpE6dspJCLzfQoCoE8SFMDiLuxXk.png(状态码说明)这一期先不改2024-05-24。
 func GetUserDetailPermissionCode(userId, companyId int) (permission int, err error) {
 func GetUserDetailPermissionCode(userId, companyId int) (permission int, err error) {
 	// 用户申请记录
 	// 用户申请记录
@@ -156,38 +190,3 @@ func GetUserDetailPermissionCode(userId, companyId int) (permission int, err err
 	}
 	}
 	return
 	return
 }
 }
-
-// 获取权益销售姓名
-func GetSellerName(user *models.WxUserItem) (sellerName string, sellerId int) {
-	var err error
-	defer func() {
-		if err != nil {
-			fmt.Println(err)
-			go utils.SendAlarmMsg(fmt.Sprint("获取权益销售姓名失败 GetSellerName, err:", err.Error()), 2)
-		}
-	}()
-	companyId := user.CompanyId
-	//潜在客户没有销售
-	if user.CompanyId <= 1 {
-		return
-	}
-	//权益客户
-	raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
-	if e != nil {
-		err = errors.New("GetCompanyProductCount, Err: " + e.Error())
-		return
-	}
-	//仅开通FICC的客户不展示销售姓名
-	if raiCount == 0 {
-		return
-	}
-	sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
-	if e != nil {
-		err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
-		return
-	}
-	sellerName = sealldetail.RealName
-	sellerId = sealldetail.AdminId
-	return
-
-}

+ 37 - 8
services/wechat_send_msg.go

@@ -104,24 +104,54 @@ func SendInterviewApplyCancelTemplateMsg(realName, companyName, mobile, articleT
 }
 }
 
 
 // 权限申请
 // 权限申请
-func SendPermissionApplyTemplateMsg(realName, companyName, mobile, applyMethod string, itemOpenid *models.OpenIdList) (err error) {
-
+func SendPermissionApplyTemplateMsg(realName, companyName, mobile, applyMethod, redirectUrl string, user *models.WxUserItem) (err error) {
 	defer func() {
 	defer func() {
 		if err != nil {
 		if err != nil {
-			go utils.SendAlarmMsg(fmt.Sprint("权限申请模板消息推送消息失败,手机号", mobile, "公司:", companyName, "手机号:", mobile, ";Err:"+err.Error()), 2)
+			go utils.SendAlarmMsg(fmt.Sprint("权限申请模板消息推送消息失败,手机号", mobile, "公司:", companyName, "手机号:", mobile), 2)
 		}
 		}
 	}()
 	}()
+	companyId := user.CompanyId
+	//权益客户
+	raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
+	if e != nil {
+		err = errors.New("GetCompanyProductCount, Err: " + e.Error())
+		return
+	}
+	var mobileOpenid string
+	if raiCount == 0 {
+		mobileOpenid = utils.WxMsgTemplateIdAskMsgMobilePublic
+	} else {
+		sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
+		if e != nil {
+			err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
+			return
+		}
+		mobileOpenid = sealldetail.Mobile
+	}
+
+	openIdList, e := models.GetWxOpenIdByMobileList(mobileOpenid)
+	if e != nil {
+		err = errors.New("GetWxOpenIdByMobileList, Err: " + e.Error())
+		return
+	}
+	if len(openIdList) == 0 {
+		return
+	}
+	openIdArr := make([]string, 0)
+
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
 	var first string
 	var first string
 	var keyword1 string
 	var keyword1 string
 	var keyword2 string
 	var keyword2 string
 	var keyword3 string
 	var keyword3 string
 	var keyword4 string
 	var keyword4 string
 	var remark string
 	var remark string
-	var redirectUrl string
-
+	//var redirectUrl string
 	detail, e := models.GetCygxApplyRecordByMobile(mobile)
 	detail, e := models.GetCygxApplyRecordByMobile(mobile)
 	if e != nil {
 	if e != nil {
-		err = errors.New("GetActivitySignupNomeetingCountList" + e.Error())
+		err = errors.New("GetCygxApplyRecordByMobile" + e.Error())
 		return
 		return
 	}
 	}
 	//如果是潜在客户就推送可查看详情的模版消息
 	//如果是潜在客户就推送可查看详情的模版消息
@@ -132,8 +162,7 @@ func SendPermissionApplyTemplateMsg(realName, companyName, mobile, applyMethod s
 	keyword2 = mobile
 	keyword2 = mobile
 	keyword3 = time.Now().Format(utils.FormatDateTime)
 	keyword3 = time.Now().Format(utils.FormatDateTime)
 	keyword4 = applyMethod
 	keyword4 = applyMethod
-	openIdArr := make([]string, 0)
-	openIdArr = append(openIdArr, itemOpenid.OpenId)
+
 	sendInfo := new(SendWxTemplate)
 	sendInfo := new(SendWxTemplate)
 	sendInfo.First = first
 	sendInfo.First = first
 	sendInfo.Keyword1 = keyword1
 	sendInfo.Keyword1 = keyword1

+ 382 - 51
services/wx_category_template_msg.go

@@ -68,6 +68,193 @@ func SendCategoryTemplateMsg(sendInfo *SendWxCategoryTemplate) (err error) {
 	return
 	return
 }
 }
 
 
+// 用户模块
+// 研选类目模板消息
+func SendPermissionApplyTemplateMsgAdminByYxCategory(req models.ApplyTryReq, companyId int, usermobile, applyMethod, redirectUrl string) (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("研选类目模板消息消息失败, SendPermissionApplyTemplateMsgAdminByYxCategoryErrMsg: "+err.Error(), 3)
+		}
+	}()
+
+	//潜在客户、未开权益,已开FICC的客户推给王芳,开通权益的客户推给对应销售
+	mobileOpneid := utils.WxMsgTemplateIdAskMsgMobilePublic
+	if companyId > 1 {
+		raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
+		if e != nil {
+			err = errors.New("GetCompanyProductCount, Err: " + e.Error())
+			return
+		}
+		if raiCount == 0 {
+			return
+		}
+		sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
+		if e != nil {
+			err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
+			return
+		}
+		mobileOpneid = sealldetail.Mobile
+	}
+
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobileOpneid)
+	if e != nil {
+		err = errors.New("GetMfyxWxOpenIdByMobileList, Err: " + e.Error())
+		return err
+	}
+	if len(openIdList) == 0 {
+		return
+	}
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var keyword5 string
+	keyword1 = req.RealName
+	keyword2 = utils.TruncateActivityNameString(req.CompanyName)
+	keyword3 = "权限申请"
+	keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
+	keyword5 = applyMethod
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	detail, e := models.GetCygxApplyRecordByMobile(usermobile)
+	if e != nil {
+		err = errors.New("GetCygxApplyRecordByMobile" + e.Error())
+		return
+	}
+	//redirectUrl := ""
+	//如果是潜在客户就推送可查看详情的模版消息
+	if detail.ApplyMethod == 2 {
+		redirectUrl = utils.WX_MSG_PATH_APPLY_DETAIL + strconv.Itoa(detail.ApplyRecordId)
+	}
+
+	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
+// 用户模块End
+
+// 报告模块
+// 发送用户留言提醒(研选公众号类目模版消息)
+func SendCommentWxTemplateMsgByYxCategory(req models.AddCygxArticleCommentReq, user *models.WxUserItem, articleInfo *models.ArticleDetail, msgId int) (err error) {
+	if articleInfo.ArticleTypeId == 0 {
+		return // 非研选的文章不做推送
+	}
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("发送用户用户留言提醒失败,文章ID:", req.ArticleId, "err", err.Error()), 2)
+		}
+	}()
+
+	companyItem, e := models.GetSellerDetailAllByCompanyId(user.CompanyId)
+	if e != nil {
+		return
+	}
+	if companyItem == nil {
+		err = errors.New("获取客户所属销售信息失败")
+		return
+	}
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var keyword5 string
+	var redirectUrl string
+	var mobile string
+
+	var keywords []string
+	keyword1 = user.RealName
+	keyword2 = utils.TruncateActivityNameString(companyItem.CompanyName)
+	keyword3 = companyItem.SellerName
+	keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
+	keyword5 = "报告留言:" + req.Content
+	keyword5 = utils.TruncateActivityNameString(keyword5)
+	keywords = append(keywords, keyword1, keyword2, keyword3, keyword4, keyword5)
+
+	var mobiles []string
+	mobiles = append(mobiles, utils.RAI_MOBILE_GAO_YI_WEN, utils.RAI_MOBILE_DONG_HENG, utils.RAI_MOBILE_WU_ANG_DI, utils.RAI_MOBILE_GE_LIN) //葛琳、高亦文、董衡、吴昂迪手机号
+	mobile = companyItem.Mobile + "," + utils.WxMsgTemplateIdAskMsgMobilePublic + "," + strings.Join(mobiles, ",")
+	//mobile =
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
+	if e != nil {
+		err = errors.New("GetMfyxWxOpenIdByMobileList, Err: " + e.Error())
+		return
+	}
+	if len(openIdList) == 0 {
+		return
+	}
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl = utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(msgId) + "&SourceType=1"
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
+// 发送报告提问消息提醒
+func SendWxCategoryMsgWithActivityAsk(companyName, realName, sellerName, askTime, askMsg string, openIdList []*models.OpenIdList, msgId int) (err error) {
+	if len(openIdList) == 0 {
+		return
+	}
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("发送报告提问消息提醒类目模版消息失败,用户名", realName, "留言ID:", msgId), 2)
+		}
+	}()
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var keyword5 string
+
+	keyword1 = realName
+	keyword2 = companyName
+	keyword3 = sellerName
+	keyword4 = askTime
+	keyword5 = utils.TruncateActivityNameString("活动提问:" + askMsg)
+
+	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	redirectUrl := utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(msgId)
+
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	if err != nil {
+		return
+	}
+	return
+}
+
+//报告模块END
+
+// 活动模块
 // 帮我带问的问题,会前1小时发送
 // 帮我带问的问题,会前1小时发送
 func SendMfyxEmailFileForAskMsgResearch(cont context.Context) (err error) {
 func SendMfyxEmailFileForAskMsgResearch(cont context.Context) (err error) {
 	var msg string
 	var msg string
@@ -140,54 +327,6 @@ func SendMfyxEmailFileForAskMsgResearch(cont context.Context) (err error) {
 	return
 	return
 }
 }
 
 
-// 发送报告提问消息提醒
-func SendWxCategoryMsgWithActivityAsk(companyName, realName, sellerName, askTime, askMsg string, openIdList []*models.OpenIdList, msgId int) (err error) {
-	if len(openIdList) == 0 {
-		return
-	}
-	var msg string
-	defer func() {
-		if err != nil {
-			go utils.SendEmail("发送类目模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			go utils.SendAlarmMsg(fmt.Sprint("发送报告提问消息提醒类目模版消息失败,用户名", realName, "留言ID:", msgId), 2)
-			utils.FileLog.Info("发送类目模版消息失败,Err:%s", err.Error())
-		}
-		fmt.Println("line 21", err, msg)
-	}()
-	var keyword1 string
-	var keyword2 string
-	var keyword3 string
-	var keyword4 string
-	var keyword5 string
-
-	keyword1 = realName
-	keyword2 = companyName
-	keyword3 = sellerName
-	keyword4 = askTime
-	keyword5 = utils.TruncateActivityNameString("活动提问:" + askMsg)
-
-	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
-
-	openIdArr := make([]string, 0)
-	for _, v := range openIdList {
-		openIdArr = append(openIdArr, v.OpenId)
-	}
-	redirectUrl := utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(msgId)
-
-	sendInfo := new(SendWxCategoryTemplate)
-	sendInfo.Keywords = keywords
-	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
-	sendInfo.RedirectTarget = 4
-	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
-	sendInfo.OpenIdArr = openIdArr
-	sendInfo.RedirectUrl = redirectUrl
-	err = SendCategoryTemplateMsg(sendInfo)
-	if err != nil {
-		return
-	}
-	return
-}
-
 // 推送会议开始消息提醒60分钟前
 // 推送会议开始消息提醒60分钟前
 func SendMfyxActivityBeginMsg(cont context.Context) (err error) {
 func SendMfyxActivityBeginMsg(cont context.Context) (err error) {
 	//func SendActivityBeginMsg() (err error) {
 	//func SendActivityBeginMsg() (err error) {
@@ -342,6 +481,9 @@ func SendMfyxActivityBeginMsgMeeting(cont context.Context) (err error) {
 
 
 // 线下调研活动扫码签到给对应销售发类目模班消息
 // 线下调研活动扫码签到给对应销售发类目模班消息
 func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
 func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
+	if activityDetail.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		return
+	}
 	defer func() {
 	defer func() {
 		if err != nil {
 		if err != nil {
 			go utils.SendAlarmMsg(fmt.Sprint("线下调研活动扫码签到给对应销售发模班消息推送失败 SendActivitieSignCategoryTemplateMsg Err:", err.Error(), "活动ID:", activityDetail.ActivityId, "手机号:", user.Mobile), 2)
 			go utils.SendAlarmMsg(fmt.Sprint("线下调研活动扫码签到给对应销售发模班消息推送失败 SendActivitieSignCategoryTemplateMsg Err:", err.Error(), "活动ID:", activityDetail.ActivityId, "手机号:", user.Mobile), 2)
@@ -354,7 +496,7 @@ func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetai
 		return
 		return
 	}
 	}
 	if sellerItem != nil {
 	if sellerItem != nil {
-		mobiles = append(mobiles, sellerItem.Mobile, utils.MobileWuAngDi, utils.MobileDongHeng, utils.MobileShenTao)
+		mobiles = append(mobiles, sellerItem.Mobile, utils.MobileWuAngDi, utils.MobileDongHeng, utils.MobileShenTao, utils.MobileZhangChuanXin)
 	}
 	}
 
 
 	var keyword1 string
 	var keyword1 string
@@ -398,6 +540,193 @@ func SendActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetai
 	return
 	return
 }
 }
 
 
+// 发送活动提问消息提醒(研选公众号类目模版消息)
+func SendWxCategoryMsgWithAsk(user *models.WxUserItem, activityInfo *models.ActivityDetail, askMsg string, askId int) (err error) {
+	if activityInfo.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		return
+	}
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("发送活动提问消息提醒类目模版消息失败,用户名", user.RealName, "提问ID:", askId), 2)
+		}
+	}()
+
+	companyId := user.CompanyId
+	var sellerName string
+	//潜在客户、未开权益,已开FICC的客户推给王芳,开通权益的客户推给对应销售
+	mobile := utils.WxMsgTemplateIdAskMsgMobilePublic
+	if companyId > 1 {
+		raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
+		if e != nil {
+			err = errors.New("GetCompanyProductCount, Err: " + e.Error())
+			return
+		}
+		if raiCount > 0 {
+			sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
+			if e != nil {
+				err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
+				return
+			}
+			sellerName = sealldetail.RealName
+			mobile += "," + sealldetail.Mobile
+		}
+	}
+	var mobiles []string
+	mobiles = append(mobiles, utils.RAI_MOBILE_GAO_YI_WEN, utils.RAI_MOBILE_DONG_HENG, utils.RAI_MOBILE_WU_ANG_DI, utils.RAI_MOBILE_GE_LIN) //葛琳、高亦文、董衡、吴昂迪手机号
+	mobile += "," + strings.Join(mobiles, ",")
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
+	if e != nil {
+		err = errors.New("GetMfyxWxOpenIdByMobileList, Err: " + e.Error())
+		return err
+	}
+	if len(openIdList) == 0 {
+		return
+	}
+
+	var keyword1 string
+	var keyword2 string
+	var keyword3 string
+	var keyword4 string
+	var keyword5 string
+
+	keyword1 = user.RealName
+	keyword2 = utils.TruncateActivityNameString(user.CompanyName)
+	keyword3 = sellerName
+	keyword4 = time.Now().Format(utils.FormatDateTimeMinute2)
+	keyword5 = utils.TruncateActivityNameString("活动提问:" + askMsg)
+
+	keywords := []string{keyword1, keyword2, keyword3, keyword4, keyword5}
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+
+	redirectUrl := utils.WX_MSG_PATH_TEMPLATE_MSG + "SourceId=" + strconv.Itoa(askId) + "&SourceType=2"
+	//redirectUrl = ""
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_ARTICLE_ADD
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
+// 用户报名模板消息推送(研选公众号类目模版消息)
+func SendNeiRongZuActivitieSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
+	if activityDetail.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		return
+	}
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("发送用户操作活动消息提醒,文章ID:", activityDetail.ActivityId), 2)
+			fmt.Println(err)
+		}
+	}()
+	sellerItemQy, e := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		return
+	}
+	var mobile string
+	var sellerRealName string
+	var mobiles []string
+	mobiles = append(mobiles, utils.RAI_MOBILE_GAO_YI_WEN, utils.RAI_MOBILE_DONG_HENG, utils.RAI_MOBILE_WU_ANG_DI, utils.MobileShenTao, utils.MobileZhangChuanXin) //高亦文、董衡、吴昂迪手机号
+	if sellerItemQy != nil {
+		mobiles = append(mobiles, sellerItemQy.Mobile)
+		sellerRealName = sellerItemQy.RealName
+	} else {
+		sellerRealName = "__"
+	}
+	mobile = strings.Join(mobiles, ",")
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
+	if e != nil {
+		err = errors.New("GetMfyxWxOpenIdByMobileList, Err: " + e.Error())
+		return err
+	}
+	if len(openIdList) == 0 {
+		err = nil
+		return
+	}
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	var keywords []string
+	keywords = append(keywords, user.RealName, user.CompanyName, sellerRealName, time.Now().Format(utils.FormatDateTimeMinute2), utils.TruncateActivityNameString("报名:"+activityDetail.ActivityName))
+	redirectUrl := utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(activityDetail.ActivityId) //活动详情地址
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
+// 用户取消报名模板消息推送(研选公众号类目模版消息)
+func SendActivitieCancelSignCategoryTemplateMsg(user *models.WxUserItem, activityDetail *models.ActivityDetail) (err error) {
+	if activityDetail.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
+		return
+	}
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("发送用户操作活动消息提醒,活动ID:", activityDetail.ActivityId), 2)
+		}
+	}()
+	sellerItemQy, e := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		return
+	}
+	var mobile string
+	var sellerRealName string
+	var mobiles []string
+	mobiles = append(mobiles, utils.RAI_MOBILE_GAO_YI_WEN, utils.RAI_MOBILE_DONG_HENG, utils.RAI_MOBILE_WU_ANG_DI, utils.MobileShenTao, utils.MobileZhangChuanXin) //高亦文、董衡、吴昂迪手机号
+	if sellerItemQy != nil {
+		mobiles = append(mobiles, sellerItemQy.Mobile)
+		sellerRealName = sellerItemQy.RealName
+	} else {
+		sellerRealName = "__"
+	}
+	mobile = strings.Join(mobiles, ",")
+	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
+	if e != nil {
+		err = errors.New("GetMfyxWxOpenIdByMobileList, Err: " + e.Error())
+		return err
+	}
+	if len(openIdList) == 0 {
+		err = nil
+		return
+	}
+
+	openIdArr := make([]string, 0)
+	for _, v := range openIdList {
+		openIdArr = append(openIdArr, v.OpenId)
+	}
+	var keywords []string
+	keywords = append(keywords, user.RealName, user.CompanyName, sellerRealName, time.Now().Format(utils.FormatDateTimeMinute2), utils.TruncateActivityNameString("取消报名:"+activityDetail.ActivityName))
+	redirectUrl := utils.WX_MSG_PATH_YX_ACTIVITY_DETAIL + strconv.Itoa(activityDetail.ActivityId) //活动详情地址
+	sendInfo := new(SendWxCategoryTemplate)
+	sendInfo.Keywords = keywords
+	sendInfo.TemplateId = utils.WxCategoryMsgTemplateIdApplyXzs
+	sendInfo.RedirectTarget = 4
+	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_APPLY
+	sendInfo.OpenIdArr = openIdArr
+	sendInfo.RedirectUrl = redirectUrl
+	err = SendCategoryTemplateMsg(sendInfo)
+	return
+}
+
+// 活动模块END
+
+// 专栏模块
 // 研选专栏审核完成时,给提交人发送类目模板消息
 // 研选专栏审核完成时,给提交人发送类目模板消息
 func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) {
 func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) {
 	defer func() {
 	defer func() {
@@ -541,7 +870,7 @@ func SendWxCategoryMsgSpecialFollow(specialId int) (err error) {
 	return
 	return
 }
 }
 
 
-// SendReviewCategoryTemplateMsgAdmin 提交审核时给王芳、葛琳和沈涛发研选类目模板消息
+// SendReviewCategoryTemplateMsgAdmin 专栏提交审核时给王芳、葛琳和沈涛发研选类目模板消息
 func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
 func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
 	defer func() {
 	defer func() {
 		if err != nil {
 		if err != nil {
@@ -549,7 +878,7 @@ func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
 		}
 		}
 	}()
 	}()
 	//王芳、葛琳和沈涛
 	//王芳、葛琳和沈涛
-	mobile := utils.WxMsgTemplateIdAskMsgMobilePublic + utils.RAI_MOBILE_GE_LIN_WEN
+	mobile := utils.WxMsgTemplateIdAskMsgMobilePublic + utils.RAI_MOBILE_GE_LIN
 	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
 	openIdList, e := models.GetMfyxWxOpenIdByMobileList(mobile)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
@@ -601,3 +930,5 @@ func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
 	}
 	}
 	return
 	return
 }
 }
+
+//专栏模块END

+ 16 - 9
utils/config.go

@@ -56,10 +56,10 @@ var (
 	WxMsgCategoryTemplateIdArticleUserRemind         string //用户阅读报告通知-类目模板ID
 	WxMsgCategoryTemplateIdArticleUserRemind         string //用户阅读报告通知-类目模板ID
 
 
 	//权益内容组手机号
 	//权益内容组手机号
-	RAI_MOBILE_GAO_YI_WEN    string // 权益高亦文手机号
-	RAI_MOBILE_DONG_HENG     string // 权益董衡手机号
-	RAI_MOBILE_WU_ANG_DI_WEN string // 权益吴昂迪手机号
-	RAI_MOBILE_GE_LIN_WEN    string // 权益葛琳手机号
+	RAI_MOBILE_GAO_YI_WEN string // 权益高亦文手机号
+	RAI_MOBILE_DONG_HENG  string // 权益董衡手机号
+	RAI_MOBILE_WU_ANG_DI  string // 权益吴昂迪手机号
+	RAI_MOBILE_GE_LIN     string // 权益葛琳手机号
 )
 )
 
 
 // 微信公众号配置信息
 // 微信公众号配置信息
@@ -267,6 +267,13 @@ func init() {
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "wU4x_c5XruwuA44VZelyklRNOfq4XrU9ILckTtDs6hg" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdCompanyApprovalMessageRai = "wU4x_c5XruwuA44VZelyklRNOfq4XrU9ILckTtDs6hg" //权益销售签约成功通知买方研选类目模版消息通知-类目模板ID
 		WxMsgCategoryTemplateIdActivityPublishApply = "wLeV7tVK4ZJBoAvsmfXkHveVW8yefGAkwnVKQWRi8uQ"
 		WxMsgCategoryTemplateIdActivityPublishApply = "wLeV7tVK4ZJBoAvsmfXkHveVW8yefGAkwnVKQWRi8uQ"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-2xUiyQqNkFCPd8vsGpOnNWWE2inZO4BXjfio"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-2xUiyQqNkFCPd8vsGpOnNWWE2inZO4BXjfio"
+
+		//权益内容组手机号测试环境没什么用,配合测试切换他们的手机号
+		RAI_MOBILE_GAO_YI_WEN = "17706316791" //权益高亦文手机号
+		RAI_MOBILE_DONG_HENG = "15557270714"  // 权益董衡手机号
+		RAI_MOBILE_WU_ANG_DI = "15557270714"  // 权益吴昂迪手机号
+		RAI_MOBILE_GE_LIN = "15557270714"     // 权益葛琳手机号
+
 	} else {
 	} else {
 		//新的模板ID
 		//新的模板ID
 		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                                  //查研观向小助手
 		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                                  //查研观向小助手
@@ -286,11 +293,11 @@ func init() {
 		WxMsgCategoryTemplateIdActivityPublishApply = "IBMqiE61lVgUfFM4rsH0XCH57R_G3PbWvRbnzg9JHPI"
 		WxMsgCategoryTemplateIdActivityPublishApply = "IBMqiE61lVgUfFM4rsH0XCH57R_G3PbWvRbnzg9JHPI"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-YQndzH5OJWLkd0grvftgqhvP285t_oXUboi7DaaIhMI"
 		WxMsgCategoryTemplateIdArticleUserRemind = "4fwzgJ-YQndzH5OJWLkd0grvftgqhvP285t_oXUboi7DaaIhMI"
 
 
-		//权益内容组手机号测试环境没什么用,配合测试切换他们的手机号
-		RAI_MOBILE_GAO_YI_WEN = "17706316791"    //权益高亦文手机号
-		RAI_MOBILE_DONG_HENG = "15557270714"     // 权益董衡手机号
-		RAI_MOBILE_WU_ANG_DI_WEN = "15557270714" // 权益吴昂迪手机号
-		RAI_MOBILE_GE_LIN_WEN = "15557270714"    // 权益葛琳手机号
+		//权益内容组手机号
+		RAI_MOBILE_GAO_YI_WEN = "15000123056" //权益高亦文手机号
+		RAI_MOBILE_DONG_HENG = "15216736473"  // 权益董衡手机号
+		RAI_MOBILE_WU_ANG_DI = "18701809782"  // 权益吴昂迪手机号
+		RAI_MOBILE_GE_LIN = "18258485832"     // 权益葛琳手机号
 	}
 	}
 
 
 	//易董开放api配置
 	//易董开放api配置

+ 2 - 2
utils/constants.go

@@ -194,9 +194,9 @@ const (
 	WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL = "pages-purchaser/toExamine/toExamine?isMessage=模板&id="         //研选专栏审核详情页面
 	WX_MSG_PATH_YX_SPECIAL_ENABLE_DETAIL = "pages-purchaser/toExamine/toExamine?isMessage=模板&id="         //研选专栏审核详情页面
 	WX_MSG_PATH_YX_SPECIAL_CENTER        = "pages-purchaser/contentAllPage/contentAllPage?Status=4"       //研选专栏内容中心
 	WX_MSG_PATH_YX_SPECIAL_CENTER        = "pages-purchaser/contentAllPage/contentAllPage?Status=4"       //研选专栏内容中心
 	WX_MSG_PATH_YX_COMMENT_DETAIL        = "pages-activity/generationAsk/generationAsk?id="               //研选报告留言详情
 	WX_MSG_PATH_YX_COMMENT_DETAIL        = "pages-activity/generationAsk/generationAsk?id="               //研选报告留言详情
-	WX_MSG_PATH_YX_ACTIVITY_DETAIL       = "pages-activity/activityDetail/activityDetail?id="             //研选活动详情
+	WX_MSG_PATH_YX_ACTIVITY_DETAIL       = "pages-activity/activityDetail/activityDetail?IsSendWx=1&id="  //研选活动详情
 	WX_MSG_PATH_YX_SIGNUP_DETAIL         = "pages-message/activityTemplate/activityTemplate?id="          //研选报名详情
 	WX_MSG_PATH_YX_SIGNUP_DETAIL         = "pages-message/activityTemplate/activityTemplate?id="          //研选报名详情
-	WX_MSG_PATH_YX_ARTICLE_DETAIL        = "pages-user/reportDetail/reportDetail?id="                     //研选纪要详情
+	WX_MSG_PATH_YX_ARTICLE_DETAIL        = "pages-user/reportDetail/reportDetail?IsSendWx=1&id="          //研选纪要详情
 )
 )
 
 
 //2:文章详情  https://web.hzinsights.com/material/info/8436  小程序路径:/pageMy/reportDetail/reportDetail?id=
 //2:文章详情  https://web.hzinsights.com/material/info/8436  小程序路径:/pageMy/reportDetail/reportDetail?id=

+ 5 - 10
utils/wechat_cert.go

@@ -3,10 +3,10 @@ package utils
 import (
 import (
 	"context"
 	"context"
 	"fmt"
 	"fmt"
+	"github.com/beego/beego/v2/core/utils"
 	"github.com/wechatpay-apiv3/wechatpay-go/core"
 	"github.com/wechatpay-apiv3/wechatpay-go/core"
 	"github.com/wechatpay-apiv3/wechatpay-go/core/option"
 	"github.com/wechatpay-apiv3/wechatpay-go/core/option"
 	payUtils "github.com/wechatpay-apiv3/wechatpay-go/utils"
 	payUtils "github.com/wechatpay-apiv3/wechatpay-go/utils"
-	"os"
 )
 )
 
 
 var WechatCertClient *core.Client
 var WechatCertClient *core.Client
@@ -21,15 +21,10 @@ const (
 
 
 // 微信商户建立连接
 // 微信商户建立连接
 func init() {
 func init() {
-	if RunMode != "release" {
-		_, err := os.Stat(MchPKFileName) // 判断证书路径是否存在,非生产环境不做判断。
-		if err != nil {
-			//fmt.Println(err)
-			go SendAlarmMsg("微信商户链接失败 os.Stat"+err.Error(), 2)
-			FileLog.Info("WechatCertClient err:" + err.Error())
-			err = nil
-			return
-		}
+	if !utils.FileExists(MchPKFileName) {
+		//fmt.Println("商户私钥文件不存在")
+		go SendAlarmMsg("微信商户链接失败 商户私钥文件不存在", 2)
+		return
 	}
 	}
 
 
 	// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
 	// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名