diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9f49c82..076db75 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,17 +5,16 @@ - - + - - - + + - + + + diff --git a/activity.log b/activity.log index 2bcaff7..bea506b 100644 --- a/activity.log +++ b/activity.log @@ -1304,3 +1304,21 @@ {"level":"INFO","time":"2024-12-19T14:25:01.712+0800","caller":"handle/create_shiled.go:26","msg":"初始化盾信息成功"} {"level":"INFO","time":"2024-12-19T14:27:17.062+0800","caller":"handle/wshandle.go:95","msg":"用户0xb1b49f717045f0a1a667ccb56e5caaf47d16116f通过客户端主动关闭模块%!t(int=1)连接"} {"level":"INFO","time":"2024-12-19T14:30:40.568+0800","caller":"handle/wshandle.go:95","msg":"用户0xb1b49f717045f0a1a667ccb56e5caaf47d16116f通过客户端主动关闭模块%!t(int=1)连接"} +{"level":"INFO","time":"2024-12-19T14:42:55.714+0800","caller":"utils/init.go:160","msg":"init logger success"} +{"level":"INFO","time":"2024-12-19T14:42:55.718+0800","caller":"utils/init.go:42","msg":"初始化logger成功"} +{"level":"INFO","time":"2024-12-19T14:42:56.165+0800","caller":"utils/init.go:47","msg":"初始化mysql成功"} +{"level":"INFO","time":"2024-12-19T14:43:01.635+0800","caller":"handle/create_shiled.go:26","msg":"初始化盾信息成功"} +{"level":"INFO","time":"2024-12-19T14:50:15.275+0800","caller":"handle/wshandle.go:95","msg":"用户0xb1b49f717045f0a1a667ccb56e5caaf47d16116f通过客户端主动关闭模块%!t(int=1)连接"} +{"level":"INFO","time":"2024-12-19T15:01:30.397+0800","caller":"utils/init.go:160","msg":"init logger success"} +{"level":"INFO","time":"2024-12-19T15:01:30.401+0800","caller":"utils/init.go:42","msg":"初始化logger成功"} +{"level":"INFO","time":"2024-12-19T15:01:30.838+0800","caller":"utils/init.go:47","msg":"初始化mysql成功"} +{"level":"INFO","time":"2024-12-19T15:01:35.524+0800","caller":"handle/create_shiled.go:26","msg":"初始化盾信息成功"} +{"level":"INFO","time":"2024-12-19T15:02:12.042+0800","caller":"utils/init.go:160","msg":"init logger success"} +{"level":"INFO","time":"2024-12-19T15:02:12.046+0800","caller":"utils/init.go:42","msg":"初始化logger成功"} +{"level":"INFO","time":"2024-12-19T15:02:12.452+0800","caller":"utils/init.go:47","msg":"初始化mysql成功"} +{"level":"INFO","time":"2024-12-19T15:02:17.909+0800","caller":"handle/create_shiled.go:26","msg":"初始化盾信息成功"} +{"level":"ERROR","time":"2024-12-19T15:02:55.279+0800","caller":"middleware/activity_end.go:20","msg":"活动结束"} +{"level":"INFO","time":"2024-12-19T15:07:37.899+0800","caller":"utils/init.go:160","msg":"init logger success"} +{"level":"INFO","time":"2024-12-19T15:07:37.903+0800","caller":"utils/init.go:42","msg":"初始化logger成功"} +{"level":"INFO","time":"2024-12-19T15:07:38.314+0800","caller":"utils/init.go:47","msg":"初始化mysql成功"} +{"level":"INFO","time":"2024-12-19T15:07:43.164+0800","caller":"handle/create_shiled.go:26","msg":"初始化盾信息成功"} diff --git a/api/checkerboard.go b/api/checkerboard.go index a2d4845..2136c8e 100644 --- a/api/checkerboard.go +++ b/api/checkerboard.go @@ -9,4 +9,5 @@ type CheckerboardInterface interface { GetCheckBoardInfo(c *gin.Context) GetRecords(c *gin.Context) AddShield(c *gin.Context) + GetAmountTotal(c *gin.Context) } diff --git a/api/route.go b/api/route.go index 3b039d3..558d2a5 100644 --- a/api/route.go +++ b/api/route.go @@ -14,6 +14,7 @@ func ApiRoute(r *gin.Engine) { api.GET("/records", GetApiManager().GetRecords) //用户未登录时获取棋盘信息 api.GET("/boardInfo/:block_id", GetApiManager().GetBoardInfoNoLogin) + api.GET("/amount/total", GetApiManager().GetAmountTotal) user := api.Group("/user") user.Use(middleware.JWTAuthMiddleware()) { @@ -34,13 +35,13 @@ func ApiRoute(r *gin.Engine) { board.Use(middleware.JWTAuthMiddleware()) { // 押注 - board.POST("/betting", GetApiManager().UserBetting, middleware.ActivityEnd()) + board.POST("/betting", GetApiManager().UserBetting) // 获取用户的押注记录 board.GET("/record", GetApiManager().GetUserOperateRecords) // 获取棋盘信息 board.GET("/boardInfo/:block_id", GetApiManager().GetCheckBoardInfo) // 加盾 - board.POST("/add_shield", GetApiManager().AddShield, middleware.ActivityEnd()) + board.POST("/add_shield", GetApiManager().AddShield) } ws := api.Group("/ws") { diff --git a/checkerboard/src/apis/manage.js b/checkerboard/src/apis/manage.js index 5327738..feb82aa 100644 --- a/checkerboard/src/apis/manage.js +++ b/checkerboard/src/apis/manage.js @@ -4,6 +4,8 @@ import instance from './api/'; export const loginUser = (loginData) => instance.post('login', loginData, { skipAuth: true }); // 用户信息 export const UserMessage = () => instance.get('user/userinfo'); +// 获取总价值 +export const GetAmountTotal = () => instance.get('amount/total'); // 获取棋盘信息,未登录状态下 export const BoardInfoNoLogin = (block_id) => instance.get(`boardInfo/${block_id}`,block_id, { skipAuth: true }); // 棋盘信息,登录状态下 diff --git a/checkerboard/src/pages/home/Expand.jsx b/checkerboard/src/pages/home/Expand.jsx index c4d1a11..1b601d2 100644 --- a/checkerboard/src/pages/home/Expand.jsx +++ b/checkerboard/src/pages/home/Expand.jsx @@ -4,9 +4,22 @@ import RecordTable from '../../components/table/RecordTable'; import '../../components/chessboard/ChessBoard.css' import './Expand.css' import Header from '../../components/header/Header'; +import Countdown from "../../components/Countdown.jsx"; +import {useEffect, useState} from "react"; +import {GetAmountTotal} from "../../apis/manage.js"; const Expand = () => { const navigate = useNavigate(); + const [total, setTotal] = useState(0.00); + useEffect(() => { + const getAmountTotal = async () => { + const response = await GetAmountTotal() + if (response.code === 200){ + setTotal(response.data) + } + } + getAmountTotal() + }, []); const handleClick = (index) => { navigate(`/board/${index + 1}`); }; @@ -26,6 +39,8 @@ const Expand = () => {
+
{total}
+
{Array(9).fill().map((_, index) => (
{
- -
diff --git a/controller/checkerboard.go b/controller/checkerboard.go index 07935df..b9339f2 100644 --- a/controller/checkerboard.go +++ b/controller/checkerboard.go @@ -19,6 +19,18 @@ type CheckerBoardController struct { // UserBetting 押注 func (p *CheckerBoardController) UserBetting(c *gin.Context) { + //计算总金额,如果大于100万,就结束,阻止请求 + amountTotal, err := utils.Amount() + if err != nil { + utils.Tools.LG.Error("计算总金额失败", zap.Error(err)) + pkg.ResponseError(c, pkg.CodeActivityEnd) + return + } + if amountTotal >= 1000000 { + utils.Tools.LG.Error("活动结束", zap.Error(err)) + pkg.ResponseError(c, pkg.CodeActivityEnd) + return + } userId := c.GetString(pkg.USERID) if userId == "" { p.LG.Error("用户id在上下文中未找到") @@ -181,7 +193,7 @@ func (p *CheckerBoardController) GetBoardInfoNoLogin(c *gin.Context) { pkg.ResponseError(c, pkg.CodeServerBusy) return } - total, err := utils.Amonent() + total, err := utils.Amount() if err != nil { p.LG.Error("查询用户总金额失败", zap.Error(err)) pkg.ResponseError(c, pkg.CodeServerBusy) @@ -259,7 +271,7 @@ func (p *CheckerBoardController) GetCheckBoardInfo(c *gin.Context) { boardInfo[i].Status = pkg.HAVE } } - total, err := utils.Amonent() + total, err := utils.Amount() if err != nil { p.LG.Error("查询用户总金额失败", zap.Error(err)) pkg.ResponseError(c, pkg.CodeServerBusy) @@ -296,6 +308,18 @@ func (p *CheckerBoardController) AddShield(c *gin.Context) { 5、更新用户盾数量 6、查询交易是否成功 */ + //计算总金额,如果大于100万,就结束,阻止请求 + amountTotal, err := utils.Amount() + if err != nil { + utils.Tools.LG.Error("计算总金额失败", zap.Error(err)) + pkg.ResponseError(c, pkg.CodeActivityEnd) + return + } + if amountTotal >= 1000000 { + utils.Tools.LG.Error("活动结束", zap.Error(err)) + pkg.ResponseError(c, pkg.CodeActivityEnd) + return + } var data model.AddShield if err := c.ShouldBind(&data); err != nil { p.LG.Error("参数错误:", zap.Error(err)) @@ -358,3 +382,14 @@ func (p *CheckerBoardController) AddShield(c *gin.Context) { utils.ChMessage <- message pkg.ResponseSuccess(c, pkg.CodeSuccess) } + +// GetAmountTotal 获取总价值 +func (p *CheckerBoardController) GetAmountTotal(c *gin.Context) { + total, err := utils.Amount() + if err != nil { + p.LG.Error("获取总价值失败", zap.Error(err)) + pkg.ResponseError(c, pkg.CodeServerBusy) + return + } + pkg.ResponseSuccess(c, total) +} diff --git a/middleware/activity_end.go b/middleware/activity_end.go index b8be450..2705a93 100644 --- a/middleware/activity_end.go +++ b/middleware/activity_end.go @@ -1,26 +1,12 @@ package middleware import ( - "activity/utils" "github.com/gin-gonic/gin" - "go.uber.org/zap" ) // 活动结束中间件 func ActivityEnd() func(c *gin.Context) { return func(c *gin.Context) { - //计算总金额,如果大于100万,就结束,阻止请求 - total, err := utils.Amonent() - if err != nil { - utils.Tools.LG.Error("计算总金额失败", zap.Error(err)) - c.Abort() - return - } - if total >= 1000000 { - utils.Tools.LG.Error("活动结束", zap.Error(err)) - c.Abort() - return - } - c.Next() + } } diff --git a/pkg/code.go b/pkg/code.go index d860d99..313d7fb 100644 --- a/pkg/code.go +++ b/pkg/code.go @@ -23,6 +23,7 @@ const ( CodeInsufficientBalance CodeUpdateError CodePriceError + CodeActivityEnd ) var codeMsgMap = map[ResCode]string{ @@ -46,6 +47,7 @@ var codeMsgMap = map[ResCode]string{ CodeInsufficientBalance: "余额不足", CodeUpdateError: "更新失败", CodePriceError: "提交的价格过低", + CodeActivityEnd: "本期活动结束", } func (c ResCode) Msg() string { diff --git a/utils/common.go b/utils/common.go index acba9b9..e0210b0 100644 --- a/utils/common.go +++ b/utils/common.go @@ -4,7 +4,7 @@ import ( "activity/model" ) -func Amonent() (total float64, err error) { +func Amount() (total float64, err error) { var boards []model.CheckerBoard err = Tools.DB.Find(&boards).Error if err != nil {