From 4432b1832da6851dd938adadb18ce2694bb40b40 Mon Sep 17 00:00:00 2001 From: yangduo Date: Thu, 8 Aug 2024 10:34:10 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/adminserver/api/v1/system/mail.go | 98 ++++++++++++++++++++---- server/adminserver/model/system/mail.go | 31 ++++---- server/adminserver/router/system/mail.go | 1 + 3 files changed, 98 insertions(+), 32 deletions(-) diff --git a/server/adminserver/api/v1/system/mail.go b/server/adminserver/api/v1/system/mail.go index dc9cb868..287982b8 100644 --- a/server/adminserver/api/v1/system/mail.go +++ b/server/adminserver/api/v1/system/mail.go @@ -2,47 +2,55 @@ package system import ( "f5" - "github.com/gin-gonic/gin" + "jccommon" "main/common" "main/constant" "main/model/system" "net/http" "q5" - "jccommon" + + "github.com/gin-gonic/gin" ) type MailApi struct { } func (this *MailApi) ListMail(c *gin.Context) { - var pageSize int32 = 100 - var cursor int64 = 0 + var pageSize = q5.SafeToInt32(c.DefaultQuery("pagesize", "")) + var cursor = q5.SafeToInt64(c.DefaultQuery("cursor", "")) orderBy := "" sql := "SELECT * FROM t_mail" subFilters := []f5.DbQueryFilter{} + { + f5.GetDbFilter().Custom("deleted = 0").And() + } mails := []*system.Mail{} + rspObj := struct { + Code int32 `json:"code"` + Message string `json:"message"` + Cursor int64 `json:"cursor"` + Remaining int32 `json:"remaining"` + Data []*system.Mail `json:"data"` + }{} f5.GetGoStyleDb().StreamPageQuery( constant.MAIL_DB, pageSize, cursor, sql, - []string{ - }, + []string{}, f5.GetDbFilter().Comp(subFilters...), orderBy, - func (err error, pagination *f5.StreamPagination) { - //rspObj.Page.FillPage(pagination) + func(err error, pagination *f5.StreamPagination) { + rspObj.Cursor = pagination.NextCursor + rspObj.Remaining = pagination.Remaining }, - func (ds *f5.DataSet) { + func(ds *f5.DataSet) { p := new(system.Mail) f5.UnmarshalModel(ds, p) q5.AppendSlice(&mails, p) }) - c.JSON(http.StatusOK, gin.H{ - "code": 0, - "message": "", - "data": mails, - }) + rspObj.Data = mails + c.JSON(http.StatusOK, rspObj) } func (this *MailApi) AddMail(c *gin.Context) { @@ -72,10 +80,21 @@ func (this *MailApi) AddMail(c *gin.Context) { }) return } + + var count int64 = 0 + if f5.GetApp().GetOrmDb(constant.MAIL_DB).Table("t_mail").Where("unikey = ?", reqJson.UniKey).Count(&count); count > 0 { + c.JSON(http.StatusOK, gin.H{ + "code": 2, + "message": "unikey 重复", + }) + return + } + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) mail := new(system.Mail) mail.MailId = f5.GetApp().NewLockNodeUuid() mail.MailType = reqJson.MailType + mail.UniKey = reqJson.UniKey mail.SendTime = reqJson.SendTime mail.ExpireTime = reqJson.ExpireTime mail.UserRegStartTime = reqJson.UserRegStartTime @@ -88,8 +107,12 @@ func (this *MailApi) AddMail(c *gin.Context) { mail.Tag2 = jccommon.MAIL_TAG2_CUSTOM_NORMAL mail.CreateTime = nowDaySeconds mail.ModifyTime = nowDaySeconds - if f5.GetApp().GetOrmDb(constant.MAIL_DB).Create(mail).Error == nil { - + if f5.GetApp().GetOrmDb(constant.MAIL_DB).Create(mail).Error != nil { + c.JSON(http.StatusOK, gin.H{ + "code": 500, + "message": "", + }) + return } { e := new(jccommon.MailEvent) @@ -132,6 +155,16 @@ func (this *MailApi) EditMail(c *gin.Context) { }) return } + + var count int64 = 0 + if f5.GetApp().GetOrmDb(constant.MAIL_DB).Where("mail_id = ?", reqJson.MailId).Count(&count); count < 1 { + c.JSON(http.StatusOK, gin.H{ + "code": 2, + "message": "mailid不存在", + }) + return + } + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) mail := new(system.Mail) mail.MailId = reqJson.MailId @@ -144,7 +177,38 @@ func (this *MailApi) EditMail(c *gin.Context) { mail.Content = reqJson.Content mail.Attachments = reqJson.Attachments mail.Recipients = reqJson.Recipients - mail.CreateTime = nowDaySeconds + mail.ModifyTime = nowDaySeconds + f5.GetApp().GetOrmDb(constant.MAIL_DB).Save(mail) + { + e := new(jccommon.MailEvent) + e.EventName = jccommon.EVENT_MAIL_UPDATE + e.Param1 = q5.ToString(mail.MailId) + e.CreateTime = nowDaySeconds + e.ModifyTime = nowDaySeconds + f5.GetApp().GetOrmDb(constant.MAIL_DB).Create(e) + } + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "", + }) +} + +func (this *MailApi) DelMail(c *gin.Context) { + mailid := q5.ToInt64(c.Param("mailid")) + + var count int64 = 0 + if f5.GetApp().GetOrmDb(constant.MAIL_DB).Table("t_mail").Where("mail_id = ?", mailid).Count(&count); count < 1 { + c.JSON(http.StatusOK, gin.H{ + "code": 2, + "message": "mailid不存在", + }) + return + } + + nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) + mail := new(system.Mail) + mail.MailId = mailid + mail.Deleted = 1 mail.ModifyTime = nowDaySeconds f5.GetApp().GetOrmDb(constant.MAIL_DB).Save(mail) { diff --git a/server/adminserver/model/system/mail.go b/server/adminserver/model/system/mail.go index 0af7b3fc..a1ba78eb 100644 --- a/server/adminserver/model/system/mail.go +++ b/server/adminserver/model/system/mail.go @@ -23,21 +23,22 @@ Attachments: */ type Mail struct { - MailId int64 `gorm:"primaryKey;column:mail_id;<-:create" json:"mail_id,string"` - MailType int32 `gorm:"column:mail_type;<-:create" json:"mail_type"` - Subject string `gorm:"column:subject" json:"subject"` - Content string `gorm:"column:content" json:"content"` - Recipients []string `gorm:"column:recipients;serializer:json" json:"recipients"` - Attachments []common.Attachment `gorm:"column:attachments;serializer:json" json:"attachments"` - Deleted int32 `gorm:"column:deleted" json:"deleted"` - SendTime int32 `gorm:"column:sendtime" json:"sendtime"` - UserRegStartTime int32 `gorm:"column:user_reg_start_time" json:"user_reg_start_time"` - UserRegEndTime int32 `gorm:"column:user_reg_end_time" json:"user_reg_end_time"` - Tag1 int32 `gorm:"column:tag1" json:"tag1"` - Tag2 int32 `gorm:"column:tag2;" json:"tag2"` - ExpireTime int32 `gorm:"column:expiretime" json:"expiretime"` - CreateTime int32 `gorm:"column:createtime;<-:create" json:"createtime"` - ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` + MailId int64 `gorm:"primaryKey;column:mail_id;<-:create" json:"mail_id,string"` + MailType int32 `gorm:"column:mail_type;<-:create" json:"mail_type"` + UniKey string `gorm:"uniqueIndex;column:unikey;<-:create" json:"unikey"` + Subject string `gorm:"column:subject" json:"subject"` + Content string `gorm:"column:content" json:"content"` + Recipients []string `gorm:"column:recipients;serializer:json" json:"recipients"` + Attachments []common.Attachment `gorm:"column:attachments;serializer:json" json:"attachments"` + Deleted int32 `gorm:"column:deleted" json:"deleted"` + SendTime int32 `gorm:"column:sendtime" json:"sendtime"` + UserRegStartTime int32 `gorm:"column:user_reg_start_time" json:"user_reg_start_time"` + UserRegEndTime int32 `gorm:"column:user_reg_end_time" json:"user_reg_end_time"` + Tag1 int32 `gorm:"column:tag1" json:"tag1"` + Tag2 int32 `gorm:"column:tag2;" json:"tag2"` + ExpireTime int32 `gorm:"column:expiretime" json:"expiretime"` + CreateTime int32 `gorm:"column:createtime;<-:create" json:"createtime"` + ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` } func (Mail) TableName() string { diff --git a/server/adminserver/router/system/mail.go b/server/adminserver/router/system/mail.go index 6429e259..fcc0d9eb 100644 --- a/server/adminserver/router/system/mail.go +++ b/server/adminserver/router/system/mail.go @@ -16,5 +16,6 @@ func (this *MailRoute) InitMailRouter(priRouter *gin.RouterGroup) { priUserRouter.POST("add", middleware.Permission("api/v1/mail/add", mailApi.AddMail)) priUserRouter.POST("edit", middleware.Permission("api/v1/mail/edit", mailApi.EditMail)) priUserRouter.GET("list", middleware.Permission("api/v1/mail/list", mailApi.ListMail)) + priUserRouter.GET("del/:mailid", middleware.Permission("api/v1/mail/del", mailApi.DelMail)) } } From 94a69cbcb548824c6ab287358610c31dc92414c3 Mon Sep 17 00:00:00 2001 From: yangduo Date: Thu, 8 Aug 2024 10:59:00 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/adminserver/middleware/actlog.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/adminserver/middleware/actlog.go b/server/adminserver/middleware/actlog.go index d2c52dd4..a112ad25 100644 --- a/server/adminserver/middleware/actlog.go +++ b/server/adminserver/middleware/actlog.go @@ -23,7 +23,7 @@ func ActLog(c *gin.Context) bool { return false } - url := c.Request.URL.String() + url := c.Request.URL.Path if len(url) > 64*1024 { return false } From c9e1c22c44eae029d783482963e531ef21cc6580 Mon Sep 17 00:00:00 2001 From: yangduo Date: Thu, 8 Aug 2024 11:21:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/adminserver/middleware/actlog.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/server/adminserver/middleware/actlog.go b/server/adminserver/middleware/actlog.go index a112ad25..b068b0a7 100644 --- a/server/adminserver/middleware/actlog.go +++ b/server/adminserver/middleware/actlog.go @@ -7,7 +7,6 @@ import ( "f5" "io" "main/common" - "net/http" "strings" "github.com/gin-gonic/gin" @@ -68,10 +67,7 @@ func ActLog(c *gin.Context) bool { } } if err := f5.GetApp().GetOrmDb(constant.ADMIN_DB).Table("t_op_log").Create(info).Error; err != nil { - c.JSON(http.StatusOK, gin.H{ - "code": 1, - "message": err.Error(), - }) + f5.GetSysLog().Error("!!!!!!!record op_log error:%s, %s, %s", info.Account, info.URL, info.Params) } return true From 9c5e60b19c5c57fa4f818ea261fe874ce0bddf24 Mon Sep 17 00:00:00 2001 From: yangduo Date: Thu, 8 Aug 2024 14:00:49 +0800 Subject: [PATCH 4/4] fix --- server/adminserver/api/v1/system/mail.go | 23 ++++++++++++++--------- server/adminserver/model/system/mail.go | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/server/adminserver/api/v1/system/mail.go b/server/adminserver/api/v1/system/mail.go index c855164d..a6303cab 100644 --- a/server/adminserver/api/v1/system/mail.go +++ b/server/adminserver/api/v1/system/mail.go @@ -25,7 +25,7 @@ func (this *MailApi) ListMail(c *gin.Context) { inSub := `tag1 IN (` + q5.ToString(jccommon.MAIL_TAG1_CUSTOM) inSub += ")" //q5.AppendSlice(&subFilters, f5.GetDbFilter().Custom(inSub).And()) - f5.GetDbFilter().Custom("deleted = 0").And() + q5.AppendSlice(&subFilters, f5.GetDbFilter().Custom("deleted = 0").And()) } mails := []*system.Mail{} rspObj := struct { @@ -164,7 +164,7 @@ func (this *MailApi) EditMail(c *gin.Context) { } var count int64 = 0 - if f5.GetApp().GetOrmDb(constant.MAIL_DB).Where("mail_id = ?", reqJson.MailId).Count(&count); count < 1 { + if f5.GetApp().GetOrmDb(constant.MAIL_DB).Table("t_mail").Where("mail_id = ?", reqJson.MailId).Count(&count); count < 1 { c.JSON(http.StatusOK, gin.H{ "code": 2, "message": "mailid不存在", @@ -204,7 +204,8 @@ func (this *MailApi) DelMail(c *gin.Context) { mailid := q5.ToInt64(c.Param("mailid")) var count int64 = 0 - if f5.GetApp().GetOrmDb(constant.MAIL_DB).Table("t_mail").Where("mail_id = ?", mailid).Count(&count); count < 1 { + db := f5.GetApp().GetOrmDb(constant.MAIL_DB).Table("t_mail").Where("mail_id = ?", mailid) + if db.Count(&count); count < 1 { c.JSON(http.StatusOK, gin.H{ "code": 2, "message": "mailid不存在", @@ -213,15 +214,19 @@ func (this *MailApi) DelMail(c *gin.Context) { } nowDaySeconds := int32(f5.GetApp().GetRealSeconds()) - mail := new(system.Mail) - mail.MailId = mailid - mail.Deleted = 1 - mail.ModifyTime = nowDaySeconds - f5.GetApp().GetOrmDb(constant.MAIL_DB).Save(mail) + delMail := struct { + Deleted int32 `gorm:"column:deleted" json:"-"` + ModifyTime int32 `gorm:"column:modifytime" json:"modifytime"` + }{ + 1, + nowDaySeconds, + } + + db.Save(delMail) { e := new(jccommon.MailEvent) e.EventName = jccommon.EVENT_MAIL_UPDATE - e.Param1 = q5.ToString(mail.MailId) + e.Param1 = q5.ToString(mailid) e.CreateTime = nowDaySeconds e.ModifyTime = nowDaySeconds f5.GetApp().GetOrmDb(constant.MAIL_DB).Create(e) diff --git a/server/adminserver/model/system/mail.go b/server/adminserver/model/system/mail.go index e1952a30..1284137b 100644 --- a/server/adminserver/model/system/mail.go +++ b/server/adminserver/model/system/mail.go @@ -30,7 +30,7 @@ type Mail struct { Content string `gorm:"column:content" json:"content"` Recipients []string `gorm:"column:recipients;serializer:json" json:"recipients"` Attachments []common.Attachment `gorm:"column:attachments;serializer:json" json:"attachments"` - Deleted int32 `gorm:"column:deleted" json:"deleted"` + Deleted int32 `gorm:"column:deleted" json:"-"` SendTime int32 `gorm:"column:sendtime" json:"sendtime"` UserRegStartTime int32 `gorm:"column:user_reg_start_time" json:"user_reg_start_time"` UserRegEndTime int32 `gorm:"column:user_reg_end_time" json:"user_reg_end_time"`