From 9f85db53abf28ddaf5f8a266336b68c2c4cd1531 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 29 Aug 2024 09:20:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9F=BA=E7=A1=80=E6=95=B0?= =?UTF-8?q?=E6=8D=AE-=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/Base.go | 1 + api/controller/Basic.go | 45 +++++++++++++ api/dao/BaseAgreement.go | 126 +++++++++++++++++++++++++++++++++++ api/dto/BaseAgreement.go | 26 ++++++++ api/model/BaseAgreement.go | 33 +++++++++ api/requests/BasicRequest.go | 10 +++ api/router/router.go | 7 ++ 7 files changed, 248 insertions(+) create mode 100644 api/controller/Basic.go create mode 100644 api/dao/BaseAgreement.go create mode 100644 api/dto/BaseAgreement.go create mode 100644 api/model/BaseAgreement.go create mode 100644 api/requests/BasicRequest.go diff --git a/api/controller/Base.go b/api/controller/Base.go index f293e8a..a6cee21 100644 --- a/api/controller/Base.go +++ b/api/controller/Base.go @@ -6,4 +6,5 @@ type Api struct { Article // 图文 Video // 视频 Public // 公共方法 + Basic // 基础数据 } diff --git a/api/controller/Basic.go b/api/controller/Basic.go new file mode 100644 index 0000000..cdeef1f --- /dev/null +++ b/api/controller/Basic.go @@ -0,0 +1,45 @@ +package controller + +import ( + "github.com/gin-gonic/gin" + "vote-api/api/dao" + "vote-api/api/dto" + "vote-api/api/requests" + "vote-api/api/responses" + "vote-api/global" + "vote-api/utils" +) + +type Basic struct{} + +// GetBasicAgreement 获取协议详情 +func (r *Basic) GetBasicAgreement(c *gin.Context) { + basicRequest := requests.BasicRequest{} + req := basicRequest.GetBasicAgreement + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + // 获取数据 + maps := make(map[string]interface{}) + maps["agreement_type"] = req.AgreementType + + baseAgreementDao := dao.BaseAgreementDao{} + baseAgreement, err := baseAgreementDao.GetBaseAgreement(maps) + if err != nil { + responses.FailWithMessage("协议不存在", c) + return + } + + // 处理返回值 + g := dto.GetBaseAgreementDto(baseAgreement) + + responses.OkWithData(g, c) +} diff --git a/api/dao/BaseAgreement.go b/api/dao/BaseAgreement.go new file mode 100644 index 0000000..89ed5a0 --- /dev/null +++ b/api/dao/BaseAgreement.go @@ -0,0 +1,126 @@ +package dao + +import ( + "gorm.io/gorm" + "gorm.io/gorm/clause" + "vote-api/api/model" + "vote-api/global" +) + +type BaseAgreementDao struct { +} + +// GetBaseAgreementById 获取数据-id +func (r *BaseAgreementDao) GetBaseAgreementById(AgreementId int64) (m *model.BaseAgreement, err error) { + err = global.Db.First(&m, AgreementId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetBaseAgreementPreloadById 获取数据-加载全部关联-id +func (r *BaseAgreementDao) GetBaseAgreementPreloadById(AgreementId int64) (m *model.BaseAgreement, err error) { + err = global.Db.Preload(clause.Associations).First(&m, AgreementId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteBaseAgreement 删除 +func (r *BaseAgreementDao) DeleteBaseAgreement(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.BaseAgreement{}).Error + if err != nil { + return err + } + return nil +} + +// DeleteBaseAgreementById 删除-id +func (r *BaseAgreementDao) DeleteBaseAgreementById(tx *gorm.DB, voteDayId int64) error { + if err := tx.Delete(&model.BaseAgreement{}, voteDayId).Error; err != nil { + return err + } + return nil +} + +// EditBaseAgreement 修改 +func (r *BaseAgreementDao) EditBaseAgreement(tx *gorm.DB, maps interface{}, data interface{}) error { + err := tx.Model(&model.BaseAgreement{}).Where(maps).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// EditBaseAgreementById 修改-id +func (r *BaseAgreementDao) EditBaseAgreementById(tx *gorm.DB, AgreementId int64, data interface{}) error { + err := tx.Model(&model.BaseAgreement{}).Where("agreement_id = ?", AgreementId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetBaseAgreementList 获取列表 +func (r *BaseAgreementDao) GetBaseAgreementList(maps interface{}) (m []*model.BaseAgreement, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetBaseAgreementCount 获取数量 +func (r *BaseAgreementDao) GetBaseAgreementCount(maps interface{}) (total int64, err error) { + err = global.Db.Model(&model.BaseAgreement{}).Where(maps).Count(&total).Error + if err != nil { + return 0, err + } + return total, nil +} + +// GetBaseAgreementListRand 获取列表-随机 +func (r *BaseAgreementDao) GetBaseAgreementListRand(maps interface{}, limit int) (m []*model.BaseAgreement, err error) { + err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddBaseAgreement 新增 +func (r *BaseAgreementDao) AddBaseAgreement(tx *gorm.DB, model *model.BaseAgreement) (*model.BaseAgreement, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} + +// GetBaseAgreement 获取 +func (r *BaseAgreementDao) GetBaseAgreement(maps interface{}) (m *model.BaseAgreement, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// Inc 自增 +func (r *BaseAgreementDao) Inc(tx *gorm.DB, AgreementId int64, field string, numeral int) error { + err := tx.Model(&model.BaseAgreement{}).Where("agreement_id = ?", AgreementId).UpdateColumn(field, gorm.Expr(field+" + ?", numeral)).Error + if err != nil { + return err + } + return nil +} + +// Dec 自减 +func (r *BaseAgreementDao) Dec(tx *gorm.DB, AgreementId int64, field string, numeral int) error { + err := tx.Model(&model.BaseAgreement{}).Where("agreement_id = ?", AgreementId).UpdateColumn(field, gorm.Expr(field+" - ?", numeral)).Error + if err != nil { + return err + } + return nil +} diff --git a/api/dto/BaseAgreement.go b/api/dto/BaseAgreement.go new file mode 100644 index 0000000..c31b838 --- /dev/null +++ b/api/dto/BaseAgreement.go @@ -0,0 +1,26 @@ +package dto + +import ( + "fmt" + "vote-api/api/model" +) + +// BaseAgreementDto 基础-协议 +type BaseAgreementDto struct { + AgreementId string `json:"agreement_id"` // 主键id + AgreementType int `json:"agreement_type"` // 协议类型(1:大赛介绍 2:投票规则) + AgreementContent string `json:"agreement_content"` // 协议内容 + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 +} + +// GetBaseAgreementDto 详情 +func GetBaseAgreementDto(m *model.BaseAgreement) *BaseAgreementDto { + return &BaseAgreementDto{ + AgreementId: fmt.Sprintf("%d", m.AgreementId), + AgreementType: m.AgreementType, + AgreementContent: m.AgreementContent, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, + } +} diff --git a/api/model/BaseAgreement.go b/api/model/BaseAgreement.go new file mode 100644 index 0000000..40f5089 --- /dev/null +++ b/api/model/BaseAgreement.go @@ -0,0 +1,33 @@ +package model + +import ( + "gorm.io/gorm" + "time" + "vote-api/global" +) + +// BaseAgreement 基础-协议 +type BaseAgreement struct { + AgreementId int64 `gorm:"column:agreement_id;type:bigint(19);primary_key;comment:主键id" json:"agreement_id"` + AgreementType int `gorm:"column:agreement_type;type:tinyint(1);comment:协议类型(1:大赛介绍 2:投票规则);NOT NULL" json:"agreement_type"` + AgreementContent string `gorm:"column:agreement_content;type:text;comment:协议内容" json:"agreement_content"` + Model +} + +func (m *BaseAgreement) TableName() string { + return "base_agreement" +} + +func (m *BaseAgreement) BeforeCreate(tx *gorm.DB) error { + if m.AgreementId == 0 { + m.AgreementId = global.Snowflake.Generate().Int64() + } + + m.CreatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("CreatedAt", m.CreatedAt) + + m.UpdatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt) + + return nil +} diff --git a/api/requests/BasicRequest.go b/api/requests/BasicRequest.go new file mode 100644 index 0000000..d6e7b20 --- /dev/null +++ b/api/requests/BasicRequest.go @@ -0,0 +1,10 @@ +package requests + +type BasicRequest struct { + GetBasicAgreement // 获取协议详情 +} + +// GetBasicAgreement 获取协议详情 +type GetBasicAgreement struct { + AgreementType int `json:"agreement_type" form:"agreement_type" label:"协议类型" validate:"required,oneof=1 2"` // 协议类型(1:大赛介绍 2:投票规则) +} diff --git a/api/router/router.go b/api/router/router.go index e66305b..765a805 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -77,6 +77,13 @@ func publicRouter(r *gin.Engine, api controller.Api) { // 增加浏览数量 r.POST("/browse", api.Public.AddBrowse) + + // 协议 + articleGroup := r.Group("/agreement") + { + // 获取协议详情 + articleGroup.GET("", api.Basic.GetBasicAgreement) + } } // adminRouter 公共路由-验证权限