增加基础数据-协议

This commit is contained in:
wucongxing8150 2024-08-29 09:20:33 +08:00
parent 70bac9077e
commit 9f85db53ab
7 changed files with 248 additions and 0 deletions

View File

@ -6,4 +6,5 @@ type Api struct {
Article // 图文 Article // 图文
Video // 视频 Video // 视频
Public // 公共方法 Public // 公共方法
Basic // 基础数据
} }

45
api/controller/Basic.go Normal file
View File

@ -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)
}

126
api/dao/BaseAgreement.go Normal file
View File

@ -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
}

26
api/dto/BaseAgreement.go Normal file
View File

@ -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,
}
}

View File

@ -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
}

View File

@ -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:投票规则)
}

View File

@ -77,6 +77,13 @@ func publicRouter(r *gin.Engine, api controller.Api) {
// 增加浏览数量 // 增加浏览数量
r.POST("/browse", api.Public.AddBrowse) r.POST("/browse", api.Public.AddBrowse)
// 协议
articleGroup := r.Group("/agreement")
{
// 获取协议详情
articleGroup.GET("", api.Basic.GetBasicAgreement)
}
} }
// adminRouter 公共路由-验证权限 // adminRouter 公共路由-验证权限