Browse Source

数据集点赞后端

tags/v1.22.3.2^2
ychao_1983 4 years ago
parent
commit
6931dc07ff
8 changed files with 101 additions and 4 deletions
  1. +10
    -0
      models/base_message.go
  2. +1
    -0
      models/dataset.go
  3. +62
    -0
      models/dataset_star.go
  4. +5
    -4
      models/user.go
  5. +1
    -0
      options/locale/locale_en-US.ini
  6. +2
    -0
      options/locale/locale_zh-CN.ini
  7. +19
    -0
      routers/repo/dataset.go
  8. +1
    -0
      routers/routes/routes.go

+ 10
- 0
models/base_message.go View File

@@ -0,0 +1,10 @@
package models

type BaseMessage struct {
Code int
Message string
}

var BaseMessageOK = BaseMessage{
0, "",
}

+ 1
- 0
models/dataset.go View File

@@ -22,6 +22,7 @@ type Dataset struct {
Category string
Description string `xorm:"TEXT"`
DownloadTimes int64
NumStars int
License string
Task string
ReleaseID int64 `xorm:"INDEX"`


+ 62
- 0
models/dataset_star.go View File

@@ -0,0 +1,62 @@
package models

import "code.gitea.io/gitea/modules/timeutil"

type DatasetStar struct {
ID int64 `xorm:"pk autoincr"`
UID int64 `xorm:"UNIQUE(s)"`
DatasetID int64 `xorm:"UNIQUE(s)"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
}

// StarRepo or unstar repository.
func StarDataset(userID, datasetID int64, star bool) error {
sess := x.NewSession()
defer sess.Close()

if err := sess.Begin(); err != nil {
return err
}

if star {
if isDatasetStaring(sess, userID, datasetID) {
return nil
}

if _, err := sess.Insert(&DatasetStar{UID: userID, DatasetID: datasetID}); err != nil {
return err
}
if _, err := sess.Exec("UPDATE `dataset` SET num_stars = num_stars + 1 WHERE id = ?", datasetID); err != nil {
return err
}
if _, err := sess.Exec("UPDATE `user` SET num_dataset_stars = num_dataset_stars + 1 WHERE id = ?", userID); err != nil {
return err
}
} else {
if !isDatasetStaring(sess, userID, datasetID) {
return nil
}

if _, err := sess.Delete(&DatasetStar{0, userID, datasetID, 0}); err != nil {
return err
}
if _, err := sess.Exec("UPDATE `dataset` SET num_stars = num_stars - 1 WHERE id = ?", datasetID); err != nil {
return err
}
if _, err := sess.Exec("UPDATE `user` SET num_dataset_stars = num_dataset_stars - 1 WHERE id = ?", userID); err != nil {
return err
}
}

return sess.Commit()
}

func IsDatasetStaring(userID, datasetID int64) bool {

return isDatasetStaring(x, userID, datasetID)
}

func isDatasetStaring(e Engine, userID, datasetID int64) bool {
has, _ := e.Get(&DatasetStar{0, userID, datasetID, 0})
return has
}

+ 5
- 4
models/user.go View File

@@ -153,10 +153,11 @@ type User struct {
UseCustomAvatar bool

// Counters
NumFollowers int
NumFollowing int `xorm:"NOT NULL DEFAULT 0"`
NumStars int
NumRepos int
NumFollowers int
NumFollowing int `xorm:"NOT NULL DEFAULT 0"`
NumStars int
NumDatasetStars int
NumRepos int

// For organization
NumTeams int


+ 1
- 0
options/locale/locale_en-US.ini View File

@@ -1061,6 +1061,7 @@ unstar = Unstar
star = Star
fork = Fork
download_archive = Download Repository
star_fail=Failed to %s the dataset.

no_desc = No Description
no_label = No labels


+ 2
- 0
options/locale/locale_zh-CN.ini View File

@@ -1070,6 +1070,8 @@ unstar=取消点赞
star=点赞
fork=派生
download_archive=下载此项目
star_fail=%s失败。


no_desc=暂无描述
no_label = 暂无标签


+ 19
- 0
routers/repo/dataset.go View File

@@ -1,6 +1,7 @@
package repo

import (
"net/http"
"sort"

"code.gitea.io/gitea/models"
@@ -190,3 +191,21 @@ func EditDatasetPost(ctx *context.Context, form auth.EditDatasetForm) {
}
ctx.Redirect(ctx.Repo.RepoLink + "/datasets?type=" + form.Type)
}

func DatasetAction(ctx *context.Context) {
var err error
datasetId := ctx.QueryInt64(":id")
switch ctx.Params(":action") {
case "star":
err = models.StarDataset(ctx.User.ID, datasetId, true)
case "unstar":
err = models.StarDataset(ctx.User.ID, datasetId, false)

}
if err != nil {
ctx.JSON(http.StatusOK, models.BaseMessage{1, ctx.Tr("repo.star_fail", ctx.Params(":action"))})
} else {
ctx.JSON(http.StatusOK, models.BaseMessageOK)
}

}

+ 1
- 0
routers/routes/routes.go View File

@@ -978,6 +978,7 @@ func RegisterRoutes(m *macaron.Macaron) {

m.Group("/datasets", func() {
m.Get("", reqRepoDatasetReader, repo.DatasetIndex)
m.Put("/:id/:action", reqRepoDatasetReader, repo.DatasetAction)
m.Post("", reqRepoDatasetWriter, bindIgnErr(auth.EditDatasetForm{}), repo.EditDatasetPost)

m.Group("/dirs", func() {


Loading…
Cancel
Save