MCPcopy Index your code
hub / github.com/TruthHun/DocHub / CanDownloadFile

Method CanDownloadFile

models/UserModel.go:189–324  ·  view source on GitHub ↗

判断用户是否可以下载指定文档 err 为 nil 表示可以下载

(uid, docId int)

Source from the content-addressed store, hash-verified

187// 判断用户是否可以下载指定文档
188// err 为 nil 表示可以下载
189func (this *User) CanDownloadFile(uid, docId int) (urlStr string, err error) {
190 // 1. 判断用户和文档是否存在
191 // 2. 判断用户是否可以免费下载,如果用户不可以免费下载,则再扣费之后,允许用户免费下载
192 // 3. 文档被下载次数增加,用户(文档下载人和文档分享人)积分变更,并增加两个用户的积分记录
193 // 4. 获取文档下载URL链接
194 if uid <= 0 || docId <= 0 {
195 err = errParams
196 return
197 }
198
199 o := orm.NewOrm()
200 o.Begin()
201 defer func() {
202 if err == nil {
203 o.Commit()
204 } else {
205 o.Rollback()
206 }
207 }()
208
209 now := int(time.Now().Unix())
210
211 u := &UserInfo{Id: uid}
212 err = o.Read(u)
213 if err != nil {
214 return
215 }
216
217 var docInfo = DocumentInfo{Id: docId}
218 if err = o.Read(&docInfo); err != nil {
219 helper.Logger.Error(err.Error())
220 err = errNotFound
221 return
222 }
223
224 if docInfo.Price < 0 {
225 err = errCannotDown
226 return
227 }
228
229 doc := &Document{Id: docId}
230 if err = o.Read(doc); err != nil {
231 helper.Logger.Error(err.Error())
232 err = errNotFound
233 return
234 }
235
236 store := &DocumentStore{Id: docInfo.DsId}
237 if err = o.Read(store); err != nil {
238 helper.Logger.Error(err.Error())
239 err = errNotFound
240 return
241 }
242
243 price := docInfo.Price
244
245 if u.Id == 0 {
246 err = errNotExistUser

Callers 1

DownloadMethod · 0.80

Calls 7

GetSignURLMethod · 0.95
NewFreeDownFunction · 0.85
GetTableUserInfoFunction · 0.85
NewCloudStoreFunction · 0.85
IsFreeDownMethod · 0.80
UpdateMethod · 0.80
InsertMethod · 0.80

Tested by

no test coverage detected