社区功能
查询社区列表
community.go
func (Community) TableName() string
用于指定数据库表名
type Community struct {
ID int64 `json:"id" gorm:"primary_key;auto_increment"`
CommunityID string `json:"community_id" gorm:"unique;not null"` // 社区ID
CommunityName string `json:"community_name" gorm:"not null"` // 社区名称
Introduction string `json:"introduction"` // 社区简介
CreateTime time.Time `json:"create_time"` // 创建时间
UpdateTime time.Time `json:"update_time"` // 更新时间
}
func (Community) TableName() string {
return "community"
}
route.go
r.Use(middleware.JWTAuthMiddleware())
{
r.GET("/community", controller.CommunityHandler)
r.GET("/community/:id", controller.CommunityDetailHandler)
}
comunityController.go
func CommunityHandler(c *gin.Context) {
communityList, err := logic.GetCommunityList()
if err != nil {
c.JSON(http.StatusOK, gin.H{
"msg": "获取社区列表失败" + err.Error(),
})
return
}
c.JSON(http.StatusOK, gin.H{
"msg": "获取社区列表成功",
"data": communityList,
})
}
func CommunityDetailHandler(c *gin.Context) {
// 1. 获取参数
idStr := c.Param("id")
id, err2 := strconv.ParseInt(idStr, 10, 64)
if err2 != nil {
return
}
// 2. 业务逻辑
community, err := logic.GetCommunityDetail(id)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"msg": "获取社区详情失败" + err.Error(),
})
return
}
// 3. 返回数据
c.JSON(http.StatusOK, gin.H{
"msg": "获取社区详情成功",
"data": community,
})
}
communityLogic.go
func GetCommunityList() ([]models.Community, error) {
// 1. 查询数据库 2. 返回数据
return mysql.QueryCommunity()
}
func GetCommunityDetail(id int64) (*models.Community, error) {
// 1. 查询数据库
return mysql.QueryCommunityById(id)
}
communityDao.go
func QueryCommunity() ([]models.Community, error) {
// 1. 查询数据库
var communityList []models.Community
err := db.Select("community_id, community_name").Order("community_id desc").Find(&communityList).Error
return communityList, err
}
func QueryCommunityById(id int64) (*models.Community, error) {
var community models.Community
err := db.Select("community_id, community_name, introduction").Where("community_id = ?", id).First(&community).Error
if err != nil {
return nil, err
}
return &community, nil
}