MCPcopy Index your code
hub / github.com/TruthHun/BookStack / CreateWechatCode

Method CreateWechatCode

models/wechat_code.go:39–97  ·  view source on GitHub ↗

调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成\ 生成微信小程序码

(bookId int)

Source from the content-addressed store, hash-verified

37// 调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成\
38// 生成微信小程序码
39func (this *WechatCode) CreateWechatCode(bookId int) {
40 o := orm.NewOrm()
41 m := NewWechatCode()
42 o.QueryTable(m).Filter("book_id", bookId).One(m)
43 if m.Id > 0 {
44 return
45 }
46 // 先写入一条空数据,如果生成小程序码失败,则再把记录删除
47 m.BookId = bookId
48 _, err := o.Insert(m)
49 if err != nil {
50 beego.Error(err.Error())
51 return
52 }
53 defer func() {
54 if err != nil {
55 o.QueryTable(m).Filter("id", m.Id).Delete()
56 }
57 }()
58 book := NewBook()
59 o.QueryTable(book).Filter("book_id", bookId).One(book, "identify", "book_id")
60 if book.BookId == 0 {
61 err = errors.New("书籍不存在")
62 return
63 }
64
65 // 生成小程序二维码
66 tmpFile := ""
67 accessToken := utils.GetAccessToken()
68 tmpFile, err = utils.GetBookWXACode(accessToken.AccessToken, bookId)
69 if err != nil {
70 beego.Error(err.Error())
71 return
72 }
73 defer os.Remove(tmpFile) // 删除临时文件
74 ext := filepath.Ext(tmpFile)
75 m.Path = fmt.Sprintf("projects/%v/wxacode%v", book.Identify, ext)
76 switch utils.StoreType {
77 case utils.StoreOss: //oss存储
78 err = store.ModelStoreOss.MoveToOss(tmpFile, m.Path, true, false)
79 if err != nil {
80 beego.Error(err.Error())
81 return
82 }
83 case utils.StoreLocal: //本地存储
84 m.Path = "uploads/" + m.Path
85 err = store.ModelStoreLocal.MoveToStore(tmpFile, m.Path)
86 if err != nil {
87 beego.Error(err.Error())
88 return
89 }
90 }
91 m.Path = "/" + m.Path
92 _, err = o.Update(m)
93 if err != nil {
94 beego.Error(err.Error())
95 }
96 return

Callers 2

IndexMethod · 0.95
ReadMethod · 0.95

Calls 9

GetAccessTokenFunction · 0.92
GetBookWXACodeFunction · 0.92
NewWechatCodeFunction · 0.85
NewBookFunction · 0.85
MoveToOssMethod · 0.80
MoveToStoreMethod · 0.80
InsertMethod · 0.45
DeleteMethod · 0.45
UpdateMethod · 0.45

Tested by

no test coverage detected