feat: 添加许愿树功能和Go后端服务

- 新增许愿树页面(Canvas绘制、许愿条展示)
- 新增许愿详情页面
- 新增许愿创建弹窗(免费/付费两种模式)
- 新增网络请求封装 utils/request.js
- 新增Go后端项目结构(Gin + Inertia.js)
- 新增用户、订单、许愿数据模型
- 新增数据库迁移脚本
- 更新.gitignore补全忽略规则
- 更新.env.local配置(robot=2, 版本1.0.1)
- 添加secrets目录说明文档
This commit is contained in:
gouki
2026-08-06 12:26:29 +00:00
parent 9c178e6d49
commit 11bfc15141
31 changed files with 2025 additions and 1 deletions
+42
View File
@@ -0,0 +1,42 @@
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
)
// AdminIndex 管理后台首页
func AdminIndex(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "管理后台",
})
}
// AdminUsers 用户管理
func AdminUsers(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "用户管理",
})
}
// AdminOrders 订单管理
func AdminOrders(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "订单管理",
})
}
// AdminWishes 许愿管理
func AdminWishes(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "许愿管理",
})
}
// AdminSettings 系统设置
func AdminSettings(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "系统设置",
})
}
+43
View File
@@ -0,0 +1,43 @@
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
)
// GetOrderList 获取订单列表
func GetOrderList(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"list": []interface{}{},
"total": 0,
},
})
}
// GetOrderDetail 获取订单详情
func GetOrderDetail(c *gin.Context) {
id := c.Param("id")
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"id": id,
},
})
}
// CancelOrder 取消订单
func CancelOrder(c *gin.Context) {
id := c.Param("id")
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"id": id,
},
})
}
+39
View File
@@ -0,0 +1,39 @@
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
)
// CreateOrder 创建订单
func CreateOrder(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"orderId": "example-order-id",
},
})
}
// PayNotify 支付回调
func PayNotify(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": "SUCCESS",
"msg": "OK",
})
}
// GetPayStatus 获取支付状态
func GetPayStatus(c *gin.Context) {
orderId := c.Param("orderId")
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"orderId": orderId,
"status": "pending",
},
})
}
+58
View File
@@ -0,0 +1,58 @@
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
)
// UserLogin 用户登录
func UserLogin(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"token": "example-token",
},
})
}
// UserLogout 用户登出
func UserLogout(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
})
}
// GetUserProfile 获取用户资料
func GetUserProfile(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"id": 1,
"nickname": "用户昵称",
"avatar": "",
},
})
}
// UpdateUserProfile 更新用户资料
func UpdateUserProfile(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
})
}
// WechatAuth 微信授权
func WechatAuth(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"openid": "example-openid",
},
})
}
+57
View File
@@ -0,0 +1,57 @@
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
)
// GetWishTree 获取许愿树
func GetWishTree(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"tree": gin.H{
"id": 1,
"name": "许愿树",
"wishes": []interface{}{},
},
},
})
}
// CreateWish 创建许愿
func CreateWish(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"id": 1,
},
})
}
// GetWishList 获取许愿列表
func GetWishList(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"list": []interface{}{},
"total": 0,
},
})
}
// DeleteWish 删除许愿
func DeleteWish(c *gin.Context) {
id := c.Param("id")
c.JSON(http.StatusOK, gin.H{
"code": 0,
"msg": "success",
"data": gin.H{
"id": id,
},
})
}