56 lines
1.1 KiB
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
|
|
}
|