处理分享2
This commit is contained in:
parent
6431aa890b
commit
c7daf18830
@ -1,22 +1,69 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"knowledge/api/dao"
|
"knowledge/api/dao"
|
||||||
"knowledge/api/dto"
|
"knowledge/api/dto"
|
||||||
|
"knowledge/api/model"
|
||||||
"knowledge/api/requests"
|
"knowledge/api/requests"
|
||||||
"knowledge/api/responses"
|
"knowledge/api/responses"
|
||||||
|
"knowledge/consts"
|
||||||
"knowledge/global"
|
"knowledge/global"
|
||||||
"knowledge/utils"
|
"knowledge/utils"
|
||||||
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Share struct{}
|
type Share struct{}
|
||||||
|
|
||||||
// GetShare 获取分享数据
|
// GetBackgroundImage 获取背景图
|
||||||
func (r *Share) GetShare(c *gin.Context) {
|
func (r *Share) GetBackgroundImage(c *gin.Context) {
|
||||||
shareRequest := requests.ShareRequest{}
|
shareRequest := requests.ShareRequest{}
|
||||||
req := shareRequest.GetShare
|
req := shareRequest.GetBackgroundImage
|
||||||
|
if err := c.ShouldBind(&req); err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 参数验证
|
||||||
|
if err := global.Validate.Struct(req); err != nil {
|
||||||
|
responses.FailWithMessage(utils.Translate(err), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
questionQaDao := dao.QuestionQaDao{}
|
||||||
|
|
||||||
|
// 获取题库数据
|
||||||
|
maps := make(map[string]interface{})
|
||||||
|
maps["qa_share_id"] = req.QaShareId
|
||||||
|
questionQa, err := questionQaDao.GetQuestionQa(maps)
|
||||||
|
if err != nil || questionQa == nil {
|
||||||
|
responses.FailWithMessage("题库不存在", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if questionQa.QaStatus == 2 {
|
||||||
|
responses.FailWithMessage("题库已失效", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测过期时间
|
||||||
|
now := time.Now()
|
||||||
|
qaExpireTime := time.Time(questionQa.QaExpireTime)
|
||||||
|
if qaExpireTime.Before(now) {
|
||||||
|
responses.FailWithMessage("题库已失效", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
image := utils.AddOssDomain(questionQa.Image)
|
||||||
|
responses.OkWithData(image, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShareAuth 授权
|
||||||
|
func (r *Share) ShareAuth(c *gin.Context) {
|
||||||
|
shareRequest := requests.ShareRequest{}
|
||||||
|
req := shareRequest.ShareAuth
|
||||||
if err := c.ShouldBind(&req); err != nil {
|
if err := c.ShouldBind(&req); err != nil {
|
||||||
responses.FailWithMessage(err.Error(), c)
|
responses.FailWithMessage(err.Error(), c)
|
||||||
return
|
return
|
||||||
@ -28,9 +75,7 @@ func (r *Share) GetShare(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 业务处理
|
|
||||||
questionQaDao := dao.QuestionQaDao{}
|
questionQaDao := dao.QuestionQaDao{}
|
||||||
questionQaItemDao := dao.QuestionQaItemDao{}
|
|
||||||
|
|
||||||
// 获取题库数据
|
// 获取题库数据
|
||||||
maps := make(map[string]interface{})
|
maps := make(map[string]interface{})
|
||||||
@ -59,47 +104,120 @@ func (r *Share) GetShare(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//g := dto.ShareDto{}
|
token := &utils.Token{
|
||||||
|
Client: 1,
|
||||||
|
QaId: fmt.Sprintf("%d", questionQa.QaId),
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成jwt
|
||||||
|
ttl := 5 * time.Hour
|
||||||
|
jwt, err := token.NewJWT(ttl)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage("题库错误", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理返回值
|
||||||
|
g := dto.ShareAuthDto{}
|
||||||
|
|
||||||
|
g.Token = jwt
|
||||||
|
|
||||||
|
responses.OkWithData(g, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetQuestionQa 获取知识问答数据
|
||||||
|
func (r *Share) GetQuestionQa(c *gin.Context) {
|
||||||
|
// 获取知识问答id
|
||||||
|
qaId := c.GetInt64("QaId")
|
||||||
|
if qaId == 0 {
|
||||||
|
c.JSON(http.StatusUnauthorized, gin.H{
|
||||||
|
"message": "请输入密码后查看",
|
||||||
|
"code": consts.TokenError,
|
||||||
|
"data": "",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
questionQaDao := dao.QuestionQaDao{}
|
||||||
|
|
||||||
|
// 获取题库数据
|
||||||
|
questionQa, err := questionQaDao.GetQuestionQaById(qaId)
|
||||||
|
if err != nil || questionQa == nil {
|
||||||
|
responses.FailWithMessage("题库不存在", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if questionQa.QaStatus == 2 {
|
||||||
|
responses.FailWithMessage("题库已失效", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测过期时间
|
||||||
|
now := time.Now()
|
||||||
|
qaExpireTime := time.Time(questionQa.QaExpireTime)
|
||||||
|
if qaExpireTime.Before(now) {
|
||||||
|
responses.FailWithMessage("题库已失效", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
g := dto.GetQuestionQaDto(questionQa)
|
||||||
|
|
||||||
|
responses.OkWithData(g, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetQuestion 获取题目数据
|
||||||
|
func (r *Share) GetQuestion(c *gin.Context) {
|
||||||
|
// 获取知识问答id
|
||||||
|
qaId := c.GetInt64("QaId")
|
||||||
|
if qaId == 0 {
|
||||||
|
c.JSON(http.StatusUnauthorized, gin.H{
|
||||||
|
"message": "请输入密码后查看",
|
||||||
|
"code": consts.TokenError,
|
||||||
|
"data": "",
|
||||||
|
})
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
questionQaDao := dao.QuestionQaDao{}
|
||||||
|
questionQaItemDao := dao.QuestionQaItemDao{}
|
||||||
|
|
||||||
|
// 获取题库数据
|
||||||
|
questionQa, err := questionQaDao.GetQuestionQaById(qaId)
|
||||||
|
if err != nil || questionQa == nil {
|
||||||
|
responses.FailWithMessage("题库不存在", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if questionQa.QaStatus == 2 {
|
||||||
|
responses.FailWithMessage("题库已失效", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测过期时间
|
||||||
|
now := time.Now()
|
||||||
|
qaExpireTime := time.Time(questionQa.QaExpireTime)
|
||||||
|
if qaExpireTime.Before(now) {
|
||||||
|
responses.FailWithMessage("题库已失效", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
g := dto.ShareDto{
|
g := dto.ShareDto{
|
||||||
QuestionQa: &dto.QuestionQaDto{},
|
|
||||||
Question: []*dto.QuestionDto{},
|
Question: []*dto.QuestionDto{},
|
||||||
BaseTokenItem: []*dto.BaseTokenItemDto{},
|
BaseTokenItem: []*dto.BaseTokenItemDto{},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载题库数据
|
// 题目数据
|
||||||
g.QuestionQa = dto.GetQuestionQaDto(questionQa)
|
var questions []*model.QuestionQaItem
|
||||||
|
|
||||||
// 题目数据-必备选中
|
// 题目数据-必备选中
|
||||||
maps = make(map[string]interface{})
|
maps := make(map[string]interface{})
|
||||||
maps["qa_id"] = questionQa.QaId
|
maps["qa_id"] = questionQa.QaId
|
||||||
maps["is_must_select"] = 1
|
maps["is_must_select"] = 1
|
||||||
questionQaItems, err := questionQaItemDao.GetQuestionQaItemPreloadList(maps)
|
questionQaItems, err := questionQaItemDao.GetQuestionQaItemPreloadList(maps)
|
||||||
if err == nil && len(questionQaItems) > 0 {
|
if err == nil && len(questionQaItems) > 0 {
|
||||||
for _, item := range questionQaItems {
|
for _, item := range questionQaItems {
|
||||||
questionOptionDao := dao.QuestionOptionDao{}
|
questions = append(questions, item)
|
||||||
maps = make(map[string]interface{})
|
|
||||||
maps["question_id"] = item.QuestionId
|
|
||||||
questionOption, err := questionOptionDao.GetQuestionOptionList(maps)
|
|
||||||
if err != nil {
|
|
||||||
responses.FailWithMessage("内部错误", c)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理返回值
|
|
||||||
questionDto := dto.GetShareQuestionDto(item.Question)
|
|
||||||
|
|
||||||
// 加载选项
|
|
||||||
questionDto.LoadQuestionOption(questionOption)
|
|
||||||
|
|
||||||
// 加载图片
|
|
||||||
questionDto.LoadQuestionImage(item.Question.QuestionImage)
|
|
||||||
|
|
||||||
// 加载答案
|
|
||||||
questionDto.LoadQuestionAnswer(item.Question.QuestionAnswer)
|
|
||||||
|
|
||||||
// 将转换后的结构体添加到新切片中
|
|
||||||
g.Question = append(g.Question, questionDto)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,33 +231,37 @@ func (r *Share) GetShare(c *gin.Context) {
|
|||||||
questionQaItems, err = questionQaItemDao.GetQuestionQaItemWhereListRand(maps, remainingQuantity)
|
questionQaItems, err = questionQaItemDao.GetQuestionQaItemWhereListRand(maps, remainingQuantity)
|
||||||
if err == nil && len(questionQaItems) > 0 {
|
if err == nil && len(questionQaItems) > 0 {
|
||||||
for _, item := range questionQaItems {
|
for _, item := range questionQaItems {
|
||||||
questionOptionDao := dao.QuestionOptionDao{}
|
questions = append(questions, item)
|
||||||
maps = make(map[string]interface{})
|
|
||||||
maps["question_id"] = item.QuestionId
|
|
||||||
questionOption, err := questionOptionDao.GetQuestionOptionList(maps)
|
|
||||||
if err != nil {
|
|
||||||
responses.FailWithMessage("内部错误", c)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理返回值
|
|
||||||
questionDto := dto.GetShareQuestionDto(item.Question)
|
|
||||||
|
|
||||||
// 加载选项
|
|
||||||
questionDto.LoadQuestionOption(questionOption)
|
|
||||||
|
|
||||||
// 加载图片
|
|
||||||
questionDto.LoadQuestionImage(item.Question.QuestionImage)
|
|
||||||
|
|
||||||
// 加载答案
|
|
||||||
questionDto.LoadQuestionAnswer(item.Question.QuestionAnswer)
|
|
||||||
|
|
||||||
// 将转换后的结构体添加到新切片中
|
|
||||||
g.Question = append(g.Question, questionDto)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, v := range questions {
|
||||||
|
questionOptionDao := dao.QuestionOptionDao{}
|
||||||
|
maps = make(map[string]interface{})
|
||||||
|
maps["question_id"] = v.QuestionId
|
||||||
|
questionOption, err := questionOptionDao.GetQuestionOptionList(maps)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage("内部错误", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理返回值
|
||||||
|
questionDto := dto.GetShareQuestionDto(v.Question)
|
||||||
|
|
||||||
|
// 加载选项
|
||||||
|
questionDto.LoadQuestionOptionSimplify(questionOption)
|
||||||
|
|
||||||
|
// 加载图片
|
||||||
|
questionDto.LoadQuestionImage(v.Question.QuestionImage)
|
||||||
|
|
||||||
|
// 加载答案
|
||||||
|
questionDto.LoadQuestionAnswer(v.Question)
|
||||||
|
|
||||||
|
// 将转换后的结构体添加到新切片中
|
||||||
|
g.Question = append(g.Question, questionDto)
|
||||||
|
}
|
||||||
|
|
||||||
// 按照难度重新排序题目顺序
|
// 按照难度重新排序题目顺序
|
||||||
//sort.SliceStable(g.Question, func(i, j int) bool {
|
//sort.SliceStable(g.Question, func(i, j int) bool {
|
||||||
// return g.Question[i].Difficulty < g.Question[j].Difficulty
|
// return g.Question[i].Difficulty < g.Question[j].Difficulty
|
||||||
|
|||||||
@ -89,7 +89,7 @@ func GetQuestionListDto(m []*model.Question) []*QuestionDto {
|
|||||||
|
|
||||||
// 加载答案
|
// 加载答案
|
||||||
if v.QuestionAnswer != "" {
|
if v.QuestionAnswer != "" {
|
||||||
response = response.LoadQuestionAnswer(v.QuestionAnswer)
|
response = response.LoadQuestionAnswer(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将转换后的结构体添加到新切片中
|
// 将转换后的结构体添加到新切片中
|
||||||
@ -140,6 +140,14 @@ func (r *QuestionDto) LoadQuestionOption(m []*model.QuestionOption) *QuestionDto
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LoadQuestionOptionSimplify 加载选项-简化
|
||||||
|
func (r *QuestionDto) LoadQuestionOptionSimplify(m []*model.QuestionOption) *QuestionDto {
|
||||||
|
if len(m) > 0 {
|
||||||
|
r.QuestionOption = GetQuestionOptionSimplifyListDto(m)
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
// LoadQuestionImage 加载图片
|
// LoadQuestionImage 加载图片
|
||||||
func (r *QuestionDto) LoadQuestionImage(s string) *QuestionDto {
|
func (r *QuestionDto) LoadQuestionImage(s string) *QuestionDto {
|
||||||
if s != "" {
|
if s != "" {
|
||||||
@ -155,13 +163,17 @@ func (r *QuestionDto) LoadQuestionImage(s string) *QuestionDto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LoadQuestionAnswer 加载答案
|
// LoadQuestionAnswer 加载答案
|
||||||
func (r *QuestionDto) LoadQuestionAnswer(s string) *QuestionDto {
|
func (r *QuestionDto) LoadQuestionAnswer(m *model.Question) *QuestionDto {
|
||||||
if s != "" {
|
if m.QuestionAnswer != "" {
|
||||||
result := strings.Split(s, ",")
|
if m.QuestionType == 1 || m.QuestionType == 2 {
|
||||||
if len(result) > 0 {
|
result := strings.Split(m.QuestionAnswer, ",")
|
||||||
for _, v := range result {
|
if len(result) > 0 {
|
||||||
r.QuestionAnswer = append(r.QuestionAnswer, v)
|
for _, v := range result {
|
||||||
|
r.QuestionAnswer = append(r.QuestionAnswer, v)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
r.QuestionAnswer[0] = m.QuestionAnswer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
|
|||||||
@ -49,3 +49,22 @@ func GetQuestionOptionListDto(m []*model.QuestionOption) []*QuestionOptionDto {
|
|||||||
|
|
||||||
return responses
|
return responses
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetQuestionOptionSimplifyListDto 题目选项列表-简化
|
||||||
|
func GetQuestionOptionSimplifyListDto(m []*model.QuestionOption) []*QuestionOptionDto {
|
||||||
|
// 处理返回值
|
||||||
|
responses := make([]*QuestionOptionDto, len(m))
|
||||||
|
|
||||||
|
if len(m) > 0 {
|
||||||
|
for i, v := range m {
|
||||||
|
response := &QuestionOptionDto{
|
||||||
|
OptionValue: v.OptionValue,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将转换后的结构体添加到新切片中
|
||||||
|
responses[i] = response
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return responses
|
||||||
|
}
|
||||||
|
|||||||
@ -94,7 +94,7 @@ func (r *QuestionQaItemDto) LoadQuestion(m *model.Question) *QuestionQaItemDto {
|
|||||||
r.Question = r.Question.LoadQuestionImage(m.QuestionImage)
|
r.Question = r.Question.LoadQuestionImage(m.QuestionImage)
|
||||||
|
|
||||||
// 加载答案
|
// 加载答案
|
||||||
r.Question = r.Question.LoadQuestionAnswer(m.QuestionAnswer)
|
r.Question = r.Question.LoadQuestionAnswer(m)
|
||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,18 @@
|
|||||||
package dto
|
package dto
|
||||||
|
|
||||||
|
// GetBackgroundImageDto 获取背景图
|
||||||
|
type GetBackgroundImageDto struct {
|
||||||
|
Status int `json:"status"` // 状态
|
||||||
|
Message string `json:"message"` // 提示信息
|
||||||
|
Data interface{} `json:"data"` // 数据值
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShareAuthDto 授权
|
||||||
|
type ShareAuthDto struct {
|
||||||
|
Token string `json:"token"` // token
|
||||||
|
}
|
||||||
|
|
||||||
type ShareDto struct {
|
type ShareDto struct {
|
||||||
QuestionQa *QuestionQaDto `json:"question_qa"` // 题库数据
|
|
||||||
Question []*QuestionDto `json:"question"` // 题库关联题目列表
|
Question []*QuestionDto `json:"question"` // 题库关联题目列表
|
||||||
BaseTokenItem []*BaseTokenItemDto `json:"base_token_item"` // 题库关联飞花令-列表
|
BaseTokenItem []*BaseTokenItemDto `json:"base_token_item"` // 题库关联飞花令-列表
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,14 +9,6 @@ import (
|
|||||||
// Auth Auth认证
|
// Auth Auth认证
|
||||||
func Auth() gin.HandlerFunc {
|
func Auth() gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
// 获取用户id
|
|
||||||
userId := c.GetInt64("UserId")
|
|
||||||
if userId == 0 {
|
|
||||||
responses.Fail(c)
|
|
||||||
c.Abort()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取客户端
|
// 获取客户端
|
||||||
client := c.GetInt("Client")
|
client := c.GetInt("Client")
|
||||||
if client == 0 || (client != 1 && client != 2) {
|
if client == 0 || (client != 1 && client != 2) {
|
||||||
@ -32,6 +24,14 @@ func Auth() gin.HandlerFunc {
|
|||||||
|
|
||||||
// 后台
|
// 后台
|
||||||
if client == 2 {
|
if client == 2 {
|
||||||
|
// 获取用户id
|
||||||
|
userId := c.GetInt64("UserId")
|
||||||
|
if userId == 0 {
|
||||||
|
responses.Fail(c)
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
adminUserDao := dao.AdminUserDao{}
|
adminUserDao := dao.AdminUserDao{}
|
||||||
adminUser, err := adminUserDao.GetAdminUserFirstById(userId)
|
adminUser, err := adminUserDao.GetAdminUserFirstById(userId)
|
||||||
if err != nil || adminUser == nil {
|
if err != nil || adminUser == nil {
|
||||||
|
|||||||
@ -53,20 +53,41 @@ func Jwt() gin.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 转换类型
|
var userId int64
|
||||||
userId, err := strconv.ParseInt(t.UserId, 10, 64)
|
var qaId int64
|
||||||
if err != nil {
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"message": "token错误",
|
|
||||||
"code": consts.TokenError,
|
|
||||||
"data": "",
|
|
||||||
})
|
|
||||||
|
|
||||||
c.Abort()
|
// 用户id
|
||||||
return
|
if t.UserId != "" {
|
||||||
|
userId, err = strconv.ParseInt(t.UserId, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "token错误",
|
||||||
|
"code": consts.TokenError,
|
||||||
|
"data": "",
|
||||||
|
})
|
||||||
|
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 知识问答id
|
||||||
|
if t.QaId != "" {
|
||||||
|
qaId, err = strconv.ParseInt(t.QaId, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"message": "token错误",
|
||||||
|
"code": consts.TokenError,
|
||||||
|
"data": "",
|
||||||
|
})
|
||||||
|
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c.Set("UserId", userId) // 用户id
|
c.Set("UserId", userId) // 用户id
|
||||||
|
c.Set("QaId", qaId) // 知识问答id
|
||||||
c.Set("Client", t.Client) // 客户端(1:前台 2:后台)
|
c.Set("Client", t.Client) // 客户端(1:前台 2:后台)
|
||||||
c.Next()
|
c.Next()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,17 @@
|
|||||||
package requests
|
package requests
|
||||||
|
|
||||||
type ShareRequest struct {
|
type ShareRequest struct {
|
||||||
GetShare // 获取分享数据
|
GetBackgroundImage // 获取背景图
|
||||||
|
ShareAuth // 授权
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetShare struct {
|
// GetBackgroundImage 获取背景图
|
||||||
|
type GetBackgroundImage struct {
|
||||||
|
QaShareId string `json:"qa_share_id" form:"qa_share_id" label:"分享标识" validate:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShareAuth 授权
|
||||||
|
type ShareAuth struct {
|
||||||
QaShareId string `json:"qa_share_id" form:"qa_share_id" label:"分享标识" validate:"required"`
|
QaShareId string `json:"qa_share_id" form:"qa_share_id" label:"分享标识" validate:"required"`
|
||||||
QaPassword string `json:"qa_password" form:"qa_password" label:"密码" validate:"required"`
|
QaPassword string `json:"qa_password" form:"qa_password" label:"密码" validate:"required"`
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,7 +78,14 @@ func publicRouter(r *gin.Engine, api controller.Api) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取分享数据
|
// 获取分享数据
|
||||||
r.GET("/share", api.Share.GetShare)
|
shareGroup := r.Group("/share")
|
||||||
|
{
|
||||||
|
// 获取背景图
|
||||||
|
shareGroup.GET("/background", api.Share.GetBackgroundImage)
|
||||||
|
|
||||||
|
// 授权
|
||||||
|
shareGroup.POST("/auth", api.Share.ShareAuth)
|
||||||
|
}
|
||||||
|
|
||||||
// 后台
|
// 后台
|
||||||
adminGroup := r.Group("/admin")
|
adminGroup := r.Group("/admin")
|
||||||
@ -88,12 +95,6 @@ func publicRouter(r *gin.Engine, api controller.Api) {
|
|||||||
|
|
||||||
// 登陆
|
// 登陆
|
||||||
adminGroup.POST("/login", api.AdminUser.Login)
|
adminGroup.POST("/login", api.AdminUser.Login)
|
||||||
|
|
||||||
// 新增题目
|
|
||||||
adminGroup.POST("/question/test", api.Question.AddQuestionTest)
|
|
||||||
|
|
||||||
// 修改题目
|
|
||||||
adminGroup.PUT("/question/test/:question_id", api.Question.PutQuestionTest)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,4 +222,14 @@ func privateRouter(r *gin.Engine, api controller.Api) {
|
|||||||
staticGroup.GET("", api.Static.GetStatic)
|
staticGroup.GET("", api.Static.GetStatic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取分享数据
|
||||||
|
shareGroup := r.Group("/share")
|
||||||
|
{
|
||||||
|
// 获取知识问答数据
|
||||||
|
shareGroup.GET("/qa", api.Share.GetQuestionQa)
|
||||||
|
|
||||||
|
// 获取题目数据
|
||||||
|
shareGroup.GET("/question", api.Share.GetQuestion)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,7 +52,7 @@ func (r *AdminUserService) Login(req requests.Login) (res *dto.AdminUserDto, err
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 生成jwt
|
// 生成jwt
|
||||||
jwt, err := token.NewJWT()
|
jwt, err := token.NewJWT(0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.New("登陆失败")
|
return nil, errors.New("登陆失败")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -819,7 +819,7 @@ func (r *QuestionService) GetQuestion(questionId int64) (g *dto.QuestionDto, err
|
|||||||
g.LoadQuestionImage(question.QuestionImage)
|
g.LoadQuestionImage(question.QuestionImage)
|
||||||
|
|
||||||
// 加载答案
|
// 加载答案
|
||||||
g.LoadQuestionAnswer(question.QuestionAnswer)
|
g.LoadQuestionAnswer(question)
|
||||||
|
|
||||||
return g, nil
|
return g, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,12 +9,15 @@ import (
|
|||||||
type Token struct {
|
type Token struct {
|
||||||
UserId string `json:"user_id"` // 用户id
|
UserId string `json:"user_id"` // 用户id
|
||||||
Client int `json:"client"` // 客户端(1:前台 2:后台)
|
Client int `json:"client"` // 客户端(1:前台 2:后台)
|
||||||
|
QaId string `json:"qa_id"` // 知识问答id
|
||||||
jwt.RegisteredClaims // v5版本新加的方法
|
jwt.RegisteredClaims // v5版本新加的方法
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewJWT GenerateJWT 生成JWT
|
// NewJWT GenerateJWT 生成JWT
|
||||||
func (t Token) NewJWT() (string, error) {
|
func (t Token) NewJWT(ttl time.Duration) (string, error) {
|
||||||
ttl := time.Duration(config.C.Jwt.Ttl)
|
if ttl == 0 {
|
||||||
|
ttl = time.Duration(config.C.Jwt.Ttl)
|
||||||
|
}
|
||||||
|
|
||||||
t.RegisteredClaims.ExpiresAt = jwt.NewNumericDate(time.Now().Add(ttl * time.Hour)) // 过期时间24小时
|
t.RegisteredClaims.ExpiresAt = jwt.NewNumericDate(time.Now().Add(ttl * time.Hour)) // 过期时间24小时
|
||||||
t.RegisteredClaims.IssuedAt = jwt.NewNumericDate(time.Now()) // 签发时间
|
t.RegisteredClaims.IssuedAt = jwt.NewNumericDate(time.Now()) // 签发时间
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user