Browse Source

周报章节音频播放设置

tuoling805 2 years ago
parent
commit
6a3b5171e5

+ 18 - 0
controller/report/report.go

@@ -4,6 +4,7 @@ import (
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
 	"hongze/hongze_yb/models/request"
+	"hongze/hongze_yb/models/tables/user_report_chapter_set"
 	"hongze/hongze_yb/services"
 	"hongze/hongze_yb/services/report"
 	userService "hongze/hongze_yb/services/user"
@@ -283,3 +284,20 @@ func VarietyReportList(c *gin.Context) {
 	response.OkData("查询成功", list, c)
 	return
 }
+
+// RddpShareImg 获取报告分享图
+func ReportChapterSet(c *gin.Context) {
+	var req request.ReportChapterSetReq
+	if c.ShouldBind(&req) != nil {
+		response.Fail("参数异常", c)
+		return
+	}
+
+	userinfo := userService.GetInfoByClaims(c)
+	err := user_report_chapter_set.ModifyReportChapterSet(req.IsClose, userinfo.UserID, req.TypeId)
+	if err != nil {
+		response.Fail("保存失败,err:"+err.Error(), c)
+		return
+	}
+	response.Ok("保存成功", c)
+}

+ 5 - 0
models/request/public.go

@@ -15,3 +15,8 @@ type ViewLogUpdateReq struct {
 	StopSeconds int `json:"stop_seconds" description:"访问时长"`
 	Source      int `json:"source" description:"来源:1-问答社区; 2-语音播报; 3-视频社区; 4-路演视频..."`
 }
+
+type ReportChapterSetReq struct {
+	TypeId  uint64 `json:"type_id"`
+	IsClose uint64 `json:"is_close" description:"是否关闭:1,关闭,0:不关闭"`
+}

+ 1 - 0
models/response/report.go

@@ -28,6 +28,7 @@ type ReportChapterListItem struct {
 	ReportChapterTypeName  string    `json:"report_chapter_type_name"`
 	Sort                   int       `json:"sort"`
 	PublishTime            time.Time `json:"publish_time"`
+	IsClose                int       `gorm:"column:is_close;type:tinyint(1);default:0" json:"is_close"` //音频品种是否关闭
 }
 
 type ReportItem struct {

+ 22 - 0
models/tables/user_report_chapter_set/query.go

@@ -0,0 +1,22 @@
+package user_report_chapter_set
+
+import "hongze/hongze_yb/global"
+
+// GetListByReportId 根据报告ID获取章节列表
+func GetUserReportChapterSet(userId uint64) (list []*UserReportChapterSet, err error) {
+	err = global.MYSQL["rddp"].Model(UserReportChapterSet{}).
+		Where(" user_id = ? ", userId).
+		Scan(&list).Error
+	return
+}
+
+func AddUserReportChapterSet(setList []*UserReportChapterSet) (err error) {
+	err = global.MYSQL["rddp"].Model(UserReportChapterSet{}).CreateInBatches(setList, len(setList)).Error
+	return
+}
+
+func ModifyReportChapterSet(isClose, userId, typeId uint64) (err error) {
+	sql := ` UPDATE user_report_chapter_set SET is_close=? WHERE user_id=? AND type_id=? `
+	err = global.MYSQL["rddp"].Exec(sql, isClose, userId, typeId).Error
+	return
+}

+ 19 - 0
models/tables/user_report_chapter_set/user_report_chapter_set.go

@@ -0,0 +1,19 @@
+package user_report_chapter_set
+
+import "time"
+
+// 用户周报章节设置
+type UserReportChapterSet struct {
+	UserReportChapterSetId uint64    `gorm:"primaryKey;column:user_report_chapter_set_id;type:bigint(20) unsigned;not null" json:"-"` // 用户id
+	UserId                 uint64    `gorm:"column:user_id;type:bigint(20);default:0" json:"user_id"`                                 // open_id
+	TypeId                 int       `gorm:"column:type_id;type:tinyint(1);default:0" json:"type_id"`
+	TypeName               string    `gorm:"column:type_name;type:varchar(30);default:''" json:"type_name"` // 普通用户个人资料填写的省份
+	IsClose                int       `gorm:"column:is_close;type:tinyint(1);default:0" json:"is_close"`
+	CreateTime             time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"createTime"`  // 创建时间
+	ModifyTime             time.Time `gorm:"column:modify_time;type:datetime;default:CURRENT_TIMESTAMP" json:"modify_time"` // 修改时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *UserReportChapterSet) TableName() string {
+	return "user_report_chapter_set"
+}

+ 1 - 0
routers/report.go

@@ -17,6 +17,7 @@ func InitReport(r *gin.Engine) {
 	rGroup.POST("/detail/rddp_share_img", report.RddpShareImg)
 	rGroup.GET("/ppt_img", report.ReportPptImgList)
 	rGroup.GET("/variety/list", report.VarietyReportList)
+	rGroup.POST("/report_chapter/set", report.ReportChapterSet)
 
 	rGroup2 := r.Group("api/classify").Use(middleware.Token())
 	rGroup2.GET("/ficc", report.ClassifyFirstList)

+ 50 - 0
services/report/report.go

@@ -21,6 +21,7 @@ import (
 	"hongze/hongze_yb/models/tables/rddp/report_ppt_img"
 	"hongze/hongze_yb/models/tables/report_chapter_type"
 	"hongze/hongze_yb/models/tables/report_chapter_type_permission"
+	"hongze/hongze_yb/models/tables/user_report_chapter_set"
 	"hongze/hongze_yb/models/tables/yb_road_video"
 	"hongze/hongze_yb/services"
 	"hongze/hongze_yb/services/collection"
@@ -502,6 +503,55 @@ func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail respons
 		likeNum, likeEnabled, _ = services.GetReportLikeByReportIdOldReportId(userinfo.UserID, reportInfo.Id, 0, 0, 0)
 	}
 
+	//处理章节品种,音频开关
+	{
+		chapterSetList, err := user_report_chapter_set.GetUserReportChapterSet(userinfo.UserID)
+		if err != nil {
+			return reportDetail, err
+		}
+
+		setList := make([]*user_report_chapter_set.UserReportChapterSet, 0)
+		reportTypeLen := len(reportTypeList)
+		if len(chapterSetList) == 0 {
+			for _, v := range reportTypeList {
+				setItem := new(user_report_chapter_set.UserReportChapterSet)
+				setItem.UserId = userinfo.UserID
+				setItem.TypeId = v.TypeId
+				setItem.TypeName = v.TypeName
+				setItem.CreateTime = time.Now()
+				setItem.ModifyTime = time.Now()
+				setItem.IsClose = 0
+				setList = append(setList, setItem)
+			}
+		} else {
+			chapterSetMap := make(map[int]int)
+			for _, v := range chapterSetList {
+				chapterSetMap[v.TypeId] = v.IsClose
+			}
+			for i := 0; i < reportTypeLen; i++ {
+				typeItem := reportTypeList[i]
+				if findIsClose, ok := chapterSetMap[typeItem.TypeId]; ok {
+					reportTypeList[i].IsClose = findIsClose
+				} else {
+					setItem := new(user_report_chapter_set.UserReportChapterSet)
+					setItem.UserId = userinfo.UserID
+					setItem.TypeId = typeItem.TypeId
+					setItem.TypeName = typeItem.TypeName
+					setItem.CreateTime = time.Now()
+					setItem.ModifyTime = time.Now()
+					setItem.IsClose = 0
+					setList = append(setList, setItem)
+				}
+			}
+		}
+		if len(setList) > 0 {
+			err = user_report_chapter_set.AddUserReportChapterSet(setList)
+			if err != nil {
+				return reportDetail, err
+			}
+		}
+	}
+
 	//新增用户访问日志
 	go AddUserAccessRecord(userinfo, reportInfo.Id, reportInfo.ClassifyNameFirst, 0, authOk)
 	reportDetail.ReportInfo = reportItem