浏览代码

Merge branch 'master' of http://8.136.199.33:3000/cxzhang/hongze_mfyx into mfyx_2.0

xingzai 10 月之前
父节点
当前提交
34b8ff3790

+ 1 - 1
controllers/activity.go

@@ -1472,7 +1472,7 @@ func (this *ActivityCoAntroller) AskAdd() {
 		}
 		}
 		// 给所属销售发送消息
 		// 给所属销售发送消息
 		if sellerItem != nil {
 		if sellerItem != nil {
-			openIdList, e := models.GetUserRecordListByMobile(4, sellerItem.Mobile+","+utils.WxMsgTemplateIdAskMsgMobilePublic)
+			openIdList, e := models.GetUserRecordListByMobile(12, sellerItem.Mobile+","+utils.WxMsgTemplateIdAskMsgMobilePublic)
 			if e != nil {
 			if e != nil {
 				err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
 				err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
 				return
 				return

+ 66 - 0
controllers/micro_roadshow.go

@@ -0,0 +1,66 @@
+package controllers
+
+import "hongze/hongze_mfyx/models"
+
+// 微路演 (查看留言详情,之前老的项目写到这个模块下了)
+type MicroRoadShowController struct {
+	BaseAuthController
+}
+
+// @Title 模版消息留言详情
+// @Description 模版消息留言详情接口
+// @Param   SourceId		query	int		true	"资源ID"
+// @Param   SourceType	query	int		true	"留言类型,1:文章、2:活动、3:微路演视频、4:活动视频、5:活动音频"
+// @Success Ret=200 {object} models.CygxArticleCommentWxResp
+// @router /comment/detail [get]
+func (this *MicroRoadShowController) CommentDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	sourceId, _ := this.GetInt("SourceId")
+	sourceType, _ := this.GetInt("SourceType")
+	resp := new(models.CygxArticleCommentWxResp)
+	if sourceType == 1 || sourceType == 3 || sourceType == 4 || sourceType == 5 {
+		detail, err := models.GetArticleCommentById(sourceId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
+			return
+		}
+		resp.Content = detail.Content
+		if sourceType == 1 {
+			resp.SourceId = detail.ArticleId
+			resp.RedirectType = 1
+		} else if sourceType == 3 {
+			resp.SourceId = detail.IndustryId
+			resp.RedirectType = 3
+		} else {
+			resp.SourceId = detail.ActivityId
+			resp.RedirectType = 2
+		}
+	} else {
+		detail, err := models.GetCygxActivityHelpAskById(sourceId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
+			return
+		}
+		resp.Content = detail.Content
+		resp.SourceId = detail.ActivityId
+		resp.RedirectType = 2
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Data = resp
+	br.Msg = "操作成功"
+	return
+}

+ 2 - 2
controllers/user.go

@@ -1260,9 +1260,9 @@ func (this *UserController) ApplyTryOut() {
 	if sellerItem == nil {
 	if sellerItem == nil {
 		go services.SendPermissionApplyTemplateMsgAdmin(req, mobile, applyMethod, categoryApplyMethod, redirectUrl, isResearch)
 		go services.SendPermissionApplyTemplateMsgAdmin(req, mobile, applyMethod, categoryApplyMethod, redirectUrl, isResearch)
 	} else {
 	} else {
-		openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
+		openIpItem, _ := models.GetUserRecordByMobile(12, sellerItem.Mobile)
 		if openIpItem != nil && openIpItem.OpenId != "" {
 		if openIpItem != nil && openIpItem.OpenId != "" {
-			go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, openIpItem)
+			//go services.SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, mobile, applyMethod, openIpItem)
 			go services.SendPermissionApplyCategoryTemplateMsg(req.RealName, req.CompanyName, mobile, categoryApplyMethod, openIpItem, redirectUrl)
 			go services.SendPermissionApplyCategoryTemplateMsg(req.RealName, req.CompanyName, mobile, categoryApplyMethod, openIpItem, redirectUrl)
 		}
 		}
 	}
 	}

+ 1 - 1
controllers/yanxuan_special.go

@@ -47,7 +47,7 @@ func (this *BaseAuthMobileController) List() {
 
 
 	var startSize int
 	var startSize int
 	if pageSize <= 0 {
 	if pageSize <= 0 {
-		pageSize = utils.PageSize20
+		pageSize = utils.PageSize50
 	}
 	}
 	if currentIndex <= 0 {
 	if currentIndex <= 0 {
 		currentIndex = 1
 		currentIndex = 1

+ 7 - 0
models/activity_help_ask.go

@@ -76,3 +76,10 @@ func GetArticleAskList(userId int) (items []*CygxAskList, err error) {
 	_, err = o.Raw(sql, userId).QueryRows(&items)
 	_, err = o.Raw(sql, userId).QueryRows(&items)
 	return
 	return
 }
 }
+
+// 通过ID获取详情
+func GetCygxActivityHelpAskById(id int) (item *CygxActivityHelpAsk, err error) {
+	sql := `SELECT * FROM cygx_activity_help_ask WHERE ask_id=? `
+	err = orm.NewOrm().Raw(sql, id).QueryRow(&item)
+	return
+}

+ 3 - 41
models/user_record.go

@@ -99,7 +99,7 @@ func ModifyUserRecordSessionKey(openId, sessionKey string) (err error) {
 // 根据用户id和平台id获取用户关系
 // 根据用户id和平台id获取用户关系
 func GetUserRecordByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
 func GetUserRecordByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
 	var sql string
 	var sql string
-	sql = `SELECT open_id,cygx_user_id AS user_id  FROM	cygx_user_record  WHERE	1 = 1  AND cygx_bind_account = ?`
+	sql = `SELECT open_id,cygx_user_id AS user_id  FROM	cygx_mfyx_gzh_user_record  WHERE	1 = 1  AND cygx_bind_account = ?`
 	err = orm.NewOrm().Raw(sql, bindAccount).QueryRow(&item)
 	err = orm.NewOrm().Raw(sql, bindAccount).QueryRow(&item)
 	return
 	return
 }
 }
@@ -115,36 +115,16 @@ func GetUserThirdRecordByUserId(userId int) (item *UserRecord, err error) {
 // 根据手机号获取用户的openid
 // 根据手机号获取用户的openid
 func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenIdList, err error) {
 func GetUserRecordListByMobile(platform int, bindAccount string) (items []*OpenIdList, err error) {
 	var sql string
 	var sql string
-	//if utils.RunMode == "release" {
-	//	sql = `SELECT cr.open_id,user_id FROM user_record  as u
-	//		INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id
-	//		WHERE create_platform=? AND bind_account IN (` + bindAccount + `)`
-	//} else {
-	//	platform = 1
-	//	sql = `SELECT open_id,user_id FROM	user_record  WHERE create_platform =? AND bind_account IN (` + bindAccount + `)`
-	//}
 	sql = `SELECT
 	sql = `SELECT
 			cr.open_id,
 			cr.open_id,
 			cr.cygx_user_id as  user_id 
 			cr.cygx_user_id as  user_id 
 		FROM
 		FROM
-		  cygx_user_record  as cr 
+		  cygx_mfyx_gzh_user_record  as cr 
 		WHERE 1= 1	AND cygx_bind_account IN (` + bindAccount + `)`
 		WHERE 1= 1	AND cygx_bind_account IN (` + bindAccount + `)`
 	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
 	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
 	return
 	return
 }
 }
 
 
-//// 获取单个用户openid
-//func GetOpenIdDetailByMobile(platform int, bindAccount string) (item *OpenIdList, err error) {
-//	o := orm.NewOrm()
-//	var sql string
-//	sql = `SELECT cr.open_id,wu.user_id FROM user_record  as u
-//			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id
-//			INNER JOIN wx_user AS wu ON wu.mobile = u.bind_account
-//			WHERE create_platform=? AND u.bind_account = ?`
-//	err = o.Raw(sql, platform, bindAccount).QueryRow(&item)
-//	return
-//}
-
 func GetOpenIdByUserIds(ids string) (item []*OpenIdList, err error) {
 func GetOpenIdByUserIds(ids string) (item []*OpenIdList, err error) {
 	o := orm.NewOrm()
 	o := orm.NewOrm()
 	var sql string
 	var sql string
@@ -158,24 +138,6 @@ func GetOpenIdByUserIds(ids string) (item []*OpenIdList, err error) {
 	return
 	return
 }
 }
 
 
-//// 根据手机号获取用户的openid
-//func GetUserRecordListByMobileArr(bindAccount []string) (items []*OpenIdList, err error) {
-//	lenarr := len(bindAccount)
-//	if lenarr == 0 {
-//		return
-//	}
-//	var condition string
-//	var pars []interface{}
-//	condition = ` AND u.bind_account IN (` + utils.GetOrmInReplace(lenarr) + `)`
-//	pars = append(pars, bindAccount)
-//	sql := `SELECT cr.open_id,u.user_id
-//			FROM user_record  as u
-//			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id
-//			WHERE u.create_platform=4 ` + condition
-//	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
-//	return
-//}
-
 // 根据手机号获取用户的openid
 // 根据手机号获取用户的openid
 func GetUserRecordListByMobileArr(mobiles []string) (items []*OpenIdList, err error) {
 func GetUserRecordListByMobileArr(mobiles []string) (items []*OpenIdList, err error) {
 	o := orm.NewOrm()
 	o := orm.NewOrm()
@@ -191,7 +153,7 @@ func GetUserRecordListByMobileArr(mobiles []string) (items []*OpenIdList, err er
 			u.open_id,
 			u.open_id,
 			u.cygx_user_id AS user_id 
 			u.cygx_user_id AS user_id 
 		FROM
 		FROM
-			cygx_user_record AS u 
+			cygx_mfyx_gzh_user_record AS u 
 		WHERE
 		WHERE
 			1 = 1  ` + condition
 			1 = 1  ` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	_, err = o.Raw(sql, pars).QueryRows(&items)

+ 2 - 2
models/wx_template_msg.go

@@ -34,7 +34,7 @@ func GetWxOpenIdByMobileList(mobile string) (items []*OpenIdList, err error) {
 	sql := ` SELECT
 	sql := ` SELECT
 				union_id,open_id,
 				union_id,open_id,
 				cygx_user_id AS user_id
 				cygx_user_id AS user_id
-				FROM cygx_user_record	WHERE	1 = 1	AND cygx_bind_account IN (` + mobile + `)`
+				FROM cygx_mfyx_gzh_user_record	WHERE	1 = 1	AND cygx_bind_account IN (` + mobile + `)`
 	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
 	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
 	return
 	return
 }
 }
@@ -90,7 +90,7 @@ func GetWxOpenIdByMobileSliceList(mobiles []string) (items []*OpenIdList, err er
 			u.open_id,
 			u.open_id,
 			u.cygx_user_id AS user_id 
 			u.cygx_user_id AS user_id 
 		FROM
 		FROM
-			cygx_user_record AS u 
+			cygx_mfyx_gzh_user_record AS u 
 		WHERE
 		WHERE
 			1 = 1  ` + condition
 			1 = 1  ` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	_, err = o.Raw(sql, pars).QueryRows(&items)

+ 9 - 0
routers/commentsRouter.go

@@ -304,6 +304,15 @@ func init() {
             Filters: nil,
             Filters: nil,
             Params: nil})
             Params: nil})
 
 
+    beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:MicroRoadShowController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:MicroRoadShowController"],
+        beego.ControllerComments{
+            Method: "CommentDetail",
+            Router: `/comment/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"],
     beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"],
         beego.ControllerComments{
         beego.ControllerComments{
             Method: "AddByActivity",
             Method: "AddByActivity",

+ 5 - 0
routers/router.go

@@ -113,6 +113,11 @@ func init() {
 				&controllers.AdviceController{},
 				&controllers.AdviceController{},
 			),
 			),
 		),
 		),
+		web.NSNamespace("/micro_roadshow",
+			web.NSInclude(
+				&controllers.MicroRoadShowController{},
+			),
+		),
 		web.NSNamespace("/order",
 		web.NSNamespace("/order",
 			web.NSInclude(
 			web.NSInclude(
 				&controllers.OrderController{},
 				&controllers.OrderController{},

+ 2 - 2
services/activity.go

@@ -795,7 +795,7 @@ func ActivityUserRemind(user *models.WxUserItem, activityDetail *models.Activity
 	} else if source == 4 {
 	} else if source == 4 {
 		sourceMsg = "活动报名"
 		sourceMsg = "活动报名"
 	}
 	}
-	openIdList, e := models.GetUserRecordListByMobile(4, sellerItemQy.Mobile)
+	openIdList, e := models.GetUserRecordListByMobile(12, sellerItemQy.Mobile)
 	if e != nil {
 	if e != nil {
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error())
 		return err
 		return err
@@ -804,7 +804,7 @@ func ActivityUserRemind(user *models.WxUserItem, activityDetail *models.Activity
 	var keyword2 string
 	var keyword2 string
 	keyword1 = activityDetail.ActivityName
 	keyword1 = activityDetail.ActivityName
 	keyword2 = fmt.Sprint("互动:", sourceMsg, ",", user.RealName, "--", user.CompanyName)
 	keyword2 = fmt.Sprint("互动:", sourceMsg, ",", user.RealName, "--", user.CompanyName)
-	SendWxMsgWithActivityUserRemind(keyword1, keyword2, openIdList, activityDetail.ActivityId)
+	//SendWxMsgWithActivityUserRemind(keyword1, keyword2, openIdList, activityDetail.ActivityId)
 
 
 	// 类目模版
 	// 类目模版
 	keyword1 = utils.TruncateActivityNameString(user.RealName + "-" + user.CompanyName)
 	keyword1 = utils.TruncateActivityNameString(user.RealName + "-" + user.CompanyName)

+ 5 - 6
services/sms.go

@@ -22,15 +22,14 @@ func SendSmsCode(mobile, vcode string) bool {
 	err = json.Unmarshal(result, &netReturn)
 	err = json.Unmarshal(result, &netReturn)
 	if err != nil {
 	if err != nil {
 		go utils.SendAlarmMsg("短信验证码发送失败err:"+err.Error()+" result"+string(result)+"mobile:"+mobile, 1)
 		go utils.SendAlarmMsg("短信验证码发送失败err:"+err.Error()+" result"+string(result)+"mobile:"+mobile, 1)
-		go utils.SendEmail("短信验证码发送失败", "err:"+err.Error()+" result"+string(result), utils.EmailSendToUsers)
+		//go utils.SendEmail("短信验证码发送失败", "err:"+err.Error()+" result"+string(result), utils.EmailSendToUsers)
 		flag = false
 		flag = false
 	}
 	}
 	if netReturn["error_code"].(float64) == 0 {
 	if netReturn["error_code"].(float64) == 0 {
 		fmt.Printf("接口返回result字段是:\r\n%v", netReturn["result"])
 		fmt.Printf("接口返回result字段是:\r\n%v", netReturn["result"])
 		flag = true
 		flag = true
 	} else {
 	} else {
-		go utils.SendAlarmMsg("短信验证码发送失败err:"+err.Error()+" result"+string(result)+"mobile:"+mobile, 1)
-		go utils.SendEmail("短信验证码发送失败", " result"+string(result), utils.EmailSendToUsers)
+		go utils.SendAlarmMsg("短信验证码发送失败 result"+string(result)+"mobile:"+mobile, 1)
 		flag = false
 		flag = false
 	}
 	}
 	return flag
 	return flag
@@ -75,15 +74,15 @@ func SendSmsCodeGj(mobile, vcode, areaNum string) bool {
 	err = json.Unmarshal(result, &netReturn)
 	err = json.Unmarshal(result, &netReturn)
 	if err != nil {
 	if err != nil {
 		go utils.SendAlarmMsg("国际短信验证码发送失败err:"+err.Error()+" result"+string(result)+"mobile:"+mobile, 1)
 		go utils.SendAlarmMsg("国际短信验证码发送失败err:"+err.Error()+" result"+string(result)+"mobile:"+mobile, 1)
-		go utils.SendEmail("国际短信验证码发送失败", "err:"+err.Error()+" result"+string(result), utils.EmailSendToUsers)
+		//go utils.SendEmail("国际短信验证码发送失败", "err:"+err.Error()+" result"+string(result), utils.EmailSendToUsers)
 		flag = false
 		flag = false
 	}
 	}
 	if netReturn["error_code"].(float64) == 0 {
 	if netReturn["error_code"].(float64) == 0 {
 		fmt.Printf("接口返回result字段是:\r\n%v", netReturn["result"])
 		fmt.Printf("接口返回result字段是:\r\n%v", netReturn["result"])
 		flag = true
 		flag = true
 	} else {
 	} else {
-		go utils.SendAlarmMsg("国际短信验证码发送失败err:"+err.Error()+" result"+string(result)+"mobile:"+mobile, 1)
-		go utils.SendEmail("国际短信验证码发送失败", " result"+string(result), utils.EmailSendToUsers)
+		go utils.SendAlarmMsg("国际短信验证码发送失败 result"+string(result)+"mobile:"+mobile, 1)
+		//go utils.SendEmail("国际短信验证码发送失败", " result"+string(result), utils.EmailSendToUsers)
 		flag = false
 		flag = false
 	}
 	}
 	return flag
 	return flag

+ 2 - 2
services/user.go

@@ -1168,14 +1168,14 @@ func SendPermissionApplyTemplateMsgAdmin(req models.ApplyTryReq, usermobile, app
 		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
 		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
 		return
 		return
 	}
 	}
-	openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue)
+	openIdList, e := models.GetUserRecordListByMobile(12, cnf.ConfigValue)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
 		return err
 		return err
 	}
 	}
 
 
 	for _, v := range openIdList {
 	for _, v := range openIdList {
-		go SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, usermobile, applyMethod, v)
+		//go SendPermissionApplyTemplateMsg(req.RealName, req.CompanyName, usermobile, applyMethod, v)
 		go SendPermissionApplyCategoryTemplateMsg(req.RealName, req.CompanyName, usermobile, categoryApplyMethod, v, redirectUrl)
 		go SendPermissionApplyCategoryTemplateMsg(req.RealName, req.CompanyName, usermobile, categoryApplyMethod, v, redirectUrl)
 	}
 	}
 
 

+ 52 - 4
services/wx_category_template_msg.go

@@ -182,7 +182,7 @@ func SendNeiRongZuActivitieSignCategoryTemplateMsg(user *models.WxUserItem, acti
 		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
 		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
 		return
 		return
 	}
 	}
-	openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue+","+sellerItemQy.Mobile+","+utils.MobileShenTao)
+	openIdList, e := models.GetUserRecordListByMobile(12, cnf.ConfigValue+","+sellerItemQy.Mobile+","+utils.MobileShenTao)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
 		return
 		return
@@ -236,7 +236,7 @@ func SendActivitieCancelSignCategoryTemplateMsg(user *models.WxUserItem, activit
 		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
 		err = errors.New("GetConfigByCode, Err: " + e.Error() + configCode)
 		return
 		return
 	}
 	}
-	openIdList, e := models.GetUserRecordListByMobile(4, cnf.ConfigValue+","+sellerItemQy.Mobile+","+utils.MobileShenTao)
+	openIdList, e := models.GetUserRecordListByMobile(12, cnf.ConfigValue+","+sellerItemQy.Mobile+","+utils.MobileShenTao)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
 		err = errors.New("GetUserRecordListByMobile, Err: " + e.Error() + cnf.ConfigValue)
 		return
 		return
@@ -441,7 +441,7 @@ func SendReviewCategoryTemplateMsgAdmin(specialId int) (err error) {
 		}
 		}
 	}()
 	}()
 	//王芳、葛琳和沈涛
 	//王芳、葛琳和沈涛
-	openIdList, e := models.GetUserRecordListByMobile(4, utils.WxMsgTemplateIdYXSpecialReview)
+	openIdList, e := models.GetUserRecordListByMobile(12, utils.WxMsgTemplateIdYXSpecialReview)
 	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())
 		return err
 		return err
@@ -513,7 +513,7 @@ func SendWxCategoryMsgSpecialAuthor(specialId, status int) (err error) {
 		return err
 		return err
 	}
 	}
 
 
-	openIdList, err := models.GetUserRecordListByMobile(4, user.Mobile)
+	openIdList, err := models.GetUserRecordListByMobile(12, user.Mobile)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return err
 		return err
 	}
 	}
@@ -763,3 +763,51 @@ func SearchKeywordUserRmindCategoryMsg(user *models.WxUserItem, keyWord string)
 	}
 	}
 	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
+}

+ 22 - 21
utils/constants.go

@@ -21,6 +21,7 @@ const (
 	PageSize10             = 10
 	PageSize10             = 10
 	PageSize20             = 20
 	PageSize20             = 20
 	PageSize30             = 30
 	PageSize30             = 30
+	PageSize50             = 50
 )
 )
 
 
 // 客户状态
 // 客户状态
@@ -99,11 +100,11 @@ const (
 	CHART_PERMISSION_NAME_YANXUAN    string = "研选"
 	CHART_PERMISSION_NAME_YANXUAN    string = "研选"
 	MAI_FANG_YAN_XUAN_NAME           string = "买方研选"
 	MAI_FANG_YAN_XUAN_NAME           string = "买方研选"
 	CHART_PERMISSION_NAME_MF_YANXUAN string = "研选订阅"
 	CHART_PERMISSION_NAME_MF_YANXUAN string = "研选订阅"
-	CHART_PERMISSION_ID_YANXUAN      int    = 31      //权限研选订阅id
-	YAN_XUAN_KOU_DIAN_BAO_ID         int    = 52      //研选扣点包ID
+	CHART_PERMISSION_ID_YANXUAN      int    = 31           //权限研选订阅id
+	YAN_XUAN_KOU_DIAN_BAO_ID         int    = 52           //研选扣点包ID
 	YAN_XUAN_KOU_DIAN_BAO_NAME       string = "研选扣点包" //研选扣点包ID
 	YAN_XUAN_KOU_DIAN_BAO_NAME       string = "研选扣点包" //研选扣点包ID
-	C_CLASS_ACTIVITY_TYPE_ID         int    = 7       //C类电话会会议ID
-	ANALYST_TELL_ACTIVITY_TYPE_ID    int    = 2       //分析师电话会ID
+	C_CLASS_ACTIVITY_TYPE_ID         int    = 7            //C类电话会会议ID
+	ANALYST_TELL_ACTIVITY_TYPE_ID    int    = 2            //分析师电话会ID
 	CE_LUE_NAME                      string = "策略"
 	CE_LUE_NAME                      string = "策略"
 	CE_LUE_ID                        int    = 23
 	CE_LUE_ID                        int    = 23
 	YI_YAO_NAME                      string = "医药"
 	YI_YAO_NAME                      string = "医药"
@@ -119,7 +120,7 @@ const (
 	ZHI_ZAO_OTHER_IMG                string = "https://hzstatic.hzinsights.com/static/temp/20221118202211/20221118/SSaQcWzMk5slN3FkCwZifK3qcAWd.png" //智造其它图片
 	ZHI_ZAO_OTHER_IMG                string = "https://hzstatic.hzinsights.com/static/temp/20221118202211/20221118/SSaQcWzMk5slN3FkCwZifK3qcAWd.png" //智造其它图片
 	ZHI_ZAO_ID                       int    = 19
 	ZHI_ZAO_ID                       int    = 19
 	LINK_WX_EXPLAIN                         = "https://mp.weixin.qq.com/s?__biz=Mzg2OTYzODk0Nw==&mid=2247483662&idx=1&sn=3752df99025189b9d77fe658bfc0edbd&chksm=ce98b742f9ef3e54b49986e647dd951a3aad74f323174b252174e0938c264c0562c8ec455106#rd" //用户阅读数据
 	LINK_WX_EXPLAIN                         = "https://mp.weixin.qq.com/s?__biz=Mzg2OTYzODk0Nw==&mid=2247483662&idx=1&sn=3752df99025189b9d77fe658bfc0edbd&chksm=ce98b742f9ef3e54b49986e647dd951a3aad74f323174b252174e0938c264c0562c8ec455106#rd" //用户阅读数据
-	ACTIVITY_SPECIAL_EXPLAIN                = "预报名专项调研行程持续更新中,满10家即开团,欢迎点击感兴趣预报名"                                                                                                                                                                //用户阅读数据
+	ACTIVITY_SPECIAL_EXPLAIN                = "预报名专项调研行程持续更新中,满10家即开团,欢迎点击感兴趣预报名"                                                                                                                                   //用户阅读数据
 	HZ_COMPANY_ID                    int    = 16                                                                                                                                                                                                 // 弘则公司的ID
 	HZ_COMPANY_ID                    int    = 16                                                                                                                                                                                                 // 弘则公司的ID
 	HONG_GUAN_NAME                   string = "宏观"
 	HONG_GUAN_NAME                   string = "宏观"
 	HONG_GUAN_ID                     int    = 1
 	HONG_GUAN_ID                     int    = 1
@@ -129,7 +130,7 @@ const (
 	NO_YAN_XUAN_ARTICLE_TYPE_IDS     string = "13"                            // 不属于研选的报告类型ID
 	NO_YAN_XUAN_ARTICLE_TYPE_IDS     string = "13"                            // 不属于研选的报告类型ID
 	CYGX_TACTICS_TIME_LINE_STATUS    string = "cygx_tactics_time_line_status" // 策略时间线是否对外开放
 	CYGX_TACTICS_TIME_LINE_STATUS    string = "cygx_tactics_time_line_status" // 策略时间线是否对外开放
 	TIME_LINE_ID                     int    = 99999                           // 策略时间线的值
 	TIME_LINE_ID                     int    = 99999                           // 策略时间线的值
-	TIME_LINE_NAME                   string = "时间线"                           // 策略时间线的名称
+	TIME_LINE_NAME                   string = "时间线"                        // 策略时间线的名称
 	ACTEGORY_ID_AI_QY                int    = 61                              // AI前沿自定义ID
 	ACTEGORY_ID_AI_QY                int    = 61                              // AI前沿自定义ID
 )
 )
 
 
@@ -206,7 +207,7 @@ const (
 	WX_MSG_PATH_APPLY_COLLECTION_DETAIL  = "reportPages/bulletinDetail/bulletinDetail?id="                //精选看板申请详情页
 	WX_MSG_PATH_APPLY_COLLECTION_DETAIL  = "reportPages/bulletinDetail/bulletinDetail?id="                //精选看板申请详情页
 
 
 	WX_MSG_PATH_YX_SPECIAL_DETAIL        = "pages-purchaser/noteAndViewpoint/noteAndViewpoint?id="  //研选专栏详情
 	WX_MSG_PATH_YX_SPECIAL_DETAIL        = "pages-purchaser/noteAndViewpoint/noteAndViewpoint?id="  //研选专栏详情
-	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?id="       //研选活动详情
@@ -228,7 +229,7 @@ const (
 
 
 // 模板消息地址路由
 // 模板消息地址路由
 const (
 const (
-	ACtIVITY_SPECIAL_EXPLAIN      = "此类调研具体行程尚未确定,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确定行程中再次报名才完成占位。"                        //专项调研说明
+	ACtIVITY_SPECIAL_EXPLAIN      = "此类调研具体行程尚未确定,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确定行程中再次报名才完成占位。"                                             //专项调研说明
 	ACtIVITY_SPECIAL_TRIP_EXPLAIN = "此类调研时间安排已经确定,点击报名后按人次扣除对应机构的服务点数。由于每场活动人数有限,如果不能参加请提前48小时取消,未及时取消导致影响其他客户报名将会维持扣点。" //专项调研说明
 	ACtIVITY_SPECIAL_TRIP_EXPLAIN = "此类调研时间安排已经确定,点击报名后按人次扣除对应机构的服务点数。由于每场活动人数有限,如果不能参加请提前48小时取消,未及时取消导致影响其他客户报名将会维持扣点。" //专项调研说明
 )
 )
 
 
@@ -275,14 +276,14 @@ const (
 )
 )
 
 
 const (
 const (
-	CYGX_YANXUAN_SPECIAL   = "研选专栏"                   //用户阅读数据
-	CYGX_YANXUAN_ARTICLE   = "买方研选"                   //用户阅读数据
+	CYGX_YANXUAN_SPECIAL   = "研选专栏"               //用户阅读数据
+	CYGX_YANXUAN_ARTICLE   = "买方研选"               //用户阅读数据
 	CYGX_VIDEO_HISTORY_KEY = "CYGX_VIDEO_HISTORY_XCX" //路演播放Key 小程序、web端
 	CYGX_VIDEO_HISTORY_KEY = "CYGX_VIDEO_HISTORY_XCX" //路演播放Key 小程序、web端
 )
 )
 
 
 const (
 const (
 	ACTIVITY_ZJDHH_V1_MSG string = "该活动为非公开活动,如有专家访谈需求请联系对口销售" // 限制人数为1的专家电话会用户C端报名,提示消息内容
 	ACTIVITY_ZJDHH_V1_MSG string = "该活动为非公开活动,如有专家访谈需求请联系对口销售" // 限制人数为1的专家电话会用户C端报名,提示消息内容
-	FULLSTARFFED_MSG      string = "FullStarffed"              // 报名的时候人数已满的状态
+	FULLSTARFFED_MSG      string = "FullStarffed"                                      // 报名的时候人数已满的状态
 )
 )
 
 
 // GetWeeklyDatabase 获取 weekly_report 库名
 // GetWeeklyDatabase 获取 weekly_report 库名
@@ -306,17 +307,17 @@ const (
 
 
 // 首页自定义标签
 // 首页自定义标签
 const (
 const (
-	LABEL_L1_1 string = "全部活动"    // 全部活动
-	LABEL_L1_2 string = "买方交流"    // 买方交流
-	LABEL_L1_3 string = "专家调研"    // 专家调研
+	LABEL_L1_1 string = "全部活动"       // 全部活动
+	LABEL_L1_2 string = "买方交流"       // 买方交流
+	LABEL_L1_3 string = "专家调研"       // 专家调研
 	LABEL_L1_4 string = "上市公司小范围" // 上市公司小范围
 	LABEL_L1_4 string = "上市公司小范围" // 上市公司小范围
-	LABEL_L2_1 string = "全部报告"    // 全部报告
-	LABEL_L2_2 string = "专栏"      // 专栏
-	LABEL_L2_3 string = "纪要"      // 纪要
-	LABEL_L2_4 string = "买方沙龙"    // 买方沙龙
-	LABEL_L3_1 string = "主题a"     // 主题a
-	LABEL_L3_2 string = "主题b"     // 主题b
-	LABEL_L3_3 string = "主题c"     // 主题c
+	LABEL_L2_1 string = "全部报告"       // 全部报告
+	LABEL_L2_2 string = "专栏"           // 专栏
+	LABEL_L2_3 string = "纪要"           // 纪要
+	LABEL_L2_4 string = "买方沙龙"       // 买方沙龙
+	LABEL_L3_1 string = "主题a"          // 主题a
+	LABEL_L3_2 string = "主题b"          // 主题b
+	LABEL_L3_3 string = "主题c"          // 主题c
 )
 )
 
 
 const (
 const (