Просмотр исходного кода

Merge branch 'yb9.0' into debug

ziwen 2 лет назад
Родитель
Сommit
1b0e886bbc

+ 1 - 1
controller/pc/pc.go

@@ -318,7 +318,7 @@ func ClassifyDetailBanner(c *gin.Context) {
 		"王艺滢": utils.ALIYUN_YBIMG_HOST + "wyy.png",
 		"姚昕泽": utils.ALIYUN_YBIMG_HOST + "yxz.png",
 		"章左昊": utils.ALIYUN_YBIMG_HOST + "zzh.png",
-		"李晓": utils.ALIYUN_YBIMG_HOST + "lxt.png",
+		"李晓": utils.ALIYUN_YBIMG_HOST + "lxt.png",
 		"弘则FICC无锡调研团队": utils.ALIYUN_YBIMG_HOST + "qp.png",
 		"弘则能化组": utils.ALIYUN_YBIMG_HOST + "qmz.png",
 		"弘则有色团队": utils.ALIYUN_YBIMG_HOST + "qp.png",

+ 58 - 0
controller/voice_broadcast/voice_broadcast.go

@@ -0,0 +1,58 @@
+package voice_broadcast
+
+import (
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/controller/response"
+	"hongze/hongze_yb/global"
+	"hongze/hongze_yb/models/request"
+	voiceResp "hongze/hongze_yb/models/response"
+	"hongze/hongze_yb/services"
+	"hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/utils"
+	"io/ioutil"
+	"os"
+	"path"
+	"time"
+)
+
+// BroadcastList
+// @Description 语音播报列表
+// @Param page_index			query int false "页码"
+// @Param page_size				query int false "每页数量"
+// @Param broadcast_id			query int false "语音播报id"
+// @Success 200 {object} []voiceResp.BroadcastListResp
+// @failure 400 {string} string "获取失败"
+// @Router /list [get]
+func BroadcastList(c *gin.Context) {
+	var req request.BroadcastListReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误", c)
+		return
+	}
+	if req.PageIndex == 0 {
+		req.PageIndex = 1
+	}
+	if req.PageSize == 0 {
+		req.PageSize = utils.PageSize20
+	}
+
+	userinfo := user.GetInfoByClaims(c)
+	list, err := services.GetVoiceBroadcastList(req.PageIndex, req.PageSize, req.BroadcastId, userinfo)
+	if err != nil {
+
+		response.FailMsg("获取语音播报列表失败,"+err.Error(), "QuestionList ErrMsg:"+err.Error(), c)
+		return
+	}
+
+	isVoiceAdmin, _, err := services.GetVoiceAdminByUserInfo(userinfo)
+	if err != nil && err != utils.ErrNoRow {
+		response.FailMsg("获取语音管理员信息失败"+err.Error(), "QuestionList ErrMsg:"+err.Error(), c)
+		return
+	}
+	var resp voiceResp.BroadcastListResp
+	resp.List = list
+	resp.IsVoiceAdmin = isVoiceAdmin
+	response.OkData("获取成功", resp, c)
+}
+

+ 2 - 0
init_serve/router.go

@@ -69,5 +69,7 @@ func InitRouter() (r *gin.Engine) {
 	routers.InitPriceDriven(r)
 	//沙盘逻辑推演路由
 	routers.InitSandbox(r)
+	//语音播报
+	routers.InitVoiceBroadcast(r)
 	return
 }

+ 7 - 0
models/request/voice_broadcast.go

@@ -0,0 +1,7 @@
+package request
+
+type BroadcastListReq struct {
+	PageIndex   int `json:"page_index" form:"page_index"`
+	PageSize    int `json:"page_size" form:"page_size"`
+	BroadcastId int `json:"broadcast_id" form:"broadcast_id"`
+}

+ 20 - 0
models/response/voice_broadcast.go

