Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions database/init.db.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ func InitDB() {
DB.Exec(`ALTER TABLE nav_table ADD COLUMN hide BOOLEAN;`)
}

// tools数据表结构升级-20250101-【内外网切换】
if !columnExists("nav_table", "intranetUrl") {
DB.Exec(`ALTER TABLE nav_table ADD COLUMN intranetUrl TEXT;`)
}

// 分类表
sql_create_table = `
CREATE TABLE IF NOT EXISTS nav_catelog (
Expand Down
20 changes: 10 additions & 10 deletions service/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ func ImportTools(data []types.Tool) {
catelogs = append(catelogs, v.Catelog)
}
sql_add_tool := `
INSERT INTO nav_table (id, name, catelog, url, logo, desc)
VALUES (?, ?, ?, ?, ?, ?);
INSERT INTO nav_table (id, name, catelog, url, intranetUrl, logo, desc)
VALUES (?, ?, ?, ?, ?, ?, ?);
`
stmt, err := database.DB.Prepare(sql_add_tool)
utils.CheckErr(err)
res, err := stmt.Exec(v.Id, v.Name, v.Catelog, v.Url, v.Logo, v.Desc)
res, err := stmt.Exec(v.Id, v.Name, v.Catelog, v.Url, v.IntranetUrl, v.Logo, v.Desc)
utils.CheckErr(err)
_, err = res.LastInsertId()
utils.CheckErr(err)
Expand All @@ -46,12 +46,12 @@ func UpdateTool(data types.UpdateToolDto) {
// 除了更新工具本身之外,也要更新 img 表
sql_update_tool := `
UPDATE nav_table
SET name = ?, url = ?, logo = ?, catelog = ?, desc = ?, sort = ?, hide = ?
SET name = ?, url = ?, intranetUrl = ?, logo = ?, catelog = ?, desc = ?, sort = ?, hide = ?
WHERE id = ?;
`
stmt, err := database.DB.Prepare(sql_update_tool)
utils.CheckErr(err)
res, err := stmt.Exec(data.Name, data.Url, data.Logo, data.Catelog, data.Desc, data.Sort, data.Hide, data.Id)
res, err := stmt.Exec(data.Name, data.Url, data.IntranetUrl, data.Logo, data.Catelog, data.Desc, data.Sort, data.Hide, data.Id)
utils.CheckErr(err)
_, err = res.RowsAffected()
utils.CheckErr(err)
Expand All @@ -76,16 +76,16 @@ func AddTool(data types.AddToolDto) (int64, error) {
}()

sql_add_tool := `
INSERT INTO nav_table (name, url, logo, catelog, desc, sort, hide)
VALUES (?, ?, ?, ?, ?, ?, ?);
INSERT INTO nav_table (name, url, intranetUrl, logo, catelog, desc, sort, hide)
VALUES (?, ?, ?, ?, ?, ?, ?, ?);
`
stmt, err := tx.Prepare(sql_add_tool)
if err != nil {
return 0, err
}
defer stmt.Close()

res, err := stmt.Exec(data.Name, data.Url, data.Logo, data.Catelog, data.Desc, data.Sort, data.Hide)
res, err := stmt.Exec(data.Name, data.Url, data.IntranetUrl, data.Logo, data.Catelog, data.Desc, data.Sort, data.Hide)
if err != nil {
return 0, err
}
Expand All @@ -111,7 +111,7 @@ func AddTool(data types.AddToolDto) (int64, error) {

func GetAllTool() []types.Tool {
sql_get_all := `
SELECT id,name,url,logo,catelog,desc,sort,hide FROM nav_table order by sort;
SELECT id,name,url,intranetUrl,logo,catelog,desc,sort,hide FROM nav_table order by sort;
`
results := make([]types.Tool, 0)
rows, err := database.DB.Query(sql_get_all)
Expand All @@ -120,7 +120,7 @@ func GetAllTool() []types.Tool {
var tool types.Tool
var hide interface{}
var sort interface{}
err = rows.Scan(&tool.Id, &tool.Name, &tool.Url, &tool.Logo, &tool.Catelog, &tool.Desc, &sort, &hide)
err = rows.Scan(&tool.Id, &tool.Name, &tool.Url, &tool.IntranetUrl, &tool.Logo, &tool.Catelog, &tool.Desc, &sort, &hide)
if hide == nil {
tool.Hide = false
} else {
Expand Down
32 changes: 17 additions & 15 deletions types/dto.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,25 @@ type AddCatelogDto struct {
Hide bool `json:"hide"`
}
type UpdateToolDto struct {
Id int `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Logo string `json:"logo"`
Catelog string `json:"catelog"`
Desc string `json:"desc"`
Sort int `json:"sort"`
Hide bool `json:"hide"`
Id int `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
IntranetUrl string `json:"intranetUrl"`
Logo string `json:"logo"`
Catelog string `json:"catelog"`
Desc string `json:"desc"`
Sort int `json:"sort"`
Hide bool `json:"hide"`
}
type AddToolDto struct {
Name string `json:"name"`
Url string `json:"url"`
Logo string `json:"logo"`
Catelog string `json:"catelog"`
Desc string `json:"desc"`
Sort int `json:"sort"`
Hide bool `json:"hide"`
Name string `json:"name"`
Url string `json:"url"`
IntranetUrl string `json:"intranetUrl"`
Logo string `json:"logo"`
Catelog string `json:"catelog"`
Desc string `json:"desc"`
Sort int `json:"sort"`
Hide bool `json:"hide"`
}
type UpdateToolsSortDto struct {
Id int `json:"id"`
Expand Down
17 changes: 9 additions & 8 deletions types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,15 @@ type Img struct {
}

type Tool struct {
Id int `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Logo string `json:"logo"`
Catelog string `json:"catelog"`
Desc string `json:"desc"`
Sort int `json:"sort"`
Hide bool `json:"hide"`
Id int `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
IntranetUrl string `json:"intranetUrl"`
Logo string `json:"logo"`
Catelog string `json:"catelog"`
Desc string `json:"desc"`
Sort int `json:"sort"`
Hide bool `json:"hide"`
}

type Catelog struct {
Expand Down
34 changes: 34 additions & 0 deletions ui/src/components/CardV2/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,37 @@ body.dark-mode .card-content.compact-mode .card-loading-spinner {
border-width: 1.5px;
}

/* 网络模式指示器样式 */
.network-indicator {
position: absolute;
left: 8px;
top: 8px;
background: rgba(24, 144, 255, 0.9);
color: white;
font-size: 10px;
font-weight: bold;
padding: 2px 4px;
border-radius: 3px;
z-index: 10;
line-height: 1;
min-width: 12px;
text-align: center;
}

.network-indicator.intranet {
background: rgba(82, 196, 26, 0.9);
}

.network-indicator.internet {
background: rgba(24, 144, 255, 0.9);
}

/* 暗色模式下的网络指示器 */
body.dark-mode .network-indicator {
background: rgba(24, 144, 255, 0.8);
}

body.dark-mode .network-indicator.intranet {
background: rgba(82, 196, 26, 0.8);
}

Loading