增加后台日志
This commit is contained in:
parent
9a3bb4a157
commit
f1d34ff4b4
@ -2,6 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"backend/model"
|
||||
"backend/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
@ -34,5 +35,27 @@ func AdminAdd(c *gin.Context) {
|
||||
failed(c, "Failed to add admin: "+err.Error())
|
||||
return
|
||||
}
|
||||
// 记录管理员操作日志
|
||||
util.AddAdminLog(c, "添加管理员", admin)
|
||||
success(c, result)
|
||||
}
|
||||
|
||||
func AdminLogList(c *gin.Context) {
|
||||
// 处理管理员日志列表请求
|
||||
List := []*model.AdminLog{}
|
||||
db := util.MPool.GetGameDB()
|
||||
if db == nil {
|
||||
failed(c, "Failed to get database connection")
|
||||
return
|
||||
}
|
||||
err := db.Select(&List, "SELECT * FROM admin_log ORDER BY createTime DESC")
|
||||
if err != nil {
|
||||
failed(c, "Failed to retrieve admin logs: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
success(c, &model.Result{
|
||||
Data: List,
|
||||
Result: 0,
|
||||
})
|
||||
}
|
||||
|
||||
@ -36,10 +36,8 @@ func Login(c *gin.Context) {
|
||||
|
||||
func Codes(c *gin.Context) {
|
||||
c.JSON(200, gin.H{
|
||||
"code": 0,
|
||||
"data": map[string]interface{}{
|
||||
"codes": []string{"AC_100100", "AC_100110", "AC_100120", "AC_100010"},
|
||||
},
|
||||
"code": 0,
|
||||
"data": []string{"AC_100100", "AC_100110", "AC_100120", "AC_100010"},
|
||||
"message": "Success",
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,6 +1,13 @@
|
||||
package controller
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
import (
|
||||
"backend/common"
|
||||
"backend/feishu"
|
||||
"fmt"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/robfig/cron/v3"
|
||||
)
|
||||
|
||||
func success(c *gin.Context, data interface{}) {
|
||||
c.JSON(200, gin.H{
|
||||
@ -16,3 +23,17 @@ func failed(c *gin.Context, message string) {
|
||||
"message": message,
|
||||
})
|
||||
}
|
||||
|
||||
func USSendInfo() {
|
||||
c := cron.New()
|
||||
// 每天12:10触发
|
||||
_, err := c.AddFunc("10 12 * * *", func() {
|
||||
feishu.SendOperationMsg2(common.US_APP_ID)
|
||||
// 这里添加你的业务逻辑
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Println("Failed to schedule SendInfo:", err)
|
||||
return
|
||||
}
|
||||
c.Start()
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"backend/model"
|
||||
"backend/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
@ -14,6 +15,8 @@ func SendMail(c *gin.Context) {
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
// 记录管理员操作日志
|
||||
util.AddAdminLog(c, "发送邮件", Mail)
|
||||
success(c, nil)
|
||||
}
|
||||
|
||||
@ -36,5 +39,7 @@ func MailDelete(c *gin.Context) {
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
// 记录管理员操作日志
|
||||
util.AddAdminLog(c, "删除邮件", Mail)
|
||||
success(c, "删除成功")
|
||||
}
|
||||
|
||||
@ -45,6 +45,7 @@ func AddNode(c *gin.Context) {
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
util.AddAdminLog(c, "添加节点", Node)
|
||||
success(c, nil)
|
||||
}
|
||||
|
||||
@ -67,6 +68,7 @@ func AddServer(c *gin.Context) {
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
util.AddAdminLog(c, "添加服务器", Server)
|
||||
success(c, nil)
|
||||
}
|
||||
|
||||
@ -78,6 +80,7 @@ func UpdateApp(c *gin.Context) {
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
util.AddAdminLog(c, "更新应用", Server)
|
||||
success(c, map[string]string{"msg": msg})
|
||||
}
|
||||
|
||||
@ -96,6 +99,7 @@ func RestartServer(c *gin.Context) {
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
util.AddAdminLog(c, "重启服务器", Server)
|
||||
success(c, map[string]string{"msg": msg})
|
||||
}
|
||||
|
||||
|
||||
@ -120,3 +120,28 @@ func UserGM(c *gin.Context) {
|
||||
|
||||
success(c, r)
|
||||
}
|
||||
|
||||
func UserBan(c *gin.Context) {
|
||||
var request struct {
|
||||
AppId int `json:"AppId"`
|
||||
ServerId int `json:"ServerId"`
|
||||
Uid int `json:"Uid"`
|
||||
Day int `json:"Day"`
|
||||
Reason string `json:"Reason"`
|
||||
}
|
||||
err := c.BindJSON(&request)
|
||||
if err != nil {
|
||||
fmt.Print(err)
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
r, err := model.UserBan(request.AppId, request.ServerId, request.Uid, request.Day, request.Reason)
|
||||
if err != nil {
|
||||
fmt.Print(err)
|
||||
failed(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
success(c, r)
|
||||
}
|
||||
|
||||
10
db/init.sql
10
db/init.sql
@ -78,4 +78,14 @@ CREATE TABLE `admin` (
|
||||
`updateTime` int DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `user_unique` (`username`)
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 16 DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
CREATE TABLE `admin_log` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`admin` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管理员',
|
||||
`action` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作',
|
||||
`params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '参数',
|
||||
`ip` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'IP地址',
|
||||
`createTime` int DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 16 DEFAULT CHARSET = utf8mb4;
|
||||
1
go.mod
1
go.mod
@ -16,6 +16,7 @@ require (
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/jmoiron/sqlx v1.4.0
|
||||
github.com/larksuite/oapi-sdk-go/v3 v3.4.9
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
golang.org/x/crypto v0.24.0
|
||||
golang.org/x/net v0.26.0
|
||||
google.golang.org/protobuf v1.34.1
|
||||
|
||||
2
go.sum
2
go.sum
@ -179,6 +179,8 @@ github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
|
||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
|
||||
64
log/app.log
64
log/app.log
@ -0,0 +1,64 @@
|
||||
2025/07/31 12:05:59 start statistics
|
||||
2025/07/31 12:06:00 map[100321:85878]
|
||||
2025/07/31 12:06:00 remain 2025-07-31 success
|
||||
2025/07/31 12:06:01 map[100002:134 100007:2080 100008:8411 100009:29799 100010:289 100012:1501 100013:1467 100016:1878 100064:438 100072:100 100079:72 100114:669 100119:1443 100133:1664 100135:3502 100142:1253 100148:4291 100167:178 100172:1090 100187:7368 100189:171 100200:629 100241:2192 100248:458 100256:4308 100257:841 100258:2544 100261:254 100262:2489 100269:5575 100270:1032 100271:2073 100272:3285 100277:1048 100278:54 100279:2789 100280:294 100281:477 100282:374 100283:486 100284:2895 100285:935 100286:2833 100287:4580 100288:1384 100289:2008 100290:269 100291:14865 100292:1356 100293:2607 100294:235 100295:1723 100296:9153 100297:1229 100298:3085 100299:5750 100300:1672 100301:7762 100302:1415 100303:382 100304:2108 100305:1791 100306:750 100307:4437 100308:2396 100309:768 100310:2000 100311:3012 100312:1506 100313:606 100314:4586 100315:5338 100316:475 100317:240 100318:3088 100319:2680 100320:478 100321:241 100322:2211 100323:1717 100324:119 100325:3628 100326:3373 100327:739 100328:286 100329:1664 100330:957 100331:107 100332:1069 100333:55 100334:-211]
|
||||
2025/07/31 12:06:01 remain 2025-07-30 success
|
||||
2025/07/31 12:06:02 map[100005:23371 100007:757 100009:16810 100012:1291 100013:630 100016:6962 100048:5774 100055:1260 100061:87 100063:336 100064:132 100079:1136 100080:2878 100086:1166 100112:909 100128:456 100133:241 100135:4882 100141:359 100142:3622 100148:6129 100151:492 100162:2194 100166:175 100167:984 100169:132 100170:47 100173:2012 100174:1942 100200:1448 100208:52 100209:302 100233:37 100235:90 100237:854 100238:1659 100239:2432 100240:171 100241:1572 100242:1515 100243:670 100244:1779 100245:2710 100246:4026 100247:1948 100248:561 100249:344 100250:266 100251:6198 100252:1465 100253:4022 100254:4531 100255:2844 100256:6950 100257:1135 100258:4744 100259:234 100260:4633 100261:3415 100262:185 100263:154 100264:4286 100265:1625 100266:2253 100267:380 100268:1098 100269:4495 100270:4125 100271:7255 100272:1370 100273:4480 100274:2314 100275:766 100276:2388 100277:2908 100278:556 100279:2015]
|
||||
2025/07/31 12:06:02 remain 2025-07-29 success
|
||||
2025/07/31 12:06:03 map[100002:68 100005:52 100007:2076 100008:62 100009:23899 100012:1331 100013:3073 100016:1378 100023:1637 100034:1660 100048:456 100055:428 100069:85 100079:1889 100081:4045 100088:1627 100114:1500 100118:4029 100119:2418 100133:2599 100135:5213 100142:42518 100148:4124 100151:1551 100155:1067 100156:311 100162:564 100166:467 100167:433 100170:832 100180:98 100181:1505 100182:429 100183:1495 100184:944 100185:1213 100186:625 100187:726 100188:502 100189:128 100190:656 100191:1151 100192:1004 100193:186 100194:378 100195:165 100196:2314 100197:965 100198:602 100199:1134 100200:5193 100201:731 100202:481 100203:1734 100204:958 100205:622 100206:232 100207:587 100208:451 100209:2660 100210:232 100211:536 100212:789 100213:517 100214:1046 100215:960 100216:469 100217:519 100218:632 100219:43 100220:928 100221:683 100222:1009 100223:709 100224:538 100225:215 100226:571 100227:453 100228:156 100229:683 100230:241 100231:566 100232:1218 100233:373 100234:1470 100235:480 100236:412 100237:512 100238:1390]
|
||||
2025/07/31 12:06:03 remain 2025-07-28 success
|
||||
2025/07/31 12:06:03 map[100007:918 100009:82702 100012:710 100013:1330 100023:603 100070:458 100079:6387 100081:7548 100083:674 100088:1969 100097:2026 100106:1552 100114:2015 100118:7346 100119:3918 100123:2047 100133:1793 100135:14339 100139:947 100140:875 100141:274 100142:4799 100144:174 100145:140 100146:628 100147:9061 100148:8778 100149:1603 100150:3127 100151:5921 100152:169 100153:2570 100154:1252 100155:4022 100156:3673 100157:40 100158:1903 100159:1932 100160:1133 100161:3188 100162:2823 100163:1855 100164:1808 100165:87 100166:898 100167:263 100168:150 100169:205 100170:2256 100171:6223 100172:1250 100173:262 100174:935 100175:304 100176:633 100177:156 100178:678 100179:349 100180:94]
|
||||
2025/07/31 12:06:04 remain 2025-07-27 success
|
||||
2025/07/31 12:06:04 map[100007:3837 100012:1075 100013:551 100016:667 100031:195 100033:31 100034:3589 100064:781 100068:816 100072:55 100077:222 100079:5723 100090:3792 100095:598 100097:5093 100101:102 100104:11 100106:2184 100107:3129 100108:168 100109:47 100110:14452 100111:1446 100112:1165 100113:34 100114:5370 100115:1256 100116:68 100117:7878 100118:24324 100119:3229 100120:615 100121:1085 100122:371 100123:3824 100124:404 100125:78 100126:229 100127:212 100128:2161 100129:3964 100130:5893 100131:982 100132:2561 100133:1609 100134:992 100135:12417 100136:3965 100137:1160 100138:370 100139:3958 100140:-151 100141:417 100142:2525 100143:404]
|
||||
2025/07/31 12:06:05 remain 2025-07-26 success
|
||||
2025/07/31 12:06:05 map[100002:236 100007:714 100009:74535 100016:4977 100029:388 100048:2261 100062:980 100063:-62 100068:746 100069:2343 100071:955 100073:30970 100074:-256 100076:1660 100077:9201 100078:393 100079:4277 100080:4485 100081:3214 100082:59 100083:1592 100084:1466 100085:5692 100086:3696 100087:706 100088:4320 100089:178 100090:6498 100091:170 100092:1138 100093:36 100094:4067 100095:2585 100096:418 100097:3962 100098:2799 100099:446 100100:63 100101:143 100102:123 100103:1761 100104:376 100105:194 100106:361 100107:2160 100108:1406 100109:-185]
|
||||
2025/07/31 12:06:06 remain 2025-07-25 success
|
||||
2025/07/31 12:06:06 map[100007:3787 100009:16632 100012:567 100013:555 100016:4266 100023:859 100059:3363 100060:166 100061:436 100062:553 100063:92 100064:1221 100065:2403 100066:866 100067:431 100068:1834 100069:1146 100070:2917 100071:3554 100072:3484 100073:8754 100074:3446 100075:475 100076:819]
|
||||
2025/07/31 12:06:07 remain 2025-07-24 success
|
||||
2025/07/31 12:06:07 map[100002:2846 100005:755 100007:1024 100008:1488 100009:29205 100010:1428 100012:823 100016:3332 100023:405 100030:43557 100034:1884 100048:981 100049:533 100058:1810 100059:315]
|
||||
2025/07/31 12:06:08 remain 2025-07-23 success
|
||||
2025/07/31 12:06:08 map[100007:1429 100009:27647 100012:411 100016:1300 100022:227 100034:1417 100035:1818 100048:2808 100052:74 100053:707 100054:791 100055:1623 100056:178 100057:2612]
|
||||
2025/07/31 12:06:08 remain 2025-07-22 success
|
||||
2025/07/31 12:06:09 map[100007:787 100009:24828 100012:1423 100013:1208 100035:1110 100044:2894 100045:802 100046:2605 100047:4018 100048:3149 100049:12347 100050:129 100051:1061]
|
||||
2025/07/31 12:06:09 remain 2025-07-21 success
|
||||
2025/07/31 12:06:10 map[100007:1679 100008:945 100009:7656 100012:376 100014:195 100016:8373 100020:425 100032:98 100034:7653 100039:837 100040:4310 100041:2145 100042:3133 100043:148]
|
||||
2025/07/31 12:06:10 remain 2025-07-20 success
|
||||
2025/07/31 12:06:11 map[100007:2300 100012:1727 100013:911 100016:6326 100020:610 100029:3351 100032:142 100034:2207 100038:666]
|
||||
2025/07/31 12:06:11 remain 2025-07-19 success
|
||||
2025/07/31 12:06:12 map[100007:2808 100008:4362 100009:17490 100012:1464 100017:1785 100020:682 100023:88 100029:1377 100034:9328 100035:1665 100036:143 100037:188]
|
||||
2025/07/31 12:06:12 remain 2025-07-18 success
|
||||
2025/07/31 12:06:13 map[100003:633 100007:2937 100009:18600 100010:1400 100012:1195 100015:2119 100016:3886 100017:3332 100018:91 100023:665 100028:3253 100029:82 100030:43499 100031:6189 100032:332 100033:452]
|
||||
2025/07/31 12:06:13 remain 2025-07-17 success
|
||||
2025/07/31 12:06:14 map[100002:2680 100007:2152 100009:17238 100012:589 100013:691 100014:320 100016:7845 100017:4495 100018:3389 100019:4017 100020:1754 100021:64 100022:803 100023:3637 100024:148 100025:946 100026:180 100027:178]
|
||||
2025/07/31 12:06:14 remain 2025-07-16 success
|
||||
2025/07/31 12:06:15 map[100005:3257 100007:1965 100009:15917 100011:3911 100012:2074 100013:1996 100014:109 100015:1810 100016:569 100017:3066]
|
||||
2025/07/31 12:06:15 remain 2025-07-15 success
|
||||
2025/07/31 12:06:15 map[100001:607 100002:12471 100003:259 100004:10511 100005:9086 100006:962 100007:1042 100008:5939 100009:7828 100010:378 100011:12]
|
||||
2025/07/31 12:06:16 remain 2025-07-14 success
|
||||
2025/07/31 12:06:16 map[100002:570 100003:1839 100004:2498 100005:1210 100006:200 100007:13]
|
||||
2025/07/31 12:06:17 remain 2025-07-13 success
|
||||
2025/07/31 12:06:17 map[100002:648 100003:180]
|
||||
2025/07/31 12:06:18 remain 2025-07-12 success
|
||||
2025/07/31 12:06:18 map[100001:5079 100002:3377 100003:4609 100004:4105 100005:14 100006:589 100007:2753 100010:3297 100011:205 100398:-42 101187:2015 101302:787 101354:9159 101416:582 101418:148 101427:2070 101428:1214 101429:944 101430:1874]
|
||||
2025/07/31 12:06:19 remain 2025-07-11 success
|
||||
2025/07/31 12:06:19 map[100020:2853 100032:1997 100861:757 101137:2491 101139:2406 101187:1210 101302:1376 101337:978 101354:11482 101359:580 101401:5295 101409:1109 101413:1117 101416:1160 101417:1883 101418:2441 101419:2989 101420:3772 101421:4565 101422:1418 101423:5556 101424:173 101425:3748 101426:2171]
|
||||
2025/07/31 12:06:19 remain 2025-07-10 success
|
||||
2025/07/31 12:06:20 map[100020:780 100032:968 100861:1199 101139:1839 101187:586 101301:1088 101302:634 101335:990 101354:10230 101359:568 101401:14814 101405:1179 101408:861 101409:4290 101410:2850 101411:809 101412:9189 101413:2975 101414:5935 101415:154]
|
||||
2025/07/31 12:06:20 remain 2025-07-09 success
|
||||
2025/07/31 12:06:21 map[100020:1628 100032:1941 100500:1270 100861:650 101119:2218 101187:2832 101225:1892 101354:7253 101401:483 101403:1446 101404:1894 101405:852 101406:69 101407:248 101408:490 101409:1318]
|
||||
2025/07/31 12:06:21 remain 2025-07-08 success
|
||||
2025/07/31 12:06:22 map[100020:400 100032:2377 100861:1256 101119:1752 101187:1343 101302:2603 101316:448 101337:529 101345:323 101354:6630 101359:701 101401:390]
|
||||
2025/07/31 12:06:22 remain 2025-07-07 success
|
||||
2025/07/31 12:06:23 map[100020:1594 100032:643 100417:8393 100861:4278 101187:7948 101192:407 101301:965 101302:372 101354:3058 101359:1134 101397:435 101398:278 101401:3524 101402:4897]
|
||||
2025/07/31 12:06:23 remain 2025-07-06 success
|
||||
2025/07/31 12:06:24 map[100020:841 100032:3537 100687:613 100725:241 100861:1902 100906:270 101139:1779 101187:9209 101302:1138 101335:6032 101391:98 101392:635 101397:1859 101398:3219 101399:2840 101400:795]
|
||||
2025/07/31 12:06:24 remain 2025-07-05 success
|
||||
2025/07/31 12:06:24 map[100020:6291 100032:3486 100861:1211 101002:423 101187:6718 101200:1561 101316:481 101336:1712 101354:6240 101359:1588 101382:106 101385:1407 101389:1184 101390:1254 101392:1217 101393:2609 101394:15082 101395:810 101396:344 101397:946]
|
||||
2025/07/31 12:06:25 remain 2025-07-04 success
|
||||
2025/07/31 12:06:25 map[100020:1733 100032:2699 100725:253 100861:1295 101139:762 101187:5307 101309:2902 101316:1024 101336:1127 101337:4064 101354:6760 101359:536 101382:1738 101385:2565 101386:2976 101387:413 101388:1869 101389:1182 101390:877 101391:1279]
|
||||
2025/07/31 12:06:26 remain 2025-07-03 success
|
||||
2025/07/31 12:06:26 map[100020:1303 100032:443 100861:997 101187:8019 101264:1321 101276:52 101316:793 101336:2246 101337:1871 101354:10582 101359:846 101378:353 101381:568 101382:3691 101383:1247 101384:1687]
|
||||
2025/07/31 12:06:27 remain 2025-07-02 success
|
||||
2025/07/31 12:06:27 map[100020:557 100032:313 100668:3296 100725:1470 100861:1379 101139:482 101187:8049 101244:16 101264:1104 101316:503 101336:1488 101337:7136 101340:675 101345:1497 101354:9056 101360:74 101364:872 101375:325 101377:66 101378:2497 101379:1032 101380:806]
|
||||
2025/07/31 12:06:28 remain 2025-07-01 success
|
||||
2025/07/31 12:06:28 end statistics
|
||||
5
main.go
5
main.go
@ -43,6 +43,7 @@ func main() {
|
||||
// 账号管理
|
||||
api.POST("/admin/list", controller.AdminList)
|
||||
api.POST("/admin/add", controller.AdminAdd)
|
||||
api.POST("/admin/log/list", controller.AdminLogList)
|
||||
// 玩家日志
|
||||
api.POST("/log/user", controller.UserDetail)
|
||||
api.POST("/log/asset", controller.Asset)
|
||||
@ -53,6 +54,7 @@ func main() {
|
||||
api.POST("/user/list", controller.UserList)
|
||||
api.GET("/user/info", controller.UserInfo)
|
||||
api.POST("/user/gm", controller.UserGM)
|
||||
api.POST("/user/ban", controller.UserBan)
|
||||
|
||||
api.POST("/server/list", controller.AppList)
|
||||
api.POST("/server/serverList", controller.ServerList)
|
||||
@ -85,7 +87,8 @@ func main() {
|
||||
}
|
||||
go util.ScheduleDailyTask()
|
||||
go server.Server()
|
||||
go model.InitToken() // 初始化 Token 列表
|
||||
go model.InitToken() // 初始化 Token 列表
|
||||
go controller.USSendInfo() // 启动定时任务发送信息
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Printf("Recovered from panic: %v", err)
|
||||
|
||||
@ -17,7 +17,10 @@ func ValidateToken() gin.HandlerFunc {
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
tokenInfo, _ := store.GetTokenInfo(token)
|
||||
if tokenInfo != nil {
|
||||
c.Set("admin", tokenInfo.UserName)
|
||||
}
|
||||
// 这里可以添加逻辑来验证token的有效性
|
||||
// 假设验证通过,继续处理请求
|
||||
c.Next()
|
||||
|
||||
@ -77,3 +77,25 @@ func UserGM(AppId, ServerId, Uid int, Command string) (interface{}, error) {
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func UserBan(AppId, ServerId, Uid int, Day int, Reason string) (interface{}, error) {
|
||||
Now := util.Now()
|
||||
|
||||
req := &msg.ReqAdminBan{
|
||||
Uid: int64(Uid),
|
||||
Time: Now + int64(Day*24*3600),
|
||||
Reason: Reason,
|
||||
}
|
||||
AppId, ServerId = util.ParseUid(Uid)
|
||||
ws, err := util.GetWebsocket(AppId, ServerId)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get websocket: %v", err)
|
||||
}
|
||||
defer ws.Close()
|
||||
|
||||
r, err := util.SendAdminMsg(ws, req)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to send admin message: %v", err)
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
@ -21,6 +21,15 @@ type Admin struct {
|
||||
UpdateTime int `json:"updateTime" db:"updateTime"`
|
||||
}
|
||||
|
||||
type AdminLog struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
Admin string `json:"admin" db:"admin"`
|
||||
Action string `json:"action" db:"action"`
|
||||
Params string `json:"params" db:"params"`
|
||||
IP string `json:"ip" db:"ip"`
|
||||
CreateTime int `json:"createTime" db:"createTime"`
|
||||
}
|
||||
|
||||
func (a *Admin) List() (*Result, error) {
|
||||
// 这里可以添加数据库查询逻辑来获取管理员列表
|
||||
// 假设我们从数据库中查询到数据并返回
|
||||
|
||||
17115
msg/Gameapi.pb.go
17115
msg/Gameapi.pb.go
File diff suppressed because it is too large
Load Diff
BIN
release/backend
BIN
release/backend
Binary file not shown.
12
unit_test.go
12
unit_test.go
@ -1,7 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"backend/Type"
|
||||
"backend/common"
|
||||
"backend/controller"
|
||||
"backend/feishu"
|
||||
"backend/util"
|
||||
@ -10,15 +10,7 @@ import (
|
||||
)
|
||||
|
||||
func TestXxx1(t *testing.T) {
|
||||
d := Type.NotifyClientData{
|
||||
Log: "测试",
|
||||
DeviceModel: "测试",
|
||||
StackTrace: "测试",
|
||||
OperatingSystem: "测试",
|
||||
DeviceUniqueIdentifier: "测试",
|
||||
AlarmTime: "测试",
|
||||
}
|
||||
feishu.SendNotifyClientMsg(&d)
|
||||
feishu.SendOperationMsg2(common.US_APP_ID)
|
||||
}
|
||||
func TestXxx(t *testing.T) {
|
||||
controller.FeishuSendInfo2(nil)
|
||||
|
||||
21
util/util.go
21
util/util.go
@ -302,3 +302,24 @@ func GetRole(code int) string {
|
||||
return "guest"
|
||||
}
|
||||
}
|
||||
|
||||
func ToJson(v interface{}) string {
|
||||
data, err := json.Marshal(v)
|
||||
if err != nil {
|
||||
log.Printf("failed to marshal to JSON: %v", err)
|
||||
return ""
|
||||
}
|
||||
return string(data)
|
||||
}
|
||||
|
||||
func AddAdminLog(c *gin.Context, action string, params interface{}) {
|
||||
admin := c.GetString("admin")
|
||||
ip := c.ClientIP()
|
||||
db := MPool.GetGameDB()
|
||||
_, err := db.Exec("INSERT INTO admin_log (admin, action, params, ip, createTime) VALUES (?, ?, ?, ?, ?)",
|
||||
admin, action, ToJson(params), ip, Now())
|
||||
if err != nil {
|
||||
fmt.Printf("failed to insert admin log: %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user