add film delete and recover function

This commit is contained in:
mubai
2024-07-11 05:35:22 +08:00
parent 3da0366237
commit 862aca9f4c
24 changed files with 519 additions and 144 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -11,8 +11,8 @@
<meta charset="UTF-8"/>
<title>(╥﹏╥)</title>
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_3992367_cesmizkmqka.css">
<script type="module" crossorigin src="/assets/index-58818233.js"></script>
<link rel="stylesheet" href="/assets/index-ac85c556.css">
<script type="module" crossorigin src="/assets/index-73b7bf54.js"></script>
<link rel="stylesheet" href="/assets/index-c3496d45.css">
</head>
<body>
<div id="app"></div>

View File

@@ -55,9 +55,9 @@ services:
command: [
'mysqld',
'--default-storage-engine=INNODB',
'--innodb-buffer-pool-size=128M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
# '--innodb-buffer-pool-size=128M',
# '--character-set-server=utf8mb4',
# '--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]

View File

@@ -104,6 +104,27 @@ func FilmAdd(c *gin.Context) {
system.SuccessOnlyMsg("影片信息添加成功", c)
}
// FilmDelete 删除影片检索信息, 逻辑删除
func FilmDelete(c *gin.Context) {
// 获取影片ID
idStr := c.DefaultQuery("id", "")
if idStr == "" {
system.Failed("删除失败,缺少ID参数", c)
return
}
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
system.Failed("删除失败,参数类型异常", c)
return
}
// 通过ID删除对应影片检索信息
if err = logic.FL.DelFilm(id); err != nil {
system.Failed(fmt.Sprintln("删除失败: ", err.Error()), c)
return
}
system.SuccessOnlyMsg("影片删除成功", c)
}
//----------------------------------------------------影片分类处理----------------------------------------------------
// FilmClassTree 影片分类树数据

View File

@@ -19,10 +19,10 @@ var FL *FilmLogic
//----------------------------------------------------影片管理业务逻辑----------------------------------------------------
// GetFilmPage 获取影片检索信息分页数据
func (fl *FilmLogic) GetFilmPage(s system.SearchVo) []system.SearchInfo {
// 获取影片检索信息分页数据
sl := system.GetSearchPage(s)
//
return sl
}
@@ -70,6 +70,17 @@ func (fl *FilmLogic) SaveFilmDetail(fd system.FilmDetailVo) error {
return system.SaveDetail(detail)
}
// DelFilm 删除分类影片
func (fl *FilmLogic) DelFilm(id int64) error {
// 通过id查询对应影片信息是否存在
s := system.GetSearchInfoById(id)
if s == nil {
return errors.New("影片信息不存在")
}
// 通过id删除对应影片信息
return system.DelFilmSearch(id)
}
//----------------------------------------------------影片分类业务逻辑----------------------------------------------------
// GetFilmClassTree 获取影片分类信息
@@ -78,6 +89,7 @@ func (fl *FilmLogic) GetFilmClassTree() system.CategoryTree {
return system.GetCategoryTree()
}
// GetFilmClassById 通过ID获取影片分类信息
func (fl *FilmLogic) GetFilmClassById(id int64) *system.CategoryTree {
tree := system.GetCategoryTree()
for _, c := range tree.Children {
@@ -120,6 +132,18 @@ func (fl *FilmLogic) UpdateClass(class system.CategoryTree) error {
if class.Name != "" {
subC.Name = class.Name
}
// 如果所属分类为二级分类且show属性进行了变化
if class.Show {
// 如果show为ture则将其分类下的影片信息进行恢复
if err := system.RecoverFilmSearch(class.Id); err != nil {
return err
}
} else {
// 如果show为false则将其分类下的影片信息进行屏蔽
if err := system.ShieldFilmSearch(class.Id); err != nil {
return err
}
}
subC.Show = class.Show
if err := system.SaveCategoryTree(&tree); err != nil {
return fmt.Errorf("影片分类信息更新失败: %s", err.Error())

View File

@@ -18,7 +18,7 @@ func init() {
if err != nil {
panic(err)
}
// 初始化mysql00000
// 初始化mysql
err = db.InitMysql()
if err != nil {
panic(err)

View File

@@ -694,6 +694,7 @@ func GetMovieListBySort(t int, pid int64, page *Page) []MovieBasicInfo {
// ================================= Manage 管理后台 =================================
// GetSearchPage 获取影片检索分页数据
func GetSearchPage(s SearchVo) []SearchInfo {
// 构建 query查询条件
query := db.Mdb.Model(&SearchInfo{})
@@ -762,6 +763,46 @@ func GetSearchOptions(pid int64) map[string]interface{} {
return tagMap
}
// GetSearchInfoById 查询id对应的检索信息
func GetSearchInfoById(id int64) *SearchInfo {
s := SearchInfo{}
if err := db.Mdb.First(&s, id).Error; err != nil {
log.Println(err)
return nil
}
return &s
}
// DelFilmSearch 删除影片检索信息, (不影响后续更新, 逻辑删除)
func DelFilmSearch(id int64) error {
// 通过检索id对影片检索信息进行删除
if err := db.Mdb.Delete(&SearchInfo{}, id).Error; err != nil {
log.Println(err)
return err
}
return nil
}
// ShieldFilmSearch 删除所属分类下的所有影片检索信息
func ShieldFilmSearch(cid int64) error {
// 通过检索id对影片检索信息进行删除
if err := db.Mdb.Where("cid = ?", cid).Delete(&SearchInfo{}).Error; err != nil {
log.Println(err)
return err
}
return nil
}
// RecoverFilmSearch 恢复所属分类下的影片检索信息状态
func RecoverFilmSearch(cid int64) error {
// 通过检索id对影片检索信息进行删除
if err := db.Mdb.Model(&SearchInfo{}).Unscoped().Where("cid = ?", cid).Update("deleted_at", nil).Error; err != nil {
log.Println(err)
return err
}
return nil
}
// ================================= 接口数据缓存 =================================
// DataCache API请求 数据缓存

View File

@@ -84,6 +84,7 @@ func SetupRouter() *gin.Engine {
{
filmRoute.POST(`/add`, controller.FilmAdd)
filmRoute.GET(`/search/list`, controller.FilmSearchPage)
filmRoute.GET(`/search/del`, controller.FilmDelete)
filmRoute.GET(`/class/tree`, controller.FilmClassTree)
filmRoute.GET(`/class/find`, controller.FindFilmClass)