Sun 956e645144 更新v1.3.0-beta24-01-25
Squashed commit of the following:

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

    更新1.3.0-beta24-01-25

commit 52a81e5f558b3e7b329f828adbd8255960dd750b
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 ba7d70f9cabf020ab9ce682be5e593b649aed071
Author: Sun <95302870@qq.com>
Date:   Thu Jan 25 10:58:15 2024 +0800

    优化代码

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

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

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

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

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

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

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

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

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

    更新关于页面

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

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

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

    优化部分错误码

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

    声明暴露端口

commit 5b25ef9c194dc0112cd10250c04344dd6f57be27
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")
}