xingzai 1 yıl önce
ebeveyn
işleme
3befc73611

+ 1 - 0
controllers/activity.go

@@ -872,6 +872,7 @@ func (this *ActivityController) Detail() {
 			return
 		}
 		detailResp.SignupType = mapActivitySignup[activityId]
+		detailResp.ShareImg = services.GetActivityShareImg(activityInfo)
 		resp.Detail = detailResp
 	} else {
 		hasPermission, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermission(user)

+ 1 - 0
controllers/activity_special.go

@@ -160,6 +160,7 @@ func (this *ActivitySpecialController) SpecialDetail() {
 		}
 		activityInfo.TripNum = tripTota
 		activityInfo.ActivityTypeName = "专项调研"
+		activityInfo.ShareImg = services.GetActivitySpecialShareImg(activityInfo)
 		resp.Detail = activityInfo
 		resp.Detail = activityInfo
 	} else {

+ 2 - 0
controllers/article.go

@@ -69,6 +69,8 @@ func (this *ArticleController) Detail() {
 	if strings.Contains(detail.CategoryName, utils.CHART_PERMISSION_NAME_YANXUAN) {
 		resp.IsResearch = true
 	}
+	detail.ShareImg = services.GetArticleShareImg(articleId)
+
 	// 高毅资产的联系人,有权限的行业也不能查看报告详情页。提示无权限页面
 	if detail.ArticleTypeId == 0 && user.CompanyId == utils.GAO_YI_ZI_CHAN_COMPANY_ID {
 		_, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermissionArticle(user)

+ 1 - 0
controllers/product_interior.go

@@ -120,6 +120,7 @@ func (this *ProductInteriorController) Detail() {
 		return
 	}
 	detail.PublishTime = utils.TimeRemoveHms2(detail.PublishTime)
+	detail.ShareImg = utils.PRODUCT_INTERIOR_SHARE_IMG
 	resp.Detail = detail
 	detail.BodySlice = services.GetProductInteriorUrlBody(detail.Body)
 	resp.Disclaimers = utils.DISCLAIMERS_PRODUCT_INTERIOR // 免责声明

+ 1 - 1
controllers/yanxuan_special.go

@@ -259,7 +259,7 @@ func (this *YanxuanSpecialNoLoginController) Detail() {
 	//if resp.HasPermission != 1 || sysUser.UserId == 0 {
 	//	resp.Content = utils.InterceptHtmlLength(resp.Content, 240)
 	//}
-
+	resp.ShareImg = utils.YANXUAN_SPECIAL_SHARE_IMG
 	br.Data = resp
 	br.Ret = 200
 	br.Success = true

+ 1 - 0
models/activity.go

@@ -234,6 +234,7 @@ type ActivityListResp struct {
 	CancelDeadline          string                     `description:"取消报名截止时间"`
 	IsYidongActivity        bool                       `description:"是否属于易董同步过来的活动"`
 	TopTime                 int                        `description:"置顶时间"`
+	ShareImg                string                     `description:"分享图片"`
 }
 
 type ActivityCheck struct {

+ 23 - 0
models/activity_share_img.go

@@ -0,0 +1,23 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+)
+
+type CygxActivityShareImgResp struct {
+	Id                  int    `description:"主键ID"`
+	ActivityTypeId      int    `description:"活动类型ID,默认值为0"`
+	ActivityTypeName    string `description:"活动类型名称"`
+	ChartPermissionId   int    `description:"表chart_permission中的ID,默认值为0"`
+	ChartPermissionName string `description:"行业名称"`
+	City                string `description:"城市"`
+	Img                 string `description:"图片地址"`
+}
+
+// 根据活动类型,行业或者城市,获取对应的封面图片
+func CygxActivityShareImgDetail(activityTypeId, chartPermissionId int, city string) (item *CygxActivityShareImgResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT   *  FROM  cygx_activity_share_img WHERE activity_type_id = ? AND  (chart_permission_id = ? OR  city = ? )  LIMIT  1 `
+	err = o.Raw(sql, activityTypeId, chartPermissionId, city).QueryRow(&item)
+	return
+}

+ 1 - 0
models/activity_special.go

@@ -39,6 +39,7 @@ type CygxActivitySpecialDetail struct {
 	TripStatus            int    `description:"行程进行状态 1:预报名,2:确定行程"`
 	Explain               string `description:"说明"`
 	AdminId               int    `description:"管理员ID"`
+	ShareImg              string `description:"分享图片"`
 }
 
 // 获取数量

+ 1 - 0
models/article.go

@@ -79,6 +79,7 @@ type ArticleDetail struct {
 	SubCategoryName          string          `description:"二级分类"`
 	ArticleTypeId            int             `description:"文章类型ID"`
 	IsApplyAppointmentExpert bool            `description:"是否属于专家访谈"`
+	ShareImg                 string          `description:"分享图片"`
 }
 
 type CygxArticleIdReq struct {

+ 9 - 1
models/article_data.go

@@ -24,7 +24,7 @@ type ComapnyNameResp struct {
 	ComapnyName string `description:"公司民称"`
 }
 
-//列表
+// 列表
 func CygxArticleDataList(condition string, pars []interface{}) (items []*CygxArticleDataResp, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
@@ -44,3 +44,11 @@ func CygxArticleDataList(condition string, pars []interface{}) (items []*CygxArt
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+// 获取文章封面
+func CygxCygxArticleDataDetail(articleId int) (item *CygxArticleDataResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT   *  FROM  cygx_article_data WHERE article_id  = ?  LIMIT  1 `
+	err = o.Raw(sql, articleId).QueryRow(&item)
+	return
+}

+ 3 - 2
models/cygx_yanxuan_special.go

@@ -68,8 +68,9 @@ type CygxYanxuanSpecialResp struct {
 	Docs            []Doc
 	CompanyTags     []string
 	IndustryTags    []string
-	HasPermission   int  `description:"1:正常展示,2:不展示"`
-	IsApprovalAdmin bool // 是否是审批人员
+	HasPermission   int    `description:"1:正常展示,2:不展示"`
+	IsApprovalAdmin bool   // 是否是审批人员
+	ShareImg        string `description:"分享图片"`
 }
 
 type Doc struct {

+ 1 - 0
models/product_interior.go

@@ -86,6 +86,7 @@ type CygxProductInteriorResp struct {
 	Abstract          string                    `description:"摘要"`
 	Department        string                    `description:"作者"`
 	Pv                int                       `description:"PV"`
+	ShareImg          string                    `description:"分享图片"`
 }
 
 type ProductInteriorUrlResp struct {

+ 32 - 1
services/activity.go

@@ -1538,7 +1538,7 @@ func GetActivityDetailUserPower(user *models.WxUserItem, activityInfo *models.Ac
 		}
 	}
 	if havePower && activityInfo.LimitPeopleNum > 0 {
-		//对于一些特殊的活动,即使权限满足也不给
+		//对于一些特殊的活动,即使权限满足也不给
 		noPower, e := GetShareNoPowe(activityInfo, permissionStr, userType, user)
 		if e != nil {
 			err = errors.New("GetShareNoPowe, Err: " + e.Error())
@@ -1849,3 +1849,34 @@ func ActivityVideoUserRmind(user *models.WxUserItem, activityId, fileType int) (
 	}
 	return
 }
+
+// 获取活动分享封面图片
+func GetActivityShareImg(activityDetail *models.ActivityDetail) (shareImg string) {
+	var err error
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("获取活动分享封面图片失败Err:", err.Error(), "活动ID:", activityDetail.ActivityId), 2)
+		}
+	}()
+	activityTypeId := activityDetail.ActivityTypeId
+	chartPermissionId := activityDetail.ChartPermissionId
+	city := activityDetail.City
+
+	//分析师C类电话会,等于分析师电话会
+	if activityTypeId == 7 {
+		activityTypeId = 2
+	}
+	defaultCity := []string{"北京", "广州", "杭州", "南京", "上海", "深圳", "苏州"} //几个默认城市
+	if city != "" {
+		if !utils.InArrayByStr(defaultCity, city) {
+			city = "其他"
+		}
+	}
+	imgDetail, e := models.CygxActivityShareImgDetail(activityTypeId, chartPermissionId, city)
+	if e != nil {
+		err = errors.New("CygxActivityShareImgDetail, Err: " + e.Error())
+		return
+	}
+	shareImg = imgDetail.Img
+	return
+}

+ 20 - 0
services/activity_special.go

@@ -1062,3 +1062,23 @@ func SendWxMsgActivitySpecial10(activityInfo *models.CygxActivitySpecialDetail)
 	}
 	return
 }
+
+// 获取专项调研活动分享封面图片
+func GetActivitySpecialShareImg(activityDetail *models.CygxActivitySpecialDetail) (shareImg string) {
+	var err error
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg(fmt.Sprint("获取专项调研活动分享封面图片失败Err:", err.Error(), "活动ID:", activityDetail.ActivityId), 2)
+		}
+	}()
+	activityTypeId := 0
+	chartPermissionId := activityDetail.ChartPermissionId
+	city := ""
+	imgDetail, e := models.CygxActivityShareImgDetail(activityTypeId, chartPermissionId, city)
+	if e != nil {
+		err = errors.New("CygxActivityShareImgDetail, Err: " + e.Error())
+		return
+	}
+	shareImg = imgDetail.Img
+	return
+}

