Files
daohangye/service/api/api_v1/panel/itemIcon.go
T
Sun 956e645144 更新v1.3.0-beta24-01-25
Squashed commit of the following:

commit 66d0e5e94c
Author: Sun <95302870@qq.com>
Date:   Thu Jan 25 13:20:34 2024 +0800

    更新1.3.0-beta24-01-25

commit 52a81e5f55
Author: Sun <95302870@qq.com>
Date:   Thu Jan 25 13:13:08 2024 +0800

    Squashed commit of the following:

    commit 908d87357c4e22868eff85f377bb8cd22f3785d7
    Author: Sun <95302870@qq.com>
    Date:   Thu Jan 25 13:12:14 2024 +0800

        增加前端版本号

    commit 8ed2b636476c7a14ae4e1761f7712949b7ce60fc
    Author: Sun <95302870@qq.com>
    Date:   Thu Jan 25 12:29:49 2024 +0800

        增加自动获取前端版本号的git tag

commit ba7d70f9ca
Author: Sun <95302870@qq.com>
Date:   Thu Jan 25 10:58:15 2024 +0800

    优化代码

commit 104543b96f
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 21:28:31 2024 +0800

    增加系统状态组件的部分样式

commit 70c87c94c6
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 20:55:05 2024 +0800

    时间组件和搜索栏组件增加样式类型

commit 6bab5a264f
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 20:41:33 2024 +0800

    将项目列表增加样式并优化减少dom嵌套

commit 99d18df7f0
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 20:11:07 2024 +0800

    增加系统状态、logo等类名并简化部分组件dom

commit bf1cc0cc00
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 17:17:41 2024 +0800

    更新关于页面

commit fceacf58b8
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 14:54:37 2024 +0800

    增加隐藏网络模式切换开关

commit e0dcc49f5b
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 13:55:28 2024 +0800

    优化部分错误码

commit 863cdf0fc1
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 12:54:55 2024 +0800

    声明暴露端口

commit 5b25ef9c19
Author: Sun <95302870@qq.com>
Date:   Wed Jan 24 12:38:48 2024 +0800

    修改命令行所有的输出内容为英文
2024-01-25 13:21:47 +08:00

206 lines
5.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package panel
import (
"encoding/json"
"sun-panel/api/api_v1/common/apiData/commonApiStructs"
"sun-panel/api/api_v1/common/apiData/panelApiStructs"
"sun-panel/api/api_v1/common/apiReturn"
"sun-panel/api/api_v1/common/base"
"sun-panel/global"
"sun-panel/lib/siteFavicon"
"sun-panel/models"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"gorm.io/gorm"
)
type ItemIcon struct {
}
func (a *ItemIcon) Edit(c *gin.Context) {
userInfo, _ := base.GetCurrentUserInfo(c)
req := models.ItemIcon{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
}
if req.ItemIconGroupId == 0 {
// apiReturn.Error(c, "Group is mandatory")
apiReturn.ErrorParamFomat(c, "Group is mandatory")
return
}
req.UserId = userInfo.ID
// json转字符串
if j, err := json.Marshal(req.Icon); err == nil {
req.IconJson = string(j)
}
if req.ID != 0 {
// 修改
updateField := []string{"IconJson", "Icon", "Title", "Url", "LanUrl", "Description", "OpenMethod", "GroupId", "UserId", "ItemIconGroupId"}
if req.Sort != 0 {
updateField = append(updateField, "Sort")
}
global.Db.Model(&models.ItemIcon{}).
Select(updateField).
Where("id=?", req.ID).Updates(&req)
} else {
req.Sort = 9999
// 创建
global.Db.Create(&req)
}
apiReturn.SuccessData(c, req)
}
// 添加多个图标
func (a *ItemIcon) AddMultiple(c *gin.Context) {
userInfo, _ := base.GetCurrentUserInfo(c)
// type Request
req := []models.ItemIcon{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
}
for i := 0; i < len(req); i++ {
if req[i].ItemIconGroupId == 0 {
apiReturn.ErrorParamFomat(c, "Group is mandatory")
return
}
req[i].UserId = userInfo.ID
// json转字符串
if j, err := json.Marshal(req[i].Icon); err == nil {
req[i].IconJson = string(j)
}
}
global.Db.Create(&req)
apiReturn.SuccessData(c, req)
}
// // 获取详情
// func (a *ItemIcon) GetInfo(c *gin.Context) {
// req := systemApiStructs.AiDrawGetInfoReq{}
// if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
// apiReturn.ErrorParamFomat(c, err.Error())
// return
// }
// userInfo, _ := base.GetCurrentUserInfo(c)
// aiDraw := models.AiDraw{}
// aiDraw.ID = req.ID
// if err := aiDraw.GetInfo(global.Db); err != nil {
// if err == gorm.ErrRecordNotFound {
// apiReturn.Error(c, "不存在记录")
// return
// }
// apiReturn.ErrorDatabase(c, err.Error())
// return
// }
// if userInfo.ID != aiDraw.UserID {
// apiReturn.ErrorNoAccess(c)
// return
// }
// apiReturn.SuccessData(c, aiDraw)
// }
func (a *ItemIcon) GetListByGroupId(c *gin.Context) {
req := models.ItemIcon{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
}
userInfo, _ := base.GetCurrentUserInfo(c)
itemIcons := []models.ItemIcon{}
if err := global.Db.Order("sort ,created_at").Find(&itemIcons, "item_icon_group_id = ? AND user_id=?", req.ItemIconGroupId, userInfo.ID).Error; err != nil {
apiReturn.ErrorDatabase(c, err.Error())
return
}
for k, v := range itemIcons {
json.Unmarshal([]byte(v.IconJson), &itemIcons[k].Icon)
}
apiReturn.SuccessListData(c, itemIcons, 0)
}
func (a *ItemIcon) Deletes(c *gin.Context) {
req := commonApiStructs.RequestDeleteIds[uint]{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
}
userInfo, _ := base.GetCurrentUserInfo(c)
if err := global.Db.Delete(&models.ItemIcon{}, "id in ? AND user_id=?", req.Ids, userInfo.ID).Error; err != nil {
apiReturn.ErrorDatabase(c, err.Error())
return
}
apiReturn.Success(c)
}
// 保存排序
func (a *ItemIcon) SaveSort(c *gin.Context) {
req := panelApiStructs.ItemIconSaveSortRequest{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
}
userInfo, _ := base.GetCurrentUserInfo(c)
transactionErr := global.Db.Transaction(func(tx *gorm.DB) error {
// 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db'
for _, v := range req.SortItems {
if err := tx.Model(&models.ItemIcon{}).Where("user_id=? AND id=? AND item_icon_group_id=?", userInfo.ID, v.Id, req.ItemIconGroupId).Update("sort", v.Sort).Error; err != nil {
// 返回任何错误都会回滚事务
return err
}
}
// 返回 nil 提交事务
return nil
})
if transactionErr != nil {
apiReturn.ErrorDatabase(c, transactionErr.Error())
return
}
apiReturn.Success(c)
}
func (a *ItemIcon) GetSiteFavicon(c *gin.Context) {
req := panelApiStructs.ItemIconGetSiteFaviconReq{}
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
apiReturn.ErrorParamFomat(c, err.Error())
return
}
resp := panelApiStructs.ItemIconGetSiteFaviconResp{}
if iconUrl, ok := siteFavicon.GetOneFaviconURL(req.Url); ok {
resp.IconUrl = iconUrl
apiReturn.SuccessData(c, resp)
return
}
apiReturn.Error(c, "acquisition failed")
}