api的编写大同小异,都是利用gin.Context中的Prarm方法来获取字段,然后在去service包中传入相对应的参数然后进行处理,最后使用c.JSON(http.StatusOK, response.SuccessMsg(groups))发送成功消息给前端。
    几乎每一个api的样子都是这样的,下面举一个例子,用于得到那个聊天群

    1. func GetGroup(c *gin.Context) {
    2. uuid := c.Param("uuid")
    3. groups, err := service.GroupService.GetGroups(uuid)
    4. if err != nil {
    5. c.JSON(http.StatusOK, response.FailMsg(err.Error()))
    6. return
    7. }
    8. c.JSON(http.StatusOK, response.SuccessMsg(groups))
    9. }

    写接口的时候要注意返回值,还要约定的code,在这里,其实最重要的是调用service包中的函数
    在这些函数中,大部分是利用gorm进行增删查改,比如举例子,就像上述api调用的

    1. func (g *groupService) GetGroups(uuid string) ([]response.GroupResponse, error) {
    2. db := pool.GetDB()
    3. migrate := &model.Group{}
    4. pool.GetDB().AutoMigrate(&migrate)//让表一直是最新状态
    5. migrate2 := &model.GroupMember{}
    6. pool.GetDB().AutoMigrate(&migrate2)
    7. var queryUser *model.User
    8. db.First(&queryUser, "uuid = ?", uuid)
    9. if queryUser.Id <= 0 {
    10. return nil, errors.New("用户不存在")
    11. }
    12. var groups []response.GroupResponse
    13. db.Raw("SELECT g.id AS group_id, g.uuid, g.created_at, g.name, g.notice FROM group_members AS gm LEFT JOIN `groups` AS g ON gm.group_id = g.id WHERE gm.user_id = ?",
    14. queryUser.Id).Scan(&groups)
    15. return groups, nil
    16. }
    1. 基本上都差不多是这样的,只是逻辑上有点不一样,所以今天就到这里了。