service/app/mix/dao/mongo_share.go

56 lines
1.1 KiB
Go

package dao
import (
"github.com/gin-gonic/gin"
"github.com/qiniu/qmgo"
"github.com/qiniu/qmgo/operator"
"service/dbstruct"
)
const (
DBShare = "share"
COLShareUrl = "share_url"
)
// 商品表
func (m *Mongo) getColShareUrl() *qmgo.Collection {
return m.clientMix.Database(DBShare).Collection(COLShareUrl)
}
// 获取有效的分享链接
func (m *Mongo) GetValidShareUrl(ctx *gin.Context) ([]*dbstruct.ShareUrl, error) {
list := make([]*dbstruct.ShareUrl, 0)
col := m.getColShareUrl()
query := qmgo.M{
"status": dbstruct.ShareUrlStatusAvailable,
}
err := col.Find(ctx, query).All(&list)
if err == qmgo.ErrNoSuchDocuments {
err = nil
return make([]*dbstruct.ShareUrl, 0), nil
}
if err != nil {
return make([]*dbstruct.ShareUrl, 0), err
}
return list, nil
}
// 分享链接使用次数 +1
func (m *Mongo) IncShareUrlUseCnt(ctx *gin.Context, url string) error {
col := m.getColShareUrl()
up := qmgo.M{
operator.Inc: qmgo.M{
"use_cnt": 1,
},
}
err := col.UpdateId(ctx, url, up)
if err == qmgo.ErrNoSuchDocuments {
err = nil
return nil
}
if err != nil {
return err
}
return nil
}