+ 22 - 0
services/article.go

@@ -776,3 +776,25 @@ func GetYxArticleIdMap(articleIds []int) (mapResp map[int]bool) {
 	}
 	return
 }
+
+// 获取报告分享图片
+func GetArticleShareImg(articleId int) (shareImg string) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("获取活动分享封面图片失败 GetArticleShareImg Err:", err.Error(), "活动ID:", articleId), 2)
+		}
+	}()
+	imgDetail, e := models.CygxCygxArticleDataDetail(articleId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("CygxCygxArticleDataDetail, Err: " + e.Error())
+		return
+	}
+	if imgDetail != nil {
+		shareImg = imgDetail.Cover
+	} else {
+		shareImg = utils.YANXUAN_ARTICLE_SHARE_IMG
+	}
+	return
+}

+ 6 - 0
utils/constants.go

@@ -270,3 +270,9 @@ const (
 	COMPANY_STATUS_POTENTIAL = "潜在"
 	COMPANY_STATUS_CLOSE     = "关闭"
 )
+
+const (
+	PRODUCT_INTERIOR_SHARE_IMG string = "https://hzstatic.hzinsights.com/static/images/202402/20240205/wlSvE6xyT1L9ly4doDhxLO14RMwz.png" //产品内测分享图片
+	YANXUAN_SPECIAL_SHARE_IMG  string = "https://hzstatic.hzinsights.com/static/images/202402/20240205/JNxgV260CgccDfKWFFRnip37ulUA.png" //研选专栏分享图片
+	YANXUAN_ARTICLE_SHARE_IMG  string = "https://hzstatic.hzinsights.com/static/images/202402/20240205/Ns2nqEx1piNGB7YthA6AfQOeiJMh.png" //研选报告分享图片
+)