From 47b8efc69244b24e4853eb908b4011b22d0603f8 Mon Sep 17 00:00:00 2001 From: hujiabin <519660157@qq.com> Date: Mon, 27 May 2024 16:13:52 +0800 Subject: [PATCH] 1 --- database/maildb.sql | 6 +- server/adminserver/api/v1/system/enter.go | 1 + .../adminserver/api/v1/system/group_member.go | 258 ++++++++++++++++++ .../adminserver/api/v1/system/user_group.go | 46 ++-- server/adminserver/app/app.go | 11 +- server/adminserver/go.mod | 14 +- server/adminserver/go.sum | 20 ++ .../adminserver/model/system/group_member.go | 13 + server/adminserver/model/system/paginate.go | 26 ++ server/adminserver/model/system/user_group.go | 14 +- server/adminserver/router/routermgr.go | 2 + server/adminserver/router/system/enter.go | 2 + .../adminserver/router/system/group_member.go | 21 ++ .../adminserver/router/system/user_group.go | 7 +- 14 files changed, 400 insertions(+), 41 deletions(-) create mode 100644 server/adminserver/api/v1/system/group_member.go create mode 100644 server/adminserver/model/system/group_member.go create mode 100644 server/adminserver/model/system/paginate.go create mode 100644 server/adminserver/router/system/group_member.go diff --git a/database/maildb.sql b/database/maildb.sql index 8a62234b..993b3f41 100644 --- a/database/maildb.sql +++ b/database/maildb.sql @@ -89,13 +89,13 @@ DROP TABLE IF EXISTS `t_member`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `t_member` ( `idx` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id', - `group_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT '分组id', - `mebmer_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT '账号id', + `group_id` bigint NOT NULL COMMENT 'group id', + `member_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT '账号id', `deleted` int(11) NOT NULL DEFAULT '0' COMMENT '是否已删除', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', UNIQUE KEY `idx` (`idx`), - PRIMARY KEY (`group_id`, `mebmer_id`) + PRIMARY KEY (`group_id`, `member_id`) ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; diff --git a/server/adminserver/api/v1/system/enter.go b/server/adminserver/api/v1/system/enter.go index 172b6155..080cd1f2 100644 --- a/server/adminserver/api/v1/system/enter.go +++ b/server/adminserver/api/v1/system/enter.go @@ -6,5 +6,6 @@ type ApiGroup struct { AuditApi MailApi UserGroupApi + GroupMemberApi BattleServerApi } diff --git a/server/adminserver/api/v1/system/group_member.go b/server/adminserver/api/v1/system/group_member.go new file mode 100644 index 00000000..fa89ae76 --- /dev/null +++ b/server/adminserver/api/v1/system/group_member.go @@ -0,0 +1,258 @@ +package system + +import ( + "f5" + "github.com/gin-gonic/gin" + "github.com/xuri/excelize/v2" + "main/constant" + "main/model/system" + "net/http" + "q5" +) + +type GroupMemberApi struct { +} + +func (this *GroupMemberApi) List(c *gin.Context) { + req := struct { + GroupId int64 `binding:"required" json:"group_id,string" form:"group_id"` + PageDto system.PageDto `json:"page_dto"` + }{} + if err := c.ShouldBindQuery(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + result := []*system.Member{} + f5.GetGoStyleDb().PageQuery( + constant.MAIL_DB, + q5.ToInt32(req.PageDto.PageSize), + q5.ToInt32(req.PageDto.Page), + "SELECT * FROM t_member WHERE 1=1", + []string{}, + f5.GetDbFilter().Comp( + f5.GetDbFilter().EQ("group_id", q5.ToString(req.GroupId)).And(), + ), + "", + func(err error, pg *f5.Pagination) { + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + + for pg.Rows.Next() { + p := new(system.Member) + p.GroupId = q5.ToInt64(pg.Rows.GetByName("group_id")) + p.MemberId = pg.Rows.GetByName("member_id") + q5.AppendSlice(&result, p) + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "获取成功", + "data": result, + "total": pg.Total, + }) + }) +} + +func (this *GroupMemberApi) Add(c *gin.Context) { + req := struct { + GroupId int64 `binding:"required" json:"group_id,string"` + MemberId string `binding:"required" json:"member_id"` + }{} + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + if err := f5.GetApp().GetOrmDb(constant.MAIL_DB).Take(new(system.UserGroup), req.GroupId).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "组不存在", + }) + return + } + if err := f5.GetApp().GetOrmDb(constant.MAIL_DB).Where("group_id =? and member_id =?", req.GroupId, req.MemberId).Take(new(system.Member)).Error; err == nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "数据存在", + }) + return + } + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) + member := new(system.Member) + member.GroupId = req.GroupId + member.MemberId = req.MemberId + member.CreateTime = nowDaySeconds + member.ModifyTime = nowDaySeconds + if err := f5.GetApp().GetOrmDb(constant.MAIL_DB).Create(member).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "添加成功", + }) +} + +func (this *GroupMemberApi) Edit(c *gin.Context) { + req := struct { + GroupId int64 `binding:"required" json:"group_id,string"` + MemberId string `binding:"required" json:"member_id"` + NewMemberId string `binding:"required" json:"new_member_id"` + }{} + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + member := new(system.Member) + db := f5.GetApp().GetOrmDb(constant.MAIL_DB) + if err := db.Take(member, "group_id =? and member_id =?", req.GroupId, req.MemberId).Error; err != nil { + if !f5.IsOrmErrRecordNotFound(err) { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "sever internal error:" + err.Error(), + }) + return + } else { + c.JSON(http.StatusOK, gin.H{ + "code": 2, + "message": "无法查到记录", + }) + return + } + } + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) + member.GroupId = req.GroupId + member.MemberId = req.NewMemberId + member.ModifyTime = nowDaySeconds + if err := db.Where("group_id =? and member_id =?", req.GroupId, req.MemberId).Save(member).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "sever internal error:" + err.Error(), + }) + return + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "", + }) +} + +func (this *GroupMemberApi) Del(c *gin.Context) { + req := struct { + GroupId int64 `binding:"required" json:"group_id,string"` + MemberId string `binding:"required" json:"member_id"` + }{} + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + member := new(system.Member) + db := f5.GetApp().GetOrmDb(constant.MAIL_DB) + if err := db.Take(member, "group_id =? and member_id =?", req.GroupId, req.MemberId).Error; err != nil { + if !f5.IsOrmErrRecordNotFound(err) { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "sever internal error:" + err.Error(), + }) + return + } else { + c.JSON(http.StatusOK, gin.H{ + "code": 2, + "message": "无法查到记录", + }) + return + } + } else { + } + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) + member.ModifyTime = nowDaySeconds + if err := db.Where("group_id =? and member_id =?", req.GroupId, req.MemberId).Delete(member).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "sever internal error:" + err.Error(), + }) + return + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "", + }) +} + +func (this *GroupMemberApi) UploadExcel(c *gin.Context) { + group_id := c.Request.FormValue("group_id") + if group_id == "" { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "缺少参数", + }) + return + } + file, _, err := c.Request.FormFile("file") + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "上传文件失败", + }) + return + } + xlsx, err := excelize.OpenReader(file) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": "解析文件失败", + }) + return + } + rows, err := xlsx.GetRows(xlsx.GetSheetName(xlsx.GetActiveSheetIndex())) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) + members := []*system.Member{} + for i, row := range rows { + if i == 0 { + continue + } + member := new(system.Member) + //member.GroupId = q5.ToInt64(row[0]) + member.GroupId = q5.ToInt64(group_id) + member.MemberId = row[0] + member.CreateTime = nowDaySeconds + member.ModifyTime = nowDaySeconds + members = append(members, member) + } + if err := f5.GetApp().GetOrmDb(constant.MAIL_DB).Create(members).Error; err != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 1, + "message": err.Error(), + }) + return + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "添加成功", + }) +} diff --git a/server/adminserver/api/v1/system/user_group.go b/server/adminserver/api/v1/system/user_group.go index 27547e06..15f75b34 100644 --- a/server/adminserver/api/v1/system/user_group.go +++ b/server/adminserver/api/v1/system/user_group.go @@ -2,10 +2,10 @@ package system import ( "f5" - "net/http" + "github.com/gin-gonic/gin" "main/constant" "main/model/system" - "github.com/gin-gonic/gin" + "net/http" ) type UserGroupApi struct { @@ -15,9 +15,9 @@ func (this *UserGroupApi) List(c *gin.Context) { groups := []system.UserGroup{} f5.GetApp().GetOrmDb(constant.MAIL_DB).Find(&groups) c.JSON(http.StatusOK, gin.H{ - "code": 0, + "code": 0, "message": "", - "data": groups, + "data": groups, }) } @@ -25,11 +25,11 @@ func (this *UserGroupApi) Add(c *gin.Context) { req := struct { GroupName string `binding:"required" json:"group_name"` GroupDesc string `json:"group_desc"` - Enabled int32 `json:"enabled"` + Enabled int32 `json:"enabled"` }{} if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusOK, gin.H{ - "code": 1, + "code": 1, "message": err.Error(), }) return @@ -37,14 +37,14 @@ func (this *UserGroupApi) Add(c *gin.Context) { db := f5.GetApp().GetOrmDb(constant.MAIL_DB) if err := db.Where("group_name = ?", req.GroupName).Take(new(system.UserGroup)).Error; err == nil { c.JSON(http.StatusOK, gin.H{ - "code": 2, + "code": 2, "message": "组名已存在", }) return } else { if !f5.IsOrmErrRecordNotFound(err) { c.JSON(http.StatusOK, gin.H{ - "code": 500, + "code": 500, "message": "sever internal error:" + err.Error(), }) return @@ -61,28 +61,28 @@ func (this *UserGroupApi) Add(c *gin.Context) { if err := db.Create(group).Error; err != nil { if !f5.IsOrmErrRecordNotFound(err) { c.JSON(http.StatusOK, gin.H{ - "code": 500, + "code": 500, "message": "sever internal error:" + err.Error(), }) return } } c.JSON(http.StatusOK, gin.H{ - "code": 0, + "code": 0, "message": "", }) } func (this *UserGroupApi) Edit(c *gin.Context) { req := struct { - GroupId int64 `binding:"required" json:"group_id"` + GroupId int64 `binding:"required" json:"group_id,string"` GroupName string `binding:"required" json:"group_name"` GroupDesc string `json:"group_desc"` - Enabled int32 `json:"enabled"` + Enabled int32 `json:"enabled"` }{} if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusOK, gin.H{ - "code": 1, + "code": 1, "message": err.Error(), }) return @@ -92,13 +92,13 @@ func (this *UserGroupApi) Edit(c *gin.Context) { if err := db.Take(group, req.GroupId).Error; err != nil { if !f5.IsOrmErrRecordNotFound(err) { c.JSON(http.StatusOK, gin.H{ - "code": 500, + "code": 500, "message": "sever internal error:" + err.Error(), }) return } else { c.JSON(http.StatusOK, gin.H{ - "code": 2, + "code": 2, "message": "无法查到记录", }) return @@ -112,24 +112,24 @@ func (this *UserGroupApi) Edit(c *gin.Context) { group.ModifyTime = nowDaySeconds if err := db.Save(group).Error; err != nil { c.JSON(http.StatusOK, gin.H{ - "code": 500, + "code": 500, "message": "sever internal error:" + err.Error(), }) return } c.JSON(http.StatusOK, gin.H{ - "code": 0, + "code": 0, "message": "", }) } func (this *UserGroupApi) Del(c *gin.Context) { req := struct { - GroupId int64 `binding:"required" json:"group_id"` + GroupId int64 `binding:"required" json:"group_id,string"` }{} if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusOK, gin.H{ - "code": 1, + "code": 1, "message": err.Error(), }) return @@ -139,13 +139,13 @@ func (this *UserGroupApi) Del(c *gin.Context) { if err := db.Take(group, req.GroupId).Error; err != nil { if !f5.IsOrmErrRecordNotFound(err) { c.JSON(http.StatusOK, gin.H{ - "code": 500, + "code": 500, "message": "sever internal error:" + err.Error(), }) return } else { c.JSON(http.StatusOK, gin.H{ - "code": 2, + "code": 2, "message": "无法查到记录", }) return @@ -156,13 +156,13 @@ func (this *UserGroupApi) Del(c *gin.Context) { group.ModifyTime = nowDaySeconds if err := db.Delete(group).Error; err != nil { c.JSON(http.StatusOK, gin.H{ - "code": 500, + "code": 500, "message": "sever internal error:" + err.Error(), }) return } c.JSON(http.StatusOK, gin.H{ - "code": 0, + "code": 0, "message": "", }) } diff --git a/server/adminserver/app/app.go b/server/adminserver/app/app.go index 5ef41f25..e0a7c7d9 100644 --- a/server/adminserver/app/app.go +++ b/server/adminserver/app/app.go @@ -91,6 +91,15 @@ func (this *app) registerDataSources() { mt.Table.MailDb.GetById(0).GetPasswd(), mt.Table.MailDb.GetById(0).GetDatabase(), ) + f5.GetGoStyleDb().RegisterDataSource( + constant.MAIL_DB, + mt.Table.MailDb.GetById(0).GetHost(), + mt.Table.MailDb.GetById(0).GetPort(), + mt.Table.MailDb.GetById(0).GetUser(), + mt.Table.MailDb.GetById(0).GetPasswd(), + mt.Table.MailDb.GetById(0).GetDatabase(), + 1, + ) u := system.SysUser{} f5.GetApp().GetOrmDb(constant.ADMIN_DB).First(&u) @@ -140,5 +149,5 @@ func (this *app) RemoveSession(accountId string) { } func (this *app) HasTask() bool { - return false; + return false } diff --git a/server/adminserver/go.mod b/server/adminserver/go.mod index f041d604..092d534f 100644 --- a/server/adminserver/go.mod +++ b/server/adminserver/go.mod @@ -38,14 +38,20 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/richardlehane/mscfb v1.0.4 // indirect + github.com/richardlehane/msoleps v1.0.3 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect + github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect + github.com/xuri/excelize/v2 v2.8.1 // indirect + github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect golang.org/x/arch v0.5.0 // indirect - golang.org/x/crypto v0.13.0 // indirect - golang.org/x/net v0.15.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/adminserver/go.sum b/server/adminserver/go.sum index 7243945c..d470662a 100644 --- a/server/adminserver/go.sum +++ b/server/adminserver/go.sum @@ -54,10 +54,17 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= 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/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= +github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM= +github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -74,19 +81,32 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0= +github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= +github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ= +github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE= +github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4= +github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.5.0 h1:jpGode6huXQxcskEIpOCvrU+tzo81b6+oFLUYXWtH/Y= golang.org/x/arch v0.5.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= diff --git a/server/adminserver/model/system/group_member.go b/server/adminserver/model/system/group_member.go new file mode 100644 index 00000000..50838cf5 --- /dev/null +++ b/server/adminserver/model/system/group_member.go @@ -0,0 +1,13 @@ +package system + +type Member struct { + GroupId int64 `gorm:"column:group_id" json:"group_id,string"` + MemberId string `gorm:"column:member_id" json:"member_id"` + Deleted int32 `gorm:"column:deleted" json:"deleted"` + CreateTime int32 `gorm:"column:createtime" json:"createtime"` + ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` +} + +func (Member) TableName() string { + return "t_member" +} diff --git a/server/adminserver/model/system/paginate.go b/server/adminserver/model/system/paginate.go new file mode 100644 index 00000000..1ab13515 --- /dev/null +++ b/server/adminserver/model/system/paginate.go @@ -0,0 +1,26 @@ +package system + +import "gorm.io/gorm" + +type PageDto struct { + Page int `form:"page" json:"page" query:"page"` + PageSize int `form:"pageSize" json:"pageSize" query:"pageSize"` +} + +func Paginate(req *PageDto) func(db *gorm.DB) *gorm.DB { + return func(db *gorm.DB) *gorm.DB { + page := req.Page + if page <= 0 { + page = 1 + } + pageSize := req.PageSize + switch { + case pageSize > 100: + pageSize = 100 + case pageSize <= 0: + pageSize = 10 + } + offset := (page - 1) * pageSize + return db.Offset(offset).Limit(pageSize) + } +} diff --git a/server/adminserver/model/system/user_group.go b/server/adminserver/model/system/user_group.go index 75f4e0db..463f0e8c 100644 --- a/server/adminserver/model/system/user_group.go +++ b/server/adminserver/model/system/user_group.go @@ -1,13 +1,13 @@ package system type UserGroup struct { - GroupId int64 `gorm:"primaryKey;column:group_id" json:"group_id"` - GroupName string `gorm:"unique;column:group_name" json:"group_name"` - GroupDesc string `gorm:"group_desc" json:"group_desc"` - Enabled int32 `gorm:"column:enabled" json:"enabled"` - Deleted int32 `gorm:"column:deleted" json:"deleted"` - CreateTime int32 `gorm:"column:createtime" json:"createtime"` - ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` + GroupId int64 `gorm:"primaryKey;column:group_id" json:"group_id,string"` + GroupName string `gorm:"unique;column:group_name" json:"group_name"` + GroupDesc string `gorm:"group_desc" json:"group_desc"` + Enabled int32 `gorm:"column:enabled" json:"enabled"` + Deleted int32 `gorm:"column:deleted" json:"deleted"` + CreateTime int32 `gorm:"column:createtime" json:"createtime"` + ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` } func (UserGroup) TableName() string { diff --git a/server/adminserver/router/routermgr.go b/server/adminserver/router/routermgr.go index 06965dcf..5a89fafe 100644 --- a/server/adminserver/router/routermgr.go +++ b/server/adminserver/router/routermgr.go @@ -20,6 +20,8 @@ func (this *routerMgr) Init() { this.system.InitAnncRouter(priGroup) this.system.InitAuditRouter(priGroup) this.system.InitMailRouter(priGroup) + this.system.InitUserGroupRouter(priGroup) + this.system.InitGroupMemberRouter(priGroup) this.system.InitBattleServerRouter(priGroup) f5.GetSysLog().Info("routerMgr.init") } diff --git a/server/adminserver/router/system/enter.go b/server/adminserver/router/system/enter.go index 52af4214..f72f0146 100644 --- a/server/adminserver/router/system/enter.go +++ b/server/adminserver/router/system/enter.go @@ -5,5 +5,7 @@ type RouterGroup struct { AnncRouter AuditRouter MailRoute + UserGroupRoute + GroupMemberRoute BattleServerRoute } diff --git a/server/adminserver/router/system/group_member.go b/server/adminserver/router/system/group_member.go new file mode 100644 index 00000000..bb5379f3 --- /dev/null +++ b/server/adminserver/router/system/group_member.go @@ -0,0 +1,21 @@ +package system + +import ( + "github.com/gin-gonic/gin" + "main/api/v1" +) + +type GroupMemberRoute struct { +} + +func (this *GroupMemberRoute) InitGroupMemberRouter(priRouter *gin.RouterGroup) { + group := priRouter.Group("group_member") + api := v1.ApiGroupApp.SystemApiGroup.GroupMemberApi + { + group.POST("add", api.Add) + group.POST("edit", api.Edit) + group.POST("del", api.Del) + group.GET("list", api.List) + group.POST("uploadExcel", api.UploadExcel) + } +} diff --git a/server/adminserver/router/system/user_group.go b/server/adminserver/router/system/user_group.go index a434c1db..d7149183 100644 --- a/server/adminserver/router/system/user_group.go +++ b/server/adminserver/router/system/user_group.go @@ -5,15 +5,16 @@ import ( "main/api/v1" ) -type UserGroupRoute struct{ - +type UserGroupRoute struct { } -func (this *UserGroupRoute) InitMailRouter(priRouter *gin.RouterGroup) { +func (this *UserGroupRoute) InitUserGroupRouter(priRouter *gin.RouterGroup) { group := priRouter.Group("user_group") api := v1.ApiGroupApp.SystemApiGroup.UserGroupApi { group.POST("add", api.Add) + group.POST("edit", api.Edit) + group.POST("del", api.Del) group.GET("list", api.List) } }