xingzai 1 рік тому
батько
коміт
05b940946d

+ 225 - 0
controllers/cygx/askserie_video.go

@@ -2,9 +2,12 @@ package cygx
 
 import (
 	"encoding/json"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
+	cygxService "hongze/hz_crm_api/services/cygx"
+	"hongze/hz_crm_api/utils"
 	"strconv"
 	"strings"
 	"time"
@@ -100,3 +103,225 @@ func (this *AskserieVideoController) PreserveAndPublish() {
 	br.IsAddLog = true
 	br.Msg = "操作成功"
 }
+
+// @Title 列表
+// @Description 列表接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   StartDate   query   string  false       "开始时间 ,列如2021-03-06 "
+// @Param   EndDate   query   string  false       "结束时间,列如2021-03-06 "
+// @Param   PublishStatus   query   int  true       "发布状态: -1-默认全部; 0-未发布; 1-已关注"
+// @Param   ChartPermissionId   query   string  false       "行业Id"
+// @Success Ret=200 {object} cygx.GetCygxTacticsTimeLineResp
+// @router /askserie_video/list [get]
+func (this *AskserieVideoController) List() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	resp := new(cygx.GetCygxAskserieVideoRespListResp)
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	publishStatus, _ := this.GetInt("PublishStatus", -1)
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+	var condition string
+	var pars []interface{}
+	//发布状态查询
+	if publishStatus == 0 || publishStatus == 1 {
+		condition += ` AND art.publish_status = ? `
+		pars = append(pars, publishStatus)
+	}
+	//起始日期查询
+	if startDate != "" && endDate != "" {
+		condition += ` 	AND art.publish_time  BETWEEN ?   AND  ? `
+		pars = append(pars, startDate, endDate)
+	}
+	//行业查询
+	if chartPermissionId > 0 {
+		condition += ` 	AND art.chart_permission_id = ?`
+		pars = append(pars, chartPermissionId)
+	}
+	total, err := cygx.GetCygxAskserieVideoCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	condition += "	ORDER BY art.modify_date DESC  "
+	list, err := cygx.GetCygxAskserieVideoList(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	var askserieVideoIds []int
+	for _, v := range list {
+		askserieVideoIds = append(askserieVideoIds, v.AskserieVideoId)
+	}
+
+	mapLabel := cygxService.GetCygxAskserieVideoLabelMap(askserieVideoIds) // 标签
+	for _, v := range list {
+		v.IndustryName = mapLabel[v.AskserieVideoId]
+	}
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp.List = list
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title  详情
+// @Description 获取详情接口
+// @Param   AskserieVideoId   query   int  true       "ID"
+// @Success Ret=200 {object} cygx.GetCygxProductInteriorDetailResp
+// @router /askserie_video/detail [get]
+func (this *AskserieVideoController) Detail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	AdminUser := this.SysUser
+	if AdminUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	resp := new(cygx.GetCygxAskserieVideoDetailResp)
+	askserieVideoId, _ := this.GetInt("AskserieVideoId")
+	if askserieVideoId < 1 {
+		br.Msg = "请输入详情ID"
+		return
+	}
+	detail, err := cygx.GetCygxAskserieVideoDetail(askserieVideoId)
+	if err != nil {
+		br.Msg = "详情不存在"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	//产业标签
+	industrialListMap := cygxService.GetCygxAskserieVideoLabelListMap([]int{askserieVideoId})
+	detail.ListIndustrial = industrialListMap[askserieVideoId]
+	resp.Detail = detail
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title  播放记录详情
+// @Description 播放记录详情接口
+// @Param   AskserieVideoId   query   int  true       "ID"
+// @Success Ret=200 {object} cygx.GetCygxProductInteriorDetailResp
+// @router /askserie_video/history_list [get]
+func (this *AskserieVideoController) HistoryList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	AdminUser := this.SysUser
+	if AdminUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	resp := new(cygx.CygxCygxAskserieVideoHistoryRecordListResp)
+	askserieVideoId, _ := this.GetInt("AskserieVideoId")
+	if askserieVideoId < 1 {
+		br.Msg = "请输入详情ID"
+		return
+	}
+	_, err := cygx.GetCygxAskserieVideoDetail(askserieVideoId)
+	if err != nil {
+		br.Msg = "详情不存在"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition = ` AND askserie_video_id = ?  ORDER BY id DESC  `
+	pars = append(pars, askserieVideoId)
+	list, err := cygx.GetCygxAskserieVideoHistoryRecordList(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title  留言记录详情
+// @Description 留言记录详情接口
+// @Param   AskserieVideoId   query   int  true       "ID"
+// @Success Ret=200 {object} cygx.GetCygxProductInteriorDetailResp
+// @router /askserie_video/collection_list [get]
+func (this *AskserieVideoController) CollectionList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	AdminUser := this.SysUser
+	if AdminUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	resp := new(cygx.CygxAskserieVideoCollectionListResp)
+	askserieVideoId, _ := this.GetInt("AskserieVideoId")
+	if askserieVideoId < 1 {
+		br.Msg = "请输入详情ID"
+		return
+	}
+	_, err := cygx.GetCygxAskserieVideoDetail(askserieVideoId)
+	if err != nil {
+		br.Msg = "详情不存在"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition = ` AND askserie_video_id = ?  ORDER BY id DESC  `
+	pars = append(pars, askserieVideoId)
+	list, err := cygx.GetCygxAskserieVideoCollectionList(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 50 - 14
models/cygx/askserie_video.go

@@ -6,6 +6,7 @@ import (
 	//"strconv"
 	//"strings"
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"strconv"
 	"strings"
 	"time"
@@ -41,20 +42,27 @@ type AddAskserieVideoReq struct {
 }
 
 type CygxAskserieVideoResp struct {
-	AskserieVideoId     int       `orm:"column(askserie_video_id);pk"description:"视频id"`
-	VideoName           string    `description:"视频标题"`
-	VideoUrl            string    `description:"视频地址"`
-	VideoDuration       string    `description:"视频时长"`
-	ChartPermissionId   int       `description:"行业ID"`
-	ChartPermissionName string    `description:"行业名称"`
-	PublishStatus       int       `description:"发布状态 1发布 0没有"`
-	VideoCounts         int       `description:"播放量"`
-	BackgroundImg       string    `description:"封面图片"`
-	ShareImg            string    `description:"分享图片"`
-	AdminId             int       `description:"管理员、销售ID"`
-	ModifyDate          time.Time `description:"更新时间"`
-	PublishDate         time.Time `description:"发布时间"`
-	CreateTime          time.Time `description:"创建时间"`
+	AskserieVideoId     int    `orm:"column(askserie_video_id);pk"description:"视频id"`
+	VideoName           string `description:"视频标题"`
+	VideoUrl            string `description:"视频地址"`
+	VideoDuration       string `description:"视频时长"`
+	ChartPermissionId   int    `description:"行业ID"`
+	ChartPermissionName string `description:"行业名称"`
+	PublishStatus       int    `description:"发布状态 1发布 0没有"`
+	VideoCounts         int    `description:"播放量"`
+	CommentNum          int    `description:"留言总数"`
+	BackgroundImg       string `description:"封面图片"`
+	ShareImg            string `description:"分享图片"`
+	AdminId             int    `description:"管理员、销售ID"`
+	IndustryName        string `description:"产业名称"`
+	ModifyDate          string `description:"更新时间"`
+	PublishDate         string `description:"发布时间"`
+	CreateTime          string `description:"创建时间"`
+	ListIndustrial      []*IndustrialActivityGroupManagementRep
+}
+
+type GetCygxAskserieVideoDetailResp struct {
+	Detail *CygxAskserieVideoResp
 }
 
 // 通过ID获取详情
@@ -157,3 +165,31 @@ func UpdateCygxAskserieVideo(item *CygxAskserieVideo, industrialManagementIds st
 
 	return
 }
+
+// 获取数量
+func GetCygxAskserieVideoCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_askserie_video as art WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
+// 列表
+func GetCygxAskserieVideoList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxAskserieVideoResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_askserie_video as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,?  `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+type GetCygxAskserieVideoRespListResp struct {
+	Paging *paging.PagingItem `description:"分页数据"`
+	List   []*CygxAskserieVideoResp
+}

+ 69 - 0
models/cygx/askserie_video_history_record.go

@@ -0,0 +1,69 @@
+package cygx
+
+import "github.com/beego/beego/v2/client/orm"
+
+type CygxAskserieVideoHistoryRecordResp struct {
+	Id               int    `orm:"column(id);pk"`
+	AskserieVideoId  int    `description:"askserie_video_id"`
+	UserId           int    `description:"用户ID"`
+	CreateTime       string `description:"创建时间"`
+	Mobile           string `description:"手机号"`
+	Email            string `description:"邮箱"`
+	CompanyId        int    `description:"公司id"`
+	CompanyName      string `description:"公司名称"`
+	RealName         string `description:"用户实际名称"`
+	SellerName       string `description:"所属销售"`
+	RegisterPlatform int    `description:"来源 1小程序,2:网页"`
+	ModifyTime       string `description:"更新时间"`
+	VideoDuration    string `description:"视频时长"`
+}
+
+// Pv数据列表
+type CygxCygxAskserieVideoHistoryRecordListResp struct {
+	//Paging *paging.PagingItem `description:"分页数据"`
+	List []*CygxAskserieVideoHistoryRecordResp
+}
+
+// 列表
+func GetCygxAskserieVideoHistoryRecordList(condition string, pars []interface{}) (items []*CygxAskserieVideoHistoryRecordResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_askserie_video_history_record as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+type CygxAskserieVideoCollectionResp struct {
+	Id               int    `orm:"column(id);pk"`
+	AskserieVideoId  int    `description:"askserie_video_id"`
+	UserId           int    `description:"用户ID"`
+	CreateTime       string `description:"创建时间"`
+	Mobile           string `description:"手机号"`
+	Email            string `description:"邮箱"`
+	CompanyId        int    `description:"公司id"`
+	CompanyName      string `description:"公司名称"`
+	RealName         string `description:"用户实际名称"`
+	SellerName       string `description:"所属销售"`
+	RegisterPlatform int    `description:"来源 1小程序,2:网页"`
+	ModifyTime       string `description:"更新时间"`
+	Content          string `description:"留言"`
+}
+
+// Pv数据列表
+type CygxAskserieVideoCollectionListResp struct {
+	//Paging *paging.PagingItem `description:"分页数据"`
+	List []*CygxAskserieVideoCollectionResp
+}
+
+// 列表
+func GetCygxAskserieVideoCollectionList(condition string, pars []interface{}) (items []*CygxAskserieVideoCollectionResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_askserie_video_collection as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 27 - 0
models/cygx/industrial_askserie_video_group_management.go

@@ -2,6 +2,8 @@ package cygx
 
 import (
 	//"github.com/beego/beego/v2/client/orm"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -12,3 +14,28 @@ type CygxIndustrialAskserieVideoGroupManagement struct {
 	IndustrialManagementId int       `description:"cygx_industrial_management表的主键ID"`
 	CreateTime             time.Time `description:"创建时间"`
 }
+
+type IndustrialAskserieVideoManagementRep struct {
+	AskserieVideoId        int    `description:"askserie_video_id"`
+	IndustrialManagementId int    `description:"cygx_industrial_management表的主键ID"`
+	IndustryName           string `description:"产业名称"`
+	ChartPermissionId      int    `description:"权限id"`
+	PermissionName         string `description:"行业名称"`
+}
+
+// 列表GetCygxIndustrialAskserieVideoGroupManagementList
+func GetCygxIndustrialAskserieVideoGroupManagementList(askserieVideoIds []int) (items []*IndustrialAskserieVideoManagementRep, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT
+			am.askserie_video_id,
+			m.chart_permission_id,
+			m.industrial_management_id,
+			m.industry_name 
+			FROM
+			cygx_industrial_askserie_video_group_management AS am
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = am.industrial_management_id
+			WHERE
+			am.askserie_video_id IN (` + utils.GetOrmInReplace(len(askserieVideoIds)) + `)`
+	_, err = o.Raw(sql, askserieVideoIds).QueryRows(&items)
+	return
+}

+ 36 - 0
routers/commentsRouter.go

@@ -1285,6 +1285,42 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"],
+        beego.ControllerComments{
+            Method: "CollectionList",
+            Router: `/askserie_video/collection_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/askserie_video/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"],
+        beego.ControllerComments{
+            Method: "HistoryList",
+            Router: `/askserie_video/history_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/askserie_video/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:AskserieVideoController"],
         beego.ControllerComments{
             Method: "PreserveAndPublish",

+ 69 - 0
services/cygx/askserie_video.go

@@ -0,0 +1,69 @@
+package cygx
+
+import (
+	"errors"
+	"fmt"
+	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/services/alarm_msg"
+	"hongze/hz_crm_api/utils"
+	"strings"
+)
+
+// 获取问答系列产业列表
+func GetCygxAskserieVideoLabelListMap(askserieVideoIds []int) (mapResp map[int][]*cygx.IndustrialActivityGroupManagementRep) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg("获取产品内测的阅读数据,信息失败,GetCygxAskserieVideoLabelListMap Err:"+err.Error(), 3)
+		}
+	}()
+	lenArr := len(askserieVideoIds)
+	if lenArr == 0 {
+		return
+	}
+	industrialList, e := cygx.GetCygxIndustrialAskserieVideoGroupManagementList(askserieVideoIds)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("获取详情失败 GetCygxIndustrialAskserieVideoGroupManagementList Err" + e.Error())
+		return
+	}
+	mapResp = make(map[int][]*cygx.IndustrialActivityGroupManagementRep, 0)
+	for _, v := range industrialList {
+		item := new(cygx.IndustrialActivityGroupManagementRep)
+		item.IndustryName = v.IndustryName
+		item.IndustrialManagementId = v.IndustrialManagementId
+		item.ChartPermissionId = v.ChartPermissionId
+		mapResp[v.AskserieVideoId] = append(mapResp[v.AskserieVideoId], item)
+	}
+	return
+}
+
+// 获取问答系列产业列表
+func GetCygxAskserieVideoLabelMap(askserieVideoIds []int) (mapResp map[int]string) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg("获取产品内测的阅读数据,信息失败,GetCygxAskserieVideoLabelListMap Err:"+err.Error(), 3)
+		}
+	}()
+	lenArr := len(askserieVideoIds)
+	if lenArr == 0 {
+		return
+	}
+	industrialList, e := cygx.GetCygxIndustrialAskserieVideoGroupManagementList(askserieVideoIds)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("获取详情失败 GetCygxIndustrialAskserieVideoGroupManagementList Err" + e.Error())
+		return
+	}
+	mapIndustryName := make(map[int][]string)
+	mapResp = make(map[int]string, 0)
+	for _, v := range industrialList {
+		mapIndustryName[v.AskserieVideoId] = append(mapIndustryName[v.AskserieVideoId], v.IndustryName)
+	}
+
+	for k, v := range mapIndustryName {
+		mapResp[k] = strings.Join(v, ",")
+	}
+	return
+}