【发布地图数据回退功能】
This commit is contained in:
parent
999d3b2767
commit
40132704b8
@ -1,6 +1,7 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -27,6 +28,7 @@ func InitPublishedGiRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddl
|
|||||||
authed.POST("/release", releasePublishedGiById)
|
authed.POST("/release", releasePublishedGiById)
|
||||||
authed.POST("/rename", renamePublishedGiById)
|
authed.POST("/rename", renamePublishedGiById)
|
||||||
authed.GET("/:id/history", historyPublishedGiById)
|
authed.GET("/:id/history", historyPublishedGiById)
|
||||||
|
authed.POST("/fallbackVersion", fallbackCurrentVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页查询发布的图形数据
|
// 分页查询发布的图形数据
|
||||||
@ -268,7 +270,7 @@ func renamePublishedGiById(c *gin.Context) {
|
|||||||
// @Tags 发布的图形数据Api
|
// @Tags 发布的图形数据Api
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param id path int true "id"
|
// @Param PublishFallBackDto path int true "id"
|
||||||
// @Success 200 {object} dto.PublishHistoryDto
|
// @Success 200 {object} dto.PublishHistoryDto
|
||||||
// @Failure 401 {object} dto.ErrorDto
|
// @Failure 401 {object} dto.ErrorDto
|
||||||
// @Failure 500 {object} dto.ErrorDto
|
// @Failure 500 {object} dto.ErrorDto
|
||||||
@ -282,3 +284,33 @@ func historyPublishedGiById(c *gin.Context) {
|
|||||||
mid := int32(id)
|
mid := int32(id)
|
||||||
c.JSON(http.StatusOK, service.GetPublishHistory(mid))
|
c.JSON(http.StatusOK, service.GetPublishHistory(mid))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发布地图回退到历史版本
|
||||||
|
//
|
||||||
|
// @Summary 发布地图回退到历史版本
|
||||||
|
//
|
||||||
|
// @Security JwtAuth
|
||||||
|
//
|
||||||
|
// @Description 发布地图回退到历史版本
|
||||||
|
// @Tags 发布的图形数据Api
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param id path query dto.PublishFallBackDto true "查询参数"
|
||||||
|
// @Success 200 {object} true
|
||||||
|
// @Failure 401 {object} dto.ErrorDto
|
||||||
|
// @Failure 500 {object} dto.ErrorDto
|
||||||
|
// @Router /api/v1/publishedGi/fallbackVersion [post]
|
||||||
|
func fallbackCurrentVersion(c *gin.Context) {
|
||||||
|
param := &dto.PublishFallBackDto{}
|
||||||
|
if err := c.ShouldBind(param); err != nil {
|
||||||
|
panic(sys_error.New("操作失败,查询参数格式错误", err))
|
||||||
|
}
|
||||||
|
isChange, err := service.FallBackPublishHistory(param.MapId, param.VersionId)
|
||||||
|
if err != nil {
|
||||||
|
panic(sys_error.New(fmt.Sprintf("操作失败,%s", err.Error()), err))
|
||||||
|
}
|
||||||
|
if isChange {
|
||||||
|
memory.DeleteMapVerifyStructure(param.MapId) // 移除内存中的发布信息
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, isChange)
|
||||||
|
}
|
||||||
|
@ -54,4 +54,10 @@ type PublishHistoryDto struct {
|
|||||||
PublishAt JsonTime `json:"publishAt" time_format:"2006-01-02 15:04:05"`
|
PublishAt JsonTime `json:"publishAt" time_format:"2006-01-02 15:04:05"`
|
||||||
Version int32 `json:"version" form:"version"`
|
Version int32 `json:"version" form:"version"`
|
||||||
Note string `json:"note" form:"note"`
|
Note string `json:"note" form:"note"`
|
||||||
|
Current bool `json:"current" form:"current"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PublishFallBackDto struct {
|
||||||
|
MapId int32 `json:"mapId" form:"mapId" binding:"required"`
|
||||||
|
VersionId int32 `json:"versionId" form:"versionId" binding:"required"`
|
||||||
}
|
}
|
||||||
|
@ -257,10 +257,14 @@ func ChangePublishCode(id int32, code string) {
|
|||||||
|
|
||||||
// 查询发布历史
|
// 查询发布历史
|
||||||
func GetPublishHistory(id int32) []*dto.PublishHistoryDto {
|
func GetPublishHistory(id int32) []*dto.PublishHistoryDto {
|
||||||
u, pv := dbquery.User, dbquery.PublishedVersion
|
u, p, pv := dbquery.User, dbquery.Published, dbquery.PublishedVersion
|
||||||
|
pd, err1 := p.Select(p.ID, p.DataID).Where(p.ID.Eq(id)).First()
|
||||||
|
if err1 != nil {
|
||||||
|
panic(sys_error.New(fmt.Sprintf("地图【%d】不存在", id)))
|
||||||
|
}
|
||||||
var records []*dto.PublishHistoryDto
|
var records []*dto.PublishHistoryDto
|
||||||
err := pv.
|
err := pv.
|
||||||
Select(pv.ID, pv.PublishAt, pv.Note, pv.Version, u.Name.As("publisher")).
|
Select(pv.ID, pv.PublishAt, pv.Note, pv.Version, u.Name.As("publisher"), pv.ID.Eq(pd.DataID).As("current")).
|
||||||
LeftJoin(u, u.ID.EqCol(pv.UserID)).
|
LeftJoin(u, u.ID.EqCol(pv.UserID)).
|
||||||
Where(pv.PublishID.Eq(id)).Order(pv.Version.Desc()).Scan(&records)
|
Where(pv.PublishID.Eq(id)).Order(pv.Version.Desc()).Scan(&records)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -268,3 +272,25 @@ func GetPublishHistory(id int32) []*dto.PublishHistoryDto {
|
|||||||
}
|
}
|
||||||
return records
|
return records
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 回退发布版本
|
||||||
|
func FallBackPublishHistory(mapId, versionId int32) (bool, error) {
|
||||||
|
p, pv := dbquery.Published, dbquery.PublishedVersion
|
||||||
|
pd, err := p.Select(p.ID, p.DataID).Where(p.ID.Eq(mapId)).First()
|
||||||
|
if err != nil {
|
||||||
|
return false, fmt.Errorf("地图【%d】不存在", mapId)
|
||||||
|
}
|
||||||
|
pvd, err := pv.Select(pv.ID, pv.PublishID).Where(pv.ID.Eq(versionId)).First()
|
||||||
|
if err != nil {
|
||||||
|
return false, fmt.Errorf("地图【%d】版本【%d】数据不存在", mapId, versionId)
|
||||||
|
}
|
||||||
|
if pvd.PublishID != pd.ID {
|
||||||
|
return false, fmt.Errorf("地图【%d】版本【%d】数据不匹配", mapId, versionId)
|
||||||
|
}
|
||||||
|
if pd.DataID == pvd.ID {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
// 更新版本数据
|
||||||
|
p.Where(p.ID.Eq(mapId)).UpdateColumn(p.DataID, versionId)
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user