@@ -0,0 +1,20 @@
+package response
+
+// BroadcastListResp 语音播报列表resp
+type BroadcastListResp struct {
+	List         []BroadCast
+	IsVoiceAdmin bool `description:"是否为语音管理员"`
+}
+
+type BroadCast struct {
+	BroadcastId   int    `description:"语音ID"`
+	BroadcastName string `description:"语音名称"`
+	SectionId     int    `description:"语音分类ID"`
+	SectionName   string `description:"语音分类名称"`
+	VarietyId     int    `description:"品种id"`
+	VarietyName   string `description:"品种名称"`
+	AuthorId      int    `description:"作者id"`
+	Author        string `description:"作者"`
+	CreateTime    string `description:"创建时间"`
+	IsAuthor      bool   `description:"是否为作者"`
+}

+ 6 - 0
models/tables/admin/query.go

@@ -14,4 +14,10 @@ func GetByAdminId(adminId int) (item *Admin, err error) {
 func GetAdminByMobile(mobile string) (item *Admin, err error) {
 	err = global.DEFAULT_MYSQL.Model(Admin{}).Where("mobile = ? AND enabled = 1", mobile).First(&item).Error
 	return
+}
+
+// GetAdminByEmail 通过邮箱获取系统用户信息
+func GetAdminByEmail(mobile string) (item *Admin, err error) {
+	err = global.DEFAULT_MYSQL.Model(Admin{}).Where("email = ? AND enabled = 1", mobile).First(&item).Error
+	return
 }

+ 13 - 0
models/tables/sys_role_admin/query.go

@@ -0,0 +1,13 @@
+package sys_role_admin
+
+import "hongze/hongze_yb/global"
+
+func GetVoiceAdmin(adminId int) (item *SysRoleAdmin, err error) {
+	err = global.DEFAULT_MYSQL.Model(SysRoleAdmin{}).Where("role_id=33 AND admin_id=?",adminId).First(&item).Error
+	return
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *SysRoleAdmin) TableName() string {
+	return "sys_role_admin"
+}

+ 8 - 0
models/tables/sys_role_admin/sys_role_admin.go

@@ -0,0 +1,8 @@
+package sys_role_admin
+
+type SysRoleAdmin struct {
+	Id         int
+	RoleId     int
+	AdminId    int
+	CreateTime string
+}

+ 1 - 0
models/tables/voice_broadcast/create.go

@@ -0,0 +1 @@
+package voice_broadcast

+ 1 - 0
models/tables/voice_broadcast/delete.go

@@ -0,0 +1 @@
+package voice_broadcast

+ 15 - 0
models/tables/voice_broadcast/query.go

@@ -0,0 +1,15 @@
+package voice_broadcast
+
+import "hongze/hongze_yb/global"
+
+func GetBroadcastByCondition(pageIndex, pageSize int) (list []*VoiceBroadcast, err error) {
+	offset := (pageIndex - 1) * pageSize
+	err = global.DEFAULT_MYSQL.Model(VoiceBroadcast{}).Offset(offset).Limit(pageSize).Order("create_time DESC").Scan(&list).Error
+	return
+}
+
+func GetBroadcastById(pageIndex, pageSize, broadcastId int) (list []*VoiceBroadcast, err error) {
+	offset := (pageIndex - 1) * pageSize
+	err = global.DEFAULT_MYSQL.Model(VoiceBroadcast{}).Where("broadcast_id=?", broadcastId).Offset(offset).Limit(pageSize).Order("create_time DESC").Scan(&list).Error
+	return
+}

+ 18 - 0
models/tables/voice_broadcast/voice_broadcast.go

@@ -0,0 +1,18 @@
+package voice_broadcast
+
+type VoiceBroadcast struct {
+	BroadcastId   int    `description:"语音ID"`
+	BroadcastName string `description:"语音名称"`
+	SectionId     int    `description:"语音分类ID"`
+	SectionName   string `description:"语音分类名称"`
+	VarietyId     int    `description:"品种id"`
+	VarietyName   string `description:"品种名称"`
+	AuthorId      int    `description:"作者id"`
+	Author        string `description:"作者"`
+	CreateTime    string `description:"创建时间"`
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *VoiceBroadcast) TableName() string {
+	return "yb_voice_broadcast"
+}

+ 14 - 0
routers/voice_broadcast.go

@@ -0,0 +1,14 @@
+package routers
+
+import (
+	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/controller/voice_broadcast"
+	"hongze/hongze_yb/middleware"
+)
+
+func InitVoiceBroadcast(r *gin.Engine)  {
+	rGroup := r.Group("api/voice/broadcast").Use(middleware.Token())
+	rGroup.POST("/list", voice_broadcast.BroadcastList)
+	rGroup.POST("/add", voice_broadcast.AddBroadcast)
+}
+

+ 116 - 0
services/voice_broadcast.go

@@ -0,0 +1,116 @@
+package services
+
+import (
+	"errors"
+	"hongze/hongze_yb/models/response"
+	admin2 "hongze/hongze_yb/models/tables/admin"
+	"hongze/hongze_yb/models/tables/sys_role_admin"
+	"hongze/hongze_yb/models/tables/voice_broadcast"
+	"hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/utils"
+)
+
+func GetVoiceBroadcastList(pageindex, pagesize, broadcastId int, userInfo user.UserInfo)  (list []response.BroadCast, err error){
+	if broadcastId == 0 {
+		broadList, e := voice_broadcast.GetBroadcastByCondition(pageindex, pagesize)
+		if e != nil {
+			e = errors.New("获取语音播报列表失败 Err:" + e.Error())
+		}
+		for _, item := range broadList {
+			var respItem response.BroadCast
+			respItem = response.BroadCast{
+				BroadcastId:   item.BroadcastId,
+				BroadcastName: item.BroadcastName,
+				SectionId:     item.SectionId,
+				SectionName:   item.SectionName,
+				VarietyId:     item.VarietyId,
+				VarietyName:   item.VarietyName,
+				AuthorId:      item.AuthorId,
+				Author:        item.Author,
+				CreateTime:    item.CreateTime,
+			}
+			if int(userInfo.UserID) == item.AuthorId{
+				respItem.IsAuthor = true
+			}
+			list = append(list, respItem)
+
+		}
+		err = e
+		return
+	}else {
+		broadList, e := voice_broadcast.GetBroadcastById(pageindex, pagesize, broadcastId)
+		if e != nil {
+			e = errors.New("获取语音播报列表失败 Err:" + e.Error())
+		}
+		for _, item := range broadList {
+			var respItem response.BroadCast
+			respItem = response.BroadCast{
+				BroadcastId:   item.BroadcastId,
+				BroadcastName: item.BroadcastName,
+				SectionId:     item.SectionId,
+				SectionName:   item.SectionName,
+				VarietyId:     item.VarietyId,
+				VarietyName:   item.VarietyName,
+				AuthorId:      item.AuthorId,
+				Author:        item.Author,
+				CreateTime:    item.CreateTime,
+			}
+			if int(userInfo.UserID) == item.AuthorId{
+				respItem.IsAuthor = true
+			}
+			list = append(list, respItem)
+
+		}
+		err = e
+		return
+	}
+}
+
+// GetVoiceAdminByUserInfo 判断当前用户是否为语音管理员
+func GetVoiceAdminByUserInfo(userInfo user.UserInfo) (ok bool, adminInfo *admin2.Admin, err error) {
+	mobile := userInfo.Mobile
+	var email string
+	if mobile == "" {
+		// 用户有可能是通过邮箱登录
+		email = userInfo.Email
+		if email == "" {
+			return
+		}
+	}
+
+	if userInfo.CompanyID != 16 {
+		return
+	}
+	if mobile != "" {
+		adminInfo, err = admin2.GetAdminByMobile(mobile)
+		if err != nil {
+			if err == utils.ErrNoRow {
+				err = nil
+				return
+			}
+			return
+		}
+	} else {
+		adminInfo, err = admin2.GetAdminByEmail(email)
+		if err != nil {
+			if err == utils.ErrNoRow {
+				err = nil
+				return
+			}
+			return
+		}
+	}
+
+	if adminInfo.Enabled != 1 {
+		return
+	}
+	_,err = sys_role_admin.GetVoiceAdmin(int(adminInfo.AdminID))
+	if err != nil && err != utils.ErrNoRow{
+		return
+	}
+
+	ok = true
+
+
+	return
